@bilig/formula 0.7.8 → 0.8.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.
Files changed (57) hide show
  1. package/dist/binder-wasm-arity.d.ts +1 -0
  2. package/dist/binder-wasm-arity.js +541 -0
  3. package/dist/binder-wasm-arity.js.map +1 -0
  4. package/dist/binder-wasm-rules.d.ts +1 -2
  5. package/dist/binder-wasm-rules.js +2 -540
  6. package/dist/binder-wasm-rules.js.map +1 -1
  7. package/dist/builtins/cell-value-utils.d.ts +9 -0
  8. package/dist/builtins/cell-value-utils.js +63 -0
  9. package/dist/builtins/cell-value-utils.js.map +1 -0
  10. package/dist/builtins/datetime.d.ts +2 -10
  11. package/dist/builtins/datetime.js +5 -261
  12. package/dist/builtins/datetime.js.map +1 -1
  13. package/dist/builtins/excel-date.d.ts +16 -0
  14. package/dist/builtins/excel-date.js +199 -0
  15. package/dist/builtins/excel-date.js.map +1 -0
  16. package/dist/builtins/lookup-core-helpers.d.ts +50 -0
  17. package/dist/builtins/lookup-core-helpers.js +342 -0
  18. package/dist/builtins/lookup-core-helpers.js.map +1 -0
  19. package/dist/builtins/lookup.d.ts +3 -25
  20. package/dist/builtins/lookup.js +3 -341
  21. package/dist/builtins/lookup.js.map +1 -1
  22. package/dist/formula-reference-translation.d.ts +20 -0
  23. package/dist/formula-reference-translation.js +273 -0
  24. package/dist/formula-reference-translation.js.map +1 -0
  25. package/dist/formula-serializer.d.ts +2 -0
  26. package/dist/formula-serializer.js +74 -0
  27. package/dist/formula-serializer.js.map +1 -0
  28. package/dist/formula-sheet-rename.d.ts +14 -0
  29. package/dist/formula-sheet-rename.js +243 -0
  30. package/dist/formula-sheet-rename.js.map +1 -0
  31. package/dist/formula-structural-rewrite.d.ts +14 -0
  32. package/dist/formula-structural-rewrite.js +511 -0
  33. package/dist/formula-structural-rewrite.js.map +1 -0
  34. package/dist/formula-template-key.d.ts +2 -0
  35. package/dist/formula-template-key.js +58 -0
  36. package/dist/formula-template-key.js.map +1 -1
  37. package/dist/js-evaluator-cell-values.d.ts +5 -0
  38. package/dist/js-evaluator-cell-values.js +14 -0
  39. package/dist/js-evaluator-cell-values.js.map +1 -0
  40. package/dist/js-evaluator-context-special-calls.js +72 -0
  41. package/dist/js-evaluator-context-special-calls.js.map +1 -1
  42. package/dist/js-evaluator-runtime-helpers.d.ts +39 -0
  43. package/dist/js-evaluator-runtime-helpers.js +453 -0
  44. package/dist/js-evaluator-runtime-helpers.js.map +1 -0
  45. package/dist/js-evaluator-types.d.ts +178 -0
  46. package/dist/js-evaluator-types.js +2 -0
  47. package/dist/js-evaluator-types.js.map +1 -0
  48. package/dist/js-evaluator.d.ts +4 -178
  49. package/dist/js-evaluator.js +3 -463
  50. package/dist/js-evaluator.js.map +1 -1
  51. package/dist/translation-reference-utils.d.ts +42 -0
  52. package/dist/translation-reference-utils.js +178 -0
  53. package/dist/translation-reference-utils.js.map +1 -0
  54. package/dist/translation.d.ts +6 -32
  55. package/dist/translation.js +14 -1300
  56. package/dist/translation.js.map +1 -1
  57. package/package.json +2 -2
@@ -0,0 +1,453 @@
1
+ import { ErrorCode, ValueTag, formatErrorCode } from '@bilig/protocol';
2
+ import { emptyValue, error } from './js-evaluator-cell-values.js';
3
+ export function toNumber(value) {
4
+ switch (value.tag) {
5
+ case ValueTag.Number:
6
+ return value.value;
7
+ case ValueTag.Boolean:
8
+ return value.value ? 1 : 0;
9
+ case ValueTag.Empty:
10
+ return 0;
11
+ case ValueTag.String:
12
+ case ValueTag.Error:
13
+ return undefined;
14
+ default:
15
+ return undefined;
16
+ }
17
+ }
18
+ export function toStringValue(value) {
19
+ switch (value.tag) {
20
+ case ValueTag.Empty:
21
+ return '';
22
+ case ValueTag.Number:
23
+ return String(value.value);
24
+ case ValueTag.Boolean:
25
+ return value.value ? 'TRUE' : 'FALSE';
26
+ case ValueTag.String:
27
+ return value.value;
28
+ case ValueTag.Error:
29
+ return formatErrorCode(value.code);
30
+ }
31
+ }
32
+ function isTextLike(value) {
33
+ return value.tag === ValueTag.String || value.tag === ValueTag.Empty;
34
+ }
35
+ function compareText(left, right) {
36
+ const normalizedLeft = left.toUpperCase();
37
+ const normalizedRight = right.toUpperCase();
38
+ if (normalizedLeft === normalizedRight) {
39
+ return 0;
40
+ }
41
+ return normalizedLeft < normalizedRight ? -1 : 1;
42
+ }
43
+ function compareScalars(left, right) {
44
+ if (isTextLike(left) && isTextLike(right)) {
45
+ return compareText(toStringValue(left), toStringValue(right));
46
+ }
47
+ const leftNum = comparableNumber(left);
48
+ const rightNum = comparableNumber(right);
49
+ if (leftNum === undefined || rightNum === undefined) {
50
+ return undefined;
51
+ }
52
+ if (leftNum === rightNum) {
53
+ return 0;
54
+ }
55
+ return leftNum < rightNum ? -1 : 1;
56
+ }
57
+ function comparableNumber(value) {
58
+ switch (value.tag) {
59
+ case ValueTag.Number:
60
+ return value.value;
61
+ case ValueTag.Boolean:
62
+ return value.value ? 1 : 0;
63
+ case ValueTag.Empty:
64
+ return 0;
65
+ case ValueTag.String: {
66
+ const trimmed = value.value.trim();
67
+ if (trimmed === '') {
68
+ return 0;
69
+ }
70
+ const parsed = Number(trimmed);
71
+ return Number.isFinite(parsed) ? parsed : undefined;
72
+ }
73
+ case ValueTag.Error:
74
+ default:
75
+ return undefined;
76
+ }
77
+ }
78
+ export function truthy(value) {
79
+ return (toNumber(value) ?? 0) !== 0;
80
+ }
81
+ export function popScalar(stack) {
82
+ const value = stack.pop();
83
+ if (!value) {
84
+ return error(ErrorCode.Value);
85
+ }
86
+ if (value.kind === 'scalar') {
87
+ return value.value;
88
+ }
89
+ if (value.kind === 'omitted') {
90
+ return error(ErrorCode.Value);
91
+ }
92
+ if (value.kind === 'lambda') {
93
+ return error(ErrorCode.Value);
94
+ }
95
+ return value.values[0] ?? emptyValue();
96
+ }
97
+ export function popArgument(stack) {
98
+ return stack.pop() ?? { kind: 'scalar', value: error(ErrorCode.Value) };
99
+ }
100
+ export function toEvaluationResult(value) {
101
+ if (!value) {
102
+ return error(ErrorCode.Value);
103
+ }
104
+ if (value.kind === 'scalar') {
105
+ return value.value;
106
+ }
107
+ if (value.kind === 'omitted') {
108
+ return error(ErrorCode.Value);
109
+ }
110
+ if (value.kind === 'lambda') {
111
+ return error(ErrorCode.Value);
112
+ }
113
+ if (value.kind === 'range') {
114
+ return {
115
+ kind: 'array',
116
+ rows: value.rows,
117
+ cols: value.cols,
118
+ values: value.values,
119
+ };
120
+ }
121
+ return value;
122
+ }
123
+ export function cloneStackValue(value) {
124
+ if (value.kind === 'scalar') {
125
+ return { kind: 'scalar', value: value.value };
126
+ }
127
+ if (value.kind === 'omitted') {
128
+ return { kind: 'omitted' };
129
+ }
130
+ if (value.kind === 'range') {
131
+ return {
132
+ kind: 'range',
133
+ values: value.values,
134
+ refKind: value.refKind,
135
+ rows: value.rows,
136
+ cols: value.cols,
137
+ ...(value.sheetName ? { sheetName: value.sheetName } : {}),
138
+ ...(value.start ? { start: value.start } : {}),
139
+ ...(value.end ? { end: value.end } : {}),
140
+ };
141
+ }
142
+ if (value.kind === 'lambda') {
143
+ return {
144
+ kind: 'lambda',
145
+ params: [...value.params],
146
+ body: value.body,
147
+ scopes: cloneScopes(value.scopes),
148
+ };
149
+ }
150
+ return { kind: 'array', values: value.values, rows: value.rows, cols: value.cols };
151
+ }
152
+ export function cloneScopes(scopes) {
153
+ return scopes.map((scope) => new Map([...scope.entries()].map(([name, value]) => [name, cloneStackValue(value)])));
154
+ }
155
+ export function toRangeLike(value) {
156
+ if (value.kind === 'omitted') {
157
+ return { kind: 'range', values: [error(ErrorCode.Value)], rows: 1, cols: 1, refKind: 'cells' };
158
+ }
159
+ if (value.kind === 'lambda') {
160
+ return { kind: 'range', values: [error(ErrorCode.Value)], rows: 1, cols: 1, refKind: 'cells' };
161
+ }
162
+ if (value.kind === 'range') {
163
+ return value;
164
+ }
165
+ if (value.kind === 'array') {
166
+ return {
167
+ kind: 'range',
168
+ values: value.values,
169
+ rows: value.rows,
170
+ cols: value.cols,
171
+ refKind: 'cells',
172
+ };
173
+ }
174
+ return { kind: 'range', values: [value.value], rows: 1, cols: 1, refKind: 'cells' };
175
+ }
176
+ function scalarBinary(operator, leftValue, rightValue) {
177
+ if (leftValue.tag === ValueTag.Error) {
178
+ return leftValue;
179
+ }
180
+ if (rightValue.tag === ValueTag.Error) {
181
+ return rightValue;
182
+ }
183
+ if (operator === '&') {
184
+ return {
185
+ tag: ValueTag.String,
186
+ value: `${toStringValue(leftValue)}${toStringValue(rightValue)}`,
187
+ stringId: 0,
188
+ };
189
+ }
190
+ if (['+', '-', '*', '/', '^'].includes(operator)) {
191
+ const left = toNumber(leftValue);
192
+ const right = toNumber(rightValue);
193
+ if (left === undefined || right === undefined) {
194
+ return error(ErrorCode.Value);
195
+ }
196
+ if (operator === '/' && right === 0) {
197
+ return error(ErrorCode.Div0);
198
+ }
199
+ const value = operator === '+'
200
+ ? left + right
201
+ : operator === '-'
202
+ ? left - right
203
+ : operator === '*'
204
+ ? left * right
205
+ : operator === '/'
206
+ ? left / right
207
+ : left ** right;
208
+ return { tag: ValueTag.Number, value };
209
+ }
210
+ const comparison = compareScalars(leftValue, rightValue);
211
+ if (comparison === undefined) {
212
+ return error(ErrorCode.Value);
213
+ }
214
+ return {
215
+ tag: ValueTag.Boolean,
216
+ value: operator === '='
217
+ ? comparison === 0
218
+ : operator === '<>'
219
+ ? comparison !== 0
220
+ : operator === '>'
221
+ ? comparison > 0
222
+ : operator === '>='
223
+ ? comparison >= 0
224
+ : operator === '<'
225
+ ? comparison < 0
226
+ : comparison <= 0,
227
+ };
228
+ }
229
+ export function evaluateBinary(operator, leftValue, rightValue) {
230
+ if (leftValue.kind === 'scalar' && rightValue.kind === 'scalar') {
231
+ return scalarBinary(operator, leftValue.value, rightValue.value);
232
+ }
233
+ const leftRange = toRangeLike(leftValue);
234
+ const rightRange = toRangeLike(rightValue);
235
+ const rows = leftRange.rows === rightRange.rows
236
+ ? leftRange.rows
237
+ : leftRange.rows === 1
238
+ ? rightRange.rows
239
+ : rightRange.rows === 1
240
+ ? leftRange.rows
241
+ : 0;
242
+ const cols = leftRange.cols === rightRange.cols
243
+ ? leftRange.cols
244
+ : leftRange.cols === 1
245
+ ? rightRange.cols
246
+ : rightRange.cols === 1
247
+ ? leftRange.cols
248
+ : 0;
249
+ if (rows === 0 || cols === 0) {
250
+ return error(ErrorCode.Value);
251
+ }
252
+ const values = [];
253
+ for (let row = 0; row < rows; row += 1) {
254
+ for (let col = 0; col < cols; col += 1) {
255
+ const leftIndex = Math.min(row, leftRange.rows - 1) * leftRange.cols + Math.min(col, leftRange.cols - 1);
256
+ const rightIndex = Math.min(row, rightRange.rows - 1) * rightRange.cols + Math.min(col, rightRange.cols - 1);
257
+ values.push(scalarBinary(operator, leftRange.values[leftIndex] ?? emptyValue(), rightRange.values[rightIndex] ?? emptyValue()));
258
+ }
259
+ }
260
+ return rows === 1 && cols === 1 ? (values[0] ?? emptyValue()) : { kind: 'array', values, rows, cols };
261
+ }
262
+ export function stackScalar(value) {
263
+ return { kind: 'scalar', value };
264
+ }
265
+ export function normalizeScopeName(name) {
266
+ return name.toUpperCase();
267
+ }
268
+ export function isSingleCellValue(value) {
269
+ if (value.kind === 'scalar') {
270
+ return value.value;
271
+ }
272
+ if (value.kind === 'omitted') {
273
+ return undefined;
274
+ }
275
+ if (value.kind === 'lambda') {
276
+ return undefined;
277
+ }
278
+ return value.rows * value.cols === 1 ? (value.values[0] ?? emptyValue()) : undefined;
279
+ }
280
+ export function toRangeArgument(value) {
281
+ if (value.kind === 'scalar') {
282
+ return value.value;
283
+ }
284
+ if (value.kind === 'omitted') {
285
+ return error(ErrorCode.Value);
286
+ }
287
+ if (value.kind === 'lambda') {
288
+ return error(ErrorCode.Value);
289
+ }
290
+ return {
291
+ kind: 'range',
292
+ values: value.values,
293
+ refKind: value.kind === 'range' ? value.refKind : 'cells',
294
+ rows: value.rows,
295
+ cols: value.cols,
296
+ ...(value.kind === 'range' && value.sheetName ? { sheetName: value.sheetName } : {}),
297
+ ...(value.kind === 'range' && value.start ? { start: value.start } : {}),
298
+ ...(value.kind === 'range' && value.end ? { end: value.end } : {}),
299
+ };
300
+ }
301
+ export function toPositiveInteger(value) {
302
+ if (value === undefined) {
303
+ return undefined;
304
+ }
305
+ const scalar = isSingleCellValue(value);
306
+ const numeric = scalar ? toNumber(scalar) : undefined;
307
+ if (numeric === undefined || !Number.isFinite(numeric)) {
308
+ return undefined;
309
+ }
310
+ const integer = Math.trunc(numeric);
311
+ return integer >= 1 ? integer : undefined;
312
+ }
313
+ export function getRangeCell(range, row, col) {
314
+ return range.values[row * range.cols + col] ?? emptyValue();
315
+ }
316
+ export function getBroadcastShape(values) {
317
+ const ranges = values.map(toRangeLike);
318
+ const rows = Math.max(...ranges.map((range) => range.rows));
319
+ const cols = Math.max(...ranges.map((range) => range.cols));
320
+ const compatible = ranges.every((range) => (range.rows === rows || range.rows === 1) && (range.cols === cols || range.cols === 1));
321
+ return compatible ? { rows, cols } : undefined;
322
+ }
323
+ export function coerceScalarTextArgument(value) {
324
+ if (value === undefined) {
325
+ return error(ErrorCode.Value);
326
+ }
327
+ const scalar = isSingleCellValue(value);
328
+ if (!scalar) {
329
+ return error(ErrorCode.Value);
330
+ }
331
+ if (scalar.tag === ValueTag.Error) {
332
+ return scalar;
333
+ }
334
+ return toStringValue(scalar);
335
+ }
336
+ export function coerceOptionalBooleanArgument(value, fallback) {
337
+ if (value === undefined) {
338
+ return fallback;
339
+ }
340
+ const scalar = isSingleCellValue(value);
341
+ if (!scalar) {
342
+ return error(ErrorCode.Value);
343
+ }
344
+ if (scalar.tag === ValueTag.Error) {
345
+ return scalar;
346
+ }
347
+ if (scalar.tag === ValueTag.Boolean) {
348
+ return scalar.value;
349
+ }
350
+ const numeric = toNumber(scalar);
351
+ return numeric === undefined ? error(ErrorCode.Value) : numeric !== 0;
352
+ }
353
+ export function coerceOptionalMatchModeArgument(value, fallback) {
354
+ if (value === undefined) {
355
+ return fallback;
356
+ }
357
+ const scalar = isSingleCellValue(value);
358
+ if (!scalar) {
359
+ return error(ErrorCode.Value);
360
+ }
361
+ if (scalar.tag === ValueTag.Error) {
362
+ return scalar;
363
+ }
364
+ const numeric = toNumber(scalar);
365
+ if (numeric === undefined || !Number.isFinite(numeric)) {
366
+ return error(ErrorCode.Value);
367
+ }
368
+ const integer = Math.trunc(numeric);
369
+ return integer === 0 || integer === 1 ? integer : error(ErrorCode.Value);
370
+ }
371
+ export function coerceOptionalPositiveIntegerArgument(value, fallback) {
372
+ if (value === undefined) {
373
+ return fallback;
374
+ }
375
+ const scalar = isSingleCellValue(value);
376
+ if (!scalar) {
377
+ return error(ErrorCode.Value);
378
+ }
379
+ if (scalar.tag === ValueTag.Error) {
380
+ return scalar;
381
+ }
382
+ const numeric = toNumber(scalar);
383
+ if (numeric === undefined || !Number.isFinite(numeric)) {
384
+ return error(ErrorCode.Value);
385
+ }
386
+ const integer = Math.trunc(numeric);
387
+ return integer >= 1 ? integer : error(ErrorCode.Value);
388
+ }
389
+ export function coerceOptionalTrimModeArgument(value, fallback) {
390
+ if (value === undefined) {
391
+ return fallback;
392
+ }
393
+ const scalar = isSingleCellValue(value);
394
+ if (!scalar) {
395
+ return error(ErrorCode.Value);
396
+ }
397
+ if (scalar.tag === ValueTag.Error) {
398
+ return scalar;
399
+ }
400
+ const numeric = toNumber(scalar);
401
+ if (numeric === undefined || !Number.isFinite(numeric)) {
402
+ return error(ErrorCode.Value);
403
+ }
404
+ const integer = Math.trunc(numeric);
405
+ switch (integer) {
406
+ case 0:
407
+ case 1:
408
+ case 2:
409
+ case 3:
410
+ return integer;
411
+ default:
412
+ return error(ErrorCode.Value);
413
+ }
414
+ }
415
+ export function isCellValueError(value) {
416
+ return typeof value === 'object' && value !== null && 'tag' in value;
417
+ }
418
+ export function makeArrayStack(rows, cols, values) {
419
+ return { kind: 'array', rows, cols, values };
420
+ }
421
+ export function matrixFromStackValue(value) {
422
+ if (value.kind === 'omitted' || value.kind === 'lambda') {
423
+ return undefined;
424
+ }
425
+ if (value.kind === 'scalar') {
426
+ return { rows: 1, cols: 1, values: [value.value] };
427
+ }
428
+ return { rows: value.rows, cols: value.cols, values: value.values };
429
+ }
430
+ export function scalarIntegerArgument(value) {
431
+ const scalar = value ? isSingleCellValue(value) : undefined;
432
+ const numeric = scalar ? toNumber(scalar) : undefined;
433
+ return numeric === undefined || !Number.isFinite(numeric) ? undefined : Math.trunc(numeric);
434
+ }
435
+ export function vectorIntegerArgument(value) {
436
+ if (!value) {
437
+ return undefined;
438
+ }
439
+ const matrix = matrixFromStackValue(value);
440
+ if (!matrix || !(matrix.rows === 1 || matrix.cols === 1)) {
441
+ return undefined;
442
+ }
443
+ const values = [];
444
+ for (let index = 0; index < matrix.rows * matrix.cols; index += 1) {
445
+ const numeric = toNumber(matrix.values[index] ?? emptyValue());
446
+ if (numeric === undefined || !Number.isFinite(numeric)) {
447
+ return undefined;
448
+ }
449
+ values.push(Math.trunc(numeric));
450
+ }
451
+ return values;
452
+ }
453
+ //# sourceMappingURL=js-evaluator-runtime-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-evaluator-runtime-helpers.js","sourceRoot":"","sources":["../src/js-evaluator-runtime-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,178 @@
1
+ import type { CellValue, ErrorCode } from '@bilig/protocol';
2
+ import type { LookupBuiltin } from './builtins/lookup.js';
3
+ import type { ArrayValue, EvaluationResult } from './runtime-values.js';
4
+ export interface EvaluationContext {
5
+ sheetName: string;
6
+ currentAddress?: string;
7
+ resolveCell: (sheetName: string, address: string) => CellValue;
8
+ resolveRange: (sheetName: string, start: string, end: string, refKind: 'cells' | 'rows' | 'cols') => CellValue[];
9
+ resolveName?: (name: string) => CellValue;
10
+ resolveFormula?: (sheetName: string, address: string) => string | undefined;
11
+ resolvePivotData?: (request: {
12
+ dataField: string;
13
+ sheetName: string;
14
+ address: string;
15
+ filters: ReadonlyArray<{
16
+ field: string;
17
+ item: CellValue;
18
+ }>;
19
+ }) => CellValue | undefined;
20
+ resolveMultipleOperations?: (request: {
21
+ formulaSheetName: string;
22
+ formulaAddress: string;
23
+ rowCellSheetName: string;
24
+ rowCellAddress: string;
25
+ rowReplacementSheetName: string;
26
+ rowReplacementAddress: string;
27
+ columnCellSheetName?: string;
28
+ columnCellAddress?: string;
29
+ columnReplacementSheetName?: string;
30
+ columnReplacementAddress?: string;
31
+ }) => CellValue | undefined;
32
+ resolveExactVectorMatch?: (request: {
33
+ lookupValue: CellValue;
34
+ sheetName: string;
35
+ start: string;
36
+ end: string;
37
+ startRow: number;
38
+ endRow: number;
39
+ startCol: number;
40
+ endCol: number;
41
+ searchMode: 1 | -1;
42
+ }) => ExactVectorMatchResult;
43
+ resolveApproximateVectorMatch?: (request: {
44
+ lookupValue: CellValue;
45
+ sheetName: string;
46
+ start: string;
47
+ end: string;
48
+ startRow: number;
49
+ endRow: number;
50
+ startCol: number;
51
+ endCol: number;
52
+ matchMode: 1 | -1;
53
+ }) => ApproximateVectorMatchResult;
54
+ noteRangeMaterialization?: (cellCount: number) => void;
55
+ noteExactLookupDirect?: () => void;
56
+ noteExactLookupFallback?: () => void;
57
+ listSheetNames?: () => string[];
58
+ resolveBuiltin?: (name: string) => ((...args: CellValue[]) => EvaluationResult) | undefined;
59
+ resolveLookupBuiltin?: (name: string) => LookupBuiltin | undefined;
60
+ }
61
+ export type ExactVectorMatchResult = {
62
+ handled: false;
63
+ } | {
64
+ handled: true;
65
+ position: number | undefined;
66
+ };
67
+ export type ApproximateVectorMatchResult = ExactVectorMatchResult;
68
+ export interface ReferenceOperand {
69
+ kind: 'cell' | 'range' | 'row' | 'col';
70
+ sheetName?: string;
71
+ address?: string;
72
+ start?: string;
73
+ end?: string;
74
+ refKind?: 'cells' | 'rows' | 'cols';
75
+ }
76
+ export type JsPlanInstruction = {
77
+ opcode: 'push-number';
78
+ value: number;
79
+ } | {
80
+ opcode: 'push-boolean';
81
+ value: boolean;
82
+ } | {
83
+ opcode: 'push-string';
84
+ value: string;
85
+ } | {
86
+ opcode: 'push-error';
87
+ code: ErrorCode;
88
+ } | {
89
+ opcode: 'push-name';
90
+ name: string;
91
+ } | {
92
+ opcode: 'push-cell';
93
+ sheetName?: string;
94
+ address: string;
95
+ } | {
96
+ opcode: 'push-range';
97
+ sheetName?: string;
98
+ start: string;
99
+ end: string;
100
+ refKind: 'cells' | 'rows' | 'cols';
101
+ } | {
102
+ opcode: 'lookup-exact-match';
103
+ callee: 'MATCH' | 'XMATCH';
104
+ sheetName?: string;
105
+ start: string;
106
+ end: string;
107
+ startRow: number;
108
+ endRow: number;
109
+ startCol: number;
110
+ endCol: number;
111
+ refKind: 'cells';
112
+ searchMode: 1 | -1;
113
+ } | {
114
+ opcode: 'lookup-approximate-match';
115
+ callee: 'MATCH' | 'XMATCH';
116
+ sheetName?: string;
117
+ start: string;
118
+ end: string;
119
+ startRow: number;
120
+ endRow: number;
121
+ startCol: number;
122
+ endCol: number;
123
+ refKind: 'cells';
124
+ matchMode: 1 | -1;
125
+ } | {
126
+ opcode: 'push-lambda';
127
+ params: string[];
128
+ body: JsPlanInstruction[];
129
+ } | {
130
+ opcode: 'unary';
131
+ operator: '+' | '-';
132
+ } | {
133
+ opcode: 'binary';
134
+ operator: '+' | '-' | '*' | '/' | '^' | '&' | '=' | '<>' | '>' | '>=' | '<' | '<=';
135
+ } | {
136
+ opcode: 'call';
137
+ callee: string;
138
+ argc: number;
139
+ argRefs?: Array<ReferenceOperand | undefined>;
140
+ } | {
141
+ opcode: 'invoke';
142
+ argc: number;
143
+ } | {
144
+ opcode: 'begin-scope';
145
+ } | {
146
+ opcode: 'bind-name';
147
+ name: string;
148
+ } | {
149
+ opcode: 'end-scope';
150
+ } | {
151
+ opcode: 'jump-if-false';
152
+ target: number;
153
+ } | {
154
+ opcode: 'jump';
155
+ target: number;
156
+ } | {
157
+ opcode: 'return';
158
+ };
159
+ export type StackValue = {
160
+ kind: 'scalar';
161
+ value: CellValue;
162
+ } | {
163
+ kind: 'omitted';
164
+ } | {
165
+ kind: 'range';
166
+ values: CellValue[];
167
+ refKind: 'cells' | 'rows' | 'cols';
168
+ rows: number;
169
+ cols: number;
170
+ sheetName?: string;
171
+ start?: string;
172
+ end?: string;
173
+ } | {
174
+ kind: 'lambda';
175
+ params: string[];
176
+ body: JsPlanInstruction[];
177
+ scopes: Array<Map<string, StackValue>>;
178
+ } | ArrayValue;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=js-evaluator-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-evaluator-types.js","sourceRoot":"","sources":["../src/js-evaluator-types.ts"],"names":[],"mappings":""}