@adaptabletools/adaptable-mcp 0.1.0-canary.1 → 0.1.0-canary.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/README.md +3 -1
- package/data/changes/21-22.json +542 -0
- package/data/changes/22-23.json +639 -0
- package/data/changes/23-24.json +1874 -0
- package/data/manifest.snapshot.json +28 -10
- package/data/templates/angular/src/app/adaptableOptions.ts +40 -0
- package/data/templates/angular/src/app/agGridModules.ts +7 -0
- package/data/templates/angular/src/app/app.component.ts +66 -0
- package/data/templates/angular/src/app/app.module.ts +14 -0
- package/data/templates/angular/src/app/columnDefs.ts +121 -0
- package/data/templates/angular/src/app/gridOptions.ts +32 -0
- package/data/templates/angular/src/app/onAdaptableReady.ts +11 -0
- package/data/templates/angular/src/app/rowData.ts +851 -0
- package/data/templates/angular/src/app/styles.css +50 -0
- package/data/templates/angular/src/index.html +17 -0
- package/data/templates/angular/src/main.ts +18 -0
- package/data/templates/angular/src/polyfills.ts +1 -0
- package/data/templates/angular/tsconfig.json +16 -0
- package/data/templates/manifest.json +406 -0
- package/data/templates/react/src/App.tsx +71 -0
- package/data/templates/react/src/adaptableOptions.ts +40 -0
- package/data/templates/react/src/agGridModules.ts +7 -0
- package/data/templates/react/src/columnDefs.ts +121 -0
- package/data/templates/react/src/gridOptions.ts +32 -0
- package/data/templates/react/src/index.tsx +8 -0
- package/data/templates/react/src/onAdaptableReady.ts +11 -0
- package/data/templates/react/src/rowData.ts +851 -0
- package/data/templates/react/src/styles.css +50 -0
- package/data/templates/react/tsconfig.json +9 -0
- package/data/templates/vanilla/index.html +18 -0
- package/data/templates/vanilla/src/adaptableOptions.ts +40 -0
- package/data/templates/vanilla/src/agGridModules.ts +7 -0
- package/data/templates/vanilla/src/columnDefs.ts +121 -0
- package/data/templates/vanilla/src/gridOptions.ts +32 -0
- package/data/templates/vanilla/src/index.ts +41 -0
- package/data/templates/vanilla/src/onAdaptableReady.ts +11 -0
- package/data/templates/vanilla/src/rowData.ts +851 -0
- package/data/templates/vanilla/src/styles.css +50 -0
- package/data/templates/vanilla/tsconfig.json +14 -0
- package/data/templates/vue/.babelrc +3 -0
- package/data/templates/vue/public/index.html +19 -0
- package/data/templates/vue/src/App.vue +35 -0
- package/data/templates/vue/src/adaptableOptions.ts +40 -0
- package/data/templates/vue/src/agGridModules.ts +7 -0
- package/data/templates/vue/src/columnDefs.ts +121 -0
- package/data/templates/vue/src/gridOptions.ts +32 -0
- package/data/templates/vue/src/main.ts +6 -0
- package/data/templates/vue/src/onAdaptableReady.ts +11 -0
- package/data/templates/vue/src/rowData.ts +851 -0
- package/data/templates/vue/src/shims-vue.d.ts +6 -0
- package/data/templates/vue/src/styles.css +50 -0
- package/data/templates/vue/tsconfig.json +30 -0
- package/dist/bin.js +7 -0
- package/dist/bin.js.map +1 -1
- package/dist/cli/index.js +8 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/anonymise/anonymise.js +315 -0
- package/dist/core/anonymise/anonymise.js.map +1 -0
- package/dist/core/anonymise/capabilities.js +94 -0
- package/dist/core/anonymise/capabilities.js.map +1 -0
- package/dist/core/aql/capabilities.js +339 -0
- package/dist/core/aql/capabilities.js.map +1 -0
- package/dist/core/aql/check.js +204 -0
- package/dist/core/aql/check.js.map +1 -0
- package/dist/core/aql/engine.js +92 -0
- package/dist/core/aql/engine.js.map +1 -0
- package/dist/core/aql/functions.js +108 -0
- package/dist/core/aql/functions.js.map +1 -0
- package/dist/core/aql/migrate.js +62 -0
- package/dist/core/aql/migrate.js.map +1 -0
- package/dist/core/capabilities.js +9 -3
- package/dist/core/capabilities.js.map +1 -1
- package/dist/core/changes/capabilities.js +92 -0
- package/dist/core/changes/capabilities.js.map +1 -0
- package/dist/core/changes/changes.js +101 -0
- package/dist/core/changes/changes.js.map +1 -0
- package/dist/core/changes/grep.js +183 -0
- package/dist/core/changes/grep.js.map +1 -0
- package/dist/core/changes/records.js +172 -0
- package/dist/core/changes/records.js.map +1 -0
- package/dist/core/changes/render-md.js +101 -0
- package/dist/core/changes/render-md.js.map +1 -0
- package/dist/core/changes/with-docs.js +86 -0
- package/dist/core/changes/with-docs.js.map +1 -0
- package/dist/core/compat/capabilities.js +1 -1
- package/dist/core/compat/capabilities.js.map +1 -1
- package/dist/core/context/capabilities.js +1 -1
- package/dist/core/context/capabilities.js.map +1 -1
- package/dist/core/convert/capabilities.js +86 -0
- package/dist/core/convert/capabilities.js.map +1 -0
- package/dist/core/convert/coldefs.js +313 -0
- package/dist/core/convert/coldefs.js.map +1 -0
- package/dist/core/docs/cache.js +1 -1
- package/dist/core/docs/capabilities.js +1 -5
- package/dist/core/docs/capabilities.js.map +1 -1
- package/dist/core/docs/hosts.js +2 -2
- package/dist/core/docs/hosts.js.map +1 -1
- package/dist/core/extract/imports.js +163 -0
- package/dist/core/extract/imports.js.map +1 -0
- package/dist/core/extract/input.js +140 -0
- package/dist/core/extract/input.js.map +1 -0
- package/dist/core/extract/line-map.js +90 -0
- package/dist/core/extract/line-map.js.map +1 -0
- package/dist/core/extract/ts-literal.js +963 -0
- package/dist/core/extract/ts-literal.js.map +1 -0
- package/dist/core/migrate/capabilities.js +143 -0
- package/dist/core/migrate/capabilities.js.map +1 -0
- package/dist/core/migrate/leftovers.js +119 -0
- package/dist/core/migrate/leftovers.js.map +1 -0
- package/dist/core/migrate/state.js +295 -0
- package/dist/core/migrate/state.js.map +1 -0
- package/dist/core/packages/cache.js +2 -1
- package/dist/core/packages/cache.js.map +1 -1
- package/dist/core/register.js +8 -0
- package/dist/core/register.js.map +1 -1
- package/dist/core/scaffold/capabilities.js +434 -0
- package/dist/core/scaffold/capabilities.js.map +1 -0
- package/dist/core/scaffold/generate.js +409 -0
- package/dist/core/scaffold/generate.js.map +1 -0
- package/dist/core/scaffold/infer.js +441 -0
- package/dist/core/scaffold/infer.js.map +1 -0
- package/dist/core/scaffold/overlay.js +290 -0
- package/dist/core/scaffold/overlay.js.map +1 -0
- package/dist/core/scaffold/readers/csv.js +146 -0
- package/dist/core/scaffold/readers/csv.js.map +1 -0
- package/dist/core/scaffold/readers/dataset.js +53 -0
- package/dist/core/scaffold/readers/dataset.js.map +1 -0
- package/dist/core/scaffold/readers/index.js +62 -0
- package/dist/core/scaffold/readers/index.js.map +1 -0
- package/dist/core/scaffold/readers/json.js +101 -0
- package/dist/core/scaffold/readers/json.js.map +1 -0
- package/dist/core/scaffold/readers/xlsx.js +81 -0
- package/dist/core/scaffold/readers/xlsx.js.map +1 -0
- package/dist/core/scaffold/suggestions.js +57 -0
- package/dist/core/scaffold/suggestions.js.map +1 -0
- package/dist/core/scaffold/templates.js +59 -0
- package/dist/core/scaffold/templates.js.map +1 -0
- package/dist/core/setup/audit.js +91 -0
- package/dist/core/setup/audit.js.map +1 -0
- package/dist/core/setup/capabilities.js +80 -0
- package/dist/core/setup/capabilities.js.map +1 -0
- package/dist/core/setup/context.js +118 -0
- package/dist/core/setup/context.js.map +1 -0
- package/dist/core/setup/rules/cell-data-type.js +40 -0
- package/dist/core/setup/rules/cell-data-type.js.map +1 -0
- package/dist/core/setup/rules/coldef-ownership.js +67 -0
- package/dist/core/setup/rules/coldef-ownership.js.map +1 -0
- package/dist/core/setup/rules/css-import.js +34 -0
- package/dist/core/setup/rules/css-import.js.map +1 -0
- package/dist/core/setup/rules/direct-grid.js +42 -0
- package/dist/core/setup/rules/direct-grid.js.map +1 -0
- package/dist/core/setup/rules/index.js +53 -0
- package/dist/core/setup/rules/index.js.map +1 -0
- package/dist/core/setup/rules/licence-literal.js +23 -0
- package/dist/core/setup/rules/licence-literal.js.map +1 -0
- package/dist/core/setup/rules/modules.js +86 -0
- package/dist/core/setup/rules/modules.js.map +1 -0
- package/dist/core/setup/rules/react-stable-refs.js +20 -0
- package/dist/core/setup/rules/react-stable-refs.js.map +1 -0
- package/dist/core/setup/rules/ready-hook.js +33 -0
- package/dist/core/setup/rules/ready-hook.js.map +1 -0
- package/dist/core/setup/rules/required-options.js +43 -0
- package/dist/core/setup/rules/required-options.js.map +1 -0
- package/dist/core/setup/rules/rule.js +10 -0
- package/dist/core/setup/rules/rule.js.map +1 -0
- package/dist/core/setup/rules/version-skew.js +65 -0
- package/dist/core/setup/rules/version-skew.js.map +1 -0
- package/dist/core/state/capabilities.js +78 -0
- package/dist/core/state/capabilities.js.map +1 -0
- package/dist/core/state/check.js +216 -0
- package/dist/core/state/check.js.map +1 -0
- package/dist/core/state/columns.js +130 -0
- package/dist/core/state/columns.js.map +1 -0
- package/dist/core/state/did-you-mean.js +83 -0
- package/dist/core/state/did-you-mean.js.map +1 -0
- package/dist/core/state/expressions.js +170 -0
- package/dist/core/state/expressions.js.map +1 -0
- package/dist/core/state/known-names.js +96 -0
- package/dist/core/state/known-names.js.map +1 -0
- package/dist/core/state/rules/aql-legacy-shape.js +42 -0
- package/dist/core/state/rules/aql-legacy-shape.js.map +1 -0
- package/dist/core/state/rules/aql-missing.js +21 -0
- package/dist/core/state/rules/aql-missing.js.map +1 -0
- package/dist/core/state/rules/aql-syntax.js +77 -0
- package/dist/core/state/rules/aql-syntax.js.map +1 -0
- package/dist/core/state/rules/calculated-settings.js +23 -0
- package/dist/core/state/rules/calculated-settings.js.map +1 -0
- package/dist/core/state/rules/column-id-exists.js +29 -0
- package/dist/core/state/rules/column-id-exists.js.map +1 -0
- package/dist/core/state/rules/dashboard-module-names.js +31 -0
- package/dist/core/state/rules/dashboard-module-names.js.map +1 -0
- package/dist/core/state/rules/dashboard-toolbar-names.js +48 -0
- package/dist/core/state/rules/dashboard-toolbar-names.js.map +1 -0
- package/dist/core/state/rules/format-column-pivot-display-format.js +43 -0
- package/dist/core/state/rules/format-column-pivot-display-format.js.map +1 -0
- package/dist/core/state/rules/helpers.js +39 -0
- package/dist/core/state/rules/helpers.js.map +1 -0
- package/dist/core/state/rules/index.js +80 -0
- package/dist/core/state/rules/index.js.map +1 -0
- package/dist/core/state/rules/layout-column-refs.js +60 -0
- package/dist/core/state/rules/layout-column-refs.js.map +1 -0
- package/dist/core/state/rules/layout-current-exists.js +27 -0
- package/dist/core/state/rules/layout-current-exists.js.map +1 -0
- package/dist/core/state/rules/layout-non-empty.js +32 -0
- package/dist/core/state/rules/layout-non-empty.js.map +1 -0
- package/dist/core/state/rules/rule.js +2 -0
- package/dist/core/state/rules/rule.js.map +1 -0
- package/dist/core/state/rules/scope-column-refs.js +32 -0
- package/dist/core/state/rules/scope-column-refs.js.map +1 -0
- package/dist/core/state/rules/scope-shape.js +61 -0
- package/dist/core/state/rules/scope-shape.js.map +1 -0
- package/dist/core/state/rules/state-unique-name.js +40 -0
- package/dist/core/state/rules/state-unique-name.js.map +1 -0
- package/dist/core/state/rules/state-unknown-section.js +30 -0
- package/dist/core/state/rules/state-unknown-section.js.map +1 -0
- package/dist/core/state/rules/type-discriminator.js +70 -0
- package/dist/core/state/rules/type-discriminator.js.map +1 -0
- package/dist/core/state/type-check.js +349 -83
- package/dist/core/state/type-check.js.map +1 -1
- package/dist/mcp/index.js +104 -16
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/server.js +110 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/skills/adaptable-debug/SKILL.md +145 -0
- package/dist/skills/adaptable-debug/VERSION.md +1 -0
- package/dist/skills/adaptable-debug/references/_shared/agents-snippet.md +3 -0
- package/dist/skills/adaptable-debug/references/_shared/capabilities.md +35 -0
- package/dist/skills/adaptable-debug/references/_shared/conversation.md +20 -0
- package/dist/skills/adaptable-debug/references/_shared/docs-protocol.md +36 -0
- package/dist/skills/adaptable-debug/references/_shared/grounding.md +54 -0
- package/dist/skills/adaptable-debug/references/_shared/guards.md +20 -0
- package/dist/skills/adaptable-debug/references/_shared/validation-loop.md +42 -0
- package/dist/skills/adaptable-debug/references/devtools-api.md +36 -0
- package/dist/skills/adaptable-debug/references/feedback-template.md +36 -0
- package/dist/skills/adaptable-debug/references/symptoms.md +37 -0
- package/dist/skills/adaptable-debug/references/ticket-template.md +50 -0
- package/dist/skills/adaptable-dev/SKILL.md +97 -0
- package/dist/skills/adaptable-dev/VERSION.md +1 -0
- package/dist/skills/adaptable-dev/references/_shared/agents-snippet.md +3 -0
- package/dist/skills/adaptable-dev/references/_shared/capabilities.md +35 -0
- package/dist/skills/adaptable-dev/references/_shared/conversation.md +20 -0
- package/dist/skills/adaptable-dev/references/_shared/docs-protocol.md +36 -0
- package/dist/skills/adaptable-dev/references/_shared/grounding.md +54 -0
- package/dist/skills/adaptable-dev/references/_shared/guards.md +20 -0
- package/dist/skills/adaptable-dev/references/_shared/validation-loop.md +42 -0
- package/dist/skills/adaptable-dev/references/recommendations.md +93 -0
- package/dist/skills/adaptable-setup/SKILL.md +158 -0
- package/dist/skills/adaptable-setup/VERSION.md +1 -0
- package/dist/skills/adaptable-setup/references/_shared/agents-snippet.md +3 -0
- package/dist/skills/adaptable-setup/references/_shared/capabilities.md +35 -0
- package/dist/skills/adaptable-setup/references/_shared/conversation.md +20 -0
- package/dist/skills/adaptable-setup/references/_shared/docs-protocol.md +36 -0
- package/dist/skills/adaptable-setup/references/_shared/grounding.md +54 -0
- package/dist/skills/adaptable-setup/references/_shared/guards.md +20 -0
- package/dist/skills/adaptable-setup/references/_shared/validation-loop.md +42 -0
- package/dist/skills/adaptable-setup/references/paths.md +45 -0
- package/dist/skills/adaptable-upgrade/SKILL.md +269 -0
- package/dist/skills/adaptable-upgrade/VERSION.md +1 -0
- package/dist/skills/adaptable-upgrade/references/_shared/agents-snippet.md +3 -0
- package/dist/skills/adaptable-upgrade/references/_shared/capabilities.md +35 -0
- package/dist/skills/adaptable-upgrade/references/_shared/conversation.md +20 -0
- package/dist/skills/adaptable-upgrade/references/_shared/docs-protocol.md +36 -0
- package/dist/skills/adaptable-upgrade/references/_shared/grounding.md +54 -0
- package/dist/skills/adaptable-upgrade/references/_shared/guards.md +20 -0
- package/dist/skills/adaptable-upgrade/references/_shared/validation-loop.md +42 -0
- package/dist/skills/adaptable-upgrade/references/apply-order.md +171 -0
- package/dist/skills/adaptable-upgrade/references/plan-preamble.md +151 -0
- package/dist/skills/adaptable-upgrade/scripts/adaptable.mjs +24 -0
- package/package.json +11 -5
- package/dist/core/state/rules.js +0 -417
- package/dist/core/state/rules.js.map +0 -1
package/dist/core/state/rules.js
DELETED
|
@@ -1,417 +0,0 @@
|
|
|
1
|
-
/** Top-level keys of v24 `InitialState` */
|
|
2
|
-
const INITIAL_STATE_KEYS = new Set([
|
|
3
|
-
'Alert',
|
|
4
|
-
'Application',
|
|
5
|
-
'CalculatedColumn',
|
|
6
|
-
'Charting',
|
|
7
|
-
'CustomSort',
|
|
8
|
-
'Dashboard',
|
|
9
|
-
'Export',
|
|
10
|
-
'FlashingCell',
|
|
11
|
-
'FormatColumn',
|
|
12
|
-
'FreeTextColumn',
|
|
13
|
-
'Layout',
|
|
14
|
-
'NamedQuery',
|
|
15
|
-
'Note',
|
|
16
|
-
'PlusMinus',
|
|
17
|
-
'QuickSearch',
|
|
18
|
-
'Shortcut',
|
|
19
|
-
'StatusBar',
|
|
20
|
-
'StyledColumn',
|
|
21
|
-
'Theme',
|
|
22
|
-
'ToolPanel',
|
|
23
|
-
'UserInterface',
|
|
24
|
-
]);
|
|
25
|
-
const GROUP_COLUMN_ID = 'ag-Grid-AutoColumn';
|
|
26
|
-
const SELECTION_COLUMN_ID = 'ag-Grid-SelectionColumn';
|
|
27
|
-
const TABLE_ONLY_KEYS = ['TableColumns', 'TableAggregationColumns', 'RowGroupedColumns'];
|
|
28
|
-
const PIVOT_ONLY_KEYS = [
|
|
29
|
-
'PivotColumns',
|
|
30
|
-
'PivotAggregationColumns',
|
|
31
|
-
'PivotGroupedColumns',
|
|
32
|
-
'PivotExpandLevel',
|
|
33
|
-
];
|
|
34
|
-
const isObj = (value) => !!value && typeof value === 'object' && !Array.isArray(value);
|
|
35
|
-
const asArray = (value) => (Array.isArray(value) ? value : []);
|
|
36
|
-
const STRING_LITERAL = /'(?:[^']|'')*'|"(?:[^"\\]|\\.)*"/g;
|
|
37
|
-
/**
|
|
38
|
-
* True when the text calls an aggregation in its catalogue form: braces for
|
|
39
|
-
* `SUM{[price]}`, parens for `PERCENTAGE([price])`
|
|
40
|
-
*/
|
|
41
|
-
export function containsAggregation(expression, aggregations) {
|
|
42
|
-
const text = expression.replace(STRING_LITERAL, "''");
|
|
43
|
-
for (const match of text.matchAll(/\b([A-Za-z_][A-Za-z0-9_]*)\s*([{(])/g)) {
|
|
44
|
-
const callForm = aggregations.get(match[1].toUpperCase());
|
|
45
|
-
if (callForm && callForm === (match[2] === '{' ? 'brace' : 'paren')) {
|
|
46
|
-
return true;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return false;
|
|
50
|
-
}
|
|
51
|
-
/** Keys of the pre-v24 expression wrapper object (`Rule: { BooleanExpression: '...' }`) */
|
|
52
|
-
const LEGACY_WRAPPER_KEYS = [
|
|
53
|
-
'BooleanExpression',
|
|
54
|
-
'ScalarExpression',
|
|
55
|
-
'AggregatedBooleanExpression',
|
|
56
|
-
'AggregatedScalarExpression',
|
|
57
|
-
'AggregatedExpression',
|
|
58
|
-
'ObservableExpression',
|
|
59
|
-
'Expression',
|
|
60
|
-
];
|
|
61
|
-
function expressionSlots(state) {
|
|
62
|
-
const slots = [];
|
|
63
|
-
const section = (key) => (isObj(state[key]) ? state[key] : {});
|
|
64
|
-
const each = (list, owner, fn) => asArray(list).forEach((item, i) => {
|
|
65
|
-
if (isObj(item)) {
|
|
66
|
-
fn(item, `${owner}[${i}]`);
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
each(section('NamedQuery').NamedQueries, 'NamedQuery.NamedQueries', (holder, owner) => {
|
|
70
|
-
const returnType = holder.ReturnType ?? 'boolean';
|
|
71
|
-
slots.push({
|
|
72
|
-
owner,
|
|
73
|
-
holder,
|
|
74
|
-
prop: 'Expression',
|
|
75
|
-
legacyProps: LEGACY_WRAPPER_KEYS.filter((k) => k !== 'Expression'),
|
|
76
|
-
required: true,
|
|
77
|
-
module: 'NamedQuery',
|
|
78
|
-
kind: returnType === 'boolean' ? 'boolean' : 'scalar',
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
each(section('CalculatedColumn').CalculatedColumns, 'CalculatedColumn.CalculatedColumns', (holder, owner) => {
|
|
82
|
-
slots.push({
|
|
83
|
-
owner,
|
|
84
|
-
holder,
|
|
85
|
-
prop: 'Expression',
|
|
86
|
-
legacyProps: ['Query'],
|
|
87
|
-
required: true,
|
|
88
|
-
module: 'CalculatedColumn',
|
|
89
|
-
kind: 'scalar',
|
|
90
|
-
aggregatedKind: 'aggregatedScalar',
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
each(section('Alert').AlertDefinitions, 'Alert.AlertDefinitions', (holder, owner) => {
|
|
94
|
-
slots.push({ owner, holder, prop: 'Rule', module: 'Alert', kind: 'boolean', aggregatedKind: 'aggregatedBoolean' });
|
|
95
|
-
});
|
|
96
|
-
const ruleSections = [
|
|
97
|
-
['FlashingCell', 'FlashingCellDefinitions'],
|
|
98
|
-
['FormatColumn', 'FormatColumns'],
|
|
99
|
-
['PlusMinus', 'PlusMinusNudges'],
|
|
100
|
-
];
|
|
101
|
-
for (const [module, list] of ruleSections) {
|
|
102
|
-
each(section(module)[list], `${module}.${list}`, (holder, owner) => {
|
|
103
|
-
slots.push({ owner, holder, prop: 'Rule', module, kind: 'boolean' });
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
each(section('Export').Reports, 'Export.Reports', (holder, owner) => {
|
|
107
|
-
slots.push({ owner, holder, prop: 'Expression', legacyProps: ['Query'], module: 'Export', kind: 'boolean' });
|
|
108
|
-
});
|
|
109
|
-
each(section('StyledColumn').StyledColumns, 'StyledColumn.StyledColumns', (styled, styledPath) => {
|
|
110
|
-
if (isObj(styled.BadgeStyle)) {
|
|
111
|
-
each(styled.BadgeStyle.Badges, `${styledPath}.BadgeStyle.Badges`, (holder, owner) => {
|
|
112
|
-
slots.push({ owner, holder, prop: 'Rule', module: 'StyledColumn', kind: 'boolean' });
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
each(section('Layout').Layouts, 'Layout.Layouts', (layout, layoutPath) => {
|
|
117
|
-
if (isObj(layout.GridFilter)) {
|
|
118
|
-
slots.push({
|
|
119
|
-
owner: `${layoutPath}.GridFilter`,
|
|
120
|
-
holder: layout.GridFilter,
|
|
121
|
-
prop: 'Expression',
|
|
122
|
-
module: 'GridFilter',
|
|
123
|
-
kind: 'boolean',
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
each(layout.ColumnFilters, `${layoutPath}.ColumnFilters`, (holder, owner) => {
|
|
127
|
-
slots.push({ owner, holder, prop: 'Expression', module: 'ColumnFilter', kind: 'boolean' });
|
|
128
|
-
});
|
|
129
|
-
});
|
|
130
|
-
return slots;
|
|
131
|
-
}
|
|
132
|
-
const legacyWrapperText = (value) => LEGACY_WRAPPER_KEYS.map((k) => value[k]).find((v) => typeof v === 'string');
|
|
133
|
-
/** The expression a slot holds, in v24 form or a pre-v24 shape (reported by checkStateRules) */
|
|
134
|
-
function readSlot(slot) {
|
|
135
|
-
for (const prop of [slot.prop, ...(slot.legacyProps ?? [])]) {
|
|
136
|
-
const value = slot.holder[prop];
|
|
137
|
-
if (value === undefined) {
|
|
138
|
-
continue;
|
|
139
|
-
}
|
|
140
|
-
const path = `${slot.owner}.${prop}`;
|
|
141
|
-
if (typeof value === 'string') {
|
|
142
|
-
return { path, text: value, legacy: prop !== slot.prop };
|
|
143
|
-
}
|
|
144
|
-
return { path, text: isObj(value) ? legacyWrapperText(value) : undefined, legacy: true };
|
|
145
|
-
}
|
|
146
|
-
return undefined;
|
|
147
|
-
}
|
|
148
|
-
/** Every AdapTableQL string in state, with its Module and the kind that Module evaluates it as */
|
|
149
|
-
export function collectExpressions(state, aggregations) {
|
|
150
|
-
const found = [];
|
|
151
|
-
for (const slot of expressionSlots(state)) {
|
|
152
|
-
const read = readSlot(slot);
|
|
153
|
-
if (!read?.text?.trim()) {
|
|
154
|
-
continue;
|
|
155
|
-
}
|
|
156
|
-
found.push({
|
|
157
|
-
path: read.path,
|
|
158
|
-
expression: read.text,
|
|
159
|
-
module: slot.module,
|
|
160
|
-
kind: slot.aggregatedKind && containsAggregation(read.text, aggregations) ? slot.aggregatedKind : slot.kind,
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
return found;
|
|
164
|
-
}
|
|
165
|
-
function expressionShapeIssues(state) {
|
|
166
|
-
const issues = [];
|
|
167
|
-
for (const slot of expressionSlots(state)) {
|
|
168
|
-
const read = readSlot(slot);
|
|
169
|
-
if (!read) {
|
|
170
|
-
if (slot.required) {
|
|
171
|
-
issues.push({
|
|
172
|
-
path: `${slot.owner}.${slot.prop}`,
|
|
173
|
-
severity: 'error',
|
|
174
|
-
message: `Missing \`${slot.prop}\` (the AdapTableQL expression string).`,
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
continue;
|
|
178
|
-
}
|
|
179
|
-
if (read.legacy) {
|
|
180
|
-
const v24 = read.text === undefined ? `'...'` : JSON.stringify(read.text);
|
|
181
|
-
issues.push({
|
|
182
|
-
path: read.path,
|
|
183
|
-
severity: 'error',
|
|
184
|
-
message: `Pre-v24 shape. In v24 \`${slot.prop}\` is the expression string itself: \`${slot.prop}: ${v24}\`. To convert a whole older state use migrate_state.`,
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
eachInSection(state, 'Alert', 'AlertDefinitions', (alert, path) => {
|
|
189
|
-
const rowEvent = typeof alert.Rule === 'string' && alert.Rule.match(/^\s*ROW_(ADDED|REMOVED)\s*[{(]/);
|
|
190
|
-
if (rowEvent) {
|
|
191
|
-
const trigger = rowEvent[1] === 'ADDED' ? 'Added' : 'Removed';
|
|
192
|
-
issues.push({
|
|
193
|
-
path: `${path}.Rule`,
|
|
194
|
-
severity: 'error',
|
|
195
|
-
message: `Pre-v24 row event rule. Use a Row Change Alert: \`Type: 'RowChange', RowChangeTrigger: '${trigger}', Scope: { All: true }\`; \`Rule\` is optional and filters the ${trigger.toLowerCase()} rows (e.g. \`[status] = 'New'\`).`,
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
});
|
|
199
|
-
eachInSection(state, 'CalculatedColumn', 'CalculatedColumns', (column, path) => {
|
|
200
|
-
const settings = column.CalculatedColumnSettings;
|
|
201
|
-
if (!isObj(settings) || typeof settings.DataType !== 'string') {
|
|
202
|
-
issues.push({
|
|
203
|
-
path: `${path}.CalculatedColumnSettings${isObj(settings) ? '.DataType' : ''}`,
|
|
204
|
-
severity: 'error',
|
|
205
|
-
message: `Calculated Columns need \`CalculatedColumnSettings: { DataType: ... }\` (the type the Expression returns, e.g. 'number').`,
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
});
|
|
209
|
-
return issues;
|
|
210
|
-
}
|
|
211
|
-
function eachInSection(state, module, list, fn) {
|
|
212
|
-
const sectionValue = state[module];
|
|
213
|
-
if (isObj(sectionValue)) {
|
|
214
|
-
asArray(sectionValue[list]).forEach((item, i) => {
|
|
215
|
-
if (isObj(item)) {
|
|
216
|
-
fn(item, `${module}.${list}[${i}]`);
|
|
217
|
-
}
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
/** Columns the state itself defines (Calculated and FreeText Columns), with their data types */
|
|
222
|
-
export function getStateColumnIds(state) {
|
|
223
|
-
const columns = [];
|
|
224
|
-
for (const [module, list, settings] of [
|
|
225
|
-
['CalculatedColumn', 'CalculatedColumns', 'CalculatedColumnSettings'],
|
|
226
|
-
['FreeTextColumn', 'FreeTextColumns', 'FreeTextColumnSettings'],
|
|
227
|
-
]) {
|
|
228
|
-
const sectionValue = state[module];
|
|
229
|
-
if (isObj(sectionValue)) {
|
|
230
|
-
for (const c of asArray(sectionValue[list])) {
|
|
231
|
-
if (isObj(c) && typeof c.ColumnId === 'string') {
|
|
232
|
-
const dataType = isObj(c[settings]) ? c[settings].DataType : undefined;
|
|
233
|
-
columns.push([c.ColumnId, typeof dataType === 'string' ? dataType : undefined]);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
return columns;
|
|
239
|
-
}
|
|
240
|
-
function layoutColumnRefs(layout) {
|
|
241
|
-
const refs = [];
|
|
242
|
-
for (const key of ['TableColumns', 'PivotColumns', 'RowGroupedColumns', 'PivotGroupedColumns']) {
|
|
243
|
-
for (const id of asArray(layout[key])) {
|
|
244
|
-
if (typeof id === 'string') {
|
|
245
|
-
refs.push({ key, columnId: id });
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
for (const key of ['ColumnSorts', 'ColumnFilters', 'TableAggregationColumns', 'PivotAggregationColumns']) {
|
|
250
|
-
for (const item of asArray(layout[key])) {
|
|
251
|
-
if (isObj(item) && typeof item.ColumnId === 'string') {
|
|
252
|
-
refs.push({ key, columnId: item.ColumnId });
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
for (const key of ['ColumnSizing', 'ColumnPinning', 'ColumnVisibility', 'ColumnHeaders']) {
|
|
257
|
-
if (isObj(layout[key])) {
|
|
258
|
-
for (const id of Object.keys(layout[key])) {
|
|
259
|
-
refs.push({ key, columnId: id });
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
return refs;
|
|
264
|
-
}
|
|
265
|
-
const isSpecialColumn = (id) => id === GROUP_COLUMN_ID || id === SELECTION_COLUMN_ID || id.startsWith(`${GROUP_COLUMN_ID}-`);
|
|
266
|
-
/**
|
|
267
|
-
* Semantic rules TypeScript cannot catch, plus the expression shapes agents
|
|
268
|
-
* most often get wrong (with the v24 rewrite); other shape errors are left to
|
|
269
|
-
* the type check
|
|
270
|
-
*/
|
|
271
|
-
export function checkStateRules(state, input) {
|
|
272
|
-
const issues = [];
|
|
273
|
-
if (!isObj(state)) {
|
|
274
|
-
return [{ path: '', severity: 'error', message: 'State must be a JSON object (the value of `initialState`).' }];
|
|
275
|
-
}
|
|
276
|
-
for (const key of Object.keys(state)) {
|
|
277
|
-
if (key === 'PredefinedConfig') {
|
|
278
|
-
issues.push({
|
|
279
|
-
path: key,
|
|
280
|
-
severity: 'error',
|
|
281
|
-
message: '`PredefinedConfig` is not part of AdapTable state: put its contents directly in `initialState`.',
|
|
282
|
-
});
|
|
283
|
-
}
|
|
284
|
-
else if (!INITIAL_STATE_KEYS.has(key)) {
|
|
285
|
-
issues.push({
|
|
286
|
-
path: key,
|
|
287
|
-
severity: 'warning',
|
|
288
|
-
message: `\`${key}\` is not an Initial State section; AdapTable ignores it. Check search_docs for where this belongs (it may be an Adaptable Option).`,
|
|
289
|
-
});
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
issues.push(...expressionShapeIssues(state));
|
|
293
|
-
const layoutState = isObj(state.Layout) ? state.Layout : undefined;
|
|
294
|
-
const layouts = asArray(layoutState?.Layouts);
|
|
295
|
-
if (!layouts.length) {
|
|
296
|
-
issues.push({
|
|
297
|
-
path: 'Layout.Layouts',
|
|
298
|
-
severity: 'warning',
|
|
299
|
-
message: 'No Layouts: Initial State must include at least one Layout unless `layoutOptions.autoCreateLayout` is set.',
|
|
300
|
-
});
|
|
301
|
-
}
|
|
302
|
-
const known = input.columnIds
|
|
303
|
-
? new Set([...input.columnIds, ...getStateColumnIds(state).map(([id]) => id)])
|
|
304
|
-
: undefined;
|
|
305
|
-
const names = new Map();
|
|
306
|
-
layouts.forEach((layout, i) => {
|
|
307
|
-
const path = `Layout.Layouts[${i}]`;
|
|
308
|
-
if (!isObj(layout)) {
|
|
309
|
-
issues.push({ path, severity: 'error', message: 'Layout must be an object.' });
|
|
310
|
-
return;
|
|
311
|
-
}
|
|
312
|
-
const name = layout.Name;
|
|
313
|
-
if (typeof name !== 'string' || !name) {
|
|
314
|
-
issues.push({ path: `${path}.Name`, severity: 'error', message: 'Layout needs a `Name`.' });
|
|
315
|
-
}
|
|
316
|
-
else if (names.has(name)) {
|
|
317
|
-
issues.push({
|
|
318
|
-
path: `${path}.Name`,
|
|
319
|
-
severity: 'error',
|
|
320
|
-
message: `Duplicate Layout name "${name}" (also Layout.Layouts[${names.get(name)}]); Layout names must be unique.`,
|
|
321
|
-
});
|
|
322
|
-
}
|
|
323
|
-
else {
|
|
324
|
-
names.set(name, i);
|
|
325
|
-
}
|
|
326
|
-
const isTable = layout.TableColumns !== undefined;
|
|
327
|
-
const isPivot = layout.PivotColumns !== undefined;
|
|
328
|
-
if (isTable && isPivot) {
|
|
329
|
-
issues.push({
|
|
330
|
-
path,
|
|
331
|
-
severity: 'error',
|
|
332
|
-
message: 'A Layout is either a Table Layout (`TableColumns`) or a Pivot Layout (`PivotColumns`), not both.',
|
|
333
|
-
});
|
|
334
|
-
}
|
|
335
|
-
else if (!isTable && !isPivot) {
|
|
336
|
-
issues.push({
|
|
337
|
-
path,
|
|
338
|
-
severity: 'error',
|
|
339
|
-
message: 'Layout needs `TableColumns` (Table Layout) or `PivotColumns` (Pivot Layout; use [] to show only aggregations).',
|
|
340
|
-
});
|
|
341
|
-
}
|
|
342
|
-
else {
|
|
343
|
-
const wrongKeys = (isTable ? PIVOT_ONLY_KEYS : TABLE_ONLY_KEYS).filter((k) => layout[k] !== undefined);
|
|
344
|
-
for (const key of wrongKeys) {
|
|
345
|
-
issues.push({
|
|
346
|
-
path: `${path}.${key}`,
|
|
347
|
-
severity: 'error',
|
|
348
|
-
message: isTable
|
|
349
|
-
? `\`${key}\` belongs to Pivot Layouts; this is a Table Layout.`
|
|
350
|
-
: `\`${key}\` belongs to Table Layouts; in Pivot Layouts use ${key === 'RowGroupedColumns' ? '`PivotGroupedColumns`' : key === 'TableAggregationColumns' ? '`PivotAggregationColumns`' : '`PivotColumns`'}.`,
|
|
351
|
-
});
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
if (isObj(layout.ColumnSizing)) {
|
|
355
|
-
for (const [columnId, sizing] of Object.entries(layout.ColumnSizing)) {
|
|
356
|
-
if (isObj(sizing) && sizing.Width !== undefined && sizing.Flex !== undefined) {
|
|
357
|
-
issues.push({
|
|
358
|
-
path: `${path}.ColumnSizing.${columnId}`,
|
|
359
|
-
severity: 'error',
|
|
360
|
-
message: 'Column sizing takes `Width` or `Flex`, not both.',
|
|
361
|
-
});
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
if (known) {
|
|
366
|
-
const reported = new Set();
|
|
367
|
-
for (const { key, columnId } of layoutColumnRefs(layout)) {
|
|
368
|
-
if (!known.has(columnId) && !isSpecialColumn(columnId) && !reported.has(columnId)) {
|
|
369
|
-
reported.add(columnId);
|
|
370
|
-
issues.push({
|
|
371
|
-
path: `${path}.${key}`,
|
|
372
|
-
severity: 'error',
|
|
373
|
-
message: `Column "${columnId}" is not in the grid's columns. If it is an Action Column or another column defined outside columnDefs, add it to columns.`,
|
|
374
|
-
});
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
});
|
|
379
|
-
// A Format Column's DisplayFormat is matched against the generated pivot result column
|
|
380
|
-
// (`pivot_<pivotColumn>_<value>_<columnId>`), so a ColumnIds scope on the aggregation column
|
|
381
|
-
// never reaches it; only Style and Rule are inherited from the base column
|
|
382
|
-
const pivotAggregated = new Map();
|
|
383
|
-
layouts.forEach((layout) => {
|
|
384
|
-
if (isObj(layout) && layout.PivotColumns !== undefined) {
|
|
385
|
-
for (const item of asArray(layout.PivotAggregationColumns)) {
|
|
386
|
-
if (isObj(item) && typeof item.ColumnId === 'string' && !pivotAggregated.has(item.ColumnId)) {
|
|
387
|
-
pivotAggregated.set(item.ColumnId, String(layout.Name));
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
});
|
|
392
|
-
if (pivotAggregated.size) {
|
|
393
|
-
eachInSection(state, 'FormatColumn', 'FormatColumns', (formatColumn, path) => {
|
|
394
|
-
if (formatColumn.DisplayFormat === undefined || !isObj(formatColumn.Scope)) {
|
|
395
|
-
return;
|
|
396
|
-
}
|
|
397
|
-
const hit = asArray(formatColumn.Scope.ColumnIds).find((id) => typeof id === 'string' && pivotAggregated.has(id));
|
|
398
|
-
if (hit) {
|
|
399
|
-
issues.push({
|
|
400
|
-
path: `${path}.Scope`,
|
|
401
|
-
severity: 'warning',
|
|
402
|
-
message: `DisplayFormat scoped to "${hit}" does not format its pivot result columns in Layout "${pivotAggregated.get(hit)}" (only Style and Rule are inherited). Scope the DisplayFormat with DataTypes (e.g. ['number']) or ColumnTypes (AG Grid \`colDef.type\`, copied onto pivot result columns), or list the generated pivot result column ids.`,
|
|
403
|
-
});
|
|
404
|
-
}
|
|
405
|
-
});
|
|
406
|
-
}
|
|
407
|
-
const current = layoutState?.CurrentLayout;
|
|
408
|
-
if (typeof current === 'string' && layouts.length && !names.has(current)) {
|
|
409
|
-
issues.push({
|
|
410
|
-
path: 'Layout.CurrentLayout',
|
|
411
|
-
severity: 'error',
|
|
412
|
-
message: `CurrentLayout "${current}" does not match any Layout Name (${[...names.keys()].map((n) => `"${n}"`).join(', ')}).`,
|
|
413
|
-
});
|
|
414
|
-
}
|
|
415
|
-
return issues;
|
|
416
|
-
}
|
|
417
|
-
//# sourceMappingURL=rules.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/core/state/rules.ts"],"names":[],"mappings":"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"}
|