xlsx-formula-recalc 0.84.0 → 0.86.1

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.
package/dist/index.js CHANGED
@@ -1,10 +1,12 @@
1
1
  import { WorkPaper } from '@bilig/headless';
2
2
  import { exportXlsx, importXlsx } from '@bilig/headless/xlsx';
3
+ import { ValueTag } from '@bilig/protocol';
3
4
  export { WorkPaper } from '@bilig/headless';
4
5
  export { exportXlsx, importXlsx } from '@bilig/headless/xlsx';
5
6
  export function recalculateXlsx(input, options = {}) {
6
7
  const imported = importXlsx(toUint8Array(input), options.fileName ?? 'workbook.xlsx');
7
- const workbook = WorkPaper.buildFromSnapshot(imported.snapshot, {
8
+ const originalCalculationSettings = imported.snapshot.workbook.metadata?.calculationSettings;
9
+ const workbook = WorkPaper.buildFromSnapshot(snapshotForFreshFormulaRecalculation(imported.snapshot), {
8
10
  evaluationTimeoutMs: 30_000,
9
11
  useColumnIndex: true,
10
12
  ...options.config,
@@ -14,12 +16,14 @@ export function recalculateXlsx(input, options = {}) {
14
16
  for (const edit of options.edits ?? []) {
15
17
  changes.push(...workbook.setCellContents(parseQualifiedCellTarget(workbook, edit.target), edit.value));
16
18
  }
19
+ changes.push(...workbook.rebuildAndRecalculate());
17
20
  const reads = {};
18
21
  for (const target of options.reads ?? []) {
19
22
  reads[target] = workbook.getCellValue(parseQualifiedCellTarget(workbook, target));
20
23
  }
24
+ const outputSnapshot = snapshotWithFormulaCachedValues(workbook, workbook.exportSnapshot());
21
25
  return {
22
- xlsx: toUint8Array(exportXlsx(workbook.exportSnapshot())),
26
+ xlsx: toUint8Array(exportXlsx(restoreOutputCalculationSettings(outputSnapshot, options.config?.calculationSettings === undefined ? originalCalculationSettings : undefined))),
23
27
  warnings: imported.warnings,
24
28
  sheetNames: imported.sheetNames,
25
29
  reads,
@@ -31,6 +35,70 @@ export function recalculateXlsx(input, options = {}) {
31
35
  }
32
36
  }
33
37
  export const recalculateSheetjsWorkbook = recalculateXlsx;
38
+ function snapshotWithFormulaCachedValues(workbook, snapshot) {
39
+ const next = structuredClone(snapshot);
40
+ for (const sheet of next.sheets) {
41
+ const sheetId = workbook.getSheetId(sheet.name);
42
+ if (sheetId === undefined) {
43
+ continue;
44
+ }
45
+ for (const cell of sheet.cells) {
46
+ if (typeof cell.formula !== 'string' || cell.formula.trim().length === 0) {
47
+ continue;
48
+ }
49
+ const address = parseA1CellReference(cell.address);
50
+ const cachedValue = literalInputForFormulaCache(workbook.getCellValue({ sheet: sheetId, row: address.row, col: address.col }));
51
+ if (cachedValue !== undefined) {
52
+ cell.value = cachedValue;
53
+ }
54
+ }
55
+ }
56
+ return next;
57
+ }
58
+ function literalInputForFormulaCache(value) {
59
+ if (typeof value !== 'object' || value === null || !('tag' in value)) {
60
+ return undefined;
61
+ }
62
+ if (value.tag === ValueTag.Empty) {
63
+ return null;
64
+ }
65
+ if (value.tag === ValueTag.Number && 'value' in value && typeof value.value === 'number' && Number.isFinite(value.value)) {
66
+ return value.value;
67
+ }
68
+ if (value.tag === ValueTag.Boolean && 'value' in value && typeof value.value === 'boolean') {
69
+ return value.value;
70
+ }
71
+ if (value.tag === ValueTag.String && 'value' in value && typeof value.value === 'string') {
72
+ return value.value;
73
+ }
74
+ return undefined;
75
+ }
76
+ function snapshotForFreshFormulaRecalculation(snapshot) {
77
+ const next = structuredClone(snapshot);
78
+ const calculationSettings = next.workbook.metadata?.calculationSettings;
79
+ if (calculationSettings === undefined) {
80
+ return next;
81
+ }
82
+ if (calculationSettings.mode !== 'manual' && calculationSettings.fullCalcOnLoad !== false) {
83
+ return next;
84
+ }
85
+ next.workbook.metadata ??= {};
86
+ next.workbook.metadata.calculationSettings = {
87
+ ...calculationSettings,
88
+ mode: 'automatic',
89
+ fullCalcOnLoad: true,
90
+ };
91
+ return next;
92
+ }
93
+ function restoreOutputCalculationSettings(snapshot, originalCalculationSettings) {
94
+ if (originalCalculationSettings === undefined) {
95
+ return snapshot;
96
+ }
97
+ const next = structuredClone(snapshot);
98
+ next.workbook.metadata ??= {};
99
+ next.workbook.metadata.calculationSettings = structuredClone(originalCalculationSettings);
100
+ return next;
101
+ }
34
102
  export function parseQualifiedCellTarget(workbook, target) {
35
103
  const parsed = parseQualifiedA1(target);
36
104
  const sheet = workbook.getSheetId(parsed.sheetName);
@@ -65,6 +133,23 @@ export function parseQualifiedA1(target) {
65
133
  }
66
134
  return {
67
135
  sheetName,
136
+ ...parseA1Parts(row, col),
137
+ };
138
+ }
139
+ function parseA1CellReference(address) {
140
+ const match = /^\$?(?<col>[A-Z]+)\$?(?<row>[1-9][0-9]*)$/u.exec(address.trim().toUpperCase());
141
+ if (!match?.groups) {
142
+ throw new Error(`Expected a single A1 cell reference, received: ${address}`);
143
+ }
144
+ const row = match.groups['row'];
145
+ const col = match.groups['col'];
146
+ if (!row || !col) {
147
+ throw new Error(`Expected a single A1 cell reference, received: ${address}`);
148
+ }
149
+ return parseA1Parts(row, col);
150
+ }
151
+ function parseA1Parts(row, col) {
152
+ return {
68
153
  row: Number.parseInt(row, 10) - 1,
69
154
  col: columnLettersToIndex(col),
70
155
  };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xlsx-formula-recalc",
3
- "version": "0.84.0",
3
+ "version": "0.86.1",
4
4
  "description": "Recalculate XLSX formulas in Node.js without Excel, LibreOffice, or browser automation.",
5
5
  "keywords": [
6
6
  "excel",
@@ -64,10 +64,13 @@
64
64
  },
65
65
  "scripts": {
66
66
  "build": "pnpm --dir ../.. --filter @bilig/headless build && rm -rf dist tsconfig.tsbuildinfo && tsc -p tsconfig.json",
67
+ "test:excel-oracle": "vitest run --root ../.. src/__tests__/macos-desktop-excel-*.test.ts --maxWorkers=1",
68
+ "test:excel-oracle:live": "BILIG_EXCEL_ORACLE_RUN=1 vitest run --root ../.. src/__tests__/macos-desktop-excel-*.test.ts --maxWorkers=1",
67
69
  "smoke": "node ./dist/cli.js --help"
68
70
  },
69
71
  "dependencies": {
70
- "@bilig/headless": "0.84.0"
72
+ "@bilig/headless": "0.86.1",
73
+ "@bilig/protocol": "0.86.1"
71
74
  },
72
75
  "engines": {
73
76
  "node": ">=22.0.0"