@objectstack/cli 8.0.1 → 9.0.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.
- package/README.md +33 -1
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +40 -1
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +27 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts +18 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +46 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/lint.d.ts.map +1 -1
- package/dist/commands/lint.js +17 -0
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/package/publish.d.ts.map +1 -1
- package/dist/commands/package/publish.js +5 -2
- package/dist/commands/package/publish.js.map +1 -1
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +15 -79
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +37 -3
- package/dist/commands/validate.js.map +1 -1
- package/dist/utils/validate-widget-bindings.d.ts +74 -0
- package/dist/utils/validate-widget-bindings.d.ts.map +1 -0
- package/dist/utils/validate-widget-bindings.js +304 -0
- package/dist/utils/validate-widget-bindings.js.map +1 -0
- package/dist/utils/validate-widget-bindings.test.d.ts +2 -0
- package/dist/utils/validate-widget-bindings.test.d.ts.map +1 -0
- package/dist/utils/validate-widget-bindings.test.js +285 -0
- package/dist/utils/validate-widget-bindings.test.js.map +1 -0
- package/package.json +49 -46
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build-time dashboard widget binding diagnostics (issues #1719, #1721).
|
|
3
|
+
*
|
|
4
|
+
* Runs at `objectstack validate`/`compile`/`build` AFTER the stack has been
|
|
5
|
+
* schema-parsed, so every widget's `dataset` reference can be linked to its
|
|
6
|
+
* `defineDataset` and each entry in `dimensions`/`values` resolved to a
|
|
7
|
+
* declared dimension/measure. This is the semantic/cross-reference phase —
|
|
8
|
+
* the rules here cannot run during plain Zod parsing of the raw widget
|
|
9
|
+
* literal (the dataset may even live in another package of the stack).
|
|
10
|
+
*
|
|
11
|
+
* Reference-integrity rules (#1721) — severity `error`, the page is broken:
|
|
12
|
+
*
|
|
13
|
+
* - `widget-dataset-unknown` — `dataset` does not resolve to a declared
|
|
14
|
+
* `Dataset`.
|
|
15
|
+
* - `widget-dimension-unknown` — a `dimensions[]` entry is not a dimension
|
|
16
|
+
* name on the bound dataset.
|
|
17
|
+
* - `widget-measure-unknown` — a `values[]` entry is not a measure name on
|
|
18
|
+
* the bound dataset.
|
|
19
|
+
* - `chart-field-unknown` — a `chartConfig` binding names a field the query
|
|
20
|
+
* result will not contain: `xAxis.field` must be one of the widget's
|
|
21
|
+
* dimensions (or a dataset dimension), and each `yAxis[].field` /
|
|
22
|
+
* `series[].name` must be one of the widget's selected measures
|
|
23
|
+
* (`values`). Post-cutover (ADR-0021) the result rows are keyed by
|
|
24
|
+
* measure NAME (e.g. `sum_amount`), not the base column (`amount`) — a
|
|
25
|
+
* stale base-column reference renders the axis but an empty series.
|
|
26
|
+
*
|
|
27
|
+
* Advisory rules — severity `warning`, build stays green:
|
|
28
|
+
*
|
|
29
|
+
* - `chart-config-missing` — a chart-type widget (bar/line/pie/…) has no
|
|
30
|
+
* `chartConfig`, so the renderer cannot tell which measure to plot.
|
|
31
|
+
* - `table-count-only` (#1719) — a `table`/`pivot` widget whose selected
|
|
32
|
+
* measures are ALL `aggregate: 'count'` and which declares no
|
|
33
|
+
* `dimensions` asks the analytics service for a single summary row. That
|
|
34
|
+
* is the shape a `metric` widget wants — for a table it almost always
|
|
35
|
+
* means the author wanted a per-record listing, which is not an
|
|
36
|
+
* analytics dataset at all (model it as an object-bound ListView,
|
|
37
|
+
* ADR-0017). Evaluated on the WIDGET's binding, not the dataset.
|
|
38
|
+
*
|
|
39
|
+
* Warnings can be deliberately suppressed per widget via
|
|
40
|
+
* `suppressWarnings: ['<rule-id>']`; errors cannot — they describe a
|
|
41
|
+
* binding the analytics service cannot satisfy.
|
|
42
|
+
*/
|
|
43
|
+
export declare const WIDGET_DATASET_UNKNOWN = "widget-dataset-unknown";
|
|
44
|
+
export declare const WIDGET_DIMENSION_UNKNOWN = "widget-dimension-unknown";
|
|
45
|
+
export declare const WIDGET_MEASURE_UNKNOWN = "widget-measure-unknown";
|
|
46
|
+
export declare const CHART_FIELD_UNKNOWN = "chart-field-unknown";
|
|
47
|
+
export declare const CHART_CONFIG_MISSING = "chart-config-missing";
|
|
48
|
+
export declare const TABLE_COUNT_ONLY = "table-count-only";
|
|
49
|
+
export type WidgetBindingSeverity = 'error' | 'warning';
|
|
50
|
+
export interface WidgetBindingFinding {
|
|
51
|
+
/** `error` = unresolvable binding (broken page); `warning` = advisory. */
|
|
52
|
+
severity: WidgetBindingSeverity;
|
|
53
|
+
/** Diagnostic rule id (registry entry), e.g. `widget-measure-unknown`. */
|
|
54
|
+
rule: string;
|
|
55
|
+
/** Human-readable location, e.g. `dashboard "x" › widget "y"`. */
|
|
56
|
+
where: string;
|
|
57
|
+
/** Config path, e.g. `dashboards[0].widgets[3]`. */
|
|
58
|
+
path: string;
|
|
59
|
+
/** What is wrong. */
|
|
60
|
+
message: string;
|
|
61
|
+
/** How to fix (or deliberately suppress) it. */
|
|
62
|
+
hint: string;
|
|
63
|
+
}
|
|
64
|
+
type AnyRec = Record<string, unknown>;
|
|
65
|
+
/**
|
|
66
|
+
* Validate every dashboard widget's dataset binding. Returns the list of
|
|
67
|
+
* findings (empty = clean). Caller decides how to surface them: `error`
|
|
68
|
+
* findings describe bindings the analytics service cannot satisfy and
|
|
69
|
+
* should fail validate/build; `warning` findings are advisory and must
|
|
70
|
+
* never fail the build on their own.
|
|
71
|
+
*/
|
|
72
|
+
export declare function validateWidgetBindings(stack: AnyRec): WidgetBindingFinding[];
|
|
73
|
+
export {};
|
|
74
|
+
//# sourceMappingURL=validate-widget-bindings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-widget-bindings.d.ts","sourceRoot":"","sources":["../../src/utils/validate-widget-bindings.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAC/D,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAC/D,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,SAAS,CAAC;AAExD,MAAM,WAAW,oBAAoB;IACnC,0EAA0E;IAC1E,QAAQ,EAAE,qBAAqB,CAAC;IAChC,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,KAAK,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AA6EtC;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,EAAE,CA2L5E"}
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
// Copyright (c) 2026 ObjectStack. Licensed under the Apache-2.0 license.
|
|
2
|
+
/**
|
|
3
|
+
* Build-time dashboard widget binding diagnostics (issues #1719, #1721).
|
|
4
|
+
*
|
|
5
|
+
* Runs at `objectstack validate`/`compile`/`build` AFTER the stack has been
|
|
6
|
+
* schema-parsed, so every widget's `dataset` reference can be linked to its
|
|
7
|
+
* `defineDataset` and each entry in `dimensions`/`values` resolved to a
|
|
8
|
+
* declared dimension/measure. This is the semantic/cross-reference phase —
|
|
9
|
+
* the rules here cannot run during plain Zod parsing of the raw widget
|
|
10
|
+
* literal (the dataset may even live in another package of the stack).
|
|
11
|
+
*
|
|
12
|
+
* Reference-integrity rules (#1721) — severity `error`, the page is broken:
|
|
13
|
+
*
|
|
14
|
+
* - `widget-dataset-unknown` — `dataset` does not resolve to a declared
|
|
15
|
+
* `Dataset`.
|
|
16
|
+
* - `widget-dimension-unknown` — a `dimensions[]` entry is not a dimension
|
|
17
|
+
* name on the bound dataset.
|
|
18
|
+
* - `widget-measure-unknown` — a `values[]` entry is not a measure name on
|
|
19
|
+
* the bound dataset.
|
|
20
|
+
* - `chart-field-unknown` — a `chartConfig` binding names a field the query
|
|
21
|
+
* result will not contain: `xAxis.field` must be one of the widget's
|
|
22
|
+
* dimensions (or a dataset dimension), and each `yAxis[].field` /
|
|
23
|
+
* `series[].name` must be one of the widget's selected measures
|
|
24
|
+
* (`values`). Post-cutover (ADR-0021) the result rows are keyed by
|
|
25
|
+
* measure NAME (e.g. `sum_amount`), not the base column (`amount`) — a
|
|
26
|
+
* stale base-column reference renders the axis but an empty series.
|
|
27
|
+
*
|
|
28
|
+
* Advisory rules — severity `warning`, build stays green:
|
|
29
|
+
*
|
|
30
|
+
* - `chart-config-missing` — a chart-type widget (bar/line/pie/…) has no
|
|
31
|
+
* `chartConfig`, so the renderer cannot tell which measure to plot.
|
|
32
|
+
* - `table-count-only` (#1719) — a `table`/`pivot` widget whose selected
|
|
33
|
+
* measures are ALL `aggregate: 'count'` and which declares no
|
|
34
|
+
* `dimensions` asks the analytics service for a single summary row. That
|
|
35
|
+
* is the shape a `metric` widget wants — for a table it almost always
|
|
36
|
+
* means the author wanted a per-record listing, which is not an
|
|
37
|
+
* analytics dataset at all (model it as an object-bound ListView,
|
|
38
|
+
* ADR-0017). Evaluated on the WIDGET's binding, not the dataset.
|
|
39
|
+
*
|
|
40
|
+
* Warnings can be deliberately suppressed per widget via
|
|
41
|
+
* `suppressWarnings: ['<rule-id>']`; errors cannot — they describe a
|
|
42
|
+
* binding the analytics service cannot satisfy.
|
|
43
|
+
*/
|
|
44
|
+
export const WIDGET_DATASET_UNKNOWN = 'widget-dataset-unknown';
|
|
45
|
+
export const WIDGET_DIMENSION_UNKNOWN = 'widget-dimension-unknown';
|
|
46
|
+
export const WIDGET_MEASURE_UNKNOWN = 'widget-measure-unknown';
|
|
47
|
+
export const CHART_FIELD_UNKNOWN = 'chart-field-unknown';
|
|
48
|
+
export const CHART_CONFIG_MISSING = 'chart-config-missing';
|
|
49
|
+
export const TABLE_COUNT_ONLY = 'table-count-only';
|
|
50
|
+
/** Coerce a collection (array or name-keyed map) to an array. */
|
|
51
|
+
function asArray(v) {
|
|
52
|
+
if (Array.isArray(v))
|
|
53
|
+
return v;
|
|
54
|
+
if (v && typeof v === 'object') {
|
|
55
|
+
return Object.entries(v).map(([name, def]) => ({ name, ...def }));
|
|
56
|
+
}
|
|
57
|
+
return [];
|
|
58
|
+
}
|
|
59
|
+
function asStrings(v) {
|
|
60
|
+
return Array.isArray(v) ? v.filter((s) => typeof s === 'string') : [];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Chart families whose renderer needs a `chartConfig` measure mapping.
|
|
64
|
+
* Single-value types (metric/kpi/gauge/…) plot their lone value and tabular
|
|
65
|
+
* types (table/pivot) render every column, so they are exempt.
|
|
66
|
+
*/
|
|
67
|
+
const CHART_TYPES = new Set([
|
|
68
|
+
'bar', 'horizontal-bar', 'column',
|
|
69
|
+
'line', 'area',
|
|
70
|
+
'pie', 'donut', 'funnel',
|
|
71
|
+
'scatter', 'treemap', 'sankey', 'radar',
|
|
72
|
+
]);
|
|
73
|
+
function levenshtein(a, b) {
|
|
74
|
+
const m = a.length, n = b.length;
|
|
75
|
+
let prev = Array.from({ length: n + 1 }, (_, j) => j);
|
|
76
|
+
for (let i = 1; i <= m; i++) {
|
|
77
|
+
const cur = [i];
|
|
78
|
+
for (let j = 1; j <= n; j++) {
|
|
79
|
+
cur[j] = Math.min(prev[j] + 1, cur[j - 1] + 1, prev[j - 1] + (a[i - 1] === b[j - 1] ? 0 : 1));
|
|
80
|
+
}
|
|
81
|
+
prev = cur;
|
|
82
|
+
}
|
|
83
|
+
return prev[n];
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Nearest declared name for a typo'd/stale reference, or undefined when
|
|
87
|
+
* nothing is close. Containment is checked first because the cutover's
|
|
88
|
+
* canonical drift is base column → prefixed measure name (`amount` →
|
|
89
|
+
* `sum_amount`), which is far in edit distance but obvious to a human.
|
|
90
|
+
*/
|
|
91
|
+
function didYouMean(input, candidates) {
|
|
92
|
+
let best;
|
|
93
|
+
let bestScore = Infinity;
|
|
94
|
+
for (const c of candidates) {
|
|
95
|
+
let score;
|
|
96
|
+
if (input.length >= 3 && (c.includes(input) || input.includes(c))) {
|
|
97
|
+
score = Math.abs(c.length - input.length);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
const d = levenshtein(input, c);
|
|
101
|
+
if (d > Math.max(2, Math.floor(input.length / 3)))
|
|
102
|
+
continue;
|
|
103
|
+
score = 100 + d;
|
|
104
|
+
}
|
|
105
|
+
if (score < bestScore) {
|
|
106
|
+
bestScore = score;
|
|
107
|
+
best = c;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return best;
|
|
111
|
+
}
|
|
112
|
+
function suggest(input, candidates) {
|
|
113
|
+
const s = didYouMean(input, candidates);
|
|
114
|
+
return s ? ` Did you mean "${s}"?` : '';
|
|
115
|
+
}
|
|
116
|
+
function list(names) {
|
|
117
|
+
const arr = [...names];
|
|
118
|
+
return arr.length > 0 ? arr.join(', ') : '(none)';
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Validate every dashboard widget's dataset binding. Returns the list of
|
|
122
|
+
* findings (empty = clean). Caller decides how to surface them: `error`
|
|
123
|
+
* findings describe bindings the analytics service cannot satisfy and
|
|
124
|
+
* should fail validate/build; `warning` findings are advisory and must
|
|
125
|
+
* never fail the build on their own.
|
|
126
|
+
*/
|
|
127
|
+
export function validateWidgetBindings(stack) {
|
|
128
|
+
const findings = [];
|
|
129
|
+
const datasets = new Map();
|
|
130
|
+
for (const ds of asArray(stack.datasets)) {
|
|
131
|
+
if (typeof ds.name === 'string')
|
|
132
|
+
datasets.set(ds.name, ds);
|
|
133
|
+
}
|
|
134
|
+
const dashboards = asArray(stack.dashboards);
|
|
135
|
+
for (let i = 0; i < dashboards.length; i++) {
|
|
136
|
+
const dash = dashboards[i];
|
|
137
|
+
const dashName = typeof dash.name === 'string' ? dash.name : `(dashboard ${i})`;
|
|
138
|
+
const widgets = Array.isArray(dash.widgets) ? dash.widgets : [];
|
|
139
|
+
for (let j = 0; j < widgets.length; j++) {
|
|
140
|
+
const w = widgets[j];
|
|
141
|
+
const widgetId = typeof w.id === 'string' ? w.id : `(widget ${j})`;
|
|
142
|
+
const where = `dashboard "${dashName}" › widget "${widgetId}"`;
|
|
143
|
+
const path = `dashboards[${i}].widgets[${j}]`;
|
|
144
|
+
const suppressed = (rule) => Array.isArray(w.suppressWarnings) && w.suppressWarnings.includes(rule);
|
|
145
|
+
const push = (f) => {
|
|
146
|
+
if (f.severity === 'warning' && suppressed(f.rule))
|
|
147
|
+
return;
|
|
148
|
+
findings.push({ ...f, where, path });
|
|
149
|
+
};
|
|
150
|
+
// ── (a) dataset reference resolves ──
|
|
151
|
+
const dsName = typeof w.dataset === 'string' ? w.dataset : undefined;
|
|
152
|
+
const dataset = dsName ? datasets.get(dsName) : undefined;
|
|
153
|
+
if (dsName && !dataset) {
|
|
154
|
+
push({
|
|
155
|
+
severity: 'error',
|
|
156
|
+
rule: WIDGET_DATASET_UNKNOWN,
|
|
157
|
+
message: `dataset "${dsName}" does not resolve to a declared dataset.`,
|
|
158
|
+
hint: `Declared datasets: ${list(datasets.keys())}.${suggest(dsName, datasets.keys())} ` +
|
|
159
|
+
`Define the dataset with defineDataset() or fix the reference (ADR-0021).`,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
// Without a resolved dataset there is nothing to check names against.
|
|
163
|
+
if (!dataset)
|
|
164
|
+
continue;
|
|
165
|
+
const dimensionNames = new Set();
|
|
166
|
+
for (const d of asArray(dataset.dimensions)) {
|
|
167
|
+
if (typeof d.name === 'string')
|
|
168
|
+
dimensionNames.add(d.name);
|
|
169
|
+
}
|
|
170
|
+
const measures = new Map();
|
|
171
|
+
for (const m of asArray(dataset.measures)) {
|
|
172
|
+
if (typeof m.name === 'string')
|
|
173
|
+
measures.set(m.name, m);
|
|
174
|
+
}
|
|
175
|
+
// ── (b) every dimensions[] entry is a dataset dimension ──
|
|
176
|
+
const dims = asStrings(w.dimensions);
|
|
177
|
+
for (let k = 0; k < dims.length; k++) {
|
|
178
|
+
if (dimensionNames.has(dims[k]))
|
|
179
|
+
continue;
|
|
180
|
+
push({
|
|
181
|
+
severity: 'error',
|
|
182
|
+
rule: WIDGET_DIMENSION_UNKNOWN,
|
|
183
|
+
message: `dimensions[${k}] "${dims[k]}" is not a dimension of dataset ` +
|
|
184
|
+
`"${dsName}" (declared dimensions: ${list(dimensionNames)}).`,
|
|
185
|
+
hint: `Widgets select dataset dimensions BY NAME.${suggest(dims[k], dimensionNames)} ` +
|
|
186
|
+
`Add the dimension to the dataset or fix the reference.`,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
// ── (c) every values[] entry is a dataset measure ──
|
|
190
|
+
const values = asStrings(w.values);
|
|
191
|
+
for (let k = 0; k < values.length; k++) {
|
|
192
|
+
if (measures.has(values[k]))
|
|
193
|
+
continue;
|
|
194
|
+
push({
|
|
195
|
+
severity: 'error',
|
|
196
|
+
rule: WIDGET_MEASURE_UNKNOWN,
|
|
197
|
+
message: `values[${k}] "${values[k]}" is not a measure of dataset ` +
|
|
198
|
+
`"${dsName}" (declared measures: ${list(measures.keys())}).`,
|
|
199
|
+
hint: `Widgets select dataset measures BY NAME, not by base column.` +
|
|
200
|
+
`${suggest(values[k], measures.keys())} ` +
|
|
201
|
+
`Add the measure to the dataset or fix the reference.`,
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
// ── (d) chartConfig bindings resolve against the widget's selection ──
|
|
205
|
+
const chartConfig = (w.chartConfig && typeof w.chartConfig === 'object')
|
|
206
|
+
? w.chartConfig
|
|
207
|
+
: undefined;
|
|
208
|
+
const isChartType = typeof w.type === 'string' && CHART_TYPES.has(w.type);
|
|
209
|
+
if (chartConfig) {
|
|
210
|
+
// The query result carries the widget's selected dimensions and
|
|
211
|
+
// measures; resolve every chartConfig field against that shape.
|
|
212
|
+
const selectedValues = new Set(values.filter((v) => measures.has(v)));
|
|
213
|
+
const xAxis = (chartConfig.xAxis && typeof chartConfig.xAxis === 'object')
|
|
214
|
+
? chartConfig.xAxis
|
|
215
|
+
: undefined;
|
|
216
|
+
// A field naming an entry of the widget's own (already-validated)
|
|
217
|
+
// selection is not re-reported here — rules (b)/(c) own that error.
|
|
218
|
+
if (xAxis && typeof xAxis.field === 'string'
|
|
219
|
+
&& !dimensionNames.has(xAxis.field) && !dims.includes(xAxis.field)) {
|
|
220
|
+
push({
|
|
221
|
+
severity: 'error',
|
|
222
|
+
rule: CHART_FIELD_UNKNOWN,
|
|
223
|
+
message: `chartConfig.xAxis.field "${xAxis.field}" does not resolve to a ` +
|
|
224
|
+
`dimension of dataset "${dsName}" (declared dimensions: ${list(dimensionNames)}).`,
|
|
225
|
+
hint: `Point xAxis.field at a dataset dimension name.${suggest(xAxis.field, dimensionNames)}`,
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
const measureField = (label, field) => {
|
|
229
|
+
if (values.includes(field))
|
|
230
|
+
return; // resolvable, or already errored via rule (c)
|
|
231
|
+
const declaredButUnselected = measures.has(field);
|
|
232
|
+
push({
|
|
233
|
+
severity: 'error',
|
|
234
|
+
rule: CHART_FIELD_UNKNOWN,
|
|
235
|
+
message: declaredButUnselected
|
|
236
|
+
? `chartConfig.${label} "${field}" is a measure of dataset "${dsName}" ` +
|
|
237
|
+
`but is not selected in the widget's values (${list(values)}), so the ` +
|
|
238
|
+
`query result will not contain it.`
|
|
239
|
+
: `chartConfig.${label} "${field}" does not resolve to a measure of ` +
|
|
240
|
+
`dataset "${dsName}" (declared measures: ${list(measures.keys())}).`,
|
|
241
|
+
hint: declaredButUnselected
|
|
242
|
+
? `Add "${field}" to the widget's values, or bind the chart to a selected measure.`
|
|
243
|
+
: `Post-cutover data is keyed by the dataset's measure NAME, not the ` +
|
|
244
|
+
`base column.${suggest(field, selectedValues.size > 0 ? selectedValues : measures.keys())}`,
|
|
245
|
+
});
|
|
246
|
+
};
|
|
247
|
+
const yAxes = Array.isArray(chartConfig.yAxis) ? chartConfig.yAxis : [];
|
|
248
|
+
for (let k = 0; k < yAxes.length; k++) {
|
|
249
|
+
const field = yAxes[k]?.field;
|
|
250
|
+
if (typeof field === 'string')
|
|
251
|
+
measureField(`yAxis[${k}].field`, field);
|
|
252
|
+
}
|
|
253
|
+
const series = Array.isArray(chartConfig.series) ? chartConfig.series : [];
|
|
254
|
+
for (let k = 0; k < series.length; k++) {
|
|
255
|
+
const name = series[k]?.name;
|
|
256
|
+
if (typeof name === 'string')
|
|
257
|
+
measureField(`series[${k}].name`, name);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
else if (isChartType) {
|
|
261
|
+
push({
|
|
262
|
+
severity: 'warning',
|
|
263
|
+
rule: CHART_CONFIG_MISSING,
|
|
264
|
+
message: `chart-type widget ('${w.type}') has no chartConfig — the renderer ` +
|
|
265
|
+
`cannot determine which measure to plot, so the series renders empty.`,
|
|
266
|
+
hint: `Add chartConfig with xAxis.field set to a dimension (${list(dims)}) and ` +
|
|
267
|
+
`yAxis[].field set to a measure name (${list(values)}). If the default ` +
|
|
268
|
+
`rendering is intentional, suppress with: suppressWarnings: ['${CHART_CONFIG_MISSING}']`,
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
// ── (e) table/pivot bound to a count-only, dimensionless selection ──
|
|
272
|
+
if (w.type !== 'table' && w.type !== 'pivot')
|
|
273
|
+
continue;
|
|
274
|
+
// Grouped by at least one dimension → genuinely aggregated rows.
|
|
275
|
+
if (dims.length > 0)
|
|
276
|
+
continue;
|
|
277
|
+
if (values.length === 0)
|
|
278
|
+
continue;
|
|
279
|
+
const resolved = values.map((v) => measures.get(v));
|
|
280
|
+
// An unresolvable measure name already errored above — don't guess here.
|
|
281
|
+
if (resolved.some((m) => !m))
|
|
282
|
+
continue;
|
|
283
|
+
// Derived measures combine other measures; treat them as non-count even
|
|
284
|
+
// when their (ignored) `aggregate` says otherwise.
|
|
285
|
+
const countOnly = resolved.every((m) => m.aggregate === 'count' && !m.derived);
|
|
286
|
+
if (!countOnly)
|
|
287
|
+
continue;
|
|
288
|
+
push({
|
|
289
|
+
severity: 'warning',
|
|
290
|
+
rule: TABLE_COUNT_ONLY,
|
|
291
|
+
message: `a '${w.type}' widget bound to dataset "${dsName}" selects only count ` +
|
|
292
|
+
`measure(s) (${values.join(', ')}) and no dimensions, so it renders a ` +
|
|
293
|
+
`single summary row — not a per-record list.`,
|
|
294
|
+
hint: `A flat record listing is not an analytics dataset. Model it as an ` +
|
|
295
|
+
`object-bound ListView (ADR-0017) surfaced through app navigation, and ` +
|
|
296
|
+
`use a 'metric' widget here if you only need the count. If a single-row ` +
|
|
297
|
+
`table is intentional, add an explicit dimension or suppress with: ` +
|
|
298
|
+
`suppressWarnings: ['${TABLE_COUNT_ONLY}']`,
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
return findings;
|
|
303
|
+
}
|
|
304
|
+
//# sourceMappingURL=validate-widget-bindings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-widget-bindings.js","sourceRoot":"","sources":["../../src/utils/validate-widget-bindings.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAC/D,MAAM,CAAC,MAAM,wBAAwB,GAAG,0BAA0B,CAAC;AACnE,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AACzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAC3D,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAqBnD,iEAAiE;AACjE,SAAS,OAAO,CAAC,CAAU;IACzB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,CAAa,CAAC;IAC3C,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,OAAO,CAAC,CAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAI,GAAc,EAAE,CAAC,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,SAAS,CAAC,CAAU;IAC3B,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrF,CAAC;AAED;;;;GAIG;AACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,KAAK,EAAE,gBAAgB,EAAE,QAAQ;IACjC,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,OAAO,EAAE,QAAQ;IACxB,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO;CACxC,CAAC,CAAC;AAEH,SAAS,WAAW,CAAC,CAAS,EAAE,CAAS;IACvC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CACf,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EACX,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EACd,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC9C,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,GAAG,CAAC;IACb,CAAC;IACD,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,KAAa,EAAE,UAA4B;IAC7D,IAAI,IAAwB,CAAC;IAC7B,IAAI,SAAS,GAAG,QAAQ,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,KAAa,CAAC;QAClB,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAAE,SAAS;YAC5D,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;YAAC,SAAS,GAAG,KAAK,CAAC;YAAC,IAAI,GAAG,CAAC,CAAC;QAAC,CAAC;IACzD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,OAAO,CAAC,KAAa,EAAE,UAA4B;IAC1D,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACxC,OAAO,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,IAAI,CAAC,KAAuB;IACnC,MAAM,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACvB,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAE5C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzC,IAAI,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ;YAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC;QAChF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,OAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;QAE9E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC;YACnE,MAAM,KAAK,GAAG,cAAc,QAAQ,eAAe,QAAQ,GAAG,CAAC;YAC/D,MAAM,IAAI,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC;YAC9C,MAAM,UAAU,GAAG,CAAC,IAAY,EAAW,EAAE,CAC3C,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACzE,MAAM,IAAI,GAAG,CAAC,CAA+C,EAAQ,EAAE;gBACrE,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;oBAAE,OAAO;gBAC3D,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACvC,CAAC,CAAC;YAEF,uCAAuC;YACvC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YACrE,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1D,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBACvB,IAAI,CAAC;oBACH,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,sBAAsB;oBAC5B,OAAO,EAAE,YAAY,MAAM,2CAA2C;oBACtE,IAAI,EACF,sBAAsB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG;wBAClF,0EAA0E;iBAC7E,CAAC,CAAC;YACL,CAAC;YACD,sEAAsE;YACtE,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;YACzC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5C,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;oBAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC7D,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;YAC3C,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1C,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;oBAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC;YAED,4DAA4D;YAC5D,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAAE,SAAS;gBAC1C,IAAI,CAAC;oBACH,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,wBAAwB;oBAC9B,OAAO,EACL,cAAc,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,kCAAkC;wBAC9D,IAAI,MAAM,2BAA2B,IAAI,CAAC,cAAc,CAAC,IAAI;oBAC/D,IAAI,EACF,6CAA6C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG;wBAChF,wDAAwD;iBAC3D,CAAC,CAAC;YACL,CAAC;YAED,sDAAsD;YACtD,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAAE,SAAS;gBACtC,IAAI,CAAC;oBACH,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,sBAAsB;oBAC5B,OAAO,EACL,UAAU,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,gCAAgC;wBAC1D,IAAI,MAAM,yBAAyB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI;oBAC9D,IAAI,EACF,8DAA8D;wBAC9D,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG;wBACzC,sDAAsD;iBACzD,CAAC,CAAC;YACL,CAAC;YAED,wEAAwE;YACxE,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,WAAW,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC;gBACtE,CAAC,CAAE,CAAC,CAAC,WAAsB;gBAC3B,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAE1E,IAAI,WAAW,EAAE,CAAC;gBAChB,gEAAgE;gBAChE,gEAAgE;gBAChE,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEtE,MAAM,KAAK,GAAG,CAAC,WAAW,CAAC,KAAK,IAAI,OAAO,WAAW,CAAC,KAAK,KAAK,QAAQ,CAAC;oBACxE,CAAC,CAAE,WAAW,CAAC,KAAgB;oBAC/B,CAAC,CAAC,SAAS,CAAC;gBACd,kEAAkE;gBAClE,oEAAoE;gBACpE,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;uBACrC,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvE,IAAI,CAAC;wBACH,QAAQ,EAAE,OAAO;wBACjB,IAAI,EAAE,mBAAmB;wBACzB,OAAO,EACL,4BAA4B,KAAK,CAAC,KAAK,0BAA0B;4BACjE,yBAAyB,MAAM,2BAA2B,IAAI,CAAC,cAAc,CAAC,IAAI;wBACpF,IAAI,EAAE,iDAAiD,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE;qBAC9F,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,KAAa,EAAQ,EAAE;oBAC1D,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;wBAAE,OAAO,CAAC,8CAA8C;oBAClF,MAAM,qBAAqB,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBAClD,IAAI,CAAC;wBACH,QAAQ,EAAE,OAAO;wBACjB,IAAI,EAAE,mBAAmB;wBACzB,OAAO,EAAE,qBAAqB;4BAC5B,CAAC,CAAC,eAAe,KAAK,KAAK,KAAK,8BAA8B,MAAM,IAAI;gCACtE,+CAA+C,IAAI,CAAC,MAAM,CAAC,YAAY;gCACvE,mCAAmC;4BACrC,CAAC,CAAC,eAAe,KAAK,KAAK,KAAK,qCAAqC;gCACnE,YAAY,MAAM,yBAAyB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI;wBACxE,IAAI,EAAE,qBAAqB;4BACzB,CAAC,CAAC,QAAQ,KAAK,oEAAoE;4BACnF,CAAC,CAAC,oEAAoE;gCACpE,eAAe,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE;qBAChG,CAAC,CAAC;gBACL,CAAC,CAAC;gBAEF,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,WAAW,CAAC,KAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACtC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;oBAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ;wBAAE,YAAY,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAC1E,CAAC;gBACD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,WAAW,CAAC,MAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACvC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;oBAC7B,IAAI,OAAO,IAAI,KAAK,QAAQ;wBAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;iBAAM,IAAI,WAAW,EAAE,CAAC;gBACvB,IAAI,CAAC;oBACH,QAAQ,EAAE,SAAS;oBACnB,IAAI,EAAE,oBAAoB;oBAC1B,OAAO,EACL,uBAAuB,CAAC,CAAC,IAAI,uCAAuC;wBACpE,sEAAsE;oBACxE,IAAI,EACF,wDAAwD,IAAI,CAAC,IAAI,CAAC,QAAQ;wBAC1E,wCAAwC,IAAI,CAAC,MAAM,CAAC,oBAAoB;wBACxE,gEAAgE,oBAAoB,IAAI;iBAC3F,CAAC,CAAC;YACL,CAAC;YAED,uEAAuE;YACvE,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;gBAAE,SAAS;YACvD,iEAAiE;YACjE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,SAAS;YAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,yEAAyE;YACzE,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAE,SAAS;YAEvC,wEAAwE;YACxE,mDAAmD;YACnD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC,SAAS,KAAK,OAAO,IAAI,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC;YACjF,IAAI,CAAC,SAAS;gBAAE,SAAS;YAEzB,IAAI,CAAC;gBACH,QAAQ,EAAE,SAAS;gBACnB,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EACL,MAAM,CAAC,CAAC,IAAI,8BAA8B,MAAM,uBAAuB;oBACvE,eAAe,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,uCAAuC;oBACvE,6CAA6C;gBAC/C,IAAI,EACF,oEAAoE;oBACpE,wEAAwE;oBACxE,yEAAyE;oBACzE,oEAAoE;oBACpE,uBAAuB,gBAAgB,IAAI;aAC9C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-widget-bindings.test.d.ts","sourceRoot":"","sources":["../../src/utils/validate-widget-bindings.test.ts"],"names":[],"mappings":""}
|