@hewliyang/headless-spreadjs 0.0.2 → 0.0.4

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 (115) hide show
  1. package/README.md +78 -50
  2. package/dist/cli/abort.d.ts +7 -0
  3. package/dist/cli/abort.d.ts.map +1 -0
  4. package/dist/cli/abort.js +35 -0
  5. package/dist/cli/abort.js.map +1 -0
  6. package/dist/cli/client.d.ts +9 -0
  7. package/dist/cli/client.d.ts.map +1 -0
  8. package/dist/cli/client.js +122 -0
  9. package/dist/cli/client.js.map +1 -0
  10. package/dist/cli/commands/clear.d.ts +3 -1
  11. package/dist/cli/commands/clear.d.ts.map +1 -1
  12. package/dist/cli/commands/clear.js +11 -9
  13. package/dist/cli/commands/clear.js.map +1 -1
  14. package/dist/cli/commands/copy.d.ts +3 -1
  15. package/dist/cli/commands/copy.d.ts.map +1 -1
  16. package/dist/cli/commands/copy.js +5 -2
  17. package/dist/cli/commands/copy.js.map +1 -1
  18. package/dist/cli/commands/create.d.ts +3 -1
  19. package/dist/cli/commands/create.d.ts.map +1 -1
  20. package/dist/cli/commands/create.js +2 -2
  21. package/dist/cli/commands/create.js.map +1 -1
  22. package/dist/cli/commands/csv.d.ts +5 -1
  23. package/dist/cli/commands/csv.d.ts.map +1 -1
  24. package/dist/cli/commands/csv.js +38 -13
  25. package/dist/cli/commands/csv.js.map +1 -1
  26. package/dist/cli/commands/deps.d.ts +11 -0
  27. package/dist/cli/commands/deps.d.ts.map +1 -0
  28. package/dist/cli/commands/deps.js +329 -0
  29. package/dist/cli/commands/deps.js.map +1 -0
  30. package/dist/cli/commands/diff.d.ts +7 -0
  31. package/dist/cli/commands/diff.d.ts.map +1 -0
  32. package/dist/cli/commands/diff.js +235 -0
  33. package/dist/cli/commands/diff.js.map +1 -0
  34. package/dist/cli/commands/eval.d.ts +3 -1
  35. package/dist/cli/commands/eval.d.ts.map +1 -1
  36. package/dist/cli/commands/eval.js +23 -8
  37. package/dist/cli/commands/eval.js.map +1 -1
  38. package/dist/cli/commands/get.d.ts +1 -0
  39. package/dist/cli/commands/get.d.ts.map +1 -1
  40. package/dist/cli/commands/get.js +5 -2
  41. package/dist/cli/commands/get.js.map +1 -1
  42. package/dist/cli/commands/info.d.ts +3 -1
  43. package/dist/cli/commands/info.d.ts.map +1 -1
  44. package/dist/cli/commands/info.js +5 -2
  45. package/dist/cli/commands/info.js.map +1 -1
  46. package/dist/cli/commands/objects.d.ts +3 -1
  47. package/dist/cli/commands/objects.d.ts.map +1 -1
  48. package/dist/cli/commands/objects.js +5 -6
  49. package/dist/cli/commands/objects.js.map +1 -1
  50. package/dist/cli/commands/resize.d.ts +1 -0
  51. package/dist/cli/commands/resize.d.ts.map +1 -1
  52. package/dist/cli/commands/resize.js +67 -29
  53. package/dist/cli/commands/resize.js.map +1 -1
  54. package/dist/cli/commands/rows-cols.d.ts +1 -0
  55. package/dist/cli/commands/rows-cols.d.ts.map +1 -1
  56. package/dist/cli/commands/rows-cols.js +101 -45
  57. package/dist/cli/commands/rows-cols.js.map +1 -1
  58. package/dist/cli/commands/screenshot.d.ts +8 -0
  59. package/dist/cli/commands/screenshot.d.ts.map +1 -0
  60. package/dist/cli/commands/screenshot.js +260 -0
  61. package/dist/cli/commands/screenshot.js.map +1 -0
  62. package/dist/cli/commands/search.d.ts +1 -0
  63. package/dist/cli/commands/search.d.ts.map +1 -1
  64. package/dist/cli/commands/search.js +16 -8
  65. package/dist/cli/commands/search.js.map +1 -1
  66. package/dist/cli/commands/set.d.ts +3 -1
  67. package/dist/cli/commands/set.d.ts.map +1 -1
  68. package/dist/cli/commands/set.js +72 -25
  69. package/dist/cli/commands/set.js.map +1 -1
  70. package/dist/cli/commands/sheet.d.ts +3 -1
  71. package/dist/cli/commands/sheet.d.ts.map +1 -1
  72. package/dist/cli/commands/sheet.js +20 -10
  73. package/dist/cli/commands/sheet.js.map +1 -1
  74. package/dist/cli/context.d.ts +18 -6
  75. package/dist/cli/context.d.ts.map +1 -1
  76. package/dist/cli/context.js +93 -8
  77. package/dist/cli/context.js.map +1 -1
  78. package/dist/cli/daemon-entry.d.ts +3 -0
  79. package/dist/cli/daemon-entry.d.ts.map +1 -0
  80. package/dist/cli/daemon-entry.js +4 -0
  81. package/dist/cli/daemon-entry.js.map +1 -0
  82. package/dist/cli/daemon.d.ts +4 -0
  83. package/dist/cli/daemon.d.ts.map +1 -0
  84. package/dist/cli/daemon.js +330 -0
  85. package/dist/cli/daemon.js.map +1 -0
  86. package/dist/cli/dispatch.d.ts +5 -0
  87. package/dist/cli/dispatch.d.ts.map +1 -0
  88. package/dist/cli/dispatch.js +353 -0
  89. package/dist/cli/dispatch.js.map +1 -0
  90. package/dist/cli/file-cache.d.ts +23 -0
  91. package/dist/cli/file-cache.d.ts.map +1 -0
  92. package/dist/cli/file-cache.js +102 -0
  93. package/dist/cli/file-cache.js.map +1 -0
  94. package/dist/cli/index.js +34 -175
  95. package/dist/cli/index.js.map +1 -1
  96. package/dist/cli/main.d.ts +2 -0
  97. package/dist/cli/main.d.ts.map +1 -0
  98. package/dist/cli/main.js +210 -0
  99. package/dist/cli/main.js.map +1 -0
  100. package/dist/cli/output.d.ts +9 -6
  101. package/dist/cli/output.d.ts.map +1 -1
  102. package/dist/cli/output.js +36 -8
  103. package/dist/cli/output.js.map +1 -1
  104. package/dist/cli/styles.d.ts +14 -19
  105. package/dist/cli/styles.d.ts.map +1 -1
  106. package/dist/cli/styles.js +65 -39
  107. package/dist/cli/styles.js.map +1 -1
  108. package/dist/excel-file.d.ts +3 -1
  109. package/dist/excel-file.d.ts.map +1 -1
  110. package/dist/excel-file.js +50 -6
  111. package/dist/excel-file.js.map +1 -1
  112. package/dist/shims.d.ts.map +1 -1
  113. package/dist/shims.js +52 -0
  114. package/dist/shims.js.map +1 -1
  115. package/package.json +9 -1
@@ -0,0 +1,11 @@
1
+ export declare function deps(filePath: string, ref: string, options?: {
2
+ signal?: AbortSignal | null;
3
+ depth?: number;
4
+ rangeExpansionLimit?: number;
5
+ }): Promise<void>;
6
+ export declare function refs(filePath: string, ref: string, options?: {
7
+ signal?: AbortSignal | null;
8
+ depth?: number;
9
+ maxFormulaCells?: number;
10
+ }): Promise<void>;
11
+ //# sourceMappingURL=deps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/deps.ts"],"names":[],"mappings":"AAiHA,wBAAsB,IAAI,CACxB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,GACA,OAAO,CAAC,IAAI,CAAC,CA+Hf;AAwGD,wBAAsB,IAAI,CACxB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GACA,OAAO,CAAC,IAAI,CAAC,CAoHf"}
@@ -0,0 +1,329 @@
1
+ import { cellToA1, parseRef } from "../a1.js";
2
+ import { throwIfAborted } from "../abort.js";
3
+ import { withFile } from "../context.js";
4
+ import { fail, ok } from "../output.js";
5
+ const USED_RANGE_TYPE_FORMULA = 32;
6
+ const DEFAULT_RANGE_EXPANSION_LIMIT = 128;
7
+ const DEFAULT_MAX_FORMULA_SCAN = 250_000;
8
+ function makeCellKey(sheet, row, col) {
9
+ return `${sheet}|${row}|${col}`;
10
+ }
11
+ function makeRangeKey(range) {
12
+ return `${range.sheet}|${range.row}|${range.col}|${range.rowCount}|${range.colCount}`;
13
+ }
14
+ function toA1Ref(range) {
15
+ const start = cellToA1(range.row, range.col);
16
+ if (range.rowCount === 1 && range.colCount === 1) {
17
+ return start;
18
+ }
19
+ const end = cellToA1(range.row + range.rowCount - 1, range.col + range.colCount - 1);
20
+ return `${start}:${end}`;
21
+ }
22
+ function normalizePrecedents(raw, defaultSheet) {
23
+ if (!raw || raw.length === 0)
24
+ return [];
25
+ return raw
26
+ .map((item) => ({
27
+ sheet: item.sheetName || defaultSheet,
28
+ row: typeof item.row === "number" ? item.row : -1,
29
+ col: typeof item.col === "number" ? item.col : -1,
30
+ rowCount: typeof item.rowCount === "number" ? item.rowCount : 1,
31
+ colCount: typeof item.colCount === "number" ? item.colCount : 1,
32
+ }))
33
+ .filter((item) => item.row >= 0 &&
34
+ item.col >= 0 &&
35
+ item.rowCount > 0 &&
36
+ item.colCount > 0);
37
+ }
38
+ function isSingleCell(range) {
39
+ return range.rowCount === 1 && range.colCount === 1;
40
+ }
41
+ function rangeContainsCell(range, cell) {
42
+ if (range.sheet !== cell.sheet)
43
+ return false;
44
+ return (cell.row >= range.row &&
45
+ cell.row < range.row + range.rowCount &&
46
+ cell.col >= range.col &&
47
+ cell.col < range.col + range.colCount);
48
+ }
49
+ function parseTarget(ref) {
50
+ const parsed = parseRef(ref);
51
+ if (parsed.start.row !== parsed.end.row ||
52
+ parsed.start.col !== parsed.end.col) {
53
+ fail(`Expected a single-cell reference, got range: ${ref}`);
54
+ }
55
+ return {
56
+ sheet: parsed.sheet,
57
+ row: parsed.start.row,
58
+ col: parsed.start.col,
59
+ };
60
+ }
61
+ export async function deps(filePath, ref, options) {
62
+ const signal = options?.signal;
63
+ const depth = options?.depth && options.depth > 0 ? options.depth : 1;
64
+ const rangeExpansionLimit = options?.rangeExpansionLimit && options.rangeExpansionLimit > 0
65
+ ? options.rangeExpansionLimit
66
+ : DEFAULT_RANGE_EXPANSION_LIMIT;
67
+ await withFile(filePath, ({ workbook }) => {
68
+ const target = parseTarget(ref);
69
+ const defaultSheet = workbook.getActiveSheet().name();
70
+ const startSheetName = target.sheet || defaultSheet;
71
+ const startSheet = workbook.getSheetFromName(startSheetName);
72
+ if (!startSheet) {
73
+ fail(`Sheet not found: ${startSheetName}`);
74
+ }
75
+ let frontier = new Map([
76
+ [
77
+ makeCellKey(startSheetName, target.row, target.col),
78
+ {
79
+ sheet: startSheetName,
80
+ row: target.row,
81
+ col: target.col,
82
+ },
83
+ ],
84
+ ]);
85
+ const visited = new Set(frontier.keys());
86
+ const discovered = new Map();
87
+ let hopsTraversed = 0;
88
+ let cellsExpanded = 0;
89
+ let rangesNotExpanded = 0;
90
+ let sourceCellsVisited = 0;
91
+ for (let hop = 1; hop <= depth && frontier.size > 0; hop++) {
92
+ throwIfAborted(signal);
93
+ hopsTraversed = hop;
94
+ const next = new Map();
95
+ for (const cell of frontier.values()) {
96
+ throwIfAborted(signal);
97
+ sourceCellsVisited++;
98
+ const sheet = workbook.getSheetFromName(cell.sheet);
99
+ if (!sheet)
100
+ continue;
101
+ const precedents = normalizePrecedents(sheet.getPrecedents(cell.row, cell.col), cell.sheet);
102
+ for (const precedent of precedents) {
103
+ const rangeKey = makeRangeKey(precedent);
104
+ const existing = discovered.get(rangeKey);
105
+ if (!existing || hop < existing.hop) {
106
+ discovered.set(rangeKey, { range: precedent, hop });
107
+ }
108
+ if (hop >= depth)
109
+ continue;
110
+ const size = precedent.rowCount * precedent.colCount;
111
+ if (size > rangeExpansionLimit) {
112
+ rangesNotExpanded++;
113
+ continue;
114
+ }
115
+ for (let r = 0; r < precedent.rowCount; r++) {
116
+ for (let c = 0; c < precedent.colCount; c++) {
117
+ const row = precedent.row + r;
118
+ const col = precedent.col + c;
119
+ const key = makeCellKey(precedent.sheet, row, col);
120
+ if (visited.has(key))
121
+ continue;
122
+ visited.add(key);
123
+ cellsExpanded++;
124
+ next.set(key, {
125
+ sheet: precedent.sheet,
126
+ row,
127
+ col,
128
+ });
129
+ }
130
+ }
131
+ }
132
+ }
133
+ frontier = next;
134
+ }
135
+ const dependencies = Array.from(discovered.values())
136
+ .map(({ range, hop }) => ({
137
+ sheet: range.sheet,
138
+ ref: toA1Ref(range),
139
+ hop,
140
+ type: isSingleCell(range) ? "cell" : "range",
141
+ }))
142
+ .sort((a, b) => {
143
+ if (a.hop !== b.hop)
144
+ return a.hop - b.hop;
145
+ if (a.sheet !== b.sheet)
146
+ return a.sheet.localeCompare(b.sheet);
147
+ return a.ref.localeCompare(b.ref);
148
+ });
149
+ ok({
150
+ target: {
151
+ sheet: startSheetName,
152
+ cell: cellToA1(target.row, target.col),
153
+ },
154
+ requestedDepth: depth,
155
+ hopsTraversed,
156
+ oneHop: depth === 1,
157
+ dependencies,
158
+ stats: {
159
+ sourceCellsVisited,
160
+ cellsExpanded,
161
+ rangesNotExpanded,
162
+ rangeExpansionLimit,
163
+ },
164
+ note: "Best-effort trace. Dynamic formulas (e.g. INDIRECT/OFFSET) may be incomplete.",
165
+ });
166
+ }, { signal });
167
+ }
168
+ function collectFormulaNodes(workbook, maxFormulaCells, signal) {
169
+ const nodes = [];
170
+ let scannedFormulaCells = 0;
171
+ let truncated = false;
172
+ for (let si = 0; si < workbook.getSheetCount(); si++) {
173
+ throwIfAborted(signal);
174
+ const sheet = workbook.getSheet(si);
175
+ const sheetName = sheet.name();
176
+ let usedRange = null;
177
+ try {
178
+ usedRange = sheet.getUsedRange(USED_RANGE_TYPE_FORMULA);
179
+ }
180
+ catch {
181
+ continue;
182
+ }
183
+ if (!usedRange || usedRange.rowCount <= 0 || usedRange.colCount <= 0) {
184
+ continue;
185
+ }
186
+ const rowEnd = usedRange.row + usedRange.rowCount;
187
+ const colEnd = usedRange.col + usedRange.colCount;
188
+ for (let row = usedRange.row; row < rowEnd; row++) {
189
+ throwIfAborted(signal);
190
+ for (let col = usedRange.col; col < colEnd; col++) {
191
+ const formula = sheet.getFormula(row, col);
192
+ if (!formula)
193
+ continue;
194
+ scannedFormulaCells++;
195
+ if (scannedFormulaCells > maxFormulaCells) {
196
+ truncated = true;
197
+ return { nodes, scannedFormulaCells, truncated };
198
+ }
199
+ const precedents = normalizePrecedents(sheet.getPrecedents(row, col), sheetName);
200
+ nodes.push({
201
+ sheet: sheetName,
202
+ row,
203
+ col,
204
+ precedents,
205
+ });
206
+ }
207
+ }
208
+ }
209
+ return { nodes, scannedFormulaCells, truncated };
210
+ }
211
+ function matchesAnyFrontierCell(precedents, frontierBySheet, frontierExact) {
212
+ for (const precedent of precedents) {
213
+ const frontierCells = frontierBySheet.get(precedent.sheet);
214
+ if (!frontierCells || frontierCells.length === 0)
215
+ continue;
216
+ if (isSingleCell(precedent)) {
217
+ if (frontierExact.has(makeCellKey(precedent.sheet, precedent.row, precedent.col))) {
218
+ return true;
219
+ }
220
+ continue;
221
+ }
222
+ for (const cell of frontierCells) {
223
+ if (rangeContainsCell(precedent, cell)) {
224
+ return true;
225
+ }
226
+ }
227
+ }
228
+ return false;
229
+ }
230
+ function groupBySheet(cells) {
231
+ const bySheet = new Map();
232
+ for (const cell of cells) {
233
+ const list = bySheet.get(cell.sheet);
234
+ if (list) {
235
+ list.push(cell);
236
+ }
237
+ else {
238
+ bySheet.set(cell.sheet, [cell]);
239
+ }
240
+ }
241
+ return bySheet;
242
+ }
243
+ export async function refs(filePath, ref, options) {
244
+ const signal = options?.signal;
245
+ const depth = options?.depth && options.depth > 0 ? options.depth : 1;
246
+ const maxFormulaCells = options?.maxFormulaCells && options.maxFormulaCells > 0
247
+ ? options.maxFormulaCells
248
+ : DEFAULT_MAX_FORMULA_SCAN;
249
+ await withFile(filePath, ({ workbook }) => {
250
+ const target = parseTarget(ref);
251
+ const defaultSheet = workbook.getActiveSheet().name();
252
+ const startSheetName = target.sheet || defaultSheet;
253
+ const startSheet = workbook.getSheetFromName(startSheetName);
254
+ if (!startSheet) {
255
+ fail(`Sheet not found: ${startSheetName}`);
256
+ }
257
+ const { nodes, scannedFormulaCells, truncated } = collectFormulaNodes(workbook, maxFormulaCells, signal);
258
+ let frontier = [
259
+ { sheet: startSheetName, row: target.row, col: target.col },
260
+ ];
261
+ let frontierExact = new Set([
262
+ makeCellKey(startSheetName, target.row, target.col),
263
+ ]);
264
+ const seenDependents = new Set();
265
+ const discovered = new Map();
266
+ let hopsTraversed = 0;
267
+ for (let hop = 1; hop <= depth && frontier.length > 0; hop++) {
268
+ throwIfAborted(signal);
269
+ hopsTraversed = hop;
270
+ const frontierBySheet = groupBySheet(frontier);
271
+ const next = [];
272
+ const nextExact = new Set();
273
+ for (const node of nodes) {
274
+ throwIfAborted(signal);
275
+ const nodeKey = makeCellKey(node.sheet, node.row, node.col);
276
+ if (seenDependents.has(nodeKey))
277
+ continue;
278
+ if (!matchesAnyFrontierCell(node.precedents, frontierBySheet, frontierExact)) {
279
+ continue;
280
+ }
281
+ if (nodeKey === makeCellKey(startSheetName, target.row, target.col)) {
282
+ continue;
283
+ }
284
+ seenDependents.add(nodeKey);
285
+ discovered.set(nodeKey, {
286
+ sheet: node.sheet,
287
+ row: node.row,
288
+ col: node.col,
289
+ hop,
290
+ });
291
+ next.push({ sheet: node.sheet, row: node.row, col: node.col });
292
+ nextExact.add(nodeKey);
293
+ }
294
+ frontier = next;
295
+ frontierExact = nextExact;
296
+ }
297
+ const references = Array.from(discovered.values())
298
+ .map((item) => ({
299
+ sheet: item.sheet,
300
+ cell: cellToA1(item.row, item.col),
301
+ hop: item.hop,
302
+ }))
303
+ .sort((a, b) => {
304
+ if (a.hop !== b.hop)
305
+ return a.hop - b.hop;
306
+ if (a.sheet !== b.sheet)
307
+ return a.sheet.localeCompare(b.sheet);
308
+ return a.cell.localeCompare(b.cell);
309
+ });
310
+ ok({
311
+ target: {
312
+ sheet: startSheetName,
313
+ cell: cellToA1(target.row, target.col),
314
+ },
315
+ requestedDepth: depth,
316
+ hopsTraversed,
317
+ oneHop: depth === 1,
318
+ references,
319
+ stats: {
320
+ scannedFormulaCells,
321
+ indexedFormulaCells: nodes.length,
322
+ maxFormulaCells,
323
+ truncated,
324
+ },
325
+ note: "Best-effort trace. Dynamic formulas (e.g. INDIRECT/OFFSET) may be incomplete.",
326
+ });
327
+ }, { signal });
328
+ }
329
+ //# sourceMappingURL=deps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deps.js","sourceRoot":"","sources":["../../../src/cli/commands/deps.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAExC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACnC,MAAM,6BAA6B,GAAG,GAAG,CAAC;AAC1C,MAAM,wBAAwB,GAAG,OAAO,CAAC;AA4BzC,SAAS,WAAW,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IAC1D,OAAO,GAAG,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,YAAY,CAAC,KAAqB;IACzC,OAAO,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;AACxF,CAAC;AAED,SAAS,OAAO,CAAC,KAAqB;IACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,GAAG,GAAG,QAAQ,CAClB,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,EAC9B,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAC/B,CAAC;IACF,OAAO,GAAG,KAAK,IAAI,GAAG,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,mBAAmB,CAC1B,GAAiD,EACjD,YAAoB;IAEpB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAExC,OAAO,GAAG;SACP,GAAG,CAAC,CAAC,IAAkB,EAAE,EAAE,CAAC,CAAC;QAC5B,KAAK,EAAE,IAAI,CAAC,SAAS,IAAI,YAAY;QACrC,GAAG,EAAE,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,GAAG,EAAE,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/D,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAChE,CAAC,CAAC;SACF,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,GAAG,IAAI,CAAC;QACb,IAAI,CAAC,GAAG,IAAI,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,CAAC,CACpB,CAAC;AACN,CAAC;AAED,SAAS,YAAY,CAAC,KAAqB;IACzC,OAAO,KAAK,CAAC,QAAQ,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAqB,EAAE,IAAe;IAC/D,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAC7C,OAAO,CACL,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG;QACrB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ;QACrC,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG;QACrB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,CACtC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAK9B,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7B,IACE,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG;QACnC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,EACnC,CAAC;QACD,IAAI,CAAC,gDAAgD,GAAG,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG;QACrB,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,QAAgB,EAChB,GAAW,EACX,OAIC;IAED,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;IAC/B,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,mBAAmB,GACvB,OAAO,EAAE,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,GAAG,CAAC;QAC7D,CAAC,CAAC,OAAO,CAAC,mBAAmB;QAC7B,CAAC,CAAC,6BAA6B,CAAC;IAEpC,MAAM,QAAQ,CACZ,QAAQ,EACR,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC;QACtD,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,IAAI,YAAY,CAAC;QACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;QAE7D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,oBAAoB,cAAc,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,QAAQ,GAAG,IAAI,GAAG,CAAoB;YACxC;gBACE,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;gBACnD;oBACE,KAAK,EAAE,cAAc;oBACrB,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,GAAG,EAAE,MAAM,CAAC,GAAG;iBAChB;aACF;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,GAAG,EAGvB,CAAC;QAEJ,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAE3B,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;YAC3D,cAAc,CAAC,MAAM,CAAC,CAAC;YACvB,aAAa,GAAG,GAAG,CAAC;YACpB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAqB,CAAC;YAE1C,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;gBACrC,cAAc,CAAC,MAAM,CAAC,CAAC;gBACvB,kBAAkB,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpD,IAAI,CAAC,KAAK;oBAAE,SAAS;gBAErB,MAAM,UAAU,GAAG,mBAAmB,CACpC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EACvC,IAAI,CAAC,KAAK,CACX,CAAC;gBAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;oBACnC,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;oBACzC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC1C,IAAI,CAAC,QAAQ,IAAI,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;wBACpC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;oBACtD,CAAC;oBAED,IAAI,GAAG,IAAI,KAAK;wBAAE,SAAS;oBAE3B,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;oBACrD,IAAI,IAAI,GAAG,mBAAmB,EAAE,CAAC;wBAC/B,iBAAiB,EAAE,CAAC;wBACpB,SAAS;oBACX,CAAC;oBAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;4BAC5C,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC;4BAC9B,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC;4BAC9B,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;4BACnD,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;gCAAE,SAAS;4BAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;4BACjB,aAAa,EAAE,CAAC;4BAChB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;gCACZ,KAAK,EAAE,SAAS,CAAC,KAAK;gCACtB,GAAG;gCACH,GAAG;6BACJ,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QAED,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;aACjD,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC;YACnB,GAAG;YACH,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;SAC7C,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACb,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG;gBAAE,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;YAC1C,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;gBAAE,OAAO,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC/D,OAAO,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEL,EAAE,CAAC;YACD,MAAM,EAAE;gBACN,KAAK,EAAE,cAAc;gBACrB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;aACvC;YACD,cAAc,EAAE,KAAK;YACrB,aAAa;YACb,MAAM,EAAE,KAAK,KAAK,CAAC;YACnB,YAAY;YACZ,KAAK,EAAE;gBACL,kBAAkB;gBAClB,aAAa;gBACb,iBAAiB;gBACjB,mBAAmB;aACpB;YACD,IAAI,EAAE,+EAA+E;SACtF,CAAC,CAAC;IACL,CAAC,EACD,EAAE,MAAM,EAAE,CACX,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,QAAwB,EACxB,eAAuB,EACvB,MAA2B;IAE3B,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QACrD,cAAc,CAAC,MAAM,CAAC,CAAC;QACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAE/B,IAAI,SAAS,GAAwB,IAAI,CAAC;QAE1C,IAAI,CAAC;YACH,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ,IAAI,CAAC,IAAI,SAAS,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;YACrE,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC;QAClD,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC;QAElD,KAAK,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;YAClD,cAAc,CAAC,MAAM,CAAC,CAAC;YACvB,KAAK,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;gBAClD,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC3C,IAAI,CAAC,OAAO;oBAAE,SAAS;gBAEvB,mBAAmB,EAAE,CAAC;gBACtB,IAAI,mBAAmB,GAAG,eAAe,EAAE,CAAC;oBAC1C,SAAS,GAAG,IAAI,CAAC;oBACjB,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC;gBACnD,CAAC;gBAED,MAAM,UAAU,GAAG,mBAAmB,CACpC,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,EAC7B,SAAS,CACV,CAAC;gBAEF,KAAK,CAAC,IAAI,CAAC;oBACT,KAAK,EAAE,SAAS;oBAChB,GAAG;oBACH,GAAG;oBACH,UAAU;iBACX,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,sBAAsB,CAC7B,UAA4B,EAC5B,eAAyC,EACzC,aAA0B;IAE1B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAE3D,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5B,IACE,aAAa,CAAC,GAAG,CACf,WAAW,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAC3D,EACD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,SAAS;QACX,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,KAAkB;IACtC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,QAAgB,EAChB,GAAW,EACX,OAIC;IAED,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;IAC/B,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,eAAe,GACnB,OAAO,EAAE,eAAe,IAAI,OAAO,CAAC,eAAe,GAAG,CAAC;QACrD,CAAC,CAAC,OAAO,CAAC,eAAe;QACzB,CAAC,CAAC,wBAAwB,CAAC;IAE/B,MAAM,QAAQ,CACZ,QAAQ,EACR,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC;QACtD,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,IAAI,YAAY,CAAC;QACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;QAE7D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,oBAAoB,cAAc,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,GAAG,mBAAmB,CACnE,QAAQ,EACR,eAAe,EACf,MAAM,CACP,CAAC;QAEF,IAAI,QAAQ,GAAgB;YAC1B,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE;SAC5D,CAAC;QACF,IAAI,aAAa,GAAG,IAAI,GAAG,CAAS;YAClC,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;SACpD,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QACzC,MAAM,UAAU,GAAG,IAAI,GAAG,EAGvB,CAAC;QAEJ,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,KAAK,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;YAC7D,cAAc,CAAC,MAAM,CAAC,CAAC;YACvB,aAAa,GAAG,GAAG,CAAC;YAEpB,MAAM,eAAe,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAgB,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;YAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,cAAc,CAAC,MAAM,CAAC,CAAC;gBACvB,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5D,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC;oBAAE,SAAS;gBAE1C,IACE,CAAC,sBAAsB,CACrB,IAAI,CAAC,UAAU,EACf,eAAe,EACf,aAAa,CACd,EACD,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,IAAI,OAAO,KAAK,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpE,SAAS;gBACX,CAAC;gBAED,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5B,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE;oBACtB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,GAAG;iBACJ,CAAC,CAAC;gBAEH,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC/D,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;YAED,QAAQ,GAAG,IAAI,CAAC;YAChB,aAAa,GAAG,SAAS,CAAC;QAC5B,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;aAC/C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACd,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;YAClC,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACb,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG;gBAAE,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;YAC1C,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;gBAAE,OAAO,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC/D,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEL,EAAE,CAAC;YACD,MAAM,EAAE;gBACN,KAAK,EAAE,cAAc;gBACrB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;aACvC;YACD,cAAc,EAAE,KAAK;YACrB,aAAa;YACb,MAAM,EAAE,KAAK,KAAK,CAAC;YACnB,UAAU;YACV,KAAK,EAAE;gBACL,mBAAmB;gBACnB,mBAAmB,EAAE,KAAK,CAAC,MAAM;gBACjC,eAAe;gBACf,SAAS;aACV;YACD,IAAI,EAAE,+EAA+E;SACtF,CAAC,CAAC;IACL,CAAC,EACD,EAAE,MAAM,EAAE,CACX,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare function diff(leftFilePath: string, rightFilePath: string, options?: {
2
+ signal?: AbortSignal | null;
3
+ inlineLimit?: number;
4
+ previewLimit?: number;
5
+ epsilon?: number;
6
+ }): Promise<void>;
7
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/diff.ts"],"names":[],"mappings":"AA4IA,wBAAsB,IAAI,CACxB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC,IAAI,CAAC,CA2Lf"}
@@ -0,0 +1,235 @@
1
+ import fs from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { cellToA1 } from "../a1.js";
5
+ import { throwIfAborted } from "../abort.js";
6
+ import { withFile } from "../context.js";
7
+ import { ok } from "../output.js";
8
+ const DEFAULT_INLINE_LIMIT = 2000;
9
+ const DEFAULT_PREVIEW_LIMIT = 200;
10
+ const USED_RANGE_TYPE_DATA_FORMULA = 16 | 32;
11
+ function toCellKey(row, col) {
12
+ return `${row}:${col}`;
13
+ }
14
+ function fromCellKey(key) {
15
+ const [row, col] = key.split(":");
16
+ return {
17
+ row: Number.parseInt(row, 10),
18
+ col: Number.parseInt(col, 10),
19
+ };
20
+ }
21
+ function collectUsedCells(sheet, signal) {
22
+ const cells = new Map();
23
+ let usedRange = null;
24
+ try {
25
+ usedRange = sheet.getUsedRange(USED_RANGE_TYPE_DATA_FORMULA);
26
+ }
27
+ catch {
28
+ return cells;
29
+ }
30
+ if (!usedRange || usedRange.rowCount <= 0 || usedRange.colCount <= 0) {
31
+ return cells;
32
+ }
33
+ const rowEnd = usedRange.row + usedRange.rowCount;
34
+ const colEnd = usedRange.col + usedRange.colCount;
35
+ for (let row = usedRange.row; row < rowEnd; row++) {
36
+ throwIfAborted(signal);
37
+ for (let col = usedRange.col; col < colEnd; col++) {
38
+ const value = sheet.getValue(row, col);
39
+ const formula = sheet.getFormula(row, col);
40
+ const hasFormula = !!formula;
41
+ const hasValue = value !== null && value !== undefined && value !== "";
42
+ if (!hasFormula && !hasValue) {
43
+ continue;
44
+ }
45
+ cells.set(toCellKey(row, col), {
46
+ row,
47
+ col,
48
+ value: value ?? null,
49
+ formula: formula || null,
50
+ });
51
+ }
52
+ }
53
+ return cells;
54
+ }
55
+ const DEFAULT_NUMERIC_EPSILON = 1e-8;
56
+ function numbersNearlyEqual(a, b, epsilon) {
57
+ if (a === b)
58
+ return true;
59
+ const diff = Math.abs(a - b);
60
+ const largest = Math.max(Math.abs(a), Math.abs(b));
61
+ return diff <= largest * epsilon;
62
+ }
63
+ function valuesEqual(left, right, epsilon) {
64
+ if (Object.is(left, right)) {
65
+ return true;
66
+ }
67
+ if (typeof left === "number" && typeof right === "number") {
68
+ return numbersNearlyEqual(left, right, epsilon);
69
+ }
70
+ if (left instanceof Date && right instanceof Date) {
71
+ return left.getTime() === right.getTime();
72
+ }
73
+ if (left && right && typeof left === "object" && typeof right === "object") {
74
+ try {
75
+ return JSON.stringify(left) === JSON.stringify(right);
76
+ }
77
+ catch {
78
+ return false;
79
+ }
80
+ }
81
+ return false;
82
+ }
83
+ function summarizeDivergence(changedCells, comparedCells, sheetsWithDifferences, sheetsOnlyLeft, sheetsOnlyRight) {
84
+ if (changedCells === 0) {
85
+ return "No differences found.";
86
+ }
87
+ const ratio = comparedCells > 0 ? changedCells / comparedCells : 1;
88
+ const level = ratio < 0.01
89
+ ? "Low divergence"
90
+ : ratio < 0.2
91
+ ? "Moderate divergence"
92
+ : "High divergence";
93
+ return `${level}: ${changedCells} changed cells across ${sheetsWithDifferences} sheet(s). Left-only sheets: ${sheetsOnlyLeft}, right-only sheets: ${sheetsOnlyRight}.`;
94
+ }
95
+ export async function diff(leftFilePath, rightFilePath, options) {
96
+ const signal = options?.signal;
97
+ const inlineLimit = options?.inlineLimit && options.inlineLimit > 0
98
+ ? options.inlineLimit
99
+ : DEFAULT_INLINE_LIMIT;
100
+ const previewLimit = options?.previewLimit && options.previewLimit > 0
101
+ ? options.previewLimit
102
+ : DEFAULT_PREVIEW_LIMIT;
103
+ const epsilon = options?.epsilon !== undefined && options.epsilon >= 0
104
+ ? options.epsilon
105
+ : DEFAULT_NUMERIC_EPSILON;
106
+ await withFile(leftFilePath, ({ workbook: leftWorkbook }) => withFile(rightFilePath, ({ workbook: rightWorkbook }) => {
107
+ const leftSheetNames = new Set();
108
+ const rightSheetNames = new Set();
109
+ for (let i = 0; i < leftWorkbook.getSheetCount(); i++) {
110
+ throwIfAborted(signal);
111
+ leftSheetNames.add(leftWorkbook.getSheet(i).name());
112
+ }
113
+ for (let i = 0; i < rightWorkbook.getSheetCount(); i++) {
114
+ throwIfAborted(signal);
115
+ rightSheetNames.add(rightWorkbook.getSheet(i).name());
116
+ }
117
+ const allSheetNames = Array.from(new Set([...leftSheetNames, ...rightSheetNames])).sort((a, b) => a.localeCompare(b));
118
+ const previews = [];
119
+ let bufferedDiffs = [];
120
+ let outputFilePath = null;
121
+ let outputDirPath = null;
122
+ const sheetStats = {};
123
+ let changedCells = 0;
124
+ let comparedCells = 0;
125
+ const ensureOutputFile = () => {
126
+ if (outputFilePath) {
127
+ return outputFilePath;
128
+ }
129
+ outputDirPath = fs.mkdtempSync(path.join(os.tmpdir(), "hsx-diff-"));
130
+ outputFilePath = path.join(outputDirPath, "diff.ndjson");
131
+ if (bufferedDiffs.length > 0) {
132
+ const bootstrap = bufferedDiffs
133
+ .map((entry) => `${JSON.stringify(entry)}\n`)
134
+ .join("");
135
+ fs.writeFileSync(outputFilePath, bootstrap, "utf8");
136
+ bufferedDiffs = [];
137
+ }
138
+ return outputFilePath;
139
+ };
140
+ const recordDiff = (entry) => {
141
+ changedCells++;
142
+ sheetStats[entry.sheet] ??= { changedCells: 0 };
143
+ sheetStats[entry.sheet].changedCells++;
144
+ if (previews.length < previewLimit) {
145
+ previews.push(entry);
146
+ }
147
+ if (outputFilePath) {
148
+ fs.appendFileSync(outputFilePath, `${JSON.stringify(entry)}\n`, "utf8");
149
+ return;
150
+ }
151
+ bufferedDiffs.push(entry);
152
+ if (bufferedDiffs.length > inlineLimit) {
153
+ ensureOutputFile();
154
+ }
155
+ };
156
+ for (const sheetName of allSheetNames) {
157
+ throwIfAborted(signal);
158
+ const leftSheet = leftWorkbook.getSheetFromName(sheetName);
159
+ const rightSheet = rightWorkbook.getSheetFromName(sheetName);
160
+ const leftCells = leftSheet
161
+ ? collectUsedCells(leftSheet, signal)
162
+ : new Map();
163
+ const rightCells = rightSheet
164
+ ? collectUsedCells(rightSheet, signal)
165
+ : new Map();
166
+ const cellKeys = new Set([
167
+ ...leftCells.keys(),
168
+ ...rightCells.keys(),
169
+ ]);
170
+ comparedCells += cellKeys.size;
171
+ for (const key of cellKeys) {
172
+ throwIfAborted(signal);
173
+ const coords = fromCellKey(key);
174
+ const left = leftCells.get(key) ?? {
175
+ row: coords.row,
176
+ col: coords.col,
177
+ value: null,
178
+ formula: null,
179
+ };
180
+ const right = rightCells.get(key) ?? {
181
+ row: coords.row,
182
+ col: coords.col,
183
+ value: null,
184
+ formula: null,
185
+ };
186
+ const sameFormula = (left.formula || null) === (right.formula || null);
187
+ const sameValue = valuesEqual(left.value, right.value, epsilon);
188
+ if (sameFormula && sameValue) {
189
+ continue;
190
+ }
191
+ recordDiff({
192
+ sheet: sheetName,
193
+ cell: cellToA1(left.row, left.col),
194
+ left: {
195
+ value: left.value,
196
+ formula: left.formula,
197
+ },
198
+ right: {
199
+ value: right.value,
200
+ formula: right.formula,
201
+ },
202
+ });
203
+ }
204
+ }
205
+ const sheetsWithDifferences = Object.keys(sheetStats).length;
206
+ const sheetsOnlyLeft = Array.from(leftSheetNames).filter((name) => !rightSheetNames.has(name));
207
+ const sheetsOnlyRight = Array.from(rightSheetNames).filter((name) => !leftSheetNames.has(name));
208
+ const summary = summarizeDivergence(changedCells, comparedCells, sheetsWithDifferences, sheetsOnlyLeft.length, sheetsOnlyRight.length);
209
+ const inlineDiffs = outputFilePath ? previews : bufferedDiffs;
210
+ ok({
211
+ summary,
212
+ leftFile: leftFilePath,
213
+ rightFile: rightFilePath,
214
+ changedCells,
215
+ comparedCells,
216
+ sheetsCompared: allSheetNames.length,
217
+ sheetsWithDifferences,
218
+ sheetsOnlyLeft,
219
+ sheetsOnlyRight,
220
+ inlineLimit,
221
+ previewLimit,
222
+ outputMode: outputFilePath ? "tmpfile" : "inline",
223
+ ...(outputDirPath && outputFilePath
224
+ ? {
225
+ diffFile: outputFilePath,
226
+ tempDir: outputDirPath,
227
+ note: "Diff set is large; full diff was written to diffFile as NDJSON for grep-friendly inspection.",
228
+ }
229
+ : {}),
230
+ diffs: inlineDiffs,
231
+ sheetStats,
232
+ });
233
+ }));
234
+ }
235
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../src/cli/commands/diff.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,4 @@
1
- export declare function evalCode(filePath: string, codeArg: string | undefined): Promise<void>;
1
+ export declare function evalCode(filePath: string, codeArg: string | undefined, options?: {
2
+ signal?: AbortSignal | null;
3
+ }): Promise<void>;
2
4
  //# sourceMappingURL=eval.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/eval.ts"],"names":[],"mappings":"AAGA,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,OAAO,CAAC,IAAI,CAAC,CAkDf"}
1
+ {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/eval.ts"],"names":[],"mappings":"AAIA,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,GACxC,OAAO,CAAC,IAAI,CAAC,CAqFf"}