@adaptabletools/adaptable 24.0.0 → 24.0.2
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/devtools.d.ts +13 -0
- package/index.css +76 -76
- package/package.json +1 -1
- package/src/Api/Internal/FormatColumnInternalApi.d.ts +3 -2
- package/src/Api/Internal/FormatColumnInternalApi.js +15 -7
- package/src/Utilities/Services/QueryLanguageService.js +1 -1
- package/src/agGrid/AdaptableAgGrid.js +22 -31
- package/src/env.js +2 -2
- package/src/migration/VersionUpgrade24.d.ts +44 -9
- package/src/migration/VersionUpgrade24.js +97 -25
- package/src/migration/legacyPredicateLowering.d.ts +1 -1
- package/src/migration/legacyPredicateLowering.js +2 -0
- package/src/migration/predicateExpressionMigration.d.ts +49 -12
- package/src/migration/predicateExpressionMigration.js +141 -10
- package/src/setupDevTools.js +106 -170
- package/tsconfig.esm.tsbuildinfo +1 -1
- package/vendor/aql/api/QueryLanguageApi.d.ts +2 -1
- package/vendor/aql/api/QueryLanguageApi.d.ts.map +1 -1
- package/vendor/aql/api/QueryLanguageApi.js +28 -108
- package/vendor/aql/api/QueryLanguageApi.js.map +1 -1
- package/vendor/aql/contract/index.js +0 -34
- package/vendor/aql/contract/index.js.map +1 -1
- package/vendor/aql/corpus/corpusExpressions.js +0 -13
- package/vendor/aql/corpus/corpusExpressions.js.map +1 -1
- package/vendor/aql/corpus/corpusFixture.js +0 -7
- package/vendor/aql/corpus/corpusFixture.js.map +1 -1
- package/vendor/aql/draft/index.js +0 -4
- package/vendor/aql/draft/index.js.map +1 -1
- package/vendor/aql/evaluate.js +0 -22
- package/vendor/aql/evaluate.js.map +1 -1
- package/vendor/aql/evaluator/ExpressionEvaluationError.js +0 -4
- package/vendor/aql/evaluator/ExpressionEvaluationError.js.map +1 -1
- package/vendor/aql/evaluator/ExpressionNaError.js +0 -4
- package/vendor/aql/evaluator/ExpressionNaError.js.map +1 -1
- package/vendor/aql/evaluator/evaluateNode.js +0 -23
- package/vendor/aql/evaluator/evaluateNode.js.map +1 -1
- package/vendor/aql/functions/dateUtils.js +0 -63
- package/vendor/aql/functions/dateUtils.js.map +1 -1
- package/vendor/aql/functions/numberUtils.js +0 -12
- package/vendor/aql/functions/numberUtils.js.map +1 -1
- package/vendor/aql/functions/operatorFunctions.js +0 -13
- package/vendor/aql/functions/operatorFunctions.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/AND.js +0 -5
- package/vendor/aql/functions/scalar/functions/AND.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/ANY_CHANGE.js +0 -4
- package/vendor/aql/functions/scalar/functions/ANY_CHANGE.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/ANY_CONTAINS.js +0 -4
- package/vendor/aql/functions/scalar/functions/ANY_CONTAINS.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/AVG.js +0 -1
- package/vendor/aql/functions/scalar/functions/AVG.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/CASE.js +2 -2
- package/vendor/aql/functions/scalar/functions/CASE.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/COL.js +0 -2
- package/vendor/aql/functions/scalar/functions/COL.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/CONTAINS.js +0 -3
- package/vendor/aql/functions/scalar/functions/CONTAINS.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/DATE.js +0 -2
- package/vendor/aql/functions/scalar/functions/DATE.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/ENDS_WITH.js +0 -1
- package/vendor/aql/functions/scalar/functions/ENDS_WITH.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/EQ.js +0 -5
- package/vendor/aql/functions/scalar/functions/EQ.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/GT.js +0 -3
- package/vendor/aql/functions/scalar/functions/GT.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/GTE.js +0 -3
- package/vendor/aql/functions/scalar/functions/GTE.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/IF.js +0 -5
- package/vendor/aql/functions/scalar/functions/IF.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/IFERROR.js +0 -4
- package/vendor/aql/functions/scalar/functions/IFERROR.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/IFNA.js +0 -5
- package/vendor/aql/functions/scalar/functions/IFNA.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/IN.d.ts.map +1 -1
- package/vendor/aql/functions/scalar/functions/IN.js +54 -11
- package/vendor/aql/functions/scalar/functions/IN.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/IS_BLANK.js +0 -1
- package/vendor/aql/functions/scalar/functions/IS_BLANK.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/IS_DIFFERENT_DAY.js +0 -1
- package/vendor/aql/functions/scalar/functions/IS_DIFFERENT_DAY.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/IS_NOT_BLANK.js +0 -1
- package/vendor/aql/functions/scalar/functions/IS_NOT_BLANK.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/LT.js +0 -3
- package/vendor/aql/functions/scalar/functions/LT.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/LTE.js +0 -3
- package/vendor/aql/functions/scalar/functions/LTE.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/NA.js +0 -3
- package/vendor/aql/functions/scalar/functions/NA.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/NOT_CONTAINS.js +0 -1
- package/vendor/aql/functions/scalar/functions/NOT_CONTAINS.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/NOT_IN.js +0 -3
- package/vendor/aql/functions/scalar/functions/NOT_IN.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/OR.js +0 -4
- package/vendor/aql/functions/scalar/functions/OR.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/PRODUCT.js +0 -6
- package/vendor/aql/functions/scalar/functions/PRODUCT.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/QUERY.js +0 -1
- package/vendor/aql/functions/scalar/functions/QUERY.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/REGEX.js +0 -1
- package/vendor/aql/functions/scalar/functions/REGEX.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/SCOPE.js +0 -4
- package/vendor/aql/functions/scalar/functions/SCOPE.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/STARTS_WITH.js +0 -1
- package/vendor/aql/functions/scalar/functions/STARTS_WITH.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/SUB.js +0 -1
- package/vendor/aql/functions/scalar/functions/SUB.js.map +1 -1
- package/vendor/aql/functions/scalar/functions/SUM.js +0 -5
- package/vendor/aql/functions/scalar/functions/SUM.js.map +1 -1
- package/vendor/aql/functions/scalar/helpers.js +0 -3
- package/vendor/aql/functions/scalar/helpers.js.map +1 -1
- package/vendor/aql/functions/shared/FIELD.js +0 -3
- package/vendor/aql/functions/shared/FIELD.js.map +1 -1
- package/vendor/aql/functions/shared/VAR.js +0 -4
- package/vendor/aql/functions/shared/VAR.js.map +1 -1
- package/vendor/aql/functions/shared/index.js +0 -9
- package/vendor/aql/functions/shared/index.js.map +1 -1
- package/vendor/aql/functions/stringUtils.js +0 -25
- package/vendor/aql/functions/stringUtils.js.map +1 -1
- package/vendor/aql/functions/utils.js +0 -20
- package/vendor/aql/functions/utils.js.map +1 -1
- package/vendor/aql/host/access.js +0 -2
- package/vendor/aql/host/access.js.map +1 -1
- package/vendor/aql/host/createHostExpressionContext.js +0 -25
- package/vendor/aql/host/createHostExpressionContext.js.map +1 -1
- package/vendor/aql/host/createObjectDataHost.js +0 -9
- package/vendor/aql/host/createObjectDataHost.js.map +1 -1
- package/vendor/aql/index.js +0 -2
- package/vendor/aql/index.js.map +1 -1
- package/vendor/aql/normalize/canonicalize.js +0 -7
- package/vendor/aql/normalize/canonicalize.js.map +1 -1
- package/vendor/aql/normalize/migrateExpression.js +0 -8
- package/vendor/aql/normalize/migrateExpression.js.map +1 -1
- package/vendor/aql/normalize/names.js +0 -72
- package/vendor/aql/normalize/names.js.map +1 -1
- package/vendor/aql/normalize/normalizeAst.js +0 -102
- package/vendor/aql/normalize/normalizeAst.js.map +1 -1
- package/vendor/aql/normalize/print.js +0 -35
- package/vendor/aql/normalize/print.js.map +1 -1
- package/vendor/aql/operator/primitiveSlots.js +0 -4
- package/vendor/aql/operator/primitiveSlots.js.map +1 -1
- package/vendor/aql/operator/resolve.js +0 -18
- package/vendor/aql/operator/resolve.js.map +1 -1
- package/vendor/aql/parser/parser.js +4 -125
- package/vendor/aql/parser/parser.js.map +1 -1
- package/vendor/aql/plan/catalogue.js +0 -35
- package/vendor/aql/plan/catalogue.js.map +1 -1
- package/vendor/aql/plan/compile.js +0 -68
- package/vendor/aql/plan/compile.js.map +1 -1
- package/vendor/aql/plan/deepMap.js +0 -16
- package/vendor/aql/plan/deepMap.js.map +1 -1
- package/vendor/aql/plan/execute.js +0 -91
- package/vendor/aql/plan/execute.js.map +1 -1
- package/vendor/aql/plan/magnitudeLiteral.js +0 -29
- package/vendor/aql/plan/magnitudeLiteral.js.map +1 -1
- package/vendor/aql/plan/observable.js +0 -31
- package/vendor/aql/plan/observable.js.map +1 -1
- package/vendor/aql/plan/observableFixture.js +0 -3
- package/vendor/aql/plan/observableFixture.js.map +1 -1
- package/vendor/aql/plan/operators.js +0 -35
- package/vendor/aql/plan/operators.js.map +1 -1
- package/vendor/aql/plan/outer.js +0 -16
- package/vendor/aql/plan/outer.js.map +1 -1
- package/vendor/aql/predicate/mapExpressionToQlPredicate.js +1 -46
- package/vendor/aql/predicate/mapExpressionToQlPredicate.js.map +1 -1
- package/vendor/aql/predicate/mapQlPredicateToExpression.js +0 -13
- package/vendor/aql/predicate/mapQlPredicateToExpression.js.map +1 -1
- package/vendor/aql/store/computedValueStore.js +0 -35
- package/vendor/aql/store/computedValueStore.js.map +1 -1
- package/vendor/aql/store/history/clock.js +0 -1
- package/vendor/aql/store/history/clock.js.map +1 -1
- package/vendor/aql/store/history/historyStore.js +0 -14
- package/vendor/aql/store/history/historyStore.js.map +1 -1
- package/vendor/aql/store/history/monotonicDeque.js +0 -9
- package/vendor/aql/store/history/monotonicDeque.js.map +1 -1
- package/vendor/aql/store/history/operators.js +0 -13
- package/vendor/aql/store/history/operators.js.map +1 -1
- package/vendor/aql/store/history/ringBuffer.js +0 -12
- package/vendor/aql/store/history/ringBuffer.js.map +1 -1
- package/vendor/aql/store/history/rowSeries.js +0 -17
- package/vendor/aql/store/history/rowSeries.js.map +1 -1
- package/vendor/aql/store/history/types.js +0 -18
- package/vendor/aql/store/history/types.js.map +1 -1
- package/vendor/aql/tokenizer/tokenizer.js +0 -3
- package/vendor/aql/tokenizer/tokenizer.js.map +1 -1
- package/vendor/aql/types.js +0 -27
- package/vendor/aql/types.js.map +1 -1
- package/vendor/aql/utils/astUtils.js +0 -1
- package/vendor/aql/utils/astUtils.js.map +1 -1
- package/vendor/aql/utils/dependencyCycle.js +0 -5
- package/vendor/aql/utils/dependencyCycle.js.map +1 -1
- package/vendor/aql/validation/classifyExpression.js +0 -4
- package/vendor/aql/validation/classifyExpression.js.map +1 -1
- package/vendor/aql/validation/functionMetadata.js +0 -31
- package/vendor/aql/validation/functionMetadata.js.map +1 -1
- package/vendor/aql/validation/validateAqlExpression.js +2 -81
- package/vendor/aql/validation/validateAqlExpression.js.map +1 -1
- package/vendor/aql/validation/validateExpressionTypes.js +0 -64
- package/vendor/aql/validation/validateExpressionTypes.js.map +1 -1
- package/vendor/components/Button/index.js +0 -6
- package/vendor/components/Button/index.js.map +1 -1
- package/vendor/components/ColorField/index.js +0 -18
- package/vendor/components/ColorField/index.js.map +1 -1
- package/vendor/components/ColorPicker/colorPickerTab.js +0 -6
- package/vendor/components/ColorPicker/colorPickerTab.js.map +1 -1
- package/vendor/components/ColorPicker/index.js +1 -66
- package/vendor/components/ColorPicker/index.js.map +1 -1
- package/vendor/components/ColorPicker/themeColors.js +0 -55
- package/vendor/components/ColorPicker/themeColors.js.map +1 -1
- package/vendor/components/Combobox/VirtualizedList.js +0 -5
- package/vendor/components/Combobox/VirtualizedList.js.map +1 -1
- package/vendor/components/Combobox/comboboxUtils.js +0 -5
- package/vendor/components/Combobox/comboboxUtils.js.map +1 -1
- package/vendor/components/Combobox/index.js +7 -106
- package/vendor/components/Combobox/index.js.map +1 -1
- package/vendor/components/Combobox/useScrollNearEnd.js +0 -6
- package/vendor/components/Combobox/useScrollNearEnd.js.map +1 -1
- package/vendor/components/DropdownButton/index.js +0 -5
- package/vendor/components/DropdownButton/index.js.map +1 -1
- package/vendor/components/NumberInput/index.js +0 -10
- package/vendor/components/NumberInput/index.js.map +1 -1
- package/vendor/components/Resizable/index.js +3 -26
- package/vendor/components/Resizable/index.js.map +1 -1
- package/vendor/components/Resizable/resizableUtils.js +0 -24
- package/vendor/components/Resizable/resizableUtils.js.map +1 -1
- package/vendor/components/SearchInput/index.js +0 -5
- package/vendor/components/SearchInput/index.js.map +1 -1
- package/vendor/components/Tree/TreeDropdown/index.js +3 -139
- package/vendor/components/Tree/TreeDropdown/index.js.map +1 -1
- package/vendor/components/Tree/treeUtils.js +0 -4
- package/vendor/components/Tree/treeUtils.js.map +1 -1
- package/vendor/components/index.css +71 -71
- package/vendor/components/index.js +0 -5
- package/vendor/components/index.js.map +1 -1
- package/vendor/components/lib/useProperty.js +0 -18
- package/vendor/components/lib/useProperty.js.map +1 -1
- package/vendor/components/twMerge.js +0 -2
- package/vendor/components/twMerge.js.map +1 -1
- package/vendor/components/twUtils.js +3 -12
- package/vendor/components/twUtils.js.map +1 -1
- package/vendor/components/ui/alert-dialog.js +0 -4
- package/vendor/components/ui/alert-dialog.js.map +1 -1
- package/vendor/components/ui/calendar.js +1 -9
- package/vendor/components/ui/calendar.js.map +1 -1
- package/vendor/components/ui/combobox.js +2 -38
- package/vendor/components/ui/combobox.js.map +1 -1
- package/vendor/components/ui/dialog.js +0 -4
- package/vendor/components/ui/dialog.js.map +1 -1
- package/vendor/components/ui/input-group.js +3 -12
- package/vendor/components/ui/input-group.js.map +1 -1
- package/vendor/components/ui/tabs.js +0 -3
- package/vendor/components/ui/tabs.js.map +1 -1
|
@@ -12,11 +12,6 @@ import { rowEventSeriesKey } from '../store/history/types.js';
|
|
|
12
12
|
import { SKIP_ROW, } from './operators.js';
|
|
13
13
|
import { DEFAULT_ROW_SET_KIND, } from './types.js';
|
|
14
14
|
const coerceValue = (rawValue) => rawValue instanceof Date ? rawValue.getTime() : rawValue;
|
|
15
|
-
/**
|
|
16
|
-
* Lazily built host context shared by expression inputs, filters and the
|
|
17
|
-
* outer evaluator. Host-less runs never build one (the field fast path and a
|
|
18
|
-
* pure single-aggregation root need no context).
|
|
19
|
-
*/
|
|
20
15
|
const createLazyBaseContext = (config) => {
|
|
21
16
|
let baseContext;
|
|
22
17
|
return () => {
|
|
@@ -36,26 +31,15 @@ const createLazyBaseContext = (config) => {
|
|
|
36
31
|
return baseContext;
|
|
37
32
|
};
|
|
38
33
|
};
|
|
39
|
-
/**
|
|
40
|
-
* Outer evaluation for one expression over its (already executed) slot
|
|
41
|
-
* results: the scalar evaluator runs the normalized root with each plan's
|
|
42
|
-
* `sourceNode` resolving to that plan's global value (row-independent
|
|
43
|
-
* reading) or per-row value (`getValueForRow`). A pure single-aggregation
|
|
44
|
-
* root short-circuits to the slot result — no scalar evaluation, no host.
|
|
45
|
-
*/
|
|
46
34
|
const assembleValueExecutionResult = (compiled, expressionResults, getBaseContext, config, fallbackRowCount = 0) => {
|
|
47
35
|
const rootSlot = isRootAggregation(compiled);
|
|
48
36
|
const observableSlots = compiled.observable ?? [];
|
|
49
|
-
// Earliest expiry seen by any observable read made through this result —
|
|
50
|
-
// accumulates across `getValueForRow` calls (the store reads it after the
|
|
51
|
-
// per-row reads of a flush).
|
|
52
37
|
let nextChangeAt;
|
|
53
38
|
const noteNext = (t) => {
|
|
54
39
|
if (t !== undefined && (nextChangeAt === undefined || t < nextChangeAt)) {
|
|
55
40
|
nextChangeAt = t;
|
|
56
41
|
}
|
|
57
42
|
};
|
|
58
|
-
// Grid-scope slots are the same for every row: read once per run.
|
|
59
43
|
const gridReads = new Map();
|
|
60
44
|
const readObservable = (slotIndex, rowRef) => {
|
|
61
45
|
const slot = observableSlots[slotIndex];
|
|
@@ -124,9 +108,6 @@ const assembleValueExecutionResult = (compiled, expressionResults, getBaseContex
|
|
|
124
108
|
value = evaluateOuter(undefined, false);
|
|
125
109
|
getValueForRow = (rowRef) => evaluateOuter(rowRef, true);
|
|
126
110
|
}
|
|
127
|
-
// Seed the expiry from the series themselves: a row-scoped `WITHIN` slot
|
|
128
|
-
// has no row in the global reading, and the store must be able to arm its
|
|
129
|
-
// timer without depending on which rows subscribers happen to read.
|
|
130
111
|
if (config.history) {
|
|
131
112
|
for (const slot of observableSlots) {
|
|
132
113
|
if (slot.window.kind !== 'within') {
|
|
@@ -136,7 +117,6 @@ const assembleValueExecutionResult = (compiled, expressionResults, getBaseContex
|
|
|
136
117
|
? rowEventSeriesKey(slot.rowEventKind, slot.key.filterKey)
|
|
137
118
|
: slot.key;
|
|
138
119
|
noteNext(config.history.nextExpiryAt(key, slot.window.ms));
|
|
139
|
-
// `NO_CHANGES` turns true at `epoch + d` with no history at all.
|
|
140
120
|
if (slot.source === 'NO_CHANGES') {
|
|
141
121
|
noteNext(config.history.nextEpochElapseAt(slot.window.ms, slot.key.scope));
|
|
142
122
|
}
|
|
@@ -152,25 +132,16 @@ const assembleValueExecutionResult = (compiled, expressionResults, getBaseContex
|
|
|
152
132
|
},
|
|
153
133
|
};
|
|
154
134
|
};
|
|
155
|
-
/**
|
|
156
|
-
* Batch execution: every aggregation plan from every expression joins ONE
|
|
157
|
-
* signature-grouped scan pool, so expressions sharing a row set share a
|
|
158
|
-
* single host row pass (the store's cross-node scan grouping). Results are
|
|
159
|
-
* returned in input order.
|
|
160
|
-
*/
|
|
161
135
|
export const executeValueExpressionBatch = (compiledExpressions, config) => {
|
|
162
136
|
const registry = config.registry ?? SYSTEM_AGGREGATION_CATALOGUE;
|
|
163
137
|
const host = config.host;
|
|
164
138
|
const sortDirection = config.sort === 'desc' ? -1 : 1;
|
|
165
|
-
// --- value readers ---------------------------------------------------------
|
|
166
139
|
const readRaw = (rowRef, columnId) => config.getValue
|
|
167
140
|
? config.getValue(rowRef, columnId)
|
|
168
141
|
: host
|
|
169
142
|
? hostGetRawColumnValue(host, rowRef, columnId)
|
|
170
143
|
: undefined;
|
|
171
144
|
const readValue = (rowRef, columnId) => coerceValue(readRaw(rowRef, columnId));
|
|
172
|
-
// Contexts are needed only for expression inputs, filters and the outer
|
|
173
|
-
// evaluator; the field fast path never touches them.
|
|
174
145
|
const getBaseContext = createLazyBaseContext(config);
|
|
175
146
|
const prepareRowEvaluator = (node, functions) => {
|
|
176
147
|
const context = deriveHostExpressionContext(getBaseContext(), {
|
|
@@ -197,7 +168,6 @@ export const executeValueExpressionBatch = (compiledExpressions, config) => {
|
|
|
197
168
|
}
|
|
198
169
|
return prepareRowEvaluator(input.node);
|
|
199
170
|
};
|
|
200
|
-
// --- filter / row-set resolution ---------------------------------------------
|
|
201
171
|
const nodeIds = new Map();
|
|
202
172
|
const idOf = (node) => {
|
|
203
173
|
let id = nodeIds.get(node);
|
|
@@ -207,9 +177,6 @@ export const executeValueExpressionBatch = (compiledExpressions, config) => {
|
|
|
207
177
|
}
|
|
208
178
|
return id;
|
|
209
179
|
};
|
|
210
|
-
// Textually identical predicates / sort expressions from different call
|
|
211
|
-
// sites are different AST nodes — key caches by canonical text so those
|
|
212
|
-
// plans share one row pass (and one sorted copy).
|
|
213
180
|
const exprKeys = new Map();
|
|
214
181
|
const exprKey = (expression) => {
|
|
215
182
|
let key = exprKeys.get(expression);
|
|
@@ -277,15 +244,12 @@ export const executeValueExpressionBatch = (compiledExpressions, config) => {
|
|
|
277
244
|
if (sorted) {
|
|
278
245
|
return sorted;
|
|
279
246
|
}
|
|
280
|
-
// Decorate–sort–undecorate: the key is read once per row and the scan
|
|
281
|
-
// array is never mutated (it is shared across plans in the group).
|
|
282
247
|
const keyOf = resolveInput(sort.input);
|
|
283
248
|
const direction = sort.direction === 'desc' ? -sortDirection : sortDirection;
|
|
284
249
|
const decorated = scan.rows.map((rowRef) => {
|
|
285
250
|
const key = keyOf(rowRef);
|
|
286
251
|
return { rowRef, key: key, blank: isUndefinedValue(key) };
|
|
287
252
|
});
|
|
288
|
-
// Blanks sort last in either direction.
|
|
289
253
|
decorated.sort((first, second) => {
|
|
290
254
|
if (first.blank || second.blank) {
|
|
291
255
|
return Number(first.blank) - Number(second.blank);
|
|
@@ -309,7 +273,6 @@ export const executeValueExpressionBatch = (compiledExpressions, config) => {
|
|
|
309
273
|
return (rowRef) => host.rows.getRowId(rowRef);
|
|
310
274
|
};
|
|
311
275
|
const optionalRowId = () => host?.rows?.getRowId ? (rowRef) => host.rows.getRowId(rowRef) : undefined;
|
|
312
|
-
// --- plan runtimes -------------------------------------------------------------
|
|
313
276
|
const allPlans = compiledExpressions.flatMap((compiled) => compiled.aggregations);
|
|
314
277
|
const runtimes = allPlans.map((plan, planIndex) => {
|
|
315
278
|
const operator = registry.get(plan.operator.name);
|
|
@@ -348,9 +311,6 @@ export const executeValueExpressionBatch = (compiledExpressions, config) => {
|
|
|
348
311
|
const rowIdToGroupKeys = grouped && rowId ? new Map() : undefined;
|
|
349
312
|
for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {
|
|
350
313
|
const rowRef = rows[rowIndex];
|
|
351
|
-
// Legacy `aggregate()` parity: reducers accumulate at EVERY group-key
|
|
352
|
-
// prefix depth (`[make]`, `[make, currency]`, …), so `groupValues`
|
|
353
|
-
// exposes subtotal entries top-down. Per-row lookup stays full-depth.
|
|
354
314
|
let prefixStates;
|
|
355
315
|
if (grouped) {
|
|
356
316
|
const keys = groupBy.map((field) => readValue(rowRef, field));
|
|
@@ -393,7 +353,6 @@ export const executeValueExpressionBatch = (compiledExpressions, config) => {
|
|
|
393
353
|
const globalValues = finalize(globalStates);
|
|
394
354
|
if (groups) {
|
|
395
355
|
groups.visitDepthFirst((states, _keys, _indexInGroup, next) => {
|
|
396
|
-
// finalize in place: replace each state with its done() value
|
|
397
356
|
const finalized = finalize(states);
|
|
398
357
|
states.length = 0;
|
|
399
358
|
states.push(...finalized);
|
|
@@ -484,8 +443,6 @@ export const executeValueExpressionBatch = (compiledExpressions, config) => {
|
|
|
484
443
|
if (runtime.weightOf) {
|
|
485
444
|
rowCtx.weightValue = runtime.weightOf(rowRef);
|
|
486
445
|
}
|
|
487
|
-
// Operator-level row gate (custom `filterRow`) applies to the running
|
|
488
|
-
// walk as well: gated rows neither advance the state nor get a value.
|
|
489
446
|
if (operator.rowGate &&
|
|
490
447
|
!operator.rowGate(rowRef, host?.getRowData(rowRef), runtime.spec, rowCtx)) {
|
|
491
448
|
continue;
|
|
@@ -517,7 +474,6 @@ export const executeValueExpressionBatch = (compiledExpressions, config) => {
|
|
|
517
474
|
perRowOnly: true,
|
|
518
475
|
});
|
|
519
476
|
};
|
|
520
|
-
// --- result assembly --------------------------------------------------------------
|
|
521
477
|
const applyProjection = (projection, rowRef, baseValue) => {
|
|
522
478
|
if (projection.kind === 'percentage') {
|
|
523
479
|
const cellValue = toFiniteNumber(readRaw(rowRef, projection.column));
|
|
@@ -566,14 +522,9 @@ export const executeValueExpressionBatch = (compiledExpressions, config) => {
|
|
|
566
522
|
const getValueForRow = (rowRef) => {
|
|
567
523
|
const baseValue = baseValueForRow(rowRef);
|
|
568
524
|
if (parts.perRowOnly) {
|
|
569
|
-
// Legacy parity: per-row maps resolve through the map only; a diff
|
|
570
|
-
// projection over a missing per-row value yields null.
|
|
571
525
|
if (projection) {
|
|
572
526
|
return applyProjection(projection, rowRef, baseValue);
|
|
573
527
|
}
|
|
574
|
-
// A cumulative reducer's per-row projection (custom `prepareRowValue`)
|
|
575
|
-
// applies to the running value recorded for the row; rows the walk
|
|
576
|
-
// never recorded stay undefined.
|
|
577
528
|
return baseValue === undefined ? undefined : projectCustom(rowRef, baseValue);
|
|
578
529
|
}
|
|
579
530
|
if (baseValue == undefined) {
|
|
@@ -593,9 +544,7 @@ export const executeValueExpressionBatch = (compiledExpressions, config) => {
|
|
|
593
544
|
rowCount: parts.rowCount,
|
|
594
545
|
};
|
|
595
546
|
};
|
|
596
|
-
// --- execution --------------------------------------------------------------------
|
|
597
547
|
const aggResults = new Array(runtimes.length);
|
|
598
|
-
// Group shareable reducer passes: same scan rows, same sort, same groupBy.
|
|
599
548
|
const reducerGroups = new Map();
|
|
600
549
|
for (const runtime of runtimes) {
|
|
601
550
|
const scan = resolveScanRows(runtime.plan);
|
|
@@ -654,9 +603,6 @@ export const executeValueExpressionBatch = (compiledExpressions, config) => {
|
|
|
654
603
|
aggResults[runtime.planIndex] = aggResult;
|
|
655
604
|
});
|
|
656
605
|
}
|
|
657
|
-
// --- outer evaluation (per expression, over the shared slot results) -----------
|
|
658
|
-
// A observable-only expression (the common Alert case `CHANGE_COUNT{…} >= 3`)
|
|
659
|
-
// never joined the scan pool; its row count is the explicit row set's.
|
|
660
606
|
const observableOnlyRowCount = (compiled) => compiled.aggregations.length === 0 && compiled.observable?.length ? explicitRows?.length ?? 0 : 0;
|
|
661
607
|
let slotBase = 0;
|
|
662
608
|
return compiledExpressions.map((compiled) => {
|
|
@@ -666,15 +612,6 @@ export const executeValueExpressionBatch = (compiledExpressions, config) => {
|
|
|
666
612
|
});
|
|
667
613
|
};
|
|
668
614
|
export const executeValueExpression = (compiled, config) => executeValueExpressionBatch([compiled], config)[0];
|
|
669
|
-
// --- incremental update -------------------------------------------------------------
|
|
670
|
-
/**
|
|
671
|
-
* Whether a plan's result can be updated from a single cell change without a
|
|
672
|
-
* rescan: an ungrouped, unfiltered, unweighted, non-cumulative reducer over
|
|
673
|
-
* a bare column, whose operator declares `capabilities.delta`, with no
|
|
674
|
-
* per-row projection / row gate (custom `filterRow` / `prepareRowValue`).
|
|
675
|
-
* Grouped plans are excluded on purpose: a change would have to be applied
|
|
676
|
-
* at every prefix depth and re-fanned into the per-row map.
|
|
677
|
-
*/
|
|
678
615
|
const isDeltaCapablePlan = (plan, operator) => operator.kind === 'reducer' &&
|
|
679
616
|
!!operator.capabilities.delta &&
|
|
680
617
|
!operator.rowGate &&
|
|
@@ -685,11 +622,6 @@ const isDeltaCapablePlan = (plan, operator) => operator.kind === 'reducer' &&
|
|
|
685
622
|
!plan.modifiers.weight &&
|
|
686
623
|
!plan.projection &&
|
|
687
624
|
!plan.scanSignature.filterPredicates?.length;
|
|
688
|
-
/**
|
|
689
|
-
* Every column a plan reads during its scan — main input, WEIGHT, sort key,
|
|
690
|
-
* group keys, WHERE predicates and projection column. Memoized per plan
|
|
691
|
-
* object (plans are immutable IR).
|
|
692
|
-
*/
|
|
693
625
|
const planColumnsCache = new WeakMap();
|
|
694
626
|
const planColumns = (plan) => {
|
|
695
627
|
let columns = planColumnsCache.get(plan);
|
|
@@ -721,32 +653,13 @@ const planColumns = (plan) => {
|
|
|
721
653
|
planColumnsCache.set(plan, columns);
|
|
722
654
|
return columns;
|
|
723
655
|
};
|
|
724
|
-
/**
|
|
725
|
-
* Incremental re-execution: updates `previous` for a batch of cell changes
|
|
726
|
-
* using the operators' `delta` contracts, or returns `undefined` when the
|
|
727
|
-
* expression (or any change) is not delta-eligible and a rescan is needed.
|
|
728
|
-
*
|
|
729
|
-
* Eligible when every plan whose main input is a changed column satisfies
|
|
730
|
-
* {@link isDeltaCapablePlan} and the changed rows are in its row set. Plans
|
|
731
|
-
* reading other columns keep their previous result untouched; the outer
|
|
732
|
-
* expression is re-evaluated over the updated slot values (so
|
|
733
|
-
* `[price] / SUM{[price]}` re-derives per row from the new total).
|
|
734
|
-
*
|
|
735
|
-
* Changes are applied in order, so a batch containing several edits of the
|
|
736
|
-
* same cell (a→b, b→c) is exact. Row additions / removals and row-set
|
|
737
|
-
* changes are not cell changes — callers must rescan for those.
|
|
738
|
-
*/
|
|
739
656
|
export const applyValueExpressionDelta = (compiled, previous, changes, config) => {
|
|
740
657
|
if (changes.length === 0) {
|
|
741
658
|
return previous;
|
|
742
659
|
}
|
|
743
|
-
// A value-read override may transform what the scan saw; the reported raw
|
|
744
|
-
// old/new values would not match it.
|
|
745
660
|
if (config.getValue || previous.aggregations.length !== compiled.aggregations.length) {
|
|
746
661
|
return undefined;
|
|
747
662
|
}
|
|
748
|
-
// Observable / clock-dependent expressions re-read history and time on
|
|
749
|
-
// every execution — there is no accumulator to patch.
|
|
750
663
|
if (compiled.dependencies.observable || compiled.dependencies.time) {
|
|
751
664
|
return undefined;
|
|
752
665
|
}
|
|
@@ -764,7 +677,6 @@ export const applyValueExpressionDelta = (compiled, previous, changes, config) =
|
|
|
764
677
|
for (let index = 0; index < compiled.aggregations.length; index++) {
|
|
765
678
|
const plan = compiled.aggregations[index];
|
|
766
679
|
if (!readsChangedColumn(planColumns(plan))) {
|
|
767
|
-
// Untouched by this batch: the previous slot result stands.
|
|
768
680
|
continue;
|
|
769
681
|
}
|
|
770
682
|
const operator = registry.get(plan.operator.name);
|
|
@@ -773,8 +685,6 @@ export const applyValueExpressionDelta = (compiled, previous, changes, config) =
|
|
|
773
685
|
previous.aggregations[index].accumulator === undefined) {
|
|
774
686
|
return undefined;
|
|
775
687
|
}
|
|
776
|
-
// Delta-capable plans read exactly one column (the bare input), so the
|
|
777
|
-
// change is on the input; the row must be in the plan's row set.
|
|
778
688
|
const kind = plan.scanSignature.rowSetKind;
|
|
779
689
|
if (kind !== DEFAULT_ROW_SET_KIND) {
|
|
780
690
|
const inputField = plan.input.field;
|
|
@@ -788,7 +698,6 @@ export const applyValueExpressionDelta = (compiled, previous, changes, config) =
|
|
|
788
698
|
touched.push({ index, operator: operator });
|
|
789
699
|
}
|
|
790
700
|
if (touched.length === 0) {
|
|
791
|
-
// No plan reads a changed column; only the outer expression may (per row).
|
|
792
701
|
return assembleValueExecutionResult(compiled, previous.aggregations, createLazyBaseContext(config), config);
|
|
793
702
|
}
|
|
794
703
|
const aggResults = previous.aggregations.slice();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/plan/execute.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/plan/execute.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
import { isAST_Function } from '../types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Magnitude-suffix literals: a quoted number with an optional K / M / B
|
|
4
|
-
* suffix (`'5M'`, `'-500K'`, `'1.5B'`) compared against an aggregation reads
|
|
5
|
-
* as a number (`SUM{[PnL]} > '5M'`). The compiler lowers such literals to
|
|
6
|
-
* numbers and the static type checker types them as numbers — both through
|
|
7
|
-
* `magnitudeLiteralOperandIndex`, so they always agree.
|
|
8
|
-
*/
|
|
9
2
|
const kindOf = (fn) => fn.kind ?? fn.metaInfo;
|
|
10
|
-
/** Evaluation-time sugar wrappers (not rewritten by migrate). */
|
|
11
3
|
export const DIFF_WRAPPERS = new Set(['ABSOLUTE_DIFF', 'PERCENT_DIFF']);
|
|
12
4
|
export const FILTERED_SUGAR = {
|
|
13
5
|
SUMIF: 'SUM',
|
|
@@ -25,11 +17,9 @@ export const parseMagnitudeLiteral = (value) => {
|
|
|
25
17
|
if (!match) {
|
|
26
18
|
return undefined;
|
|
27
19
|
}
|
|
28
|
-
// Exponent notation keeps decimals exact ('1.1K' → 1100, not 1100.0000000000002).
|
|
29
20
|
const exponent = match[2] ? MAGNITUDE_EXPONENTS[match[2].toLowerCase()] : 0;
|
|
30
21
|
return Number(`${match[1]}e${exponent}`);
|
|
31
22
|
};
|
|
32
|
-
/** An aggregation root: an `AGG_CALL` or one of the paren wrappers `normalizeAst` leaves as `FUNCTION`. */
|
|
33
23
|
const isAggregationRoot = (node) => {
|
|
34
24
|
const kind = kindOf(node);
|
|
35
25
|
if (kind === 'AGG_CALL') {
|
|
@@ -41,14 +31,6 @@ const isAggregationRoot = (node) => {
|
|
|
41
31
|
node.type in FILTERED_SUGAR ||
|
|
42
32
|
node.type === 'CUMUL'));
|
|
43
33
|
};
|
|
44
|
-
/**
|
|
45
|
-
* True when the subtree contains anything the value plan compiles as an
|
|
46
|
-
* aggregation: an `AGG_CALL`, or one of the evaluation-time paren wrappers
|
|
47
|
-
* (`PERCENTAGE`, `ABSOLUTE_DIFF`, `PERCENT_DIFF`, `SUMIF` / `COUNTIF` /
|
|
48
|
-
* `AVGIF`, leftover `CUMUL`) that `normalizeAst` deliberately leaves as
|
|
49
|
-
* `FUNCTION` nodes. This is the complete "is aggregated" test; a bare
|
|
50
|
-
* `AGG_CALL` count misses the wrappers.
|
|
51
|
-
*/
|
|
52
34
|
export const containsAggregation = (node) => {
|
|
53
35
|
if (node == null || typeof node !== 'object') {
|
|
54
36
|
return false;
|
|
@@ -64,10 +46,6 @@ export const containsAggregation = (node) => {
|
|
|
64
46
|
}
|
|
65
47
|
return node.args.some((arg) => containsAggregation(arg));
|
|
66
48
|
};
|
|
67
|
-
/**
|
|
68
|
-
* Index (0 or 1) of the magnitude literal in a comparator whose other
|
|
69
|
-
* operand contains an aggregation; `undefined` for any other node.
|
|
70
|
-
*/
|
|
71
49
|
export const magnitudeLiteralOperandIndex = (node) => {
|
|
72
50
|
if (kindOf(node) !== 'INFIX' || !COMPARATOR_TYPES.has(node.type) || node.args.length !== 2) {
|
|
73
51
|
return undefined;
|
|
@@ -81,13 +59,6 @@ export const magnitudeLiteralOperandIndex = (node) => {
|
|
|
81
59
|
}
|
|
82
60
|
return undefined;
|
|
83
61
|
};
|
|
84
|
-
/**
|
|
85
|
-
* Rewrites every magnitude literal compared against an aggregation to its
|
|
86
|
-
* numeric value, at any depth of the outer expression (`IF(SUM{…} > '5M', …)`).
|
|
87
|
-
* Aggregation, observable and clause subtrees are returned untouched, so plan
|
|
88
|
-
* node identities are preserved; only the ancestors of a rewritten
|
|
89
|
-
* comparator are rebuilt.
|
|
90
|
-
*/
|
|
91
62
|
export const lowerMagnitudeLiterals = (node) => {
|
|
92
63
|
if (node == null || typeof node !== 'object' || Array.isArray(node) || !isAST_Function(node)) {
|
|
93
64
|
return node;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"magnitudeLiteral.js","sourceRoot":"","sources":["../../../src/plan/magnitudeLiteral.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"magnitudeLiteral.js","sourceRoot":"","sources":["../../../src/plan/magnitudeLiteral.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,18 +4,10 @@ import { printExpression } from '../normalize/print.js';
|
|
|
4
4
|
import { ALL_TRIGGERS, ANY_COLUMN_ID, anyColumnSubsetId, } from '../store/history/types.js';
|
|
5
5
|
import * as operators from '../store/history/operators.js';
|
|
6
6
|
import { CUSTOM_OBSERVABLE_FALLBACK_SPEC, getObservableCallSpec, } from '../validation/functionMetadata.js';
|
|
7
|
-
/**
|
|
8
|
-
* Observable-call lowering and reads. A normalized `OBSERVABLE_CALL` compiles to
|
|
9
|
-
* a {@link ObservableSlot} (pure data: series key, window, triggers); reading
|
|
10
|
-
* a slot is a dispatch into the pure operators over a `HistoryReader`.
|
|
11
|
-
* Shared by the value-plan executor (`resolveContractNode`) and the prepared
|
|
12
|
-
* evaluator (`evaluateNode`), so both paths agree by construction.
|
|
13
|
-
*/
|
|
14
7
|
const kindOf = (fn) => fn.kind ?? fn.metaInfo;
|
|
15
8
|
const isClause = (arg) => isAST_Function(arg) && kindOf(arg) === 'CLAUSE';
|
|
16
9
|
const isColRef = (arg) => arg !== undefined && isAST_Function(arg) && arg.type === 'COL' && typeof arg.args[0] === 'string';
|
|
17
10
|
const TRIGGER_SET = new Set(ALL_TRIGGERS);
|
|
18
|
-
/** Pseudo column id for input-less sources (`ROW_AGE`, `ADDED_AT`). */
|
|
19
11
|
export const observablePseudoColumnId = (source) => `\u0000${source}`;
|
|
20
12
|
export class ObservableCompileError extends Error {
|
|
21
13
|
node;
|
|
@@ -25,7 +17,6 @@ export class ObservableCompileError extends Error {
|
|
|
25
17
|
this.name = 'ObservableCompileError';
|
|
26
18
|
}
|
|
27
19
|
}
|
|
28
|
-
/** Compiles one normalized `OBSERVABLE_CALL` node into a {@link ObservableSlot}. */
|
|
29
20
|
export const compileObservableCallNode = (node, options = {}) => {
|
|
30
21
|
const spec = getObservableCallSpec(node.type) ?? CUSTOM_OBSERVABLE_FALLBACK_SPEC;
|
|
31
22
|
const clauses = [];
|
|
@@ -143,10 +134,6 @@ export const compileObservableCallNode = (node, options = {}) => {
|
|
|
143
134
|
}
|
|
144
135
|
return slot;
|
|
145
136
|
};
|
|
146
|
-
/**
|
|
147
|
-
* Start of a full-window read's window: the observation start, or for a
|
|
148
|
-
* row-scope read the row's add instant when it is later.
|
|
149
|
-
*/
|
|
150
137
|
const epochOf = (slot, history, rowId) => {
|
|
151
138
|
const start = history.observationStartAt();
|
|
152
139
|
if (slot.key.scope !== 'row' || rowId === undefined) {
|
|
@@ -155,7 +142,6 @@ const epochOf = (slot, history, rowId) => {
|
|
|
155
142
|
const addedAt = history.rowAddedAt(rowId);
|
|
156
143
|
return addedAt === undefined ? start : Math.max(start, addedAt);
|
|
157
144
|
};
|
|
158
|
-
/** Reads one slot from the history. `rowId` is required for row-scope slots. */
|
|
159
145
|
export const evaluateObservableSlot = (slot, history, rowId) => {
|
|
160
146
|
const now = history.now();
|
|
161
147
|
if (slot.rowEventKind) {
|
|
@@ -193,12 +179,6 @@ export const evaluateObservableSlot = (slot, history, rowId) => {
|
|
|
193
179
|
throw new ExpressionEvaluationError(slot.source, 'has no observable read handler in this context');
|
|
194
180
|
}
|
|
195
181
|
};
|
|
196
|
-
/**
|
|
197
|
-
* What a slot needs the history store to retain. Cumulative reads with the
|
|
198
|
-
* default trigger set are answered from the series counters (`{}` retains
|
|
199
|
-
* nothing); explicit `TRIGGER(...)` selections need the entries themselves,
|
|
200
|
-
* so they ask for everything (the store caps at `maxEntriesPerCell`).
|
|
201
|
-
*/
|
|
202
182
|
export const retentionForSlot = (slot) => {
|
|
203
183
|
switch (slot.window.kind) {
|
|
204
184
|
case 'within':
|
|
@@ -212,18 +192,11 @@ export const retentionForSlot = (slot) => {
|
|
|
212
192
|
const n = slot.positional[0] ?? 1;
|
|
213
193
|
return slot.triggers === 'default' ? { count: n } : { count: Number.MAX_SAFE_INTEGER };
|
|
214
194
|
}
|
|
215
|
-
// Counters (`CHANGE_COUNT` / `NO_CHANGES`) are kept per trigger, and the
|
|
216
|
-
// default-trigger last change survives pruning (`lastEntry`).
|
|
217
195
|
if (slot.source === 'CHANGE_COUNT' || slot.source === 'NO_CHANGES') {
|
|
218
196
|
return {};
|
|
219
197
|
}
|
|
220
198
|
return slot.triggers === 'default' ? {} : { count: Number.MAX_SAFE_INTEGER };
|
|
221
199
|
};
|
|
222
|
-
/**
|
|
223
|
-
* Registers every slot's series with the store (the host's per-node hook)
|
|
224
|
-
* and returns a release for all of them. `ROW_AGE` / `ADDED_AT` read row
|
|
225
|
-
* ages the store tracks unconditionally and register nothing.
|
|
226
|
-
*/
|
|
227
200
|
export const acquireObservableSlots = (store, slots) => {
|
|
228
201
|
const handles = [];
|
|
229
202
|
for (const slot of slots) {
|
|
@@ -238,10 +211,6 @@ export const acquireObservableSlots = (store, slots) => {
|
|
|
238
211
|
}
|
|
239
212
|
return () => handles.forEach((handle) => handle.release());
|
|
240
213
|
};
|
|
241
|
-
/**
|
|
242
|
-
* Slot cache for the prepared-evaluator path: normalized ASTs are reused
|
|
243
|
-
* across rows, so a `OBSERVABLE_CALL` node compiles once per node identity.
|
|
244
|
-
*/
|
|
245
214
|
const observableSlotCache = new WeakMap();
|
|
246
215
|
export const getOrCompileObservableSlot = (node, options = {}) => {
|
|
247
216
|
let slot = observableSlotCache.get(node);
|