@affino/datagrid-formula-engine 0.1.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 (124) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +38 -0
  3. package/dist/analysis/index.d.ts +2 -0
  4. package/dist/analysis/index.d.ts.map +1 -0
  5. package/dist/analysis/index.js +1 -0
  6. package/dist/analysis/types.d.ts +44 -0
  7. package/dist/analysis/types.d.ts.map +1 -0
  8. package/dist/analysis/types.js +1 -0
  9. package/dist/contracts.d.ts +177 -0
  10. package/dist/contracts.d.ts.map +1 -0
  11. package/dist/contracts.js +140 -0
  12. package/dist/coreTypes.d.ts +2 -0
  13. package/dist/coreTypes.d.ts.map +1 -0
  14. package/dist/coreTypes.js +1 -0
  15. package/dist/dependency/index.d.ts +2 -0
  16. package/dist/dependency/index.d.ts.map +1 -0
  17. package/dist/dependency/index.js +1 -0
  18. package/dist/evaluators/columnar.d.ts +6 -0
  19. package/dist/evaluators/columnar.d.ts.map +1 -0
  20. package/dist/evaluators/columnar.js +39 -0
  21. package/dist/evaluators/index.d.ts +5 -0
  22. package/dist/evaluators/index.d.ts.map +1 -0
  23. package/dist/evaluators/index.js +4 -0
  24. package/dist/evaluators/interpreter.d.ts +6 -0
  25. package/dist/evaluators/interpreter.d.ts.map +1 -0
  26. package/dist/evaluators/interpreter.js +156 -0
  27. package/dist/evaluators/jit.d.ts +7 -0
  28. package/dist/evaluators/jit.d.ts.map +1 -0
  29. package/dist/evaluators/jit.js +158 -0
  30. package/dist/evaluators/shared.d.ts +36 -0
  31. package/dist/evaluators/shared.d.ts.map +1 -0
  32. package/dist/evaluators/shared.js +242 -0
  33. package/dist/evaluators/vector.d.ts +6 -0
  34. package/dist/evaluators/vector.d.ts.map +1 -0
  35. package/dist/evaluators/vector.js +228 -0
  36. package/dist/formulaEngine/compile.d.ts +2 -0
  37. package/dist/formulaEngine/compile.d.ts.map +1 -0
  38. package/dist/formulaEngine/compile.js +1 -0
  39. package/dist/formulaEngine/core.d.ts +2 -0
  40. package/dist/formulaEngine/core.d.ts.map +1 -0
  41. package/dist/formulaEngine/core.js +1 -0
  42. package/dist/formulaEngine/evaluators.d.ts +2 -0
  43. package/dist/formulaEngine/evaluators.d.ts.map +1 -0
  44. package/dist/formulaEngine/evaluators.js +1 -0
  45. package/dist/formulaEngine/index.d.ts +5 -0
  46. package/dist/formulaEngine/index.d.ts.map +1 -0
  47. package/dist/formulaEngine/index.js +2 -0
  48. package/dist/formulaExecutionPlan.d.ts +2 -0
  49. package/dist/formulaExecutionPlan.d.ts.map +1 -0
  50. package/dist/formulaExecutionPlan.js +1 -0
  51. package/dist/graph/executionPlan.d.ts +66 -0
  52. package/dist/graph/executionPlan.d.ts.map +1 -0
  53. package/dist/graph/executionPlan.js +534 -0
  54. package/dist/graph/index.d.ts +2 -0
  55. package/dist/graph/index.d.ts.map +1 -0
  56. package/dist/graph/index.js +3 -0
  57. package/dist/index.d.ts +8 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +4 -0
  60. package/dist/runtime/compile.d.ts +7 -0
  61. package/dist/runtime/compile.d.ts.map +1 -0
  62. package/dist/runtime/compile.js +453 -0
  63. package/dist/runtime/evaluators.d.ts +5 -0
  64. package/dist/runtime/evaluators.d.ts.map +1 -0
  65. package/dist/runtime/evaluators.js +6 -0
  66. package/dist/runtime/index.d.ts +3 -0
  67. package/dist/runtime/index.d.ts.map +1 -0
  68. package/dist/runtime/index.js +2 -0
  69. package/dist/runtime/types.d.ts +63 -0
  70. package/dist/runtime/types.d.ts.map +1 -0
  71. package/dist/runtime/types.js +1 -0
  72. package/dist/syntax/analysis.d.ts +14 -0
  73. package/dist/syntax/analysis.d.ts.map +1 -0
  74. package/dist/syntax/analysis.js +159 -0
  75. package/dist/syntax/ast.d.ts +18 -0
  76. package/dist/syntax/ast.d.ts.map +1 -0
  77. package/dist/syntax/ast.js +54 -0
  78. package/dist/syntax/core.d.ts +4 -0
  79. package/dist/syntax/core.d.ts.map +1 -0
  80. package/dist/syntax/core.js +1 -0
  81. package/dist/syntax/functionGroups/advancedFunctions.d.ts +2 -0
  82. package/dist/syntax/functionGroups/advancedFunctions.d.ts.map +1 -0
  83. package/dist/syntax/functionGroups/advancedFunctions.js +252 -0
  84. package/dist/syntax/functionGroups/dateFunctions.d.ts +2 -0
  85. package/dist/syntax/functionGroups/dateFunctions.d.ts.map +1 -0
  86. package/dist/syntax/functionGroups/dateFunctions.js +144 -0
  87. package/dist/syntax/functionGroups/logicFunctions.d.ts +2 -0
  88. package/dist/syntax/functionGroups/logicFunctions.d.ts.map +1 -0
  89. package/dist/syntax/functionGroups/logicFunctions.js +140 -0
  90. package/dist/syntax/functionGroups/numericFunctions.d.ts +2 -0
  91. package/dist/syntax/functionGroups/numericFunctions.d.ts.map +1 -0
  92. package/dist/syntax/functionGroups/numericFunctions.js +268 -0
  93. package/dist/syntax/functionGroups/textFunctions.d.ts +2 -0
  94. package/dist/syntax/functionGroups/textFunctions.d.ts.map +1 -0
  95. package/dist/syntax/functionGroups/textFunctions.js +118 -0
  96. package/dist/syntax/functionHelpers.d.ts +45 -0
  97. package/dist/syntax/functionHelpers.d.ts.map +1 -0
  98. package/dist/syntax/functionHelpers.js +553 -0
  99. package/dist/syntax/functions.d.ts +9 -0
  100. package/dist/syntax/functions.d.ts.map +1 -0
  101. package/dist/syntax/functions.js +139 -0
  102. package/dist/syntax/index.d.ts +10 -0
  103. package/dist/syntax/index.d.ts.map +1 -0
  104. package/dist/syntax/index.js +7 -0
  105. package/dist/syntax/legacy.d.ts +29 -0
  106. package/dist/syntax/legacy.d.ts.map +1 -0
  107. package/dist/syntax/legacy.js +188 -0
  108. package/dist/syntax/optimizer.d.ts +6 -0
  109. package/dist/syntax/optimizer.d.ts.map +1 -0
  110. package/dist/syntax/optimizer.js +362 -0
  111. package/dist/syntax/parser.d.ts +7 -0
  112. package/dist/syntax/parser.d.ts.map +1 -0
  113. package/dist/syntax/parser.js +239 -0
  114. package/dist/syntax/tokenizer.d.ts +14 -0
  115. package/dist/syntax/tokenizer.d.ts.map +1 -0
  116. package/dist/syntax/tokenizer.js +852 -0
  117. package/dist/syntax/types.d.ts +120 -0
  118. package/dist/syntax/types.d.ts.map +1 -0
  119. package/dist/syntax/types.js +1 -0
  120. package/dist/syntax/values.d.ts +25 -0
  121. package/dist/syntax/values.d.ts.map +1 -0
  122. package/dist/syntax/values.js +270 -0
  123. package/dist/tsconfig.tsbuildinfo +1 -0
  124. package/package.json +42 -0
@@ -0,0 +1,228 @@
1
+ import {} from "../syntax/ast.js";
2
+ import { normalizeFormulaFunctionName } from "../syntax/functions.js";
3
+ import { formulaNumberIsTruthy, isFormulaErrorValue, isFormulaValuePresent, } from "../syntax/values.js";
4
+ import { createFormulaBinaryColumnKernel, createFormulaConstantColumnKernel, createFormulaIdentifierColumnKernel, createFormulaUnaryColumnKernel, createSequentialRowIndexes, evaluateVectorKernelForIndexes, ZERO_FORMULA_NODE, } from "./shared.js";
5
+ function createRowIndexBuffer(contextsCount) {
6
+ return new Array(contextsCount);
7
+ }
8
+ function createRowIndexSelection(indexes, count) {
9
+ return { indexes, count };
10
+ }
11
+ export function compileFormulaAstVectorColumnKernel(root, resolveIdentifierTokenIndex) {
12
+ var _a, _b, _c;
13
+ if (root.kind === "number") {
14
+ return createFormulaConstantColumnKernel(root.value);
15
+ }
16
+ if (root.kind === "literal") {
17
+ return createFormulaConstantColumnKernel(root.value);
18
+ }
19
+ if (root.kind === "identifier") {
20
+ return createFormulaIdentifierColumnKernel(resolveIdentifierTokenIndex(root.name));
21
+ }
22
+ if (root.kind === "unary") {
23
+ const valueKernel = compileFormulaAstVectorColumnKernel(root.value, resolveIdentifierTokenIndex);
24
+ if (!valueKernel) {
25
+ return null;
26
+ }
27
+ return createFormulaUnaryColumnKernel(valueKernel, root.operator);
28
+ }
29
+ if (root.kind === "call") {
30
+ const normalizedFunctionName = normalizeFormulaFunctionName(root.name);
31
+ if (normalizedFunctionName === "IF") {
32
+ const conditionKernel = compileFormulaAstVectorColumnKernel((_a = root.args[0]) !== null && _a !== void 0 ? _a : ZERO_FORMULA_NODE, resolveIdentifierTokenIndex);
33
+ const trueKernel = compileFormulaAstVectorColumnKernel((_b = root.args[1]) !== null && _b !== void 0 ? _b : ZERO_FORMULA_NODE, resolveIdentifierTokenIndex);
34
+ const falseKernel = compileFormulaAstVectorColumnKernel((_c = root.args[2]) !== null && _c !== void 0 ? _c : ZERO_FORMULA_NODE, resolveIdentifierTokenIndex);
35
+ if (!conditionKernel || !trueKernel || !falseKernel) {
36
+ return null;
37
+ }
38
+ return (contextsCount, tokenColumns) => {
39
+ var _a, _b, _c, _d, _e;
40
+ const output = new Array(contextsCount);
41
+ const conditionValues = conditionKernel(contextsCount, tokenColumns);
42
+ const trueIndexes = createRowIndexBuffer(contextsCount);
43
+ const falseIndexes = createRowIndexBuffer(contextsCount);
44
+ let trueCount = 0;
45
+ let falseCount = 0;
46
+ for (let contextIndex = 0; contextIndex < contextsCount; contextIndex += 1) {
47
+ const conditionValue = (_a = conditionValues[contextIndex]) !== null && _a !== void 0 ? _a : 0;
48
+ if (isFormulaErrorValue(conditionValue)) {
49
+ output[contextIndex] = conditionValue;
50
+ continue;
51
+ }
52
+ if (formulaNumberIsTruthy(conditionValue)) {
53
+ trueIndexes[trueCount] = contextIndex;
54
+ trueCount += 1;
55
+ }
56
+ else {
57
+ falseIndexes[falseCount] = contextIndex;
58
+ falseCount += 1;
59
+ }
60
+ }
61
+ const trueValues = evaluateVectorKernelForIndexes(trueKernel, tokenColumns, createRowIndexSelection(trueIndexes, trueCount));
62
+ for (let index = 0; index < trueCount; index += 1) {
63
+ output[(_b = trueIndexes[index]) !== null && _b !== void 0 ? _b : 0] = (_c = trueValues[index]) !== null && _c !== void 0 ? _c : 0;
64
+ }
65
+ const falseValues = evaluateVectorKernelForIndexes(falseKernel, tokenColumns, createRowIndexSelection(falseIndexes, falseCount));
66
+ for (let index = 0; index < falseCount; index += 1) {
67
+ output[(_d = falseIndexes[index]) !== null && _d !== void 0 ? _d : 0] = (_e = falseValues[index]) !== null && _e !== void 0 ? _e : 0;
68
+ }
69
+ return output;
70
+ };
71
+ }
72
+ if (normalizedFunctionName === "IFS") {
73
+ const pairKernels = root.args.map(arg => compileFormulaAstVectorColumnKernel(arg, resolveIdentifierTokenIndex));
74
+ if (pairKernels.some(kernel => !kernel)) {
75
+ return null;
76
+ }
77
+ return (contextsCount, tokenColumns) => {
78
+ var _a, _b, _c, _d, _e, _f;
79
+ const output = new Array(contextsCount);
80
+ let unresolvedIndexes = createSequentialRowIndexes(contextsCount);
81
+ let unresolvedCount = unresolvedIndexes.length;
82
+ for (let index = 0; index < pairKernels.length; index += 2) {
83
+ if (unresolvedCount === 0)
84
+ break;
85
+ const conditionKernel = pairKernels[index];
86
+ const valueKernel = (_a = pairKernels[index + 1]) !== null && _a !== void 0 ? _a : compileFormulaAstVectorColumnKernel(ZERO_FORMULA_NODE, resolveIdentifierTokenIndex);
87
+ if (!conditionKernel || !valueKernel) {
88
+ return createFormulaConstantColumnKernel(0)(contextsCount, tokenColumns);
89
+ }
90
+ const conditionValues = evaluateVectorKernelForIndexes(conditionKernel, tokenColumns, createRowIndexSelection(unresolvedIndexes, unresolvedCount));
91
+ const matchedIndexes = createRowIndexBuffer(unresolvedCount);
92
+ const nextUnresolvedIndexes = createRowIndexBuffer(unresolvedCount);
93
+ let matchedCount = 0;
94
+ let nextUnresolvedCount = 0;
95
+ for (let conditionIndex = 0; conditionIndex < unresolvedCount; conditionIndex += 1) {
96
+ const globalIndex = (_b = unresolvedIndexes[conditionIndex]) !== null && _b !== void 0 ? _b : 0;
97
+ const conditionValue = (_c = conditionValues[conditionIndex]) !== null && _c !== void 0 ? _c : 0;
98
+ if (isFormulaErrorValue(conditionValue)) {
99
+ output[globalIndex] = conditionValue;
100
+ continue;
101
+ }
102
+ if (formulaNumberIsTruthy(conditionValue)) {
103
+ matchedIndexes[matchedCount] = globalIndex;
104
+ matchedCount += 1;
105
+ }
106
+ else {
107
+ nextUnresolvedIndexes[nextUnresolvedCount] = globalIndex;
108
+ nextUnresolvedCount += 1;
109
+ }
110
+ }
111
+ const matchedValues = evaluateVectorKernelForIndexes(valueKernel, tokenColumns, createRowIndexSelection(matchedIndexes, matchedCount));
112
+ for (let matchedIndex = 0; matchedIndex < matchedCount; matchedIndex += 1) {
113
+ output[(_d = matchedIndexes[matchedIndex]) !== null && _d !== void 0 ? _d : 0] = (_e = matchedValues[matchedIndex]) !== null && _e !== void 0 ? _e : 0;
114
+ }
115
+ unresolvedIndexes = nextUnresolvedIndexes;
116
+ unresolvedCount = nextUnresolvedCount;
117
+ }
118
+ for (let unresolvedIndexIndex = 0; unresolvedIndexIndex < unresolvedCount; unresolvedIndexIndex += 1) {
119
+ output[(_f = unresolvedIndexes[unresolvedIndexIndex]) !== null && _f !== void 0 ? _f : 0] = 0;
120
+ }
121
+ return output;
122
+ };
123
+ }
124
+ if (normalizedFunctionName === "COALESCE") {
125
+ const argKernels = root.args.map(arg => compileFormulaAstVectorColumnKernel(arg, resolveIdentifierTokenIndex));
126
+ if (argKernels.some(kernel => !kernel)) {
127
+ return null;
128
+ }
129
+ return (contextsCount, tokenColumns) => {
130
+ var _a, _b, _c;
131
+ const output = new Array(contextsCount);
132
+ let unresolvedIndexes = createSequentialRowIndexes(contextsCount);
133
+ let unresolvedCount = unresolvedIndexes.length;
134
+ for (const argKernel of argKernels) {
135
+ if (!argKernel || unresolvedCount === 0)
136
+ continue;
137
+ const values = evaluateVectorKernelForIndexes(argKernel, tokenColumns, createRowIndexSelection(unresolvedIndexes, unresolvedCount));
138
+ const nextUnresolvedIndexes = createRowIndexBuffer(unresolvedCount);
139
+ let nextUnresolvedCount = 0;
140
+ for (let valueIndex = 0; valueIndex < unresolvedCount; valueIndex += 1) {
141
+ const globalIndex = (_a = unresolvedIndexes[valueIndex]) !== null && _a !== void 0 ? _a : 0;
142
+ const value = (_b = values[valueIndex]) !== null && _b !== void 0 ? _b : null;
143
+ if (isFormulaValuePresent(value))
144
+ output[globalIndex] = value;
145
+ else {
146
+ nextUnresolvedIndexes[nextUnresolvedCount] = globalIndex;
147
+ nextUnresolvedCount += 1;
148
+ }
149
+ }
150
+ unresolvedIndexes = nextUnresolvedIndexes;
151
+ unresolvedCount = nextUnresolvedCount;
152
+ }
153
+ for (let unresolvedIndexIndex = 0; unresolvedIndexIndex < unresolvedCount; unresolvedIndexIndex += 1) {
154
+ output[(_c = unresolvedIndexes[unresolvedIndexIndex]) !== null && _c !== void 0 ? _c : 0] = 0;
155
+ }
156
+ return output;
157
+ };
158
+ }
159
+ return null;
160
+ }
161
+ const leftKernel = compileFormulaAstVectorColumnKernel(root.left, resolveIdentifierTokenIndex);
162
+ const rightKernel = compileFormulaAstVectorColumnKernel(root.right, resolveIdentifierTokenIndex);
163
+ if (!leftKernel || !rightKernel)
164
+ return null;
165
+ if (root.operator === "AND") {
166
+ return (contextsCount, tokenColumns) => {
167
+ var _a, _b, _c;
168
+ const output = new Array(contextsCount);
169
+ const leftValues = leftKernel(contextsCount, tokenColumns);
170
+ const rightIndexes = createRowIndexBuffer(contextsCount);
171
+ let rightCount = 0;
172
+ for (let contextIndex = 0; contextIndex < contextsCount; contextIndex += 1) {
173
+ const left = (_a = leftValues[contextIndex]) !== null && _a !== void 0 ? _a : 0;
174
+ if (isFormulaErrorValue(left)) {
175
+ output[contextIndex] = left;
176
+ continue;
177
+ }
178
+ if (!formulaNumberIsTruthy(left)) {
179
+ output[contextIndex] = 0;
180
+ continue;
181
+ }
182
+ rightIndexes[rightCount] = contextIndex;
183
+ rightCount += 1;
184
+ }
185
+ const rightValues = evaluateVectorKernelForIndexes(rightKernel, tokenColumns, createRowIndexSelection(rightIndexes, rightCount));
186
+ for (let rightIndex = 0; rightIndex < rightCount; rightIndex += 1) {
187
+ const right = (_b = rightValues[rightIndex]) !== null && _b !== void 0 ? _b : 0;
188
+ output[(_c = rightIndexes[rightIndex]) !== null && _c !== void 0 ? _c : 0] = isFormulaErrorValue(right) ? right : formulaNumberIsTruthy(right) ? 1 : 0;
189
+ }
190
+ return output;
191
+ };
192
+ }
193
+ if (root.operator === "OR") {
194
+ return (contextsCount, tokenColumns) => {
195
+ var _a, _b, _c;
196
+ const output = new Array(contextsCount);
197
+ const leftValues = leftKernel(contextsCount, tokenColumns);
198
+ const rightIndexes = createRowIndexBuffer(contextsCount);
199
+ let rightCount = 0;
200
+ for (let contextIndex = 0; contextIndex < contextsCount; contextIndex += 1) {
201
+ const left = (_a = leftValues[contextIndex]) !== null && _a !== void 0 ? _a : 0;
202
+ if (isFormulaErrorValue(left)) {
203
+ output[contextIndex] = left;
204
+ continue;
205
+ }
206
+ if (formulaNumberIsTruthy(left)) {
207
+ output[contextIndex] = 1;
208
+ continue;
209
+ }
210
+ rightIndexes[rightCount] = contextIndex;
211
+ rightCount += 1;
212
+ }
213
+ const rightValues = evaluateVectorKernelForIndexes(rightKernel, tokenColumns, createRowIndexSelection(rightIndexes, rightCount));
214
+ for (let rightIndex = 0; rightIndex < rightCount; rightIndex += 1) {
215
+ const right = (_b = rightValues[rightIndex]) !== null && _b !== void 0 ? _b : 0;
216
+ output[(_c = rightIndexes[rightIndex]) !== null && _c !== void 0 ? _c : 0] = isFormulaErrorValue(right) ? right : formulaNumberIsTruthy(right) ? 1 : 0;
217
+ }
218
+ return output;
219
+ };
220
+ }
221
+ return createFormulaBinaryColumnKernel(leftKernel, rightKernel, root.operator);
222
+ }
223
+ export function compileFormulaAstColumnarBatchEvaluatorVector(root, resolveIdentifierTokenIndex) {
224
+ const vectorKernel = compileFormulaAstVectorColumnKernel(root, resolveIdentifierTokenIndex);
225
+ if (!vectorKernel)
226
+ return null;
227
+ return (contextsCount, tokenColumns) => vectorKernel(contextsCount, tokenColumns);
228
+ }
@@ -0,0 +1,2 @@
1
+ export * from "../runtime/compile.js";
2
+ //# sourceMappingURL=compile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/formulaEngine/compile.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA"}
@@ -0,0 +1 @@
1
+ export * from "../runtime/compile.js";
@@ -0,0 +1,2 @@
1
+ export * from "../syntax/core.js";
2
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/formulaEngine/core.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1 @@
1
+ export * from "../syntax/core.js";
@@ -0,0 +1,2 @@
1
+ export * from "../runtime/evaluators.js";
2
+ //# sourceMappingURL=evaluators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluators.d.ts","sourceRoot":"","sources":["../../src/formulaEngine/evaluators.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA"}
@@ -0,0 +1 @@
1
+ export * from "../runtime/evaluators.js";
@@ -0,0 +1,5 @@
1
+ export type { DataGridCompiledFormulaArtifact, DataGridCompiledFormulaBatchContext, DataGridCompiledFormulaBatchExecutionMode, DataGridCompiledFormulaField, DataGridFormulaAstNode, DataGridFormulaDiagnostic, DataGridFormulaExpressionAnalysis, DataGridFormulaExplainDependency, DataGridFormulaExplainDependencyDomain, DataGridFormulaExplainNode, DataGridFormulaExplainResult, DataGridFormulaFieldExplainResult, DataGridFormulaCompileOptions, DataGridFormulaCompileStrategy, DataGridFormulaFunctionArity, DataGridFormulaFunctionDefinition, DataGridFormulaFunctionRegistry, DataGridFormulaParseResult, DataGridFormulaReferenceParserOptions, DataGridFormulaReferenceSyntax, DataGridFormulaRowSelector, DataGridFormulaRuntimeErrorPolicy, DataGridFormulaDiagnosticsResult, DataGridFormulaSourceSpan, } from "../syntax/index.js";
2
+ export type { DataGridFormulaTableRowsSource, DataGridFormulaTableSource, } from "../coreTypes.js";
3
+ export { analyzeDataGridFormulaFieldDefinition, bindCompiledFormulaArtifactToFieldDefinition, compileDataGridFormulaFieldArtifact, compileDataGridFormulaFieldDefinition, } from "../runtime/compile.js";
4
+ export { collectFormulaContextKeys, explainDataGridFormulaExpression, explainDataGridFormulaFieldDefinition, createFormulaErrorValue, createFormulaSourceSpan, createFormulaDiagnostic, diagnoseDataGridFormulaExpression, findFormulaErrorValue, getFormulaNodeSpan, isFormulaErrorValue, isFormulaValueBlank, isFormulaValueEmptyText, normalizeFormulaValue, normalizeFormulaDiagnostic, parseDataGridFormulaExpression, parseDataGridFormulaIdentifier, coerceFormulaValueToNumber, coerceFormulaValueToBoolean, areFormulaValuesEqual, compareFormulaValues, parseFormulaReferenceSegments, } from "../syntax/index.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/formulaEngine/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,+BAA+B,EAC/B,mCAAmC,EACnC,yCAAyC,EACzC,4BAA4B,EAC5B,sBAAsB,EACtB,yBAAyB,EACzB,iCAAiC,EACjC,gCAAgC,EAChC,sCAAsC,EACtC,0BAA0B,EAC1B,4BAA4B,EAC5B,iCAAiC,EACjC,6BAA6B,EAC7B,8BAA8B,EAC9B,4BAA4B,EAC5B,iCAAiC,EACjC,+BAA+B,EAC/B,0BAA0B,EAC1B,qCAAqC,EACrC,8BAA8B,EAC9B,0BAA0B,EAC1B,iCAAiC,EACjC,gCAAgC,EAChC,yBAAyB,GAC1B,MAAM,oBAAoB,CAAA;AAE3B,YAAY,EACV,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,qCAAqC,EACrC,4CAA4C,EAC5C,mCAAmC,EACnC,qCAAqC,GACtC,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,yBAAyB,EACzB,gCAAgC,EAChC,qCAAqC,EACrC,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,iCAAiC,EACjC,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,0BAA0B,EAC1B,8BAA8B,EAC9B,8BAA8B,EAC9B,0BAA0B,EAC1B,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,oBAAoB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { analyzeDataGridFormulaFieldDefinition, bindCompiledFormulaArtifactToFieldDefinition, compileDataGridFormulaFieldArtifact, compileDataGridFormulaFieldDefinition, } from "../runtime/compile.js";
2
+ export { collectFormulaContextKeys, explainDataGridFormulaExpression, explainDataGridFormulaFieldDefinition, createFormulaErrorValue, createFormulaSourceSpan, createFormulaDiagnostic, diagnoseDataGridFormulaExpression, findFormulaErrorValue, getFormulaNodeSpan, isFormulaErrorValue, isFormulaValueBlank, isFormulaValueEmptyText, normalizeFormulaValue, normalizeFormulaDiagnostic, parseDataGridFormulaExpression, parseDataGridFormulaIdentifier, coerceFormulaValueToNumber, coerceFormulaValueToBoolean, areFormulaValuesEqual, compareFormulaValues, parseFormulaReferenceSegments, } from "../syntax/index.js";
@@ -0,0 +1,2 @@
1
+ export * from "./graph/executionPlan.js";
2
+ //# sourceMappingURL=formulaExecutionPlan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formulaExecutionPlan.d.ts","sourceRoot":"","sources":["../src/formulaExecutionPlan.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA"}
@@ -0,0 +1 @@
1
+ export * from "./graph/executionPlan.js";
@@ -0,0 +1,66 @@
1
+ export type DataGridFormulaExecutionCyclePolicy = "error" | "iterative";
2
+ export type DataGridFormulaExecutionDependencyDomain = "field" | "computed" | "meta";
3
+ export interface DataGridFormulaExecutionDependency {
4
+ domain: DataGridFormulaExecutionDependencyDomain;
5
+ value: string;
6
+ }
7
+ export interface DataGridFormulaExecutionPlanNode {
8
+ name: string;
9
+ field: string;
10
+ deps: readonly DataGridFormulaExecutionDependency[];
11
+ }
12
+ export interface DataGridFormulaExecutionPlanNodeSnapshot {
13
+ name: string;
14
+ field: string;
15
+ level: number;
16
+ fieldDeps: readonly string[];
17
+ computedDeps: readonly string[];
18
+ dependents: readonly string[];
19
+ iterative?: boolean;
20
+ cycleGroup?: readonly string[];
21
+ }
22
+ export interface DataGridFormulaGraphEdgeSnapshot {
23
+ from: string;
24
+ to: string;
25
+ domain: DataGridFormulaExecutionDependencyDomain;
26
+ value: string;
27
+ }
28
+ export interface DataGridFormulaGraphLevelSnapshot {
29
+ index: number;
30
+ nodes: readonly string[];
31
+ iterative?: boolean;
32
+ cycleGroups?: readonly (readonly string[])[];
33
+ }
34
+ export interface DataGridFormulaExecutionPlan {
35
+ order: readonly string[];
36
+ levels: readonly (readonly string[])[];
37
+ levelDetails: readonly DataGridFormulaGraphLevelSnapshot[];
38
+ nodes: ReadonlyMap<string, DataGridFormulaExecutionPlanNodeSnapshot>;
39
+ edges: readonly DataGridFormulaGraphEdgeSnapshot[];
40
+ iterativeGroups: readonly (readonly string[])[];
41
+ directByFields: (changedFields: ReadonlySet<string>) => ReadonlySet<string>;
42
+ affectedByFields: (changedFields: ReadonlySet<string>) => ReadonlySet<string>;
43
+ affectedByComputed: (changedComputed: ReadonlySet<string>) => ReadonlySet<string>;
44
+ }
45
+ export interface DataGridFormulaExecutionPlanSnapshot {
46
+ order: readonly string[];
47
+ levels: readonly (readonly string[])[];
48
+ nodes: readonly DataGridFormulaExecutionPlanNodeSnapshot[];
49
+ iterativeGroups?: readonly (readonly string[])[];
50
+ }
51
+ export interface DataGridFormulaGraphSnapshot {
52
+ order: readonly string[];
53
+ levels: readonly (readonly string[])[];
54
+ levelDetails: readonly DataGridFormulaGraphLevelSnapshot[];
55
+ nodes: readonly DataGridFormulaExecutionPlanNodeSnapshot[];
56
+ edges: readonly DataGridFormulaGraphEdgeSnapshot[];
57
+ iterativeGroups?: readonly (readonly string[])[];
58
+ }
59
+ export interface CreateDataGridFormulaExecutionPlanOptions {
60
+ cyclePolicy?: DataGridFormulaExecutionCyclePolicy;
61
+ }
62
+ export declare function createDataGridFormulaExecutionPlan(input: readonly DataGridFormulaExecutionPlanNode[], options?: CreateDataGridFormulaExecutionPlanOptions): DataGridFormulaExecutionPlan;
63
+ export declare const createDataGridFormulaGraph: typeof createDataGridFormulaExecutionPlan;
64
+ export declare function snapshotDataGridFormulaExecutionPlan(plan: DataGridFormulaExecutionPlan): DataGridFormulaExecutionPlanSnapshot;
65
+ export declare function snapshotDataGridFormulaGraph(plan: DataGridFormulaExecutionPlan): DataGridFormulaGraphSnapshot;
66
+ //# sourceMappingURL=executionPlan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executionPlan.d.ts","sourceRoot":"","sources":["../../src/graph/executionPlan.ts"],"names":[],"mappings":"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"}