@bilig/formula 0.1.82 → 0.1.84
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/addressing.d.ts +6 -6
- package/dist/addressing.js +16 -16
- package/dist/addressing.js.map +1 -1
- package/dist/ast.d.ts +18 -18
- package/dist/binder-wasm-rules.d.ts +2 -2
- package/dist/binder-wasm-rules.js +677 -724
- package/dist/binder-wasm-rules.js.map +1 -1
- package/dist/binder.d.ts +2 -2
- package/dist/binder.js +133 -137
- package/dist/binder.js.map +1 -1
- package/dist/builtin-capabilities.d.ts +4 -4
- package/dist/builtin-capabilities.js +777 -816
- package/dist/builtin-capabilities.js.map +1 -1
- package/dist/builtins/complex.d.ts +3 -3
- package/dist/builtins/complex.js +20 -48
- package/dist/builtins/complex.js.map +1 -1
- package/dist/builtins/convert.d.ts +1 -1
- package/dist/builtins/convert.js +180 -181
- package/dist/builtins/convert.js.map +1 -1
- package/dist/builtins/datetime.d.ts +1 -1
- package/dist/builtins/datetime.js +60 -72
- package/dist/builtins/datetime.js.map +1 -1
- package/dist/builtins/distribution-builtins.d.ts +2 -2
- package/dist/builtins/distribution-builtins.js +62 -112
- package/dist/builtins/distribution-builtins.js.map +1 -1
- package/dist/builtins/distributions.js +17 -54
- package/dist/builtins/distributions.js.map +1 -1
- package/dist/builtins/financial-builtins.d.ts +2 -2
- package/dist/builtins/financial-builtins.js +9 -42
- package/dist/builtins/financial-builtins.js.map +1 -1
- package/dist/builtins/financial.js +4 -18
- package/dist/builtins/financial.js.map +1 -1
- package/dist/builtins/fixed-income-builtins.d.ts +2 -2
- package/dist/builtins/fixed-income-builtins.js +18 -60
- package/dist/builtins/fixed-income-builtins.js.map +1 -1
- package/dist/builtins/fixed-income.js +25 -96
- package/dist/builtins/fixed-income.js.map +1 -1
- package/dist/builtins/formatting.js +9 -9
- package/dist/builtins/formatting.js.map +1 -1
- package/dist/builtins/logical.d.ts +1 -1
- package/dist/builtins/logical.js +5 -5
- package/dist/builtins/logical.js.map +1 -1
- package/dist/builtins/lookup-array-shape-builtins.d.ts +3 -3
- package/dist/builtins/lookup-array-shape-builtins.js +8 -15
- package/dist/builtins/lookup-array-shape-builtins.js.map +1 -1
- package/dist/builtins/lookup-criteria-builtins.d.ts +2 -2
- package/dist/builtins/lookup-criteria-builtins.js +1 -1
- package/dist/builtins/lookup-criteria-builtins.js.map +1 -1
- package/dist/builtins/lookup-database-builtins.d.ts +2 -2
- package/dist/builtins/lookup-database-builtins.js +20 -24
- package/dist/builtins/lookup-database-builtins.js.map +1 -1
- package/dist/builtins/lookup-financial-builtins.d.ts +3 -3
- package/dist/builtins/lookup-financial-builtins.js +14 -30
- package/dist/builtins/lookup-financial-builtins.js.map +1 -1
- package/dist/builtins/lookup-hypothesis-builtins.d.ts +2 -2
- package/dist/builtins/lookup-hypothesis-builtins.js +23 -58
- package/dist/builtins/lookup-hypothesis-builtins.js.map +1 -1
- package/dist/builtins/lookup-matrix-builtins.d.ts +3 -3
- package/dist/builtins/lookup-matrix-builtins.js +5 -3
- package/dist/builtins/lookup-matrix-builtins.js.map +1 -1
- package/dist/builtins/lookup-order-statistics-builtins.d.ts +3 -3
- package/dist/builtins/lookup-order-statistics-builtins.js +18 -30
- package/dist/builtins/lookup-order-statistics-builtins.js.map +1 -1
- package/dist/builtins/lookup-reference-builtins.d.ts +2 -2
- package/dist/builtins/lookup-reference-builtins.js +10 -26
- package/dist/builtins/lookup-reference-builtins.js.map +1 -1
- package/dist/builtins/lookup-regression-builtins.d.ts +2 -2
- package/dist/builtins/lookup-regression-builtins.js +52 -69
- package/dist/builtins/lookup-regression-builtins.js.map +1 -1
- package/dist/builtins/lookup-sort-filter-builtins.d.ts +3 -3
- package/dist/builtins/lookup-sort-filter-builtins.js +5 -13
- package/dist/builtins/lookup-sort-filter-builtins.js.map +1 -1
- package/dist/builtins/lookup.d.ts +5 -5
- package/dist/builtins/lookup.js +61 -73
- package/dist/builtins/lookup.js.map +1 -1
- package/dist/builtins/math-builtins.d.ts +2 -2
- package/dist/builtins/math-builtins.js +11 -17
- package/dist/builtins/math-builtins.js.map +1 -1
- package/dist/builtins/numeric.d.ts +2 -2
- package/dist/builtins/numeric.js +2 -2
- package/dist/builtins/numeric.js.map +1 -1
- package/dist/builtins/placeholder.d.ts +1 -1
- package/dist/builtins/placeholder.js +505 -505
- package/dist/builtins/placeholder.js.map +1 -1
- package/dist/builtins/radix.d.ts +2 -2
- package/dist/builtins/radix.js +33 -39
- package/dist/builtins/radix.js.map +1 -1
- package/dist/builtins/statistical-builtins.d.ts +2 -2
- package/dist/builtins/statistical-builtins.js +29 -56
- package/dist/builtins/statistical-builtins.js.map +1 -1
- package/dist/builtins/statistics.d.ts +1 -1
- package/dist/builtins/statistics.js +3 -7
- package/dist/builtins/statistics.js.map +1 -1
- package/dist/builtins/text-core-builtins.d.ts +2 -2
- package/dist/builtins/text-core-builtins.js +110 -110
- package/dist/builtins/text-core-builtins.js.map +1 -1
- package/dist/builtins/text-format-builtins.d.ts +2 -2
- package/dist/builtins/text-format-builtins.js +109 -141
- package/dist/builtins/text-format-builtins.js.map +1 -1
- package/dist/builtins/text-search-builtins.d.ts +2 -2
- package/dist/builtins/text-search-builtins.js +37 -44
- package/dist/builtins/text-search-builtins.js.map +1 -1
- package/dist/builtins/text.d.ts +2 -2
- package/dist/builtins/text.js +19 -29
- package/dist/builtins/text.js.map +1 -1
- package/dist/builtins.d.ts +3 -3
- package/dist/builtins.js +55 -75
- package/dist/builtins.js.map +1 -1
- package/dist/compatibility.js +425 -430
- package/dist/compatibility.js.map +1 -1
- package/dist/compiler.d.ts +7 -7
- package/dist/compiler.js +212 -228
- package/dist/compiler.js.map +1 -1
- package/dist/external-function-adapter.d.ts +6 -6
- package/dist/external-function-adapter.js +3 -3
- package/dist/external-function-adapter.js.map +1 -1
- package/dist/formula-template-key.js +25 -26
- package/dist/formula-template-key.js.map +1 -1
- package/dist/generated/formula-inventory.js +3567 -3567
- package/dist/generated/formula-inventory.js.map +1 -1
- package/dist/group-pivot-evaluator.d.ts +2 -2
- package/dist/group-pivot-evaluator.js +27 -32
- package/dist/group-pivot-evaluator.js.map +1 -1
- package/dist/index.d.ts +20 -20
- package/dist/index.js +20 -20
- package/dist/index.js.map +1 -1
- package/dist/js-evaluator-array-special-calls.d.ts +3 -3
- package/dist/js-evaluator-array-special-calls.js +25 -34
- package/dist/js-evaluator-array-special-calls.js.map +1 -1
- package/dist/js-evaluator-context-special-calls.d.ts +2 -2
- package/dist/js-evaluator-context-special-calls.js +23 -27
- package/dist/js-evaluator-context-special-calls.js.map +1 -1
- package/dist/js-evaluator-reference-context.d.ts +2 -2
- package/dist/js-evaluator-reference-context.js +22 -24
- package/dist/js-evaluator-reference-context.js.map +1 -1
- package/dist/js-evaluator-workbook-special-calls.d.ts +2 -2
- package/dist/js-evaluator-workbook-special-calls.js +18 -24
- package/dist/js-evaluator-workbook-special-calls.js.map +1 -1
- package/dist/js-evaluator.d.ts +40 -40
- package/dist/js-evaluator.js +135 -147
- package/dist/js-evaluator.js.map +1 -1
- package/dist/js-plan-lowering.d.ts +2 -2
- package/dist/js-plan-lowering.js +103 -108
- package/dist/js-plan-lowering.js.map +1 -1
- package/dist/lexer.d.ts +1 -1
- package/dist/lexer.js +34 -43
- package/dist/lexer.js.map +1 -1
- package/dist/optimizer.d.ts +1 -1
- package/dist/optimizer.js +99 -108
- package/dist/optimizer.js.map +1 -1
- package/dist/parser.d.ts +1 -1
- package/dist/parser.js +129 -136
- package/dist/parser.js.map +1 -1
- package/dist/program-arena.js.map +1 -1
- package/dist/runtime-inventory.d.ts +2 -2
- package/dist/runtime-inventory.js +14 -20
- package/dist/runtime-inventory.js.map +1 -1
- package/dist/runtime-values.d.ts +4 -4
- package/dist/runtime-values.js +2 -2
- package/dist/runtime-values.js.map +1 -1
- package/dist/special-call-rewrites.d.ts +1 -1
- package/dist/special-call-rewrites.js +14 -18
- package/dist/special-call-rewrites.js.map +1 -1
- package/dist/translation.d.ts +7 -7
- package/dist/translation.js +323 -366
- package/dist/translation.js.map +1 -1
- package/package.json +2 -2
package/dist/addressing.d.ts
CHANGED
|
@@ -16,39 +16,39 @@ export interface ColumnAddress {
|
|
|
16
16
|
}
|
|
17
17
|
export type ParsedReference = CellReference | RowReference | ColumnReference;
|
|
18
18
|
interface CellReference {
|
|
19
|
-
kind:
|
|
19
|
+
kind: 'cell';
|
|
20
20
|
sheetName?: string;
|
|
21
21
|
row: number;
|
|
22
22
|
col: number;
|
|
23
23
|
text: string;
|
|
24
24
|
}
|
|
25
25
|
interface RowReference {
|
|
26
|
-
kind:
|
|
26
|
+
kind: 'row';
|
|
27
27
|
sheetName?: string;
|
|
28
28
|
row: number;
|
|
29
29
|
text: string;
|
|
30
30
|
}
|
|
31
31
|
interface ColumnReference {
|
|
32
|
-
kind:
|
|
32
|
+
kind: 'col';
|
|
33
33
|
sheetName?: string;
|
|
34
34
|
col: number;
|
|
35
35
|
text: string;
|
|
36
36
|
}
|
|
37
37
|
export type RangeAddress = CellRangeAddress | RowRangeAddress | ColumnRangeAddress;
|
|
38
38
|
export interface CellRangeAddress {
|
|
39
|
-
kind:
|
|
39
|
+
kind: 'cells';
|
|
40
40
|
sheetName?: string;
|
|
41
41
|
start: CellAddress;
|
|
42
42
|
end: CellAddress;
|
|
43
43
|
}
|
|
44
44
|
export interface RowRangeAddress {
|
|
45
|
-
kind:
|
|
45
|
+
kind: 'rows';
|
|
46
46
|
sheetName?: string;
|
|
47
47
|
start: RowAddress;
|
|
48
48
|
end: RowAddress;
|
|
49
49
|
}
|
|
50
50
|
export interface ColumnRangeAddress {
|
|
51
|
-
kind:
|
|
51
|
+
kind: 'cols';
|
|
52
52
|
sheetName?: string;
|
|
53
53
|
start: ColumnAddress;
|
|
54
54
|
end: ColumnAddress;
|
package/dist/addressing.js
CHANGED
|
@@ -11,7 +11,7 @@ export function columnToIndex(column) {
|
|
|
11
11
|
}
|
|
12
12
|
export function indexToColumn(index) {
|
|
13
13
|
let current = index + 1;
|
|
14
|
-
let output =
|
|
14
|
+
let output = '';
|
|
15
15
|
while (current > 0) {
|
|
16
16
|
const rem = (current - 1) % 26;
|
|
17
17
|
output = String.fromCharCode(65 + rem) + output;
|
|
@@ -33,7 +33,7 @@ export function isRowReferenceText(value) {
|
|
|
33
33
|
}
|
|
34
34
|
export function parseCellAddress(raw, defaultSheetName) {
|
|
35
35
|
const parsed = parseReference(raw, defaultSheetName);
|
|
36
|
-
if (parsed.kind !==
|
|
36
|
+
if (parsed.kind !== 'cell') {
|
|
37
37
|
throw new Error(`Invalid cell address: ${raw}`);
|
|
38
38
|
}
|
|
39
39
|
const result = {
|
|
@@ -47,7 +47,7 @@ export function parseCellAddress(raw, defaultSheetName) {
|
|
|
47
47
|
return result;
|
|
48
48
|
}
|
|
49
49
|
export function parseRangeAddress(raw, defaultSheetName) {
|
|
50
|
-
const separator = raw.indexOf(
|
|
50
|
+
const separator = raw.indexOf(':');
|
|
51
51
|
if (separator <= 0 || separator >= raw.length - 1) {
|
|
52
52
|
throw new Error(`Invalid range address: ${raw}`);
|
|
53
53
|
}
|
|
@@ -63,8 +63,8 @@ export function parseRangeAddress(raw, defaultSheetName) {
|
|
|
63
63
|
throw new Error(`Range endpoints must target the same sheet: ${raw}`);
|
|
64
64
|
}
|
|
65
65
|
switch (start.kind) {
|
|
66
|
-
case
|
|
67
|
-
if (end.kind !==
|
|
66
|
+
case 'cell': {
|
|
67
|
+
if (end.kind !== 'cell') {
|
|
68
68
|
throw new Error(`Range endpoints must use the same reference type: ${raw}`);
|
|
69
69
|
}
|
|
70
70
|
const endCell = end;
|
|
@@ -73,7 +73,7 @@ export function parseRangeAddress(raw, defaultSheetName) {
|
|
|
73
73
|
const col1 = Math.min(start.col, endCell.col);
|
|
74
74
|
const col2 = Math.max(start.col, endCell.col);
|
|
75
75
|
const result = {
|
|
76
|
-
kind:
|
|
76
|
+
kind: 'cells',
|
|
77
77
|
start: { ...start, row: row1, col: col1, text: formatAddress(row1, col1) },
|
|
78
78
|
end: { ...endCell, row: row2, col: col2, text: formatAddress(row2, col2) },
|
|
79
79
|
};
|
|
@@ -82,15 +82,15 @@ export function parseRangeAddress(raw, defaultSheetName) {
|
|
|
82
82
|
}
|
|
83
83
|
return result;
|
|
84
84
|
}
|
|
85
|
-
case
|
|
86
|
-
if (end.kind !==
|
|
85
|
+
case 'row': {
|
|
86
|
+
if (end.kind !== 'row') {
|
|
87
87
|
throw new Error(`Range endpoints must use the same reference type: ${raw}`);
|
|
88
88
|
}
|
|
89
89
|
const endRow = end;
|
|
90
90
|
const row1 = Math.min(start.row, endRow.row);
|
|
91
91
|
const row2 = Math.max(start.row, endRow.row);
|
|
92
92
|
const result = {
|
|
93
|
-
kind:
|
|
93
|
+
kind: 'rows',
|
|
94
94
|
start: { ...start, row: row1, text: `${row1 + 1}` },
|
|
95
95
|
end: { ...endRow, row: row2, text: `${row2 + 1}` },
|
|
96
96
|
};
|
|
@@ -99,15 +99,15 @@ export function parseRangeAddress(raw, defaultSheetName) {
|
|
|
99
99
|
}
|
|
100
100
|
return result;
|
|
101
101
|
}
|
|
102
|
-
case
|
|
103
|
-
if (end.kind !==
|
|
102
|
+
case 'col': {
|
|
103
|
+
if (end.kind !== 'col') {
|
|
104
104
|
throw new Error(`Range endpoints must use the same reference type: ${raw}`);
|
|
105
105
|
}
|
|
106
106
|
const endColumn = end;
|
|
107
107
|
const col1 = Math.min(start.col, endColumn.col);
|
|
108
108
|
const col2 = Math.max(start.col, endColumn.col);
|
|
109
109
|
const result = {
|
|
110
|
-
kind:
|
|
110
|
+
kind: 'cols',
|
|
111
111
|
start: { ...start, col: col1, text: indexToColumn(col1) },
|
|
112
112
|
end: { ...endColumn, col: col2, text: indexToColumn(col2) },
|
|
113
113
|
};
|
|
@@ -122,7 +122,7 @@ export function toQualifiedAddress(sheetName, addr) {
|
|
|
122
122
|
return `${sheetName}!${parseCellAddress(addr, sheetName).text}`;
|
|
123
123
|
}
|
|
124
124
|
export function formatRangeAddress(range) {
|
|
125
|
-
const prefix = range.sheetName ? `${quoteSheetNameIfNeeded(range.sheetName)}!` :
|
|
125
|
+
const prefix = range.sheetName ? `${quoteSheetNameIfNeeded(range.sheetName)}!` : '';
|
|
126
126
|
return `${prefix}${range.start.text}:${range.end.text}`;
|
|
127
127
|
}
|
|
128
128
|
function parseReference(raw, defaultSheetName) {
|
|
@@ -137,7 +137,7 @@ function parseReference(raw, defaultSheetName) {
|
|
|
137
137
|
const cellMatch = CELL_RE.exec(normalizedRefPart);
|
|
138
138
|
if (cellMatch) {
|
|
139
139
|
const result = {
|
|
140
|
-
kind:
|
|
140
|
+
kind: 'cell',
|
|
141
141
|
col: columnToIndex(cellMatch[1]),
|
|
142
142
|
row: Number.parseInt(cellMatch[2], 10) - 1,
|
|
143
143
|
text: `${cellMatch[1]}${cellMatch[2]}`,
|
|
@@ -150,7 +150,7 @@ function parseReference(raw, defaultSheetName) {
|
|
|
150
150
|
const columnMatch = COLUMN_RE.exec(normalizedRefPart);
|
|
151
151
|
if (columnMatch) {
|
|
152
152
|
const result = {
|
|
153
|
-
kind:
|
|
153
|
+
kind: 'col',
|
|
154
154
|
col: columnToIndex(columnMatch[1]),
|
|
155
155
|
text: columnMatch[1],
|
|
156
156
|
};
|
|
@@ -162,7 +162,7 @@ function parseReference(raw, defaultSheetName) {
|
|
|
162
162
|
const rowMatch = ROW_RE.exec(refPart);
|
|
163
163
|
if (rowMatch) {
|
|
164
164
|
const result = {
|
|
165
|
-
kind:
|
|
165
|
+
kind: 'row',
|
|
166
166
|
row: Number.parseInt(rowMatch[1], 10) - 1,
|
|
167
167
|
text: rowMatch[1],
|
|
168
168
|
};
|
package/dist/addressing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addressing.js","sourceRoot":"","sources":["../src/addressing.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG,+BAA+B,
|
|
1
|
+
{"version":3,"file":"addressing.js","sourceRoot":"","sources":["../src/addressing.ts"],"names":[],"mappings":"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"}
|
package/dist/ast.d.ts
CHANGED
|
@@ -1,74 +1,74 @@
|
|
|
1
1
|
export type FormulaNode = NumberLiteralNode | BooleanLiteralNode | StringLiteralNode | ErrorLiteralNode | NameRefNode | StructuredRefNode | CellRefNode | SpillRefNode | RowRefNode | ColumnRefNode | RangeRefNode | UnaryExprNode | BinaryExprNode | CallExprNode | InvokeExprNode;
|
|
2
2
|
export interface NumberLiteralNode {
|
|
3
|
-
kind:
|
|
3
|
+
kind: 'NumberLiteral';
|
|
4
4
|
value: number;
|
|
5
5
|
}
|
|
6
6
|
export interface BooleanLiteralNode {
|
|
7
|
-
kind:
|
|
7
|
+
kind: 'BooleanLiteral';
|
|
8
8
|
value: boolean;
|
|
9
9
|
}
|
|
10
10
|
export interface StringLiteralNode {
|
|
11
|
-
kind:
|
|
11
|
+
kind: 'StringLiteral';
|
|
12
12
|
value: string;
|
|
13
13
|
}
|
|
14
14
|
export interface ErrorLiteralNode {
|
|
15
|
-
kind:
|
|
15
|
+
kind: 'ErrorLiteral';
|
|
16
16
|
code: number;
|
|
17
17
|
}
|
|
18
18
|
export interface NameRefNode {
|
|
19
|
-
kind:
|
|
19
|
+
kind: 'NameRef';
|
|
20
20
|
name: string;
|
|
21
21
|
}
|
|
22
22
|
export interface StructuredRefNode {
|
|
23
|
-
kind:
|
|
23
|
+
kind: 'StructuredRef';
|
|
24
24
|
tableName: string;
|
|
25
25
|
columnName: string;
|
|
26
26
|
}
|
|
27
27
|
export interface CellRefNode {
|
|
28
|
-
kind:
|
|
28
|
+
kind: 'CellRef';
|
|
29
29
|
ref: string;
|
|
30
30
|
sheetName?: string;
|
|
31
31
|
}
|
|
32
32
|
export interface SpillRefNode {
|
|
33
|
-
kind:
|
|
33
|
+
kind: 'SpillRef';
|
|
34
34
|
ref: string;
|
|
35
35
|
sheetName?: string;
|
|
36
36
|
}
|
|
37
37
|
export interface RowRefNode {
|
|
38
|
-
kind:
|
|
38
|
+
kind: 'RowRef';
|
|
39
39
|
ref: string;
|
|
40
40
|
sheetName?: string;
|
|
41
41
|
}
|
|
42
42
|
export interface ColumnRefNode {
|
|
43
|
-
kind:
|
|
43
|
+
kind: 'ColumnRef';
|
|
44
44
|
ref: string;
|
|
45
45
|
sheetName?: string;
|
|
46
46
|
}
|
|
47
47
|
export interface RangeRefNode {
|
|
48
|
-
kind:
|
|
49
|
-
refKind:
|
|
48
|
+
kind: 'RangeRef';
|
|
49
|
+
refKind: 'cells' | 'rows' | 'cols';
|
|
50
50
|
start: string;
|
|
51
51
|
end: string;
|
|
52
52
|
sheetName?: string;
|
|
53
53
|
}
|
|
54
54
|
export interface UnaryExprNode {
|
|
55
|
-
kind:
|
|
56
|
-
operator:
|
|
55
|
+
kind: 'UnaryExpr';
|
|
56
|
+
operator: '+' | '-';
|
|
57
57
|
argument: FormulaNode;
|
|
58
58
|
}
|
|
59
59
|
export interface BinaryExprNode {
|
|
60
|
-
kind:
|
|
61
|
-
operator:
|
|
60
|
+
kind: 'BinaryExpr';
|
|
61
|
+
operator: '+' | '-' | '*' | '/' | '^' | '&' | '=' | '<>' | '>' | '>=' | '<' | '<=';
|
|
62
62
|
left: FormulaNode;
|
|
63
63
|
right: FormulaNode;
|
|
64
64
|
}
|
|
65
65
|
export interface CallExprNode {
|
|
66
|
-
kind:
|
|
66
|
+
kind: 'CallExpr';
|
|
67
67
|
callee: string;
|
|
68
68
|
args: FormulaNode[];
|
|
69
69
|
}
|
|
70
70
|
export interface InvokeExprNode {
|
|
71
|
-
kind:
|
|
71
|
+
kind: 'InvokeExpr';
|
|
72
72
|
callee: FormulaNode;
|
|
73
73
|
args: FormulaNode[];
|
|
74
74
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FormulaNode } from
|
|
1
|
+
import type { FormulaNode } from './ast.js';
|
|
2
2
|
interface WasmSafeBuiltinArgsDeps {
|
|
3
3
|
isWasmSafe: (node: FormulaNode, allowRange?: boolean) => boolean;
|
|
4
4
|
}
|
|
@@ -7,7 +7,7 @@ export declare function getNativeAxisAggregateCode(node: FormulaNode): number |
|
|
|
7
7
|
export declare function getNativeRunningFoldCode(node: FormulaNode): number | null;
|
|
8
8
|
export declare function isNativeMakearraySumLambda(node: FormulaNode): boolean;
|
|
9
9
|
export declare function isCellVectorNode(node: FormulaNode): boolean;
|
|
10
|
-
export type NativeGroupedArrayKind =
|
|
10
|
+
export type NativeGroupedArrayKind = 'groupby-sum-canonical' | 'pivotby-sum-canonical';
|
|
11
11
|
export declare function getNativeGroupedArrayKind(node: FormulaNode): NativeGroupedArrayKind | null;
|
|
12
12
|
export declare function isWasmSafeBuiltinArity(callee: string, argc: number): boolean;
|
|
13
13
|
export declare function isWasmSafeBuiltinArgs(callee: string, args: readonly FormulaNode[], deps: WasmSafeBuiltinArgsDeps): boolean;
|