bilig-workpaper 0.161.0 → 0.164.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,605 @@
1
+ import { writeFileSync } from 'node:fs';
2
+ import { WorkPaper } from '@bilig/headless';
3
+ import { exportXlsx, exportXlsxToFile, importXlsx } from '@bilig/headless/xlsx';
4
+ import { ErrorCode, formatErrorCode, ValueTag, } from '@bilig/protocol';
5
+ import { patchXlsxTextParts, recalculateXlsxFileToFileStreamingNative, } from '@bilig/xlsx';
6
+ import { parseA1CellReference, parseQualifiedCellTarget } from './xlsx-recalc-targets.js';
7
+ export { WorkPaper } from '@bilig/headless';
8
+ export { exportXlsx, exportXlsxToFile, importXlsx } from '@bilig/headless/xlsx';
9
+ export { parseQualifiedA1, parseQualifiedCellTarget } from './xlsx-recalc-targets.js';
10
+ export { StreamingNativeXlsxRecalcError, } from '@bilig/xlsx';
11
+ export { inspectXlsxCacheFileStreamingNative, } from '@bilig/xlsx';
12
+ const sourcePreservingOutputCalculationSettings = Symbol.for('bilig.sourcePreservingXlsxOutputCalculationSettings');
13
+ const importedXlsxSourceBytes = Symbol.for('bilig.importedXlsxSourceBytes');
14
+ const importedXlsxSourceCellPatches = Symbol.for('bilig.importedXlsxSourceCellPatches');
15
+ const legacyWorkPaperBytesApiLimit = 1_000_000;
16
+ export function recalculateXlsx(input, options = {}) {
17
+ assertBytesApiEngine(options.engine);
18
+ const bytes = toUint8Array(input);
19
+ assertLegacyWorkPaperBytesApiWithinLimit(bytes, 'recalculateXlsx');
20
+ return withPreparedRecalculatedXlsxOutput(bytes, options, (prepared) => {
21
+ const exportedXlsx = toUint8Array(exportXlsx(prepared.outputSnapshot));
22
+ return {
23
+ xlsx: addFormulaErrorCachesToXlsxBytes(exportedXlsx, prepared.outputSnapshot, prepared.errorCaches),
24
+ warnings: prepared.warnings,
25
+ sheetNames: prepared.sheetNames,
26
+ reads: prepared.reads,
27
+ changes: prepared.changes,
28
+ ...(prepared.diagnostics ? { diagnostics: prepared.diagnostics } : {}),
29
+ };
30
+ });
31
+ }
32
+ export async function recalculateXlsxFileToFile(inputPath, options) {
33
+ const legacyOptions = options;
34
+ if (legacyOptions.engine === 'workpaper') {
35
+ throw legacyWorkPaperFileToFileError('engine');
36
+ }
37
+ if (legacyOptions.fallbackPolicy === 'workpaper') {
38
+ throw legacyWorkPaperFileToFileError('fallbackPolicy');
39
+ }
40
+ if (legacyOptions.config !== undefined) {
41
+ throw new Error('streaming-native file-to-file recalc does not support WorkPaper config options');
42
+ }
43
+ return await recalculateXlsxFileToFileStreamingNative(inputPath, {
44
+ outputPath: options.outputPath,
45
+ ...(options.edits === undefined ? {} : { edits: nativeLiteralEdits(options.edits) }),
46
+ ...(options.reads === undefined ? {} : { reads: options.reads }),
47
+ ...(options.externalWorkbooks === undefined ? {} : { externalWorkbooks: options.externalWorkbooks }),
48
+ ...(options.maxRssBytes === undefined ? {} : { maxRssBytes: options.maxRssBytes }),
49
+ });
50
+ }
51
+ export function recalculateXlsxToFile(input, options) {
52
+ assertBytesApiEngine(options.engine);
53
+ const bytes = toUint8Array(input);
54
+ assertLegacyWorkPaperBytesApiWithinLimit(bytes, 'recalculateXlsxToFile');
55
+ return withPreparedRecalculatedXlsxOutput(bytes, options, (prepared) => {
56
+ if (prepared.errorCaches.length === 0) {
57
+ const exported = exportXlsxToFile(prepared.outputSnapshot, options.outputPath);
58
+ return {
59
+ bytesWritten: exported.bytesWritten,
60
+ warnings: prepared.warnings,
61
+ sheetNames: prepared.sheetNames,
62
+ reads: prepared.reads,
63
+ changes: prepared.changes,
64
+ ...(prepared.diagnostics ? { diagnostics: prepared.diagnostics } : {}),
65
+ };
66
+ }
67
+ const exportedXlsx = addFormulaErrorCachesToXlsxBytes(toUint8Array(exportXlsx(prepared.outputSnapshot)), prepared.outputSnapshot, prepared.errorCaches);
68
+ writeFileSync(options.outputPath, exportedXlsx);
69
+ return {
70
+ bytesWritten: exportedXlsx.byteLength,
71
+ warnings: prepared.warnings,
72
+ sheetNames: prepared.sheetNames,
73
+ reads: prepared.reads,
74
+ changes: prepared.changes,
75
+ ...(prepared.diagnostics ? { diagnostics: prepared.diagnostics } : {}),
76
+ };
77
+ });
78
+ }
79
+ function assertBytesApiEngine(engine) {
80
+ if (engine === 'streaming-native') {
81
+ throw new Error('streaming-native engine requires recalculateXlsxFileToFile() with file-backed input and output paths');
82
+ }
83
+ }
84
+ function assertLegacyWorkPaperBytesApiWithinLimit(input, apiName) {
85
+ if (input.byteLength <= legacyWorkPaperBytesApiLimit) {
86
+ return;
87
+ }
88
+ throw new Error(`${apiName} legacy bytes API is small-workbook only (${input.byteLength.toLocaleString('en-US')} bytes > ` +
89
+ `${legacyWorkPaperBytesApiLimit.toLocaleString('en-US')} bytes). Use recalculateXlsxFileToFile() for file-backed streaming-native XLSX jobs.`);
90
+ }
91
+ function nativeLiteralEdits(edits) {
92
+ return edits.map((edit) => {
93
+ const value = edit.value;
94
+ if (value === null || typeof value === 'number' || typeof value === 'string' || typeof value === 'boolean') {
95
+ return { target: edit.target, value };
96
+ }
97
+ throw new Error(`streaming-native file-to-file recalc supports literal edits only: ${edit.target}`);
98
+ });
99
+ }
100
+ function legacyWorkPaperFileToFileError(optionName) {
101
+ return new Error(`bilig-workpaper/xlsx file-to-file recalc uses the streaming-native engine for large XLSX jobs; ${optionName}=workpaper is only available through the legacy bytes APIs.`);
102
+ }
103
+ function withPreparedRecalculatedXlsxOutput(input, options, consume) {
104
+ const imported = importXlsx(toUint8Array(input), options.fileName ?? 'workbook.xlsx', xlsxFormulaRecalcImportOptions(options.externalWorkbooks));
105
+ const originalCalculationSettings = imported.snapshot.workbook.metadata?.calculationSettings;
106
+ const workbook = WorkPaper.buildFromSnapshot(snapshotForFreshFormulaRecalculation(imported.snapshot), {
107
+ evaluationTimeoutMs: 30_000,
108
+ useColumnIndex: true,
109
+ ...options.config,
110
+ });
111
+ try {
112
+ const changes = [];
113
+ for (const edit of options.edits ?? []) {
114
+ appendChanges(changes, workbook.setCellContents(parseQualifiedCellTarget(workbook, edit.target), edit.value));
115
+ }
116
+ appendChanges(changes, workbook.rebuildAndRecalculate());
117
+ const reads = {};
118
+ for (const target of options.reads ?? []) {
119
+ reads[target] = workbook.getCellValue(parseQualifiedCellTarget(workbook, target));
120
+ }
121
+ const sourcePreservingOutputSnapshot = sourcePreservingSnapshotForRecalculationExport(workbook, imported.snapshot, options.config?.calculationSettings === undefined ? originalCalculationSettings : undefined, options.edits?.length ?? 0);
122
+ if (sourcePreservingOutputSnapshot) {
123
+ return consume({
124
+ outputSnapshot: sourcePreservingOutputSnapshot,
125
+ errorCaches: [],
126
+ warnings: imported.warnings,
127
+ sheetNames: imported.sheetNames,
128
+ reads,
129
+ changes,
130
+ ...(imported.diagnostics ? { diagnostics: imported.diagnostics } : {}),
131
+ });
132
+ }
133
+ const outputFormulaCaches = snapshotWithFormulaCachedValues(workbook, workbook.exportSnapshot());
134
+ return consume({
135
+ outputSnapshot: restoreOutputCalculationSettings(outputFormulaCaches.snapshot, options.config?.calculationSettings === undefined ? originalCalculationSettings : undefined),
136
+ errorCaches: outputFormulaCaches.errorCaches,
137
+ warnings: imported.warnings,
138
+ sheetNames: imported.sheetNames,
139
+ reads,
140
+ changes,
141
+ ...(imported.diagnostics ? { diagnostics: imported.diagnostics } : {}),
142
+ });
143
+ }
144
+ finally {
145
+ workbook.dispose();
146
+ }
147
+ }
148
+ function sourcePreservingSnapshotForRecalculationExport(workbook, importedSnapshot, originalCalculationSettings, editCount) {
149
+ const sourcePreservingSnapshot = workbook.exportSourcePreservingXlsxSnapshot?.();
150
+ if (!sourcePreservingSnapshot && editCount > 0) {
151
+ return null;
152
+ }
153
+ const source = readImportedXlsxSourceReference(sourcePreservingSnapshot ?? importedSnapshot);
154
+ if (source === undefined) {
155
+ return null;
156
+ }
157
+ const formulaCachePatches = formulaCachePatchesForImportedSnapshot(workbook, importedSnapshot);
158
+ if (formulaCachePatches === null) {
159
+ return null;
160
+ }
161
+ const outputSnapshot = attachSourcePreservingRecalculationPatches(restoreOutputCalculationSettings(sourcePreservingSnapshot ?? minimalSourcePreservingSnapshot(importedSnapshot), originalCalculationSettings), source, mergeImportedXlsxSourceCellPatches(readImportedXlsxSourceCellPatches(sourcePreservingSnapshot), formulaCachePatches));
162
+ if (originalCalculationSettings !== undefined) {
163
+ Object.defineProperty(outputSnapshot, sourcePreservingOutputCalculationSettings, {
164
+ configurable: true,
165
+ enumerable: false,
166
+ value: calculationSettingsAfterExplicitRecalculation(originalCalculationSettings),
167
+ });
168
+ }
169
+ return outputSnapshot;
170
+ }
171
+ function formulaCachePatchesForImportedSnapshot(workbook, importedSnapshot) {
172
+ const patches = [];
173
+ for (const sheet of importedSnapshot.sheets) {
174
+ const sheetId = workbook.getSheetId(sheet.name);
175
+ if (sheetId === undefined) {
176
+ continue;
177
+ }
178
+ for (const cell of sheet.cells) {
179
+ if (typeof cell.formula !== 'string' || cell.formula.trim().length === 0) {
180
+ continue;
181
+ }
182
+ const address = cellA1Address(cell);
183
+ if (address === null) {
184
+ return null;
185
+ }
186
+ const coordinates = cellCoordinates(cell);
187
+ if (coordinates === null) {
188
+ return null;
189
+ }
190
+ const cellValue = workbook.getCellValue({ sheet: sheetId, row: coordinates.row, col: coordinates.col });
191
+ const cachedValue = literalInputForFormulaCache(cellValue);
192
+ if (cachedValue !== undefined) {
193
+ patches.push({ kind: 'literal', sheetName: sheet.name, address, value: cachedValue, preserveFormula: true });
194
+ continue;
195
+ }
196
+ if (errorInputForFormulaCache(cellValue) !== undefined) {
197
+ return null;
198
+ }
199
+ }
200
+ }
201
+ return patches;
202
+ }
203
+ function readImportedXlsxSourceReference(snapshot) {
204
+ return snapshot === null || snapshot === undefined ? undefined : snapshot[importedXlsxSourceBytes];
205
+ }
206
+ function readImportedXlsxSourceCellPatches(snapshot) {
207
+ return snapshot === null || snapshot === undefined
208
+ ? []
209
+ : (snapshot[importedXlsxSourceCellPatches] ?? []);
210
+ }
211
+ function attachSourcePreservingRecalculationPatches(snapshot, source, patches) {
212
+ Object.defineProperty(snapshot, importedXlsxSourceBytes, {
213
+ configurable: true,
214
+ enumerable: false,
215
+ value: source,
216
+ });
217
+ Object.defineProperty(snapshot, importedXlsxSourceCellPatches, {
218
+ configurable: true,
219
+ enumerable: false,
220
+ value: patches,
221
+ });
222
+ return snapshot;
223
+ }
224
+ function mergeImportedXlsxSourceCellPatches(basePatches, formulaCachePatches) {
225
+ const merged = new Map();
226
+ for (const patch of basePatches) {
227
+ merged.set(`${patch.sheetName}!${patch.address}`, patch);
228
+ }
229
+ for (const patch of formulaCachePatches) {
230
+ merged.set(`${patch.sheetName}!${patch.address}`, patch);
231
+ }
232
+ return [...merged.values()];
233
+ }
234
+ function minimalSourcePreservingSnapshot(importedSnapshot) {
235
+ return {
236
+ version: importedSnapshot.version,
237
+ workbook: { name: importedSnapshot.workbook.name },
238
+ sheets: importedSnapshot.sheets.map((sheet) => ({
239
+ ...(sheet.id === undefined ? {} : { id: sheet.id }),
240
+ name: sheet.name,
241
+ order: sheet.order,
242
+ cells: [],
243
+ })),
244
+ };
245
+ }
246
+ function cellA1Address(cell) {
247
+ if (typeof cell.address === 'string' && cell.address.length > 0) {
248
+ return cell.address;
249
+ }
250
+ const coordinates = cellCoordinates(cell);
251
+ return coordinates ? encodeA1CellReference(coordinates.row, coordinates.col) : null;
252
+ }
253
+ function cellCoordinates(cell) {
254
+ const row = cell.row;
255
+ const col = cell.col;
256
+ if (Number.isInteger(row) && Number.isInteger(col) && row !== undefined && col !== undefined) {
257
+ return { row, col };
258
+ }
259
+ if (typeof cell.address !== 'string') {
260
+ return null;
261
+ }
262
+ try {
263
+ return parseA1CellReference(cell.address);
264
+ }
265
+ catch {
266
+ return null;
267
+ }
268
+ }
269
+ function encodeA1CellReference(row, col) {
270
+ let column = '';
271
+ for (let value = col + 1; value > 0; value = Math.floor((value - 1) / 26)) {
272
+ column = String.fromCharCode(((value - 1) % 26) + 65) + column;
273
+ }
274
+ return `${column}${String(row + 1)}`;
275
+ }
276
+ export const recalculateSheetjsWorkbook = recalculateXlsx;
277
+ function appendChanges(target, changes) {
278
+ for (const change of changes) {
279
+ target.push(change);
280
+ }
281
+ }
282
+ export const xlsxCacheDoctorSchemaVersion = 'xlsx-cache-doctor.v1';
283
+ export function inspectXlsxCache(input, options = {}) {
284
+ const bytes = toUint8Array(input);
285
+ assertLegacyWorkPaperBytesApiWithinLimit(bytes, 'inspectXlsxCache');
286
+ const imported = importXlsx(bytes, options.fileName ?? 'workbook.xlsx', xlsxFormulaRecalcImportOptions(options.externalWorkbooks));
287
+ const formulaCells = collectXlsxCacheFormulaCells(imported.snapshot);
288
+ const inspectionLimit = normalizeXlsxCacheInspectionLimit(options.inspectLimit ?? 'all');
289
+ const inspectedFormulaCells = inspectionLimit === 'all' ? formulaCells : formulaCells.slice(0, inspectionLimit);
290
+ const uninspectedFormulaCellCount = formulaCells.length - inspectedFormulaCells.length;
291
+ const suggestedReads = inspectedFormulaCells.map((cell) => cell.target);
292
+ const recalculated = recalculateXlsx(bytes, {
293
+ ...(options.externalWorkbooks ? { externalWorkbooks: options.externalWorkbooks } : {}),
294
+ ...(options.fileName ? { fileName: options.fileName } : {}),
295
+ ...(options.edits ? { edits: options.edits } : {}),
296
+ reads: suggestedReads,
297
+ ...(options.config ? { config: options.config } : {}),
298
+ });
299
+ const formulas = inspectedFormulaCells.map((cell) => {
300
+ const recalculatedValue = recalculated.reads[cell.target];
301
+ const literalRecalculatedValue = literalValueForXlsxCacheInspection(recalculatedValue);
302
+ const cacheStatus = xlsxCacheStatusForInspection(cell.cachedValue, literalRecalculatedValue);
303
+ return {
304
+ target: cell.target,
305
+ formula: cell.formula,
306
+ ...(cell.cachedValue !== undefined ? { cachedValue: cell.cachedValue } : {}),
307
+ recalculatedValue,
308
+ ...(literalRecalculatedValue !== undefined ? { literalRecalculatedValue } : {}),
309
+ cacheStatus,
310
+ staleCachedValue: staleCachedValueForXlsxCacheInspection(cacheStatus),
311
+ };
312
+ });
313
+ return {
314
+ schemaVersion: xlsxCacheDoctorSchemaVersion,
315
+ sheetNames: imported.sheetNames,
316
+ formulaCellCount: formulaCells.length,
317
+ inspectedFormulaCellCount: inspectedFormulaCells.length,
318
+ uninspectedFormulaCellCount,
319
+ inspectionLimit,
320
+ staleCachedFormulaCount: formulas.filter((formula) => formula.staleCachedValue === true).length,
321
+ cacheStatusSummary: buildXlsxCacheStatusSummary(formulas),
322
+ suggestedReads,
323
+ formulas,
324
+ warnings: recalculated.warnings,
325
+ ...(recalculated.diagnostics ? { diagnostics: recalculated.diagnostics } : {}),
326
+ inspectionCompleted: true,
327
+ recalculationCompleted: true,
328
+ excelParity: 'not_proven',
329
+ };
330
+ }
331
+ function xlsxFormulaRecalcImportOptions(externalWorkbooks) {
332
+ return externalWorkbooks && externalWorkbooks.length > 0
333
+ ? { externalWorkbooks, externalLinkCacheArtifactMode: 'replace-refreshed' }
334
+ : { preferNativeSimpleImport: true };
335
+ }
336
+ function collectXlsxCacheFormulaCells(snapshot) {
337
+ const cells = [];
338
+ for (const sheet of snapshot.sheets.toSorted((left, right) => left.order - right.order)) {
339
+ for (const cell of sheet.cells.toSorted((left, right) => compareA1Addresses(left.address, right.address))) {
340
+ if (typeof cell.formula !== 'string' || cell.formula.trim().length === 0) {
341
+ continue;
342
+ }
343
+ cells.push({
344
+ target: formatQualifiedTarget(sheet.name, cell.address),
345
+ formula: cell.formula.startsWith('=') ? cell.formula : `=${cell.formula}`,
346
+ ...(cell.value !== undefined ? { cachedValue: cell.value } : {}),
347
+ });
348
+ }
349
+ }
350
+ return cells;
351
+ }
352
+ function normalizeXlsxCacheInspectionLimit(limit) {
353
+ if (limit === 'all') {
354
+ return limit;
355
+ }
356
+ if (Number.isInteger(limit) && limit > 0) {
357
+ return limit;
358
+ }
359
+ throw new Error(`Expected inspectLimit to be "all" or a positive integer, received: ${String(limit)}`);
360
+ }
361
+ function compareA1Addresses(left, right) {
362
+ const leftParts = parseA1AddressForSort(left);
363
+ const rightParts = parseA1AddressForSort(right);
364
+ return leftParts.row - rightParts.row || leftParts.col - rightParts.col || left.localeCompare(right);
365
+ }
366
+ function parseA1AddressForSort(address) {
367
+ const match = /^([A-Z]+)(\d+)$/iu.exec(address);
368
+ if (!match) {
369
+ return { row: Number.MAX_SAFE_INTEGER, col: Number.MAX_SAFE_INTEGER };
370
+ }
371
+ const [, letters = '', rowText = ''] = match;
372
+ let col = 0;
373
+ for (const letter of letters.toUpperCase()) {
374
+ col = col * 26 + letter.charCodeAt(0) - 64;
375
+ }
376
+ return { row: Number(rowText), col };
377
+ }
378
+ function formatQualifiedTarget(sheetName, address) {
379
+ return `${quoteSheetNameForTarget(sheetName)}!${address}`;
380
+ }
381
+ function quoteSheetNameForTarget(sheetName) {
382
+ return /^[A-Za-z_][A-Za-z0-9_]*$/u.test(sheetName) ? sheetName : `'${sheetName.replaceAll("'", "''")}'`;
383
+ }
384
+ function literalValueForXlsxCacheInspection(value) {
385
+ if (value === undefined || typeof value !== 'object' || value === null || !('tag' in value)) {
386
+ return undefined;
387
+ }
388
+ switch (value.tag) {
389
+ case ValueTag.Empty:
390
+ return null;
391
+ case ValueTag.Number:
392
+ return 'value' in value && typeof value.value === 'number' && Number.isFinite(value.value) ? value.value : undefined;
393
+ case ValueTag.Boolean:
394
+ return 'value' in value && typeof value.value === 'boolean' ? value.value : undefined;
395
+ case ValueTag.String:
396
+ return 'value' in value && typeof value.value === 'string' ? value.value : undefined;
397
+ case ValueTag.Error:
398
+ return 'code' in value && typeof value.code === 'number' ? formatErrorCode(value.code) : undefined;
399
+ }
400
+ }
401
+ function xlsxCacheStatusForInspection(cachedValue, literalRecalculatedValue) {
402
+ if (cachedValue === undefined) {
403
+ return 'missing-cache';
404
+ }
405
+ if (literalRecalculatedValue === undefined) {
406
+ return 'unsupported-recalculation';
407
+ }
408
+ return literalValuesEqual(cachedValue, literalRecalculatedValue) ? 'fresh' : 'stale';
409
+ }
410
+ function staleCachedValueForXlsxCacheInspection(cacheStatus) {
411
+ switch (cacheStatus) {
412
+ case 'stale':
413
+ return true;
414
+ case 'fresh':
415
+ return false;
416
+ case 'missing-cache':
417
+ case 'unsupported-recalculation':
418
+ return null;
419
+ }
420
+ }
421
+ function buildXlsxCacheStatusSummary(formulas) {
422
+ return {
423
+ inspected: formulas.length,
424
+ stale: formulas.filter((formula) => formula.cacheStatus === 'stale').length,
425
+ fresh: formulas.filter((formula) => formula.cacheStatus === 'fresh').length,
426
+ missingCache: formulas.filter((formula) => formula.cacheStatus === 'missing-cache').length,
427
+ unsupportedRecalculation: formulas.filter((formula) => formula.cacheStatus === 'unsupported-recalculation').length,
428
+ };
429
+ }
430
+ function literalValuesEqual(left, right) {
431
+ return JSON.stringify(left) === JSON.stringify(right);
432
+ }
433
+ function snapshotWithFormulaCachedValues(workbook, snapshot) {
434
+ const next = {
435
+ ...snapshot,
436
+ workbook: {
437
+ ...snapshot.workbook,
438
+ ...(snapshot.workbook.metadata === undefined ? {} : { metadata: structuredClone(snapshot.workbook.metadata) }),
439
+ },
440
+ sheets: snapshot.sheets.map((sheet) => ({
441
+ ...sheet,
442
+ ...(sheet.metadata === undefined ? {} : { metadata: structuredClone(sheet.metadata) }),
443
+ cells: sheet.cells.map((cell) => ({ ...cell })),
444
+ })),
445
+ };
446
+ const errorCaches = [];
447
+ for (const sheet of next.sheets) {
448
+ const sheetId = workbook.getSheetId(sheet.name);
449
+ if (sheetId === undefined) {
450
+ continue;
451
+ }
452
+ for (const cell of sheet.cells) {
453
+ if (typeof cell.formula !== 'string' || cell.formula.trim().length === 0) {
454
+ continue;
455
+ }
456
+ const address = parseA1CellReference(cell.address);
457
+ const cellValue = workbook.getCellValue({ sheet: sheetId, row: address.row, col: address.col });
458
+ const cachedValue = literalInputForFormulaCache(cellValue);
459
+ if (cachedValue !== undefined) {
460
+ cell.value = cachedValue;
461
+ continue;
462
+ }
463
+ const cachedError = errorInputForFormulaCache(cellValue);
464
+ if (cachedError !== undefined) {
465
+ delete cell.value;
466
+ errorCaches.push({ sheetName: sheet.name, address: cell.address, value: cachedError });
467
+ }
468
+ }
469
+ }
470
+ return { snapshot: next, errorCaches };
471
+ }
472
+ function literalInputForFormulaCache(value) {
473
+ if (typeof value !== 'object' || value === null || !('tag' in value)) {
474
+ return undefined;
475
+ }
476
+ if (value.tag === ValueTag.Empty) {
477
+ return null;
478
+ }
479
+ if (value.tag === ValueTag.Number && 'value' in value && typeof value.value === 'number' && Number.isFinite(value.value)) {
480
+ return value.value;
481
+ }
482
+ if (value.tag === ValueTag.Boolean && 'value' in value && typeof value.value === 'boolean') {
483
+ return value.value;
484
+ }
485
+ if (value.tag === ValueTag.String && 'value' in value && typeof value.value === 'string') {
486
+ return value.value;
487
+ }
488
+ return undefined;
489
+ }
490
+ function errorInputForFormulaCache(value) {
491
+ if (typeof value !== 'object' || value === null || !('tag' in value) || value.tag !== ValueTag.Error || !('code' in value)) {
492
+ return undefined;
493
+ }
494
+ if (typeof value.code !== 'number') {
495
+ return undefined;
496
+ }
497
+ // Desktop Excel displays #FIELD! for linked-data field failures but saves #VALUE! in worksheet formula caches.
498
+ return value.code === ErrorCode.Field ? '#VALUE!' : formatErrorCode(value.code);
499
+ }
500
+ function addFormulaErrorCachesToXlsxBytes(bytes, snapshot, errorCaches) {
501
+ if (errorCaches.length === 0) {
502
+ return bytes;
503
+ }
504
+ const cachesBySheetName = new Map();
505
+ for (const cache of errorCaches) {
506
+ const sheetCaches = cachesBySheetName.get(cache.sheetName) ?? [];
507
+ sheetCaches.push(cache);
508
+ cachesBySheetName.set(cache.sheetName, sheetCaches);
509
+ }
510
+ const orderedSheets = snapshot.sheets.toSorted((left, right) => left.order - right.order);
511
+ const patches = [];
512
+ for (let index = 0; index < orderedSheets.length; index += 1) {
513
+ const sheet = orderedSheets[index];
514
+ const sheetCaches = cachesBySheetName.get(sheet.name);
515
+ if (!sheetCaches || sheetCaches.length === 0) {
516
+ continue;
517
+ }
518
+ const sheetPath = `xl/worksheets/sheet${String(index + 1)}.xml`;
519
+ patches.push({
520
+ path: sheetPath,
521
+ patchText: (sheetXml) => sheetCaches.reduce((nextXml, cache) => replaceFormulaCellErrorCache(nextXml, cache.address, cache.value), sheetXml),
522
+ });
523
+ }
524
+ return patchXlsxTextParts(bytes, patches);
525
+ }
526
+ function replaceFormulaCellErrorCache(sheetXml, address, value) {
527
+ const pattern = new RegExp(`<c\\b(?=[^>]*\\br="${escapeRegExp(address)}")[\\s\\S]*?<\\/c>`, 'u');
528
+ if (!pattern.test(sheetXml)) {
529
+ return sheetXml;
530
+ }
531
+ return sheetXml.replace(pattern, (cellXml) => writeCellErrorCache(cellXml, value));
532
+ }
533
+ function writeCellErrorCache(cellXml, value) {
534
+ const escapedValue = escapeXmlText(value);
535
+ const typedCellXml = cellXml.replace(/^<c\b([^>]*)>/u, (_match, attributes) => {
536
+ const nextAttributes = attributes.replace(/\s+t="[^"]*"/u, '');
537
+ return `<c${nextAttributes} t="e">`;
538
+ });
539
+ if (/<v>[\s\S]*?<\/v>/u.test(typedCellXml)) {
540
+ return typedCellXml.replace(/<v>[\s\S]*?<\/v>/u, `<v>${escapedValue}</v>`);
541
+ }
542
+ if (/<\/f>/u.test(typedCellXml)) {
543
+ return typedCellXml.replace(/<\/f>/u, `</f><v>${escapedValue}</v>`);
544
+ }
545
+ return typedCellXml.replace(/<\/c>$/u, `<v>${escapedValue}</v></c>`);
546
+ }
547
+ function escapeXmlText(value) {
548
+ return value.replace(/&/gu, '&amp;').replace(/</gu, '&lt;').replace(/>/gu, '&gt;');
549
+ }
550
+ function escapeRegExp(value) {
551
+ return value.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
552
+ }
553
+ function snapshotForFreshFormulaRecalculation(snapshot) {
554
+ const calculationSettings = snapshot.workbook.metadata?.calculationSettings;
555
+ if (calculationSettings === undefined) {
556
+ return snapshot;
557
+ }
558
+ if (calculationSettings.mode !== 'manual' && calculationSettings.fullCalcOnLoad !== false) {
559
+ return snapshot;
560
+ }
561
+ return {
562
+ ...snapshot,
563
+ workbook: {
564
+ ...snapshot.workbook,
565
+ metadata: {
566
+ ...snapshot.workbook.metadata,
567
+ calculationSettings: {
568
+ ...calculationSettings,
569
+ mode: 'automatic',
570
+ fullCalcOnLoad: true,
571
+ },
572
+ },
573
+ },
574
+ };
575
+ }
576
+ function restoreOutputCalculationSettings(snapshot, originalCalculationSettings) {
577
+ if (originalCalculationSettings === undefined) {
578
+ return snapshot;
579
+ }
580
+ return {
581
+ ...snapshot,
582
+ workbook: {
583
+ ...snapshot.workbook,
584
+ metadata: {
585
+ ...snapshot.workbook.metadata,
586
+ calculationSettings: calculationSettingsAfterExplicitRecalculation(originalCalculationSettings),
587
+ },
588
+ },
589
+ };
590
+ }
591
+ function calculationSettingsAfterExplicitRecalculation(settings) {
592
+ const recalculated = structuredClone(settings);
593
+ delete recalculated.calcCompleted;
594
+ delete recalculated.calcOnSave;
595
+ delete recalculated.forceFullCalc;
596
+ delete recalculated.fullCalcOnLoad;
597
+ return recalculated;
598
+ }
599
+ function toUint8Array(input) {
600
+ if (input instanceof Uint8Array) {
601
+ return input;
602
+ }
603
+ return new Uint8Array(input);
604
+ }
605
+ //# sourceMappingURL=xlsx-recalc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xlsx-recalc.js","sourceRoot":"","sources":["../src/xlsx-recalc.ts"],"names":[],"mappings":"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"}
package/dist/xlsx.d.ts CHANGED
@@ -1 +1,5 @@
1
1
  export * from '@bilig/headless/xlsx';
2
+ export { WorkPaper, inspectXlsxCache, inspectXlsxCacheFileStreamingNative, parseQualifiedA1, parseQualifiedCellTarget, recalculateSheetjsWorkbook, recalculateXlsx, recalculateXlsxFileToFile, recalculateXlsxToFile, StreamingNativeXlsxRecalcError, xlsxCacheDoctorSchemaVersion, } from './xlsx-recalc.js';
3
+ export type { StreamingNativeFormulaCounts, StreamingNativeXlsxCacheFormulaInspection, StreamingNativeXlsxCacheInspectionLimit, StreamingNativeXlsxCacheInspectionResult, StreamingNativeXlsxCacheLiteral, StreamingNativeXlsxCacheStatus, StreamingNativeXlsxCacheStatusSummary, XlsxCacheFormulaInspection, XlsxCacheInspectionLimit, XlsxCacheInspectionOptions, XlsxCacheInspectionResult, XlsxCacheStatus, XlsxCacheStatusSummary, XlsxFormulaRecalcCellValue, XlsxFormulaRecalcChange, XlsxFormulaRecalcDiagnostics, XlsxFormulaRecalcEdit, XlsxFormulaRecalcFileToFileEngine, XlsxFormulaRecalcFileToFileFallbackPolicy, XlsxFormulaRecalcFileToFileOptions, XlsxFormulaRecalcFileOptions, XlsxFormulaRecalcFileResult, XlsxFormulaRecalcNativeDiagnostics, XlsxFormulaRecalcOptions, XlsxFormulaRecalcPhaseRss, XlsxFormulaRecalcResult, XlsxFormulaRecalcWorkPaperConfig, XlsxFormulaRecalcWorkPaperEngine, XlsxFormulaRecalcWorkPaperFallbackPolicy, } from './xlsx-recalc.js';
4
+ import { type XlsxImportOptions } from '@bilig/headless/xlsx';
5
+ export declare function importXlsx(bytes: Uint8Array | ArrayBuffer, fileName: string, options?: XlsxImportOptions): import("@bilig/headless/xlsx").ImportedWorkbook;