@bilig/xlsx 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.
Files changed (83) hide show
  1. package/README.md +25 -0
  2. package/dist/address.d.ts +15 -0
  3. package/dist/address.js +82 -0
  4. package/dist/address.js.map +1 -0
  5. package/dist/external-workbook-types.d.ts +44 -0
  6. package/dist/external-workbook-types.js +12 -0
  7. package/dist/external-workbook-types.js.map +1 -0
  8. package/dist/file-source.d.ts +10 -0
  9. package/dist/file-source.js +76 -0
  10. package/dist/file-source.js.map +1 -0
  11. package/dist/formula-cache-reader.d.ts +30 -0
  12. package/dist/formula-cache-reader.js +350 -0
  13. package/dist/formula-cache-reader.js.map +1 -0
  14. package/dist/index.d.ts +17 -0
  15. package/dist/index.js +18 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/simple-workbook-writer.d.ts +114 -0
  18. package/dist/simple-workbook-writer.js +621 -0
  19. package/dist/simple-workbook-writer.js.map +1 -0
  20. package/dist/source-preserving-literal-patches.d.ts +43 -0
  21. package/dist/source-preserving-literal-patches.js +615 -0
  22. package/dist/source-preserving-literal-patches.js.map +1 -0
  23. package/dist/source-preserving-zip.d.ts +25 -0
  24. package/dist/source-preserving-zip.js +341 -0
  25. package/dist/source-preserving-zip.js.map +1 -0
  26. package/dist/streaming-native-cell-arena.d.ts +57 -0
  27. package/dist/streaming-native-cell-arena.js +233 -0
  28. package/dist/streaming-native-cell-arena.js.map +1 -0
  29. package/dist/streaming-native-external-cache.d.ts +13 -0
  30. package/dist/streaming-native-external-cache.js +753 -0
  31. package/dist/streaming-native-external-cache.js.map +1 -0
  32. package/dist/streaming-native-inspect.d.ts +42 -0
  33. package/dist/streaming-native-inspect.js +297 -0
  34. package/dist/streaming-native-inspect.js.map +1 -0
  35. package/dist/streaming-native-lookup-wasm.d.ts +13 -0
  36. package/dist/streaming-native-lookup-wasm.js +250 -0
  37. package/dist/streaming-native-lookup-wasm.js.map +1 -0
  38. package/dist/streaming-native-recalc-evaluator.d.ts +17 -0
  39. package/dist/streaming-native-recalc-evaluator.js +743 -0
  40. package/dist/streaming-native-recalc-evaluator.js.map +1 -0
  41. package/dist/streaming-native-recalc.d.ts +97 -0
  42. package/dist/streaming-native-recalc.js +652 -0
  43. package/dist/streaming-native-recalc.js.map +1 -0
  44. package/dist/streaming-native-row-chain-conditionals.d.ts +8 -0
  45. package/dist/streaming-native-row-chain-conditionals.js +385 -0
  46. package/dist/streaming-native-row-chain-conditionals.js.map +1 -0
  47. package/dist/streaming-native-row-chain-dependencies.d.ts +17 -0
  48. package/dist/streaming-native-row-chain-dependencies.js +365 -0
  49. package/dist/streaming-native-row-chain-dependencies.js.map +1 -0
  50. package/dist/streaming-native-row-chain-references.d.ts +3 -0
  51. package/dist/streaming-native-row-chain-references.js +36 -0
  52. package/dist/streaming-native-row-chain-references.js.map +1 -0
  53. package/dist/streaming-native-row-chain-wasm.d.ts +56 -0
  54. package/dist/streaming-native-row-chain-wasm.js +546 -0
  55. package/dist/streaming-native-row-chain-wasm.js.map +1 -0
  56. package/dist/streaming-native-text.d.ts +2 -0
  57. package/dist/streaming-native-text.js +14 -0
  58. package/dist/streaming-native-text.js.map +1 -0
  59. package/dist/streaming-native-workbook-core.d.ts +47 -0
  60. package/dist/streaming-native-workbook-core.js +110 -0
  61. package/dist/streaming-native-workbook-core.js.map +1 -0
  62. package/dist/targeted-cell-reader.d.ts +11 -0
  63. package/dist/targeted-cell-reader.js +92 -0
  64. package/dist/targeted-cell-reader.js.map +1 -0
  65. package/dist/workbook-cell-reader.d.ts +29 -0
  66. package/dist/workbook-cell-reader.js +200 -0
  67. package/dist/workbook-cell-reader.js.map +1 -0
  68. package/dist/workbook-compatibility-report.d.ts +101 -0
  69. package/dist/workbook-compatibility-report.js +654 -0
  70. package/dist/workbook-compatibility-report.js.map +1 -0
  71. package/dist/workbook-sheet-paths.d.ts +8 -0
  72. package/dist/workbook-sheet-paths.js +79 -0
  73. package/dist/workbook-sheet-paths.js.map +1 -0
  74. package/dist/xml-part-patch.d.ts +12 -0
  75. package/dist/xml-part-patch.js +45 -0
  76. package/dist/xml-part-patch.js.map +1 -0
  77. package/dist/xml.d.ts +9 -0
  78. package/dist/xml.js +42 -0
  79. package/dist/xml.js.map +1 -0
  80. package/dist/zip-reader.d.ts +51 -0
  81. package/dist/zip-reader.js +448 -0
  82. package/dist/zip-reader.js.map +1 -0
  83. package/package.json +113 -0
@@ -0,0 +1,250 @@
1
+ import { parseFormula } from '@bilig/formula';
2
+ import { ValueTag } from '@bilig/protocol';
3
+ import { createKernelSync } from '@bilig/wasm-kernel';
4
+ import { decodeCellAddress } from './address.js';
5
+ const directLookupKindExactUniformNumeric = 1;
6
+ const directLookupKindApproximateUniformNumeric = 2;
7
+ const directLookupMatchModeAscending = 1;
8
+ const maxNativeLookupTableCellCount = 50_000;
9
+ export function evaluateStreamingNativeWasmLookups(args) {
10
+ const candidates = collectUniformNumericVlookupCandidates(args);
11
+ if (candidates.length === 0) {
12
+ return emptyResult();
13
+ }
14
+ const outTags = new Uint8Array(candidates.length);
15
+ const outNumbers = new Float64Array(candidates.length);
16
+ const outErrors = new Uint16Array(candidates.length);
17
+ createKernelSync().evalUniformNumericLookupBatch(Uint8Array.from(candidates.map((candidate) => candidate.kind)), Uint8Array.from(candidates.map(() => directLookupMatchModeAscending)), Float64Array.from(candidates.map((candidate) => candidate.start)), Float64Array.from(candidates.map((candidate) => candidate.step)), Uint32Array.from(candidates.map((candidate) => candidate.length)), Uint32Array.from(candidates.map(() => 0)), Uint8Array.from(candidates.map(() => ValueTag.Number)), Float64Array.from(candidates.map((candidate) => candidate.lookupValue)), outTags, outNumbers, outErrors);
18
+ const patches = [];
19
+ const processedCells = new Set();
20
+ for (let index = 0; index < candidates.length; index += 1) {
21
+ if (outTags[index] !== ValueTag.Number) {
22
+ continue;
23
+ }
24
+ const position = outNumbers[index];
25
+ if (!Number.isInteger(position) || position < 1) {
26
+ continue;
27
+ }
28
+ const candidate = candidates[index];
29
+ const row = candidate.tableStartRow + position - 1;
30
+ const value = readScannedCellValue(args.sheetScans, candidate.tableSheetName, row, candidate.resultCol);
31
+ const patchValue = cellValueToPatchValue(value);
32
+ if (patchValue === undefined) {
33
+ continue;
34
+ }
35
+ candidate.rowValues.set(candidate.cell.col, value);
36
+ patches.push(formulaPatch(candidate.cell, patchValue));
37
+ processedCells.add(cellKey(candidate.cell));
38
+ }
39
+ return {
40
+ batchCount: processedCells.size > 0 ? 1 : 0,
41
+ evaluatedFormulaCellCount: processedCells.size,
42
+ patches,
43
+ processedCells,
44
+ };
45
+ }
46
+ function collectUniformNumericVlookupCandidates(args) {
47
+ const candidates = [];
48
+ for (const scan of args.sheetScans.values()) {
49
+ for (const cell of scan.formulaCells) {
50
+ if (args.skippedCells.has(cellKey(cell))) {
51
+ continue;
52
+ }
53
+ const rowValues = scan.rows.get(cell.row);
54
+ if (!rowValues) {
55
+ continue;
56
+ }
57
+ const candidate = tryCompileUniformNumericVlookupCandidate(scan, cell, rowValues, args);
58
+ if (candidate) {
59
+ candidates.push(candidate);
60
+ }
61
+ }
62
+ }
63
+ return candidates;
64
+ }
65
+ function tryCompileUniformNumericVlookupCandidate(scan, cell, rowValues, args) {
66
+ let node;
67
+ try {
68
+ node = parseFormula(args.resolveFormulaSource(scan, cell));
69
+ }
70
+ catch {
71
+ return null;
72
+ }
73
+ if (node.kind !== 'CallExpr' ||
74
+ normalizedFormulaFunctionName(node.callee) !== 'VLOOKUP' ||
75
+ node.args.length < 3 ||
76
+ node.args.length > 4) {
77
+ return null;
78
+ }
79
+ const kind = vlookupKernelKind(node.args[3]);
80
+ if (kind === null) {
81
+ return null;
82
+ }
83
+ const tableRange = node.args[1]?.kind === 'RangeRef' ? decodeVlookupTableRange(node.args[1], scan.sheetName) : null;
84
+ if (!tableRange || tableRange.cellCount > maxNativeLookupTableCellCount) {
85
+ return null;
86
+ }
87
+ const columnIndex = numberLiteralValue(node.args[2]);
88
+ if (columnIndex === null || !Number.isInteger(columnIndex) || columnIndex < 1 || columnIndex > tableRange.width) {
89
+ return null;
90
+ }
91
+ const lookupValue = compileNumericLookupValue(node.args[0], scan, cell, rowValues, args.sheetScans);
92
+ if (lookupValue === null) {
93
+ return null;
94
+ }
95
+ const lookupShape = uniformNumericLookupShape(args.sheetScans, tableRange);
96
+ if (!lookupShape) {
97
+ return null;
98
+ }
99
+ if (kind === directLookupKindApproximateUniformNumeric && lookupShape.step <= 0) {
100
+ return null;
101
+ }
102
+ return {
103
+ cell,
104
+ kind,
105
+ lookupValue,
106
+ tableSheetName: tableRange.sheetName,
107
+ tableStartRow: tableRange.startRow,
108
+ resultCol: tableRange.startCol + columnIndex - 1,
109
+ start: lookupShape.start,
110
+ step: lookupShape.step,
111
+ length: lookupShape.length,
112
+ rowValues,
113
+ };
114
+ }
115
+ function vlookupKernelKind(node) {
116
+ if (!node) {
117
+ return directLookupKindApproximateUniformNumeric;
118
+ }
119
+ if ((node.kind === 'BooleanLiteral' && !node.value) || (node.kind === 'NumberLiteral' && node.value === 0)) {
120
+ return directLookupKindExactUniformNumeric;
121
+ }
122
+ if ((node.kind === 'BooleanLiteral' && node.value) || (node.kind === 'NumberLiteral' && node.value === 1)) {
123
+ return directLookupKindApproximateUniformNumeric;
124
+ }
125
+ return null;
126
+ }
127
+ function numberLiteralValue(node) {
128
+ return node.kind === 'NumberLiteral' && Number.isFinite(node.value) ? node.value : null;
129
+ }
130
+ function compileNumericLookupValue(node, scan, cell, rowValues, sheetScans) {
131
+ if (node.kind === 'NumberLiteral') {
132
+ return Number.isFinite(node.value) ? node.value : null;
133
+ }
134
+ if (node.kind !== 'CellRef') {
135
+ return null;
136
+ }
137
+ let address;
138
+ try {
139
+ address = decodeCellAddress(node.ref.replaceAll('$', ''));
140
+ }
141
+ catch {
142
+ return null;
143
+ }
144
+ const sheetName = node.sheetName ?? scan.sheetName;
145
+ const value = sheetName === scan.sheetName && address.r === cell.row
146
+ ? resolvedCellValue(rowValues.get(address.c))
147
+ : readScannedCellValue(sheetScans, sheetName, address.r, address.c);
148
+ return value.tag === ValueTag.Number && Number.isFinite(value.value) ? value.value : null;
149
+ }
150
+ function uniformNumericLookupShape(sheetScans, range) {
151
+ const length = range.endRow - range.startRow + 1;
152
+ if (length < 2) {
153
+ return null;
154
+ }
155
+ const first = readScannedCellValue(sheetScans, range.sheetName, range.startRow, range.startCol);
156
+ const second = readScannedCellValue(sheetScans, range.sheetName, range.startRow + 1, range.startCol);
157
+ if (first.tag !== ValueTag.Number || second.tag !== ValueTag.Number || !Number.isFinite(first.value) || !Number.isFinite(second.value)) {
158
+ return null;
159
+ }
160
+ const step = second.value - first.value;
161
+ if (step === 0 || !Number.isFinite(step)) {
162
+ return null;
163
+ }
164
+ for (let row = range.startRow; row <= range.endRow; row += 1) {
165
+ const value = readScannedCellValue(sheetScans, range.sheetName, row, range.startCol);
166
+ if (value.tag !== ValueTag.Number || !Number.isFinite(value.value)) {
167
+ return null;
168
+ }
169
+ const offset = row - range.startRow;
170
+ if (value.value !== first.value + step * offset) {
171
+ return null;
172
+ }
173
+ }
174
+ return { start: first.value, step, length };
175
+ }
176
+ function decodeVlookupTableRange(range, currentSheetName) {
177
+ if (range.refKind !== 'cells' || range.sheetEndName !== undefined) {
178
+ return null;
179
+ }
180
+ let start;
181
+ let end;
182
+ try {
183
+ start = decodeCellAddress(range.start.replaceAll('$', ''));
184
+ end = decodeCellAddress(range.end.replaceAll('$', ''));
185
+ }
186
+ catch {
187
+ return null;
188
+ }
189
+ const startRow = Math.min(start.r, end.r);
190
+ const endRow = Math.max(start.r, end.r);
191
+ const startCol = Math.min(start.c, end.c);
192
+ const endCol = Math.max(start.c, end.c);
193
+ return {
194
+ sheetName: range.sheetName ?? currentSheetName,
195
+ startRow,
196
+ endRow,
197
+ startCol,
198
+ width: endCol - startCol + 1,
199
+ cellCount: (endRow - startRow + 1) * (endCol - startCol + 1),
200
+ };
201
+ }
202
+ function readScannedCellValue(sheetScans, sheetName, row, col) {
203
+ return resolvedCellValue(sheetScans.get(sheetName)?.rows.get(row)?.get(col));
204
+ }
205
+ function resolvedCellValue(value) {
206
+ if (value === undefined || isSharedStringReference(value)) {
207
+ return { tag: ValueTag.Empty };
208
+ }
209
+ return value;
210
+ }
211
+ function isSharedStringReference(value) {
212
+ return typeof value === 'object' && value !== null && 'kind' in value && value.kind === 'shared-string';
213
+ }
214
+ function cellValueToPatchValue(value) {
215
+ switch (value.tag) {
216
+ case ValueTag.Empty:
217
+ return null;
218
+ case ValueTag.Number:
219
+ return Number.isFinite(value.value) ? value.value : undefined;
220
+ case ValueTag.Boolean:
221
+ return value.value;
222
+ case ValueTag.String:
223
+ return value.value;
224
+ case ValueTag.Error:
225
+ return undefined;
226
+ }
227
+ }
228
+ function formulaPatch(cell, value) {
229
+ return {
230
+ sheetName: cell.sheetName,
231
+ address: cell.address,
232
+ value,
233
+ preserveFormula: true,
234
+ };
235
+ }
236
+ function cellKey(cell) {
237
+ return `${cell.sheetName}!${cell.address}`;
238
+ }
239
+ function normalizedFormulaFunctionName(name) {
240
+ return name.toLocaleUpperCase('en-US').replace(/^_XLFN\./u, '');
241
+ }
242
+ function emptyResult() {
243
+ return {
244
+ batchCount: 0,
245
+ evaluatedFormulaCellCount: 0,
246
+ patches: [],
247
+ processedCells: new Set(),
248
+ };
249
+ }
250
+ //# sourceMappingURL=streaming-native-lookup-wasm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-native-lookup-wasm.js","sourceRoot":"","sources":["../src/streaming-native-lookup-wasm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type CellValue } from '@bilig/protocol';
2
+ import type { StreamingNativePendingCellRows } from './streaming-native-cell-arena.js';
3
+ import type { XlsxSourceLiteralPatch } from './source-preserving-literal-patches.js';
4
+ import type { NativeFormulaCell, NativeTable, SheetScanState, StreamingNativeFormulaCounts } from './streaming-native-recalc.js';
5
+ interface StreamingNativeFormulaReadTarget {
6
+ readonly source: string;
7
+ readonly sheetName: string;
8
+ readonly row: number;
9
+ readonly col: number;
10
+ }
11
+ export declare class UnsupportedStreamingNativeFormulaError extends Error {
12
+ constructor(message: string);
13
+ }
14
+ export declare function evaluateFormulaCells(sheetScans: ReadonlyMap<string, SheetScanState>, tablesBySheet: ReadonlyMap<string, readonly NativeTable[]>, externalCachedRowsByAlias: ReadonlyMap<string, StreamingNativePendingCellRows>, patches: XlsxSourceLiteralPatch[]): StreamingNativeFormulaCounts;
15
+ export declare function resolveFormulaSource(scan: SheetScanState, cell: NativeFormulaCell): string;
16
+ export declare function readTargets(reads: readonly StreamingNativeFormulaReadTarget[], sheetScans: ReadonlyMap<string, SheetScanState>): Readonly<Record<string, CellValue>>;
17
+ export {};