hikoutei 0.10.16-dev → 0.10.18-dev

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 (58) hide show
  1. package/dist/contracts/api/entity.d.ts +10 -5
  2. package/dist/contracts/api/entity.d.ts.map +1 -1
  3. package/dist/contracts/api/entity.js +18 -10
  4. package/dist/contracts/api/entity.js.map +1 -1
  5. package/dist/contracts/sync-orm/mapping/identity.d.ts +10 -5
  6. package/dist/contracts/sync-orm/mapping/identity.d.ts.map +1 -1
  7. package/dist/contracts/sync-orm/mapping/identity.js +25 -11
  8. package/dist/contracts/sync-orm/mapping/identity.js.map +1 -1
  9. package/dist/orm/mapping/observationMapping.d.ts +4 -4
  10. package/dist/orm/mapping/observationMapping.d.ts.map +1 -1
  11. package/dist/orm/mapping/observationMapping.js +2 -1
  12. package/dist/orm/mapping/observationMapping.js.map +1 -1
  13. package/dist/orm/persistence/support/helpers.d.ts +5 -1
  14. package/dist/orm/persistence/support/helpers.d.ts.map +1 -1
  15. package/dist/orm/persistence/support/helpers.js +16 -6
  16. package/dist/orm/persistence/support/helpers.js.map +1 -1
  17. package/dist/persistence/providers/mikro-orm/api/MikroOrmScalarPersistenceProvider.js +36 -4
  18. package/dist/persistence/providers/mikro-orm/api/MikroOrmScalarPersistenceProvider.js.map +1 -1
  19. package/dist/persistence/providers/mikro-orm/engine/MikroOrmScalarEntityRuntime.js +5 -0
  20. package/dist/persistence/providers/mikro-orm/engine/MikroOrmScalarEntityRuntime.js.map +1 -1
  21. package/dist/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.js +18 -4
  22. package/dist/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.js.map +1 -1
  23. package/dist/storage/sqlite/migrateSchema.d.ts.map +1 -1
  24. package/dist/storage/sqlite/migrateSchema.js +16 -1
  25. package/dist/storage/sqlite/migrateSchema.js.map +1 -1
  26. package/dist/storage/sqlite/schema.d.ts +21 -0
  27. package/dist/storage/sqlite/schema.d.ts.map +1 -1
  28. package/dist/storage/sqlite/schema.js +27 -0
  29. package/dist/storage/sqlite/schema.js.map +1 -1
  30. package/dist/storage/sync/outbound/reconciliationSql.d.ts +81 -0
  31. package/dist/storage/sync/outbound/reconciliationSql.d.ts.map +1 -1
  32. package/dist/storage/sync/outbound/reconciliationSql.js +139 -1
  33. package/dist/storage/sync/outbound/reconciliationSql.js.map +1 -1
  34. package/dist/sync-engine/api/internalEntityManager.d.ts.map +1 -1
  35. package/dist/sync-engine/api/internalEntityManager.js +3 -1
  36. package/dist/sync-engine/api/internalEntityManager.js.map +1 -1
  37. package/dist/sync-engine/orm/persistence/scalar/unitOfWork.d.ts.map +1 -1
  38. package/dist/sync-engine/orm/persistence/scalar/unitOfWork.js +102 -9
  39. package/dist/sync-engine/orm/persistence/scalar/unitOfWork.js.map +1 -1
  40. package/dist/sync-engine/sync/outbound/reconciliation/CleanupScanner.d.ts.map +1 -1
  41. package/dist/sync-engine/sync/outbound/reconciliation/CleanupScanner.js +8 -3
  42. package/dist/sync-engine/sync/outbound/reconciliation/CleanupScanner.js.map +1 -1
  43. package/dist/sync-engine/sync/outbound/reconciliation/ReconciliationScanner.d.ts.map +1 -1
  44. package/dist/sync-engine/sync/outbound/reconciliation/ReconciliationScanner.js +103 -53
  45. package/dist/sync-engine/sync/outbound/reconciliation/ReconciliationScanner.js.map +1 -1
  46. package/dist/sync-engine/sync/outbound/reconciliation/cleanup.d.ts +110 -0
  47. package/dist/sync-engine/sync/outbound/reconciliation/cleanup.d.ts.map +1 -1
  48. package/dist/sync-engine/sync/outbound/reconciliation/cleanup.js +307 -1
  49. package/dist/sync-engine/sync/outbound/reconciliation/cleanup.js.map +1 -1
  50. package/dist/sync-engine/sync/outbound/reconciliation/diff.d.ts +51 -7
  51. package/dist/sync-engine/sync/outbound/reconciliation/diff.d.ts.map +1 -1
  52. package/dist/sync-engine/sync/outbound/reconciliation/diff.js +53 -43
  53. package/dist/sync-engine/sync/outbound/reconciliation/diff.js.map +1 -1
  54. package/dist/sync-engine/sync/outbound/reconciliation/shared.d.ts +33 -11
  55. package/dist/sync-engine/sync/outbound/reconciliation/shared.d.ts.map +1 -1
  56. package/dist/sync-engine/sync/outbound/reconciliation/shared.js +93 -58
  57. package/dist/sync-engine/sync/outbound/reconciliation/shared.js.map +1 -1
  58. package/package.json +1 -1
@@ -106,6 +106,21 @@ export interface CleanupCanonicalRow {
106
106
  readonly fields: Record<string, NormalizedCell>;
107
107
  readonly fieldRevisionHash: string;
108
108
  }
109
+ interface CleanupCanonicalSqlShape {
110
+ readonly entity_id: string;
111
+ readonly row_binding_id: string;
112
+ readonly anchor_reference: string;
113
+ readonly field_name: string;
114
+ readonly normalized_value: string;
115
+ }
116
+ /**
117
+ * Whole-entity canonical pages are assembled from the storage-owned
118
+ * entity-batch primitives (same bounded access path as the desired-state
119
+ * pages: PK-ordered entities, PK-prefix fields, covering binding seeks).
120
+ * A flat cross-table keyset cannot page here: duplicate `(entity, field)`
121
+ * keys across several active bindings of one entity would be skipped by a
122
+ * `(entity_id, field_name)` cursor, silently dropping a binding's fields.
123
+ */
109
124
  /**
110
125
  * Stable binding-keyed stream target id shared with flush projections and
111
126
  * resolution reconciles. Bound-row cleanup corrections must stream under the
@@ -125,6 +140,100 @@ export declare function readCleanupProtectedBindingsWithSql(sql: SqlExecutor, ph
125
140
  export declare function readCleanupEvidenceWithSql(sql: SqlExecutor, logicalSheetId: string, physicalSheetId: string): Promise<CleanupEvidence>;
126
141
  /** Reads cleanup evidence through a fresh adapter read context. */
127
142
  export declare function readCleanupEvidence(storage: SqlStorageAdapter, logicalSheetId: string, physicalSheetId: string): Promise<CleanupEvidence>;
143
+ /** Keyset cursor for a paged cleanup binding chunk: the last id already seen. */
144
+ export interface CleanupBindingsCursor {
145
+ readonly rowBindingId: string;
146
+ }
147
+ /** Keyset cursor for a paged canonical chunk: the last entity already seen. */
148
+ export interface CleanupCanonicalCursor {
149
+ readonly entityId: string;
150
+ }
151
+ /** One entity-batched canonical chunk: whole entities plus progress. */
152
+ export interface CleanupCanonicalEntityChunk {
153
+ readonly rows: readonly CleanupCanonicalSqlShape[];
154
+ /** Entities paged (including binding-less ones) — the termination signal. */
155
+ readonly entityCount: number;
156
+ /** Last entity paged — the next cursor (absent only when empty). */
157
+ readonly lastEntityId: string | undefined;
158
+ }
159
+ /** Reads one bounded page of row bindings in `row_binding_id` order. */
160
+ export declare function readCleanupBindingsChunkWithSql(sql: SqlExecutor, logicalSheetId: string, after: CleanupBindingsCursor | undefined, limit?: number): Promise<readonly CleanupBinding[]>;
161
+ /**
162
+ * Reads one bounded chunk of whole entities as flat canonical user-owned
163
+ * rows, in global entity order. Pass no cursor for the first chunk, then
164
+ * `{ entityId }` of the last entity paged; an empty chunk (or
165
+ * `entityCount < limit`) ends the scan. Only `limit` entities are ever
166
+ * materialized per call. Multi-binding entities emit one row per
167
+ * (binding, field) with the smallest `row_binding_id` first, so no
168
+ * binding's fields can be skipped across chunks by construction.
169
+ */
170
+ export declare function readCleanupCanonicalChunkWithSql(sql: SqlExecutor, logicalSheetId: string, after: CleanupCanonicalCursor | undefined, limit?: number): Promise<CleanupCanonicalEntityChunk>;
171
+ /** One entity's canonical bindings accumulated across chunk boundaries. */
172
+ export interface PartialCleanupCanonical {
173
+ readonly entityId: string;
174
+ readonly partials: ReadonlyMap<string, {
175
+ readonly entityId: string;
176
+ readonly rowBindingId: string;
177
+ readonly anchorReference: string;
178
+ readonly fields: Record<string, NormalizedCell>;
179
+ }>;
180
+ }
181
+ /** Completed canonical rows plus the trailing entity still missing fields. */
182
+ export interface CleanupCanonicalChunkResult {
183
+ readonly completed: readonly CleanupCanonicalRow[];
184
+ readonly carry: PartialCleanupCanonical | undefined;
185
+ }
186
+ /**
187
+ * Groups one ordered page of canonical rows into completed canonical rows.
188
+ *
189
+ * A page may split an entity's fields across the boundary, and several
190
+ * bindings may share one entity, so the trailing entity is returned as
191
+ * `carry` (all of its bindings) and must seed the next call; only the flush
192
+ * after the last page finalizes it. Completed rows hash exactly like the
193
+ * full-load grouping, in global entity order.
194
+ */
195
+ export declare function assembleCleanupCanonicalChunk(rows: readonly CleanupCanonicalSqlShape[], carry: PartialCleanupCanonical | undefined): CleanupCanonicalChunkResult;
196
+ /** Finalizes the trailing entity's canonical rows after the last page. */
197
+ export declare function flushCleanupCanonicalCarry(carry: PartialCleanupCanonical | undefined): readonly CleanupCanonicalRow[];
198
+ /** Snapshot rows grouped by anchor for the chunked cleanup scan. */
199
+ export interface CleanupSnapshotIndex {
200
+ readonly groupsByAnchor: ReadonlyMap<string, readonly CleanupRow[]>;
201
+ readonly duplicateAnchors: ReadonlySet<string>;
202
+ }
203
+ /**
204
+ * Groups decoded snapshot rows by anchor once per scan. The maps hold
205
+ * references to the decoded rows; no snapshot data is copied.
206
+ */
207
+ export declare function buildCleanupSnapshotIndex(rows: readonly CleanupRow[]): CleanupSnapshotIndex;
208
+ /** Streaming evidence for one cleanup scan: small maps plus drifted rewrites. */
209
+ export interface CleanupStreamEvidence {
210
+ readonly bindingsByAnchor: ReadonlyMap<string, CleanupBinding>;
211
+ readonly candidateHashes: ReadonlyMap<string, string>;
212
+ readonly canonicalAnchors: ReadonlySet<string>;
213
+ readonly rewriteByAnchor: ReadonlyMap<string, CleanupTarget>;
214
+ }
215
+ /**
216
+ * Streams binding/canonical/candidate evidence in keyset pages inside the
217
+ * caller's SQL context.
218
+ *
219
+ * Only one page of canonical rows is materialized at a time; completed
220
+ * canonical rows are rewrite-checked against the snapshot index immediately
221
+ * and dropped unless drifted. Retained state is small bindings, candidate
222
+ * hashes, canonical anchor keys, and drifted rewrite targets — never the
223
+ * full canonical table.
224
+ */
225
+ export declare function readCleanupStreamEvidenceWithSql(sql: SqlExecutor, logicalSheetId: string, physicalSheetId: string, snapshot: CleanupSnapshotIndex): Promise<CleanupStreamEvidence>;
226
+ /**
227
+ * Classifies snapshot rows into correction targets in full-load order.
228
+ *
229
+ * Mirrors `classifyCleanupRows` decision-for-decision (duplicate deletes
230
+ * first in first-seen anchor order, then snapshot row order for rewrites
231
+ * and surplus deletes) while reading rewrites from the streamed evidence:
232
+ * bound non-duplicate anchors resolve through `rewriteByAnchor`, every
233
+ * other row through the binding map. The target sequence is identical to
234
+ * the full-load scan, so repair effect ids stay stable across the switch.
235
+ */
236
+ export declare function classifyCleanupStreamTargets(rows: readonly CleanupRow[], snapshot: CleanupSnapshotIndex, evidence: CleanupStreamEvidence): readonly CleanupTarget[];
128
237
  /**
129
238
  * Decodes snapshot rows into cleanup rows.
130
239
  *
@@ -210,4 +319,5 @@ export declare function buildCleanupEffects(context: CleanupEffectContext, sheet
210
319
  readonly tabName: string;
211
320
  readonly registeredRange: string;
212
321
  }, targets: readonly CleanupTarget[]): Promise<readonly CleanupPlan[]>;
322
+ export {};
213
323
  //# sourceMappingURL=cleanup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/sync/outbound/reconciliation/cleanup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/sync/outbound/reconciliation/cleanup.ts"],"names":[],"mappings":"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"}
@@ -52,12 +52,31 @@ import { computeSyncVisibleHash, } from "../../../../contracts/sheets/syncSheets
52
52
  import { SYNC_PROJECTIONS } from "../../../../contracts/sheets/constants.js";
53
53
  import { createCandidateReconcileEffect, createUserInputDeleteEffect, } from "../../../../sync/outbound/projection/ProjectionEffectFactory.js";
54
54
  import { normalizedCellIdentity } from "./diff.js";
55
- import { decodeNormalizedCell } from "./shared.js";
55
+ import { decodeNormalizedCell, RECONCILIATION_SCAN_CHUNK_SIZE, RECONCILIATION_SCAN_ENTITY_PAGE_SIZE, readActiveEntityPageWithSql, readEntityBindingsWithSql, readEntityFieldsWithSql, } from "./shared.js";
56
56
  const READ_CLEANUP_BINDINGS_SQL = `
57
57
  SELECT row_binding_id, anchor_reference, state
58
58
  FROM row_binding
59
59
  WHERE logical_sheet_id = ?
60
60
  `;
61
+ /**
62
+ * One keyset page of row bindings in `row_binding_id` order. The
63
+ * `(logical_sheet_id, row_binding_id)` covering index (`row_binding_scan_idx`)
64
+ * serves each page as a bounded index range scan with no temp-b-tree sort.
65
+ */
66
+ const READ_CLEANUP_BINDINGS_PAGE_SQL = `
67
+ SELECT row_binding_id, anchor_reference, state
68
+ FROM row_binding
69
+ WHERE logical_sheet_id = ? AND row_binding_id > ?
70
+ ORDER BY row_binding_id
71
+ LIMIT ?
72
+ `;
73
+ const READ_CLEANUP_BINDINGS_FIRST_PAGE_SQL = `
74
+ SELECT row_binding_id, anchor_reference, state
75
+ FROM row_binding
76
+ WHERE logical_sheet_id = ?
77
+ ORDER BY row_binding_id
78
+ LIMIT ?
79
+ `;
61
80
  /**
62
81
  * Canonical user-owned projection values for every active binding with an
63
82
  * entity. The anchor_reference is the User_Input row-id anchor of the bound
@@ -82,6 +101,14 @@ const READ_CLEANUP_CANONICAL_SQL = `
82
101
  WHERE entity.status = 'active'
83
102
  ORDER BY entity.entity_id, field.field_name
84
103
  `;
104
+ /**
105
+ * Whole-entity canonical pages are assembled from the storage-owned
106
+ * entity-batch primitives (same bounded access path as the desired-state
107
+ * pages: PK-ordered entities, PK-prefix fields, covering binding seeks).
108
+ * A flat cross-table keyset cannot page here: duplicate `(entity, field)`
109
+ * keys across several active bindings of one entity would be skipped by a
110
+ * `(entity_id, field_name)` cursor, silently dropping a binding's fields.
111
+ */
85
112
  /**
86
113
  * Stable binding-keyed stream target id shared with flush projections and
87
114
  * resolution reconciles. Bound-row cleanup corrections must stream under the
@@ -163,6 +190,285 @@ export async function readCleanupEvidenceWithSql(sql, logicalSheetId, physicalSh
163
190
  export async function readCleanupEvidence(storage, logicalSheetId, physicalSheetId) {
164
191
  return storage.read(({ sql }) => readCleanupEvidenceWithSql(sql, logicalSheetId, physicalSheetId));
165
192
  }
193
+ /** Reads one bounded page of row bindings in `row_binding_id` order. */
194
+ export function readCleanupBindingsChunkWithSql(sql, logicalSheetId, after, limit = RECONCILIATION_SCAN_CHUNK_SIZE) {
195
+ const query = after === undefined
196
+ ? READ_CLEANUP_BINDINGS_FIRST_PAGE_SQL
197
+ : READ_CLEANUP_BINDINGS_PAGE_SQL;
198
+ const parameters = after === undefined
199
+ ? [logicalSheetId, limit]
200
+ : [logicalSheetId, after.rowBindingId, limit];
201
+ return sql.all(query, [...parameters]).then((rows) => rows.map((row) => ({
202
+ rowBindingId: row.row_binding_id,
203
+ anchorReference: row.anchor_reference,
204
+ state: row.state,
205
+ })));
206
+ }
207
+ /**
208
+ * Reads one bounded chunk of whole entities as flat canonical user-owned
209
+ * rows, in global entity order. Pass no cursor for the first chunk, then
210
+ * `{ entityId }` of the last entity paged; an empty chunk (or
211
+ * `entityCount < limit`) ends the scan. Only `limit` entities are ever
212
+ * materialized per call. Multi-binding entities emit one row per
213
+ * (binding, field) with the smallest `row_binding_id` first, so no
214
+ * binding's fields can be skipped across chunks by construction.
215
+ */
216
+ export async function readCleanupCanonicalChunkWithSql(sql, logicalSheetId, after, limit = RECONCILIATION_SCAN_ENTITY_PAGE_SIZE) {
217
+ const entities = await readActiveEntityPageWithSql(sql, after?.entityId, limit);
218
+ const rows = [];
219
+ for (const entity of entities) {
220
+ const [bindings, fields] = await Promise.all([
221
+ readEntityBindingsWithSql(sql, logicalSheetId, entity.entityId),
222
+ readEntityFieldsWithSql(sql, entity.entityId, "user"),
223
+ ]);
224
+ for (const binding of bindings) {
225
+ for (const field of fields) {
226
+ rows.push({
227
+ entity_id: entity.entityId,
228
+ row_binding_id: binding.rowBindingId,
229
+ anchor_reference: binding.anchorReference,
230
+ field_name: field.fieldName,
231
+ normalized_value: field.normalizedValue,
232
+ });
233
+ }
234
+ }
235
+ }
236
+ const lastEntity = entities[entities.length - 1];
237
+ return {
238
+ rows,
239
+ entityCount: entities.length,
240
+ lastEntityId: lastEntity === undefined ? undefined : lastEntity.entityId,
241
+ };
242
+ }
243
+ /**
244
+ * Groups one ordered page of canonical rows into completed canonical rows.
245
+ *
246
+ * A page may split an entity's fields across the boundary, and several
247
+ * bindings may share one entity, so the trailing entity is returned as
248
+ * `carry` (all of its bindings) and must seed the next call; only the flush
249
+ * after the last page finalizes it. Completed rows hash exactly like the
250
+ * full-load grouping, in global entity order.
251
+ */
252
+ export function assembleCleanupCanonicalChunk(rows, carry) {
253
+ const completed = [];
254
+ let currentEntityId = carry?.entityId;
255
+ let current = new Map(carry?.partials);
256
+ const finalizeCurrent = () => {
257
+ for (const partial of current.values()) {
258
+ completed.push(toCleanupCanonicalRow(partial));
259
+ }
260
+ current = new Map();
261
+ currentEntityId = undefined;
262
+ };
263
+ for (const row of rows) {
264
+ if (currentEntityId !== undefined && currentEntityId !== row.entity_id) {
265
+ finalizeCurrent();
266
+ }
267
+ currentEntityId = row.entity_id;
268
+ const existing = current.get(row.row_binding_id);
269
+ if (existing === undefined) {
270
+ current.set(row.row_binding_id, {
271
+ entityId: row.entity_id,
272
+ rowBindingId: row.row_binding_id,
273
+ anchorReference: row.anchor_reference,
274
+ fields: { [row.field_name]: decodeNormalizedCell(row.normalized_value) },
275
+ });
276
+ }
277
+ else {
278
+ existing.fields[row.field_name] = decodeNormalizedCell(row.normalized_value);
279
+ }
280
+ }
281
+ return {
282
+ completed,
283
+ carry: currentEntityId === undefined ? undefined : {
284
+ entityId: currentEntityId,
285
+ partials: current,
286
+ },
287
+ };
288
+ }
289
+ /** Finalizes the trailing entity's canonical rows after the last page. */
290
+ export function flushCleanupCanonicalCarry(carry) {
291
+ if (carry === undefined)
292
+ return [];
293
+ return [...carry.partials.values()].map(toCleanupCanonicalRow);
294
+ }
295
+ function toCleanupCanonicalRow(partial) {
296
+ return {
297
+ entityId: partial.entityId,
298
+ rowBindingId: partial.rowBindingId,
299
+ anchorReference: partial.anchorReference,
300
+ fields: partial.fields,
301
+ fieldRevisionHash: computeSyncVisibleHash(partial.fields),
302
+ };
303
+ }
304
+ /**
305
+ * Groups decoded snapshot rows by anchor once per scan. The maps hold
306
+ * references to the decoded rows; no snapshot data is copied.
307
+ */
308
+ export function buildCleanupSnapshotIndex(rows) {
309
+ const groupsByAnchor = new Map();
310
+ for (const row of rows) {
311
+ if (row.anchor === null)
312
+ continue;
313
+ const group = groupsByAnchor.get(row.anchor) ?? [];
314
+ group.push(row);
315
+ groupsByAnchor.set(row.anchor, group);
316
+ }
317
+ const duplicateAnchors = new Set();
318
+ for (const [anchor, group] of groupsByAnchor) {
319
+ if (group.length > 1)
320
+ duplicateAnchors.add(anchor);
321
+ }
322
+ return { groupsByAnchor, duplicateAnchors };
323
+ }
324
+ /**
325
+ * Streams binding/canonical/candidate evidence in keyset pages inside the
326
+ * caller's SQL context.
327
+ *
328
+ * Only one page of canonical rows is materialized at a time; completed
329
+ * canonical rows are rewrite-checked against the snapshot index immediately
330
+ * and dropped unless drifted. Retained state is small bindings, candidate
331
+ * hashes, canonical anchor keys, and drifted rewrite targets — never the
332
+ * full canonical table.
333
+ */
334
+ export async function readCleanupStreamEvidenceWithSql(sql, logicalSheetId, physicalSheetId, snapshot) {
335
+ const candidateRows = await sql.all(READ_CLEANUP_CANDIDATE_HASHES_SQL, [physicalSheetId]);
336
+ const candidateHashes = new Map(candidateRows.map((row) => [
337
+ row.row_binding_id,
338
+ row.active_candidate_hash,
339
+ ]));
340
+ const bindingsByAnchor = new Map();
341
+ let bindingsAfter;
342
+ for (;;) {
343
+ const page = await readCleanupBindingsChunkWithSql(sql, logicalSheetId, bindingsAfter);
344
+ if (page.length === 0)
345
+ break;
346
+ for (const binding of page)
347
+ bindingsByAnchor.set(binding.anchorReference, binding);
348
+ const last = page[page.length - 1];
349
+ if (last === undefined)
350
+ break;
351
+ bindingsAfter = { rowBindingId: last.rowBindingId };
352
+ if (page.length < RECONCILIATION_SCAN_CHUNK_SIZE)
353
+ break;
354
+ }
355
+ const canonicalAnchors = new Set();
356
+ const rewriteByAnchor = new Map();
357
+ let canonicalAfter;
358
+ let carry;
359
+ for (;;) {
360
+ const chunk = await readCleanupCanonicalChunkWithSql(sql, logicalSheetId, canonicalAfter);
361
+ // Whole-entity chunks: the cursor is the last entity paged, including
362
+ // binding-less ones that emit no rows, so no entity's rows can be
363
+ // skipped or repeated across chunks.
364
+ if (chunk.entityCount === 0 || chunk.lastEntityId === undefined)
365
+ break;
366
+ canonicalAfter = { entityId: chunk.lastEntityId };
367
+ const assembled = assembleCleanupCanonicalChunk(chunk.rows, carry);
368
+ carry = assembled.carry;
369
+ for (const canonical of assembled.completed) {
370
+ canonicalAnchors.add(canonical.anchorReference);
371
+ const rewrite = classifyCleanupRewrite(canonical, snapshot, candidateHashes);
372
+ if (rewrite !== undefined)
373
+ rewriteByAnchor.set(canonical.anchorReference, rewrite);
374
+ }
375
+ if (chunk.entityCount < RECONCILIATION_SCAN_ENTITY_PAGE_SIZE)
376
+ break;
377
+ }
378
+ for (const canonical of flushCleanupCanonicalCarry(carry)) {
379
+ canonicalAnchors.add(canonical.anchorReference);
380
+ const rewrite = classifyCleanupRewrite(canonical, snapshot, candidateHashes);
381
+ if (rewrite !== undefined)
382
+ rewriteByAnchor.set(canonical.anchorReference, rewrite);
383
+ }
384
+ return { bindingsByAnchor, candidateHashes, canonicalAnchors, rewriteByAnchor };
385
+ }
386
+ /**
387
+ * Rewrite-checks one completed canonical row against its snapshot group.
388
+ *
389
+ * Mirrors the bound-row branch of `classifyCleanupRows`: duplicated-anchor
390
+ * groups defer (their delete is planned by the surplus pass), candidate-
391
+ * protected bindings converge through resolution, field-less canonical rows
392
+ * belong to the lifecycle pipeline, and matching rows are idempotent.
393
+ * Returns the rewrite target only for a drifted, plannable row.
394
+ */
395
+ function classifyCleanupRewrite(canonical, snapshot, candidateHashes) {
396
+ if (snapshot.duplicateAnchors.has(canonical.anchorReference))
397
+ return undefined;
398
+ if (Object.keys(canonical.fields).length === 0)
399
+ return undefined;
400
+ if (candidateHashes.has(canonical.rowBindingId))
401
+ return undefined;
402
+ const group = snapshot.groupsByAnchor.get(canonical.anchorReference);
403
+ const row = group?.[0];
404
+ if (row === undefined)
405
+ return undefined;
406
+ if (observedCanonicalHash(row, canonical.fields) === canonical.fieldRevisionHash) {
407
+ return undefined;
408
+ }
409
+ return {
410
+ kind: "rewrite",
411
+ row,
412
+ canonicalFields: canonical.fields,
413
+ rowBindingId: canonical.rowBindingId,
414
+ };
415
+ }
416
+ /**
417
+ * Classifies snapshot rows into correction targets in full-load order.
418
+ *
419
+ * Mirrors `classifyCleanupRows` decision-for-decision (duplicate deletes
420
+ * first in first-seen anchor order, then snapshot row order for rewrites
421
+ * and surplus deletes) while reading rewrites from the streamed evidence:
422
+ * bound non-duplicate anchors resolve through `rewriteByAnchor`, every
423
+ * other row through the binding map. The target sequence is identical to
424
+ * the full-load scan, so repair effect ids stay stable across the switch.
425
+ */
426
+ export function classifyCleanupStreamTargets(rows, snapshot, evidence) {
427
+ const targets = [];
428
+ const handled = new Set();
429
+ for (const [anchor, group] of snapshot.groupsByAnchor) {
430
+ if (group.length < 2)
431
+ continue;
432
+ const resolvable = lowestRow(group);
433
+ const binding = evidence.bindingsByAnchor.get(anchor);
434
+ if (binding !== undefined && evidence.candidateHashes.has(binding.rowBindingId)) {
435
+ for (const row of group)
436
+ handled.add(row.rowNumber);
437
+ continue;
438
+ }
439
+ targets.push({
440
+ kind: "duplicate",
441
+ row: resolvable,
442
+ ...(binding === undefined ? {} : { rowBindingId: binding.rowBindingId }),
443
+ });
444
+ for (const row of group)
445
+ handled.add(row.rowNumber);
446
+ }
447
+ for (const row of rows) {
448
+ if (row.anchor === null || handled.has(row.rowNumber))
449
+ continue;
450
+ if (evidence.canonicalAnchors.has(row.anchor)) {
451
+ const rewrite = evidence.rewriteByAnchor.get(row.anchor);
452
+ if (rewrite !== undefined)
453
+ targets.push(rewrite);
454
+ continue;
455
+ }
456
+ const binding = evidence.bindingsByAnchor.get(row.anchor);
457
+ if (binding !== undefined) {
458
+ if (binding.state === "candidate" &&
459
+ row.identity === undefined &&
460
+ !evidence.candidateHashes.has(binding.rowBindingId)) {
461
+ targets.push({ kind: "empty_id", row, rowBindingId: binding.rowBindingId });
462
+ }
463
+ continue;
464
+ }
465
+ targets.push({
466
+ kind: row.identity === undefined ? "empty_id" : "extra",
467
+ row,
468
+ });
469
+ }
470
+ return targets;
471
+ }
166
472
  function groupCanonicalRows(rows) {
167
473
  const byBinding = new Map();
168
474
  for (const row of rows) {
@@ -1 +1 @@
1
- {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../../../../../../../src/sync/outbound/reconciliation/cleanup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../../../../../../../src/sync/outbound/reconciliation/cleanup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAEjF,OAAO,EACL,cAAc,GACf,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAGjE,OAAO,EACL,sBAAsB,GAEvB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EACL,8BAA8B,EAC9B,2BAA2B,GAC5B,MAAM,uEAAuE,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EACL,oBAAoB,EACpB,8BAA8B,EAC9B,oCAAoC,EACpC,2BAA2B,EAC3B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAgGrB,MAAM,yBAAyB,GAAG;;;;CAIjC,CAAC;AAEF;;;;GAIG;AACH,MAAM,8BAA8B,GAAG;;;;;;CAMtC,CAAC;AAEF,MAAM,oCAAoC,GAAG;;;;;;CAM5C,CAAC;AAEF;;;;;GAKG;AACH,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;CAiBlC,CAAC;AAEF;;;;;;;GAOG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,eAAuB,EAAE,YAAoB;IACxF,OAAO,kBAAkB,eAAe,IAAI,YAAY,EAAE,CAAC;AAC7D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,iCAAiC,GAAG;;;;;;;;;;;;CAYzC,CAAC;AAEF;;;;GAIG;AACH,MAAM,2CAA2C,GAAG;;;;CAInD,CAAC;AAEF,MAAM,8BAA8B,GAAG;;;;;;CAMtC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,GAAgB,EAChB,eAAuB;IAEvB,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,GAAG,CACjC,iCAAiC,EACjC,CAAC,eAAe,CAAC,CAClB,CAAC;IACF,OAAO,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,GAAgB,EAChB,cAAsB,EACtB,eAAuB;IAEvB,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACjE,GAAG,CAAC,GAAG,CAAyB,yBAAyB,EAAE,CAAC,cAAc,CAAC,CAAC;QAC5E,GAAG,CAAC,GAAG,CAA2B,0BAA0B,EAAE,CAAC,cAAc,CAAC,CAAC;QAC/E,GAAG,CAAC,GAAG,CAA+B,iCAAiC,EAAE,CAAC,eAAe,CAAC,CAAC;KAC5F,CAAC,CAAC;IACH,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC/B,YAAY,EAAE,GAAG,CAAC,cAAc;YAChC,eAAe,EAAE,GAAG,CAAC,gBAAgB;YACrC,KAAK,EAAE,GAAG,CAAC,KAAK;SACjB,CAAC,CAAC;QACH,SAAS,EAAE,kBAAkB,CAAC,aAAa,CAAC;QAC5C,eAAe,EAAE,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;YAClD,GAAG,CAAC,cAAc;YAClB,GAAG,CAAC,qBAAqB;SAC1B,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,mEAAmE;AACnE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAA0B,EAC1B,cAAsB,EACtB,eAAuB;IAEvB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAC9B,0BAA0B,CAAC,GAAG,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC;AACtE,CAAC;AAqBD,wEAAwE;AACxE,MAAM,UAAU,+BAA+B,CAC7C,GAAgB,EAChB,cAAsB,EACtB,KAAwC,EACxC,QAAgB,8BAA8B;IAE9C,MAAM,KAAK,GAAG,KAAK,KAAK,SAAS;QAC/B,CAAC,CAAC,oCAAoC;QACtC,CAAC,CAAC,8BAA8B,CAAC;IACnC,MAAM,UAAU,GAAG,KAAK,KAAK,SAAS;QACpC,CAAC,CAAC,CAAC,cAAc,EAAE,KAAK,CAAU;QAClC,CAAC,CAAC,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAU,CAAC;IACzD,OAAO,GAAG,CAAC,GAAG,CAAyB,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAC3E,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACjB,YAAY,EAAE,GAAG,CAAC,cAAc;QAChC,eAAe,EAAE,GAAG,CAAC,gBAAgB;QACrC,KAAK,EAAE,GAAG,CAAC,KAAK;KACjB,CAAC,CAAC,CACJ,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,GAAgB,EAChB,cAAsB,EACtB,KAAyC,EACzC,QAAgB,oCAAoC;IAEpD,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChF,MAAM,IAAI,GAA+B,EAAE,CAAC;IAC5C,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC3C,yBAAyB,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC;YAC/D,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;SACtD,CAAC,CAAC;QACH,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC;oBACR,SAAS,EAAE,MAAM,CAAC,QAAQ;oBAC1B,cAAc,EAAE,OAAO,CAAC,YAAY;oBACpC,gBAAgB,EAAE,OAAO,CAAC,eAAe;oBACzC,UAAU,EAAE,KAAK,CAAC,SAAS;oBAC3B,gBAAgB,EAAE,KAAK,CAAC,eAAe;iBACxC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjD,OAAO;QACL,IAAI;QACJ,WAAW,EAAE,QAAQ,CAAC,MAAM;QAC5B,YAAY,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ;KACzE,CAAC;AACJ,CAAC;AAmBD;;;;;;;;GAQG;AACH,MAAM,UAAU,6BAA6B,CAC3C,IAAyC,EACzC,KAA0C;IAE1C,MAAM,SAAS,GAA0B,EAAE,CAAC;IAC5C,IAAI,eAAe,GAAG,KAAK,EAAE,QAAQ,CAAC;IACtC,IAAI,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACvC,MAAM,eAAe,GAAG,GAAS,EAAE;QACjC,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;QACpB,eAAe,GAAG,SAAS,CAAC;IAC9B,CAAC,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,eAAe,KAAK,SAAS,IAAI,eAAe,KAAK,GAAG,CAAC,SAAS,EAAE,CAAC;YACvE,eAAe,EAAE,CAAC;QACpB,CAAC;QACD,eAAe,GAAG,GAAG,CAAC,SAAS,CAAC;QAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACjD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE;gBAC9B,QAAQ,EAAE,GAAG,CAAC,SAAS;gBACvB,YAAY,EAAE,GAAG,CAAC,cAAc;gBAChC,eAAe,EAAE,GAAG,CAAC,gBAAgB;gBACrC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE;aACzE,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IACD,OAAO;QACL,SAAS;QACT,KAAK,EAAE,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACjD,QAAQ,EAAE,eAAe;YACzB,QAAQ,EAAE,OAAO;SAClB;KACF,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,0BAA0B,CACxC,KAA0C;IAE1C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,qBAAqB,CAAC,OAK9B;IACC,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,iBAAiB,EAAE,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC;KAC1D,CAAC;AACJ,CAAC;AAQD;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACvC,IAA2B;IAE3B,MAAM,cAAc,GAAG,IAAI,GAAG,EAAwB,CAAC;IACvD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI;YAAE,SAAS;QAClC,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,cAAc,EAAE,CAAC;QAC7C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC;AAC9C,CAAC;AAUD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,GAAgB,EAChB,cAAsB,EACtB,eAAuB,EACvB,QAA8B;IAE9B,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,GAAG,CACjC,iCAAiC,EACjC,CAAC,eAAe,CAAC,CAClB,CAAC;IACF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;QACzD,GAAG,CAAC,cAAc;QAClB,GAAG,CAAC,qBAAqB;KAC1B,CAAC,CAAC,CAAC;IACJ,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC3D,IAAI,aAAgD,CAAC;IACrD,SAAS,CAAC;QACR,MAAM,IAAI,GAAG,MAAM,+BAA+B,CAAC,GAAG,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;QACvF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM;QAC7B,KAAK,MAAM,OAAO,IAAI,IAAI;YAAE,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACnF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACnC,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM;QAC9B,aAAa,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;QACpD,IAAI,IAAI,CAAC,MAAM,GAAG,8BAA8B;YAAE,MAAM;IAC1D,CAAC;IACD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,MAAM,eAAe,GAAG,IAAI,GAAG,EAAyB,CAAC;IACzD,IAAI,cAAkD,CAAC;IACvD,IAAI,KAA0C,CAAC;IAC/C,SAAS,CAAC;QACR,MAAM,KAAK,GAAG,MAAM,gCAAgC,CAAC,GAAG,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;QAC1F,sEAAsE;QACtE,kEAAkE;QAClE,qCAAqC;QACrC,IAAI,KAAK,CAAC,WAAW,KAAK,CAAC,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;YAAE,MAAM;QACvE,cAAc,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC;QAClD,MAAM,SAAS,GAAG,6BAA6B,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACnE,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QACxB,KAAK,MAAM,SAAS,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;YAC5C,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,sBAAsB,CAAC,SAAS,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;YAC7E,IAAI,OAAO,KAAK,SAAS;gBAAE,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,KAAK,CAAC,WAAW,GAAG,oCAAoC;YAAE,MAAM;IACtE,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,sBAAsB,CAAC,SAAS,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;QAC7E,IAAI,OAAO,KAAK,SAAS;YAAE,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC;AAClF,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,sBAAsB,CAC7B,SAA8B,EAC9B,QAA8B,EAC9B,eAA4C;IAE5C,IAAI,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/E,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACjE,IAAI,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC;QAAE,OAAO,SAAS,CAAC;IAClE,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IACrE,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,qBAAqB,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,iBAAiB,EAAE,CAAC;QACjF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO;QACL,IAAI,EAAE,SAAS;QACf,GAAG;QACH,eAAe,EAAE,SAAS,CAAC,MAAM;QACjC,YAAY,EAAE,SAAS,CAAC,YAAY;KACrC,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,4BAA4B,CAC1C,IAA2B,EAC3B,QAA8B,EAC9B,QAA+B;IAE/B,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;QACtD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAC/B,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,OAAO,KAAK,SAAS,IAAI,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAChF,KAAK,MAAM,GAAG,IAAI,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACpD,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,WAAW;YACjB,GAAG,EAAE,UAAU;YACf,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;SACzE,CAAC,CAAC;QACH,KAAK,MAAM,GAAG,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,SAAS;QAChE,IAAI,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACzD,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjD,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,IACE,OAAO,CAAC,KAAK,KAAK,WAAW;gBAC7B,GAAG,CAAC,QAAQ,KAAK,SAAS;gBAC1B,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,EACnD,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;YAC9E,CAAC;YACD,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;YACvD,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAyC;IAEzC,MAAM,SAAS,GAAG,IAAI,GAAG,EAA+B,CAAC;IACzD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACnD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAmC,EAAE,CAAC;YAClD,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACpE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE;gBAChC,QAAQ,EAAE,GAAG,CAAC,SAAS;gBACvB,YAAY,EAAE,GAAG,CAAC,cAAc;gBAChC,eAAe,EAAE,GAAG,CAAC,gBAAgB;gBACrC,MAAM;gBACN,iBAAiB,EAAE,EAAE;aACtB,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,SAAS,GAA0B,EAAE,CAAC;IAC5C,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QACrC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAA4B,EAC5B,aAAqB;IAErB,MAAM,IAAI,GAAiB,EAAE,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO;YAAE,SAAS;QACjE,MAAM,MAAM,GAAmC,EAAE,CAAC;QAClD,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,CAAC;QACD,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO;YACjE,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAChC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK;YACvB,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO;YACzE,GAAG,CAAC,eAAe,CAAC,KAAK,IAAI,6BAA6B;YAC1D,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK;YAC3B,CAAC,CAAC,6BAA6B,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC;YACR,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM,EAAE,GAAG,CAAC,cAAc,CAAC,KAAK;YAChC,QAAQ,EAAE,sBAAsB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACvD,eAAe;YACf,WAAW;YACX,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAA2B,EAC3B,QAAyB;IAEzB,MAAM,eAAe,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC1D,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAA+B,CAAC;IACjE,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC3C,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC/C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI;YAAE,SAAS;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAC/B,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QACjC,IAAI,MAAM,KAAK,IAAI;YAAE,SAAS;QAC9B,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,OAAO,KAAK,SAAS,IAAI,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAChF,qEAAqE;YACrE,sEAAsE;YACtE,qEAAqE;YACrE,kDAAkD;YAClD,KAAK,MAAM,GAAG,IAAI,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACpD,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,WAAW;YACjB,GAAG,EAAE,UAAU;YACf,oEAAoE;YACpE,kEAAkE;YAClE,mEAAmE;YACnE,2DAA2D;YAC3D,kBAAkB;YAClB,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;SACzE,CAAC,CAAC;QACH,KAAK,MAAM,GAAG,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,SAAS;QAChE,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,qEAAqE;YACrE,uEAAuE;YACvE,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACzD,IAAI,qBAAqB,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,iBAAiB,EAAE,CAAC;gBACjF,SAAS;YACX,CAAC;YACD,+DAA+D;YAC/D,gEAAgE;YAChE,mEAAmE;YACnE,oEAAoE;YACpE,IAAI,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC;gBAAE,SAAS;YACnE,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,SAAS;gBACf,GAAG;gBACH,eAAe,EAAE,SAAS,CAAC,MAAM;gBACjC,YAAY,EAAE,SAAS,CAAC,YAAY;aACrC,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,8DAA8D;YAC9D,qEAAqE;YACrE,sEAAsE;YACtE,IACE,OAAO,CAAC,KAAK,KAAK,WAAW;gBAC7B,GAAG,CAAC,QAAQ,KAAK,SAAS;gBAC1B,+DAA+D;gBAC/D,4DAA4D;gBAC5D,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,EACnD,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;YAC9E,CAAC;YACD,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;YACvD,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,wEAAwE;AACxE,SAAS,qBAAqB,CAC5B,GAAe,EACf,eAAyD;IAEzD,MAAM,UAAU,GAAmC,EAAE,CAAC;IACtD,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;QACrD,UAAU,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IACxD,CAAC;IACD,OAAO,sBAAsB,CAAC,UAAU,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,SAAS,CAAC,IAA2B;IAC5C,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;IACtB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS;YAAE,MAAM,GAAG,GAAG,CAAC;IACrD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAOD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,GAAgB,EAChB,cAAsB,EACtB,QAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAA8B,8BAA8B,EAAE;QACxF,cAAc;QACd,QAAQ;KACT,CAAC,CAAC;IACH,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,6BAA6B,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;IACpG,CAAC;IACD,MAAM,cAAc,GAAG,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACzD,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,SAAS,CAAC;QACf,KAAK,YAAY,CAAC;QAClB,KAAK,oBAAoB;YACvB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC3B,KAAK,SAAS,CAAC;QACf,KAAK,YAAY;YACf,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;QACrE,KAAK,QAAQ;YACX,OAAO,4BAA4B,CAAC,MAAM,CAAC,eAAe,CAAC;gBACzD,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;gBACnB,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;QAC9E,KAAK,mBAAmB,CAAC;QACzB,KAAK,UAAU;YACb,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;QACjF;YACE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAkBD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAA6B,EAC7B,KAAqE,EACrE,OAAiC;IAEjC,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjD,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QAC3C,uEAAuE;QACvE,qEAAqE;QACrE,sEAAsE;QACtE,wEAAwE;QACxE,mDAAmD;QACnD,MAAM,iBAAiB,GAAG,MAAM,mCAAmC,CACjE,GAAG,EACH,OAAO,CAAC,eAAe,CACxB,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;YACjC,IAAI,MAAM,KAAK,IAAI;gBAAE,SAAS;YAC9B,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBACpF,SAAS;YACX,CAAC;YACD,uEAAuE;YACvE,oEAAoE;YACpE,6DAA6D;YAC7D,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,KAAK,SAAS;gBACtD,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,4BAA4B,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;YAC/E,MAAM,QAAQ,GAAG,MAAM,6BAA6B,CAClD,GAAG,EACH,OAAO,CAAC,cAAc,EACtB,cAAc,CACf,CAAC;YACF,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO;gBAAE,SAAS;YACxC,MAAM,uBAAuB,GAAG,MAAM,4CAA4C,CAChF,GAAG,EACH,OAAO,CAAC,eAAe,EACvB,MAAM,CACP,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS;gBACtC,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,cAAc,EAAE,uBAAuB,CAAC;gBAChI,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,cAAc,EAAE,uBAAuB,CAAC,CAAC;YAClI,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,KAAK,UAAU,4CAA4C,CACzD,GAAgB,EAChB,eAAuB,EACvB,MAAqB;IAErB,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;IACzE,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,GAAG,CAC7B,2CAA2C,EAC3C,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC,CACvC,CAAC;IACF,MAAM,iBAAiB,GAAG,SAAS,EAAE,0BAA0B,CAAC;IAChE,IAAI,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAClE,OAAO,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;IACpC,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,kBAAkB,CACzB,OAA6B,EAC7B,KAAqE,EACrE,QAAgB,EAChB,QAAgB,EAChB,MAAc,EACd,MAAqB,EACrB,cAAsB,EACtB,uBAA+B;IAE/B,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;IACrD,OAAO,8BAA8B,CAAC;QACpC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE;QACxC,QAAQ;QACR,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,SAAS,EAAE,KAAK,CAAC,OAAO;QACxB,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,UAAU,EAAE,gBAAgB,CAAC,UAAU;QACvC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,UAAU,EAAE,gBAAgB;QAC5B,QAAQ;QACR,YAAY,EAAE;YACZ,IAAI,EAAE,cAAc,CAAC,OAAO;YAC5B,KAAK,EAAE,MAAM,CAAC,YAAY,IAAI,MAAM;SACrC;QACD,UAAU,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,MAAM,EAAE;QAC3C,YAAY,EAAE,MAAM;QACpB,MAAM,EAAE,eAAe;QACvB,eAAe,EAAE,KAAK;QACtB,uBAAuB;QACvB,mBAAmB,EAAE,qBAAqB,CAAC,MAAM,CAAC,GAAG,EAAE,eAAe,CAAC;QACvE,cAAc;KACf,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CACxB,OAA6B,EAC7B,KAAqE,EACrE,QAAgB,EAChB,QAAgB,EAChB,MAAc,EACd,MAAqB,EACrB,cAAsB,EACtB,uBAA+B;IAE/B,OAAO,2BAA2B,CAAC;QACjC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE;QACxC,QAAQ;QACR,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,SAAS,EAAE,KAAK,CAAC,OAAO;QACxB,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,UAAU,EAAE,gBAAgB,CAAC,UAAU;QACvC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,UAAU,EAAE,gBAAgB;QAC5B,QAAQ;QACR,kEAAkE;QAClE,iEAAiE;QACjE,kDAAkD;QAClD,YAAY,EAAE,MAAM,CAAC,YAAY,KAAK,SAAS;YAC7C,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,MAAM,EAAE;YACjC,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE;QAChE,UAAU,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,MAAM,EAAE;QAC3C,YAAY,EAAE,MAAM;QACpB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM;QACzB,eAAe,EAAE,KAAK;QACtB,uBAAuB;QACvB,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW;QAC3C,cAAc;KACf,CAAC,CAAC;AACL,CAAC"}
@@ -23,6 +23,39 @@ export interface DriftTarget {
23
23
  */
24
24
  readonly observed: SyncSnapshotRow | undefined;
25
25
  }
26
+ /**
27
+ * Anchor + business-key indices shared by drift detection and matching.
28
+ *
29
+ * Built once per scan from the snapshot and reused for every desired chunk,
30
+ * so the snapshot side is indexed in a single Map pass instead of rebuilt
31
+ * per chunk. The maps hold references to the snapshot's rows; no snapshot
32
+ * data is copied.
33
+ */
34
+ export interface ObservedRowIndex {
35
+ readonly rowsByAnchor: ReadonlyMap<string, SyncSnapshotRow>;
36
+ readonly ambiguousAnchors: ReadonlySet<string>;
37
+ readonly rowsByIdentity: ReadonlyMap<string, SyncSnapshotRow>;
38
+ readonly ambiguousIdentities: ReadonlySet<string>;
39
+ }
40
+ /**
41
+ * Builds the deduplicated anchor/identity index for one snapshot.
42
+ *
43
+ * A duplicated physical anchor or business key is an anomaly, never a row
44
+ * choice: the affected locators are dropped from the index so neither the
45
+ * drift classifier nor the failed-head matcher can silently pick one row.
46
+ */
47
+ export declare function buildObservedRowIndex(snapshot: SyncSheetsSnapshot, businessKeyField: string): ObservedRowIndex;
48
+ /**
49
+ * Resolves the observed snapshot row owned by one desired row.
50
+ *
51
+ * The primary locator's ambiguity is fatal: when the desired anchor is
52
+ * duplicated, identity fallback would silently pick one of the rows that the
53
+ * corrupted anchor cannot distinguish, so the binding stays unmatched. The
54
+ * same quarantine applies when the desired identity appears in the snapshot's
55
+ * duplicate set. Returns undefined when no row can prove ownership of this
56
+ * binding.
57
+ */
58
+ export declare function resolveObservedRow(index: ObservedRowIndex, desiredRow: DesiredRow, businessKeyField: string): SyncSnapshotRow | undefined;
26
59
  export declare function computeDrifts(args: {
27
60
  readonly snapshot: SyncSheetsSnapshot;
28
61
  readonly desired: readonly DesiredRow[];
@@ -33,15 +66,17 @@ export declare function computeDrifts(args: {
33
66
  };
34
67
  }): readonly DriftTarget[];
35
68
  /**
36
- * Returns the observed snapshot row owned by each desired row.
69
+ * Classifies one chunk of desired rows against a prebuilt snapshot index.
37
70
  *
38
- * Honors the same duplication quarantine as drift detection: an ambiguous
39
- * anchor or duplicated business key never resolves to a row. The failed-head
40
- * repair path uses this to pass FRESH verified snapshot evidence into a
41
- * repair baseline for a clean (already matching) row, so a repair never
42
- * falls back to an unguarded insert for an existing Sheet row.
71
+ * The chunked scan calls this per completed entity batch with the scan-wide
72
+ * index; results concatenate in chunk order, which is the global
73
+ * `(entity_id, field_name)` order, so chunked classification is identical to
74
+ * one full-load `computeDrifts` call. Returns only drift targets; matched
75
+ * rows are simply absent (the scan counts them as scanned-minus-missing).
43
76
  */
44
- export declare function findObservedRows(snapshot: SyncSheetsSnapshot, desired: readonly DesiredRow[], businessKeyField: string): ReadonlyMap<string, SyncSnapshotRow>;
77
+ export declare function classifyDesiredChunk(index: ObservedRowIndex, desired: readonly DesiredRow[], systemFields: readonly string[], businessKeyField: string): readonly DriftTarget[];
78
+ /** Classifies one desired row: missing, drifted, or matched (undefined). */
79
+ export declare function classifyDesiredRow(index: ObservedRowIndex, desiredRow: DesiredRow, systemFields: readonly string[], businessKeyField: string): DriftTarget | undefined;
45
80
  /** Reads a business-key value from a snapshot row for unanchored fast appends. */
46
81
  export declare function snapshotIdentity(row: SyncSheetsSnapshot["rows"][number], identityField: string): string | undefined;
47
82
  /** Reads the same visible business-key value from canonical desired state. */
@@ -50,4 +85,13 @@ export declare function normalizedCellIdentity(cell: NormalizedCell | undefined)
50
85
  export declare function computeObservedHash(row: SyncSheetsSnapshot["rows"][number], systemFields: readonly string[]): string;
51
86
  export declare function countMatchedRows(snapshot: SyncSheetsSnapshot, desired: readonly DesiredRow[], identityField: string): number;
52
87
  export declare function countExtraRows(snapshot: SyncSheetsSnapshot, desired: readonly DesiredRow[], identityField: string): number;
88
+ /**
89
+ * Counts surplus snapshot rows from pre-accumulated desired keys.
90
+ *
91
+ * The chunked scan feeds one chunk at a time into `desiredAnchors` (first
92
+ * row wins per anchor) and `desiredIdentities`, then calls this once: the
93
+ * count is identical to `countExtraRows` while only small key strings are
94
+ * retained instead of full desired rows.
95
+ */
96
+ export declare function countExtraRowsForKeys(snapshot: SyncSheetsSnapshot, identityField: string, desiredAnchors: ReadonlyMap<string, string | undefined>, desiredIdentities: ReadonlySet<string>): number;
53
97
  //# sourceMappingURL=diff.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/sync/outbound/reconciliation/diff.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAG5E,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,SAAS,CAAC;CAChD;AA8ED,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAC;CACzF,GAAG,SAAS,WAAW,EAAE,CAiBzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,gBAAgB,EAAE,MAAM,GACvB,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAQtC;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EACvC,aAAa,EAAE,MAAM,GACpB,MAAM,GAAG,SAAS,CAEpB;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE7F;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAY3F;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EACvC,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,MAAM,CAOR;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,aAAa,EAAE,MAAM,GACpB,MAAM,CAqCR;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,aAAa,EAAE,MAAM,GACpB,MAAM,CAkDR"}
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/sync/outbound/reconciliation/diff.ts"],"names":[],"mappings":"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"}