@refrakt-md/runes 0.31.0 → 0.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +44 -8
- package/dist/config.js.map +1 -1
- package/dist/data-emit.d.ts +1 -0
- package/dist/data-emit.d.ts.map +1 -1
- package/dist/data-emit.js +40 -0
- package/dist/data-emit.js.map +1 -1
- package/dist/data-pipeline.d.ts +10 -4
- package/dist/data-pipeline.d.ts.map +1 -1
- package/dist/data-pipeline.js +296 -30
- package/dist/data-pipeline.js.map +1 -1
- package/dist/data-projection.d.ts +21 -0
- package/dist/data-projection.d.ts.map +1 -1
- package/dist/data-projection.js +37 -0
- package/dist/data-projection.js.map +1 -1
- package/dist/include-pipeline.d.ts +52 -0
- package/dist/include-pipeline.d.ts.map +1 -0
- package/dist/include-pipeline.js +204 -0
- package/dist/include-pipeline.js.map +1 -0
- package/dist/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/component.d.ts +20 -0
- package/dist/lib/component.d.ts.map +1 -1
- package/dist/lib/component.js +35 -0
- package/dist/lib/component.js.map +1 -1
- package/dist/lib/index.d.ts +54 -4
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +44 -10
- package/dist/lib/index.js.map +1 -1
- package/dist/nodes.d.ts.map +1 -1
- package/dist/nodes.js +15 -11
- package/dist/nodes.js.map +1 -1
- package/dist/reference.d.ts +37 -2
- package/dist/reference.d.ts.map +1 -1
- package/dist/reference.js +73 -7
- package/dist/reference.js.map +1 -1
- package/dist/schema-universals.d.ts +43 -0
- package/dist/schema-universals.d.ts.map +1 -0
- package/dist/schema-universals.js +39 -0
- package/dist/schema-universals.js.map +1 -0
- package/dist/tags/accordion.d.ts.map +1 -1
- package/dist/tags/accordion.js +24 -5
- package/dist/tags/accordion.js.map +1 -1
- package/dist/tags/annotate.d.ts.map +1 -1
- package/dist/tags/annotate.js +1 -0
- package/dist/tags/annotate.js.map +1 -1
- package/dist/tags/badge.d.ts.map +1 -1
- package/dist/tags/badge.js +3 -0
- package/dist/tags/badge.js.map +1 -1
- package/dist/tags/bg.d.ts.map +1 -1
- package/dist/tags/bg.js +3 -0
- package/dist/tags/bg.js.map +1 -1
- package/dist/tags/blog.d.ts.map +1 -1
- package/dist/tags/blog.js +1 -0
- package/dist/tags/blog.js.map +1 -1
- package/dist/tags/card.d.ts.map +1 -1
- package/dist/tags/card.js +1 -0
- package/dist/tags/card.js.map +1 -1
- package/dist/tags/code.d.ts +25 -0
- package/dist/tags/code.d.ts.map +1 -0
- package/dist/tags/code.js +36 -0
- package/dist/tags/code.js.map +1 -0
- package/dist/tags/data.d.ts.map +1 -1
- package/dist/tags/data.js +26 -4
- package/dist/tags/data.js.map +1 -1
- package/dist/tags/drawer.d.ts.map +1 -1
- package/dist/tags/drawer.js +1 -0
- package/dist/tags/drawer.js.map +1 -1
- package/dist/tags/expand.d.ts.map +1 -1
- package/dist/tags/expand.js +3 -0
- package/dist/tags/expand.js.map +1 -1
- package/dist/tags/icon.d.ts +10 -0
- package/dist/tags/icon.d.ts.map +1 -1
- package/dist/tags/icon.js +13 -0
- package/dist/tags/icon.js.map +1 -1
- package/dist/tags/include.d.ts +24 -0
- package/dist/tags/include.d.ts.map +1 -0
- package/dist/tags/include.js +46 -0
- package/dist/tags/include.js.map +1 -0
- package/dist/tags/mediatext.d.ts.map +1 -1
- package/dist/tags/mediatext.js +1 -0
- package/dist/tags/mediatext.js.map +1 -1
- package/dist/tags/pullquote.d.ts.map +1 -1
- package/dist/tags/pullquote.js +1 -0
- package/dist/tags/pullquote.js.map +1 -1
- package/dist/tags/sidenote.d.ts.map +1 -1
- package/dist/tags/sidenote.js +1 -0
- package/dist/tags/sidenote.js.map +1 -1
- package/dist/tags/snippet.d.ts.map +1 -1
- package/dist/tags/snippet.js +14 -6
- package/dist/tags/snippet.js.map +1 -1
- package/dist/tags/textblock.d.ts.map +1 -1
- package/dist/tags/textblock.js +1 -0
- package/dist/tags/textblock.js.map +1 -1
- package/dist/tags/tint.d.ts.map +1 -1
- package/dist/tags/tint.js +3 -0
- package/dist/tags/tint.js.map +1 -1
- package/dist/tags/xref.d.ts.map +1 -1
- package/dist/tags/xref.js +3 -0
- package/dist/tags/xref.js.map +1 -1
- package/dist/universal-attributes.d.ts +90 -0
- package/dist/universal-attributes.d.ts.map +1 -0
- package/dist/universal-attributes.js +107 -0
- package/dist/universal-attributes.js.map +1 -0
- package/dist/util.d.ts +41 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +70 -12
- package/dist/util.js.map +1 -1
- package/package.json +3 -3
package/dist/data-pipeline.d.ts
CHANGED
|
@@ -8,10 +8,16 @@
|
|
|
8
8
|
* emitted table is consumed by `chart`/`datatable` with no structural edits and
|
|
9
9
|
* is the honest no-JS fallback on a bare page.
|
|
10
10
|
*
|
|
11
|
-
* On
|
|
12
|
-
* the tag is replaced with a visible error callout and a build
|
|
13
|
-
*
|
|
14
|
-
* transform.
|
|
11
|
+
* On a failure (sandbox escape / missing file / parse error / a source that
|
|
12
|
+
* yielded no rows) the tag is replaced with a visible error callout and a build
|
|
13
|
+
* error is recorded — the build continues and the `data` tag never reaches its
|
|
14
|
+
* throwing transform.
|
|
15
|
+
*
|
|
16
|
+
* A *projection* that ends with no rows is not a failure (BUG-011). Asking real
|
|
17
|
+
* data a question with no answer today is normal, so the tag is spliced away and
|
|
18
|
+
* nothing renders. What used to justify erroring there — catching a misspelt
|
|
19
|
+
* column — is now `unknownFieldWarnings`, which detects the typo directly
|
|
20
|
+
* instead of inferring it from an empty result.
|
|
15
21
|
*/
|
|
16
22
|
import type { Node } from '@markdoc/markdoc';
|
|
17
23
|
import type { PreprocessContext, PreprocessPage } from '@refrakt-md/types';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-pipeline.d.ts","sourceRoot":"","sources":["../src/data-pipeline.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"data-pipeline.d.ts","sourceRoot":"","sources":["../src/data-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAgB,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AA8FzF;;;;GAIG;AACH,wBAAgB,cAAc,CAC7B,GAAG,EAAE,IAAI,EACT,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,iBAAiB,GACpB,IAAI,GAAG,IAAI,CAKb"}
|
package/dist/data-pipeline.js
CHANGED
|
@@ -8,37 +8,77 @@
|
|
|
8
8
|
* emitted table is consumed by `chart`/`datatable` with no structural edits and
|
|
9
9
|
* is the honest no-JS fallback on a bare page.
|
|
10
10
|
*
|
|
11
|
-
* On
|
|
12
|
-
* the tag is replaced with a visible error callout and a build
|
|
13
|
-
*
|
|
14
|
-
* transform.
|
|
11
|
+
* On a failure (sandbox escape / missing file / parse error / a source that
|
|
12
|
+
* yielded no rows) the tag is replaced with a visible error callout and a build
|
|
13
|
+
* error is recorded — the build continues and the `data` tag never reaches its
|
|
14
|
+
* throwing transform.
|
|
15
|
+
*
|
|
16
|
+
* A *projection* that ends with no rows is not a failure (BUG-011). Asking real
|
|
17
|
+
* data a question with no answer today is normal, so the tag is spliced away and
|
|
18
|
+
* nothing renders. What used to justify erroring there — catching a misspelt
|
|
19
|
+
* column — is now `unknownFieldWarnings`, which detects the typo directly
|
|
20
|
+
* instead of inferring it from an empty result.
|
|
15
21
|
*/
|
|
22
|
+
import Markdoc from '@markdoc/markdoc';
|
|
23
|
+
const { Ast } = Markdoc;
|
|
16
24
|
import { delimitedAdapter, jsonAdapter, ndjsonAdapter, inferFormat, DataSourceError, } from './data-adapters.js';
|
|
17
|
-
import { applyWhere, applySort, applyColumns, applyLimitOffset, applyTyping, } from './data-projection.js';
|
|
18
|
-
import { emitTableNode, emitErrorNode } from './data-emit.js';
|
|
19
|
-
|
|
20
|
-
* `Variable` AST nodes (e.g. `src=$file.dir`). Mirrors snippet's resolver. */
|
|
21
|
-
function resolveString(value, variables) {
|
|
25
|
+
import { applyWhere, applySort, applyColumns, applyLimitOffset, applyTyping, unknownFieldWarnings, } from './data-projection.js';
|
|
26
|
+
import { emitTableNode, emitBodyTableNode, emitErrorNode } from './data-emit.js';
|
|
27
|
+
function resolveAttr(value, variables) {
|
|
22
28
|
if (value === undefined || value === null)
|
|
23
|
-
return '';
|
|
24
|
-
if (typeof value === 'string')
|
|
25
|
-
return value;
|
|
29
|
+
return { ok: false, why: 'is empty' };
|
|
30
|
+
if (typeof value === 'string') {
|
|
31
|
+
return value === '' ? { ok: false, why: 'is empty' } : { ok: true, value };
|
|
32
|
+
}
|
|
26
33
|
if (typeof value === 'number' || typeof value === 'boolean')
|
|
27
|
-
return String(value);
|
|
34
|
+
return { ok: true, value: String(value) };
|
|
28
35
|
if (typeof value === 'object' && '$$mdtype' in value) {
|
|
29
36
|
const node = value;
|
|
30
37
|
if (node.$$mdtype === 'Variable' && Array.isArray(node.path)) {
|
|
38
|
+
const path = node.path.join('.');
|
|
31
39
|
let current = variables;
|
|
32
40
|
for (const segment of node.path) {
|
|
33
|
-
if (current === null || current === undefined)
|
|
34
|
-
|
|
41
|
+
if (current === null || current === undefined) {
|
|
42
|
+
current = undefined;
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
35
45
|
current = current[segment];
|
|
36
46
|
}
|
|
37
|
-
return current === null || current === undefined
|
|
47
|
+
return current === null || current === undefined
|
|
48
|
+
? { ok: false, why: `references \`$${path}\`, which is not defined here` }
|
|
49
|
+
: { ok: true, value: String(current) };
|
|
50
|
+
}
|
|
51
|
+
if (node.$$mdtype === 'Function') {
|
|
52
|
+
// `data` resolves its attributes during preprocess, and Markdoc
|
|
53
|
+
// evaluates functions during the transform — so the call has not
|
|
54
|
+
// happened yet and there is nothing to read.
|
|
55
|
+
return {
|
|
56
|
+
ok: false,
|
|
57
|
+
why: `is a call to \`${node.name ?? 'a function'}()\`, and \`data\` reads its attributes `
|
|
58
|
+
+ 'during preprocess — before functions are evaluated',
|
|
59
|
+
};
|
|
38
60
|
}
|
|
39
61
|
}
|
|
40
|
-
return '';
|
|
62
|
+
return { ok: false, why: 'could not be read' };
|
|
41
63
|
}
|
|
64
|
+
/** Resolve to a string, treating anything unreadable as absent. For attributes
|
|
65
|
+
* whose failure the caller reports separately via {@link resolveAttr}. */
|
|
66
|
+
function resolveString(value, variables) {
|
|
67
|
+
const r = resolveAttr(value, variables);
|
|
68
|
+
return r.ok ? r.value : '';
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Every attribute `data` resolves as a string (BUG-010).
|
|
72
|
+
*
|
|
73
|
+
* `limit` and `offset` are absent on purpose — they go through `numberAttr`,
|
|
74
|
+
* which has its own coercion, and `header` is a Boolean. Everything here
|
|
75
|
+
* reaches `resolveAttr`, so a present-but-unreadable one is reported rather
|
|
76
|
+
* than quietly becoming `''`.
|
|
77
|
+
*/
|
|
78
|
+
const STRING_ATTRIBUTES = [
|
|
79
|
+
'src', 'format', 'delimiter', 'root', 'orient', 'key-column',
|
|
80
|
+
'columns', 'where', 'sort', 'numeric', 'text', 'headers',
|
|
81
|
+
];
|
|
42
82
|
/** Parse a comma-separated column list into trimmed, non-empty names. */
|
|
43
83
|
function splitList(raw) {
|
|
44
84
|
return raw.split(',').map((s) => s.trim()).filter((s) => s.length > 0);
|
|
@@ -55,26 +95,208 @@ export function preprocessData(ast, page, ctx) {
|
|
|
55
95
|
walkAndReplaceData(ast, page, ctx, ctx.sandbox, () => { mutated = true; });
|
|
56
96
|
return mutated ? ast : undefined;
|
|
57
97
|
}
|
|
58
|
-
|
|
98
|
+
/** Runes that consume a `<table>` child directly, so a per-row body inside them
|
|
99
|
+
* would render as a silently empty chart rather than an error (SPEC-127). */
|
|
100
|
+
const TABLE_CONSUMERS = new Set(['chart', 'datatable']);
|
|
101
|
+
function walkAndReplaceData(node, page, ctx, files, onReplaced, enclosing) {
|
|
59
102
|
if (!node.children)
|
|
60
103
|
return;
|
|
61
104
|
for (let i = 0; i < node.children.length; i++) {
|
|
62
105
|
const child = node.children[i];
|
|
63
106
|
if (child.type === 'tag' && child.tag === 'data') {
|
|
64
|
-
|
|
107
|
+
// **Splice, never wrap.** One `data` tag may now produce N nodes, and
|
|
108
|
+
// they have to land as direct siblings: a container node to keep the
|
|
109
|
+
// replacement 1:1 breaks composition invisibly, and how badly depends
|
|
110
|
+
// on the parent. Measured against `accordion`, a `{% div %}` wrapper is
|
|
111
|
+
// harmless while `{% section %}` and `{% grid %}` consume their
|
|
112
|
+
// children — the `accordion-item` tags and their body text vanish with
|
|
113
|
+
// no error or warning (SPEC-127).
|
|
114
|
+
let replacement = resolveData(child, page, ctx, files, enclosing);
|
|
115
|
+
// Resolve any `data` the replacement carries — a subquery, one copy
|
|
116
|
+
// per outer row, each with its `where` already bound (WORK-553).
|
|
117
|
+
//
|
|
118
|
+
// Walked through a throwaway container because a subquery can be a
|
|
119
|
+
// *direct* child of the body, in which case it is the replacement
|
|
120
|
+
// node itself: `walkAndReplaceData` only ever replaces children, so
|
|
121
|
+
// handing it the node would walk past the very tag that needs
|
|
122
|
+
// resolving.
|
|
123
|
+
//
|
|
124
|
+
// This terminates without a depth limit: the tags come from the
|
|
125
|
+
// authored body and each pass consumes one level of it. A row value
|
|
126
|
+
// cannot synthesise a new `data` tag — rows are text, and `bindRow`
|
|
127
|
+
// only substitutes into slots that already exist.
|
|
128
|
+
if (replacement.length > 0) {
|
|
129
|
+
const container = new Ast.Node('document', {}, replacement);
|
|
130
|
+
walkAndReplaceData(container, page, ctx, files, onReplaced, enclosing);
|
|
131
|
+
replacement = container.children;
|
|
132
|
+
}
|
|
133
|
+
node.children.splice(i, 1, ...replacement);
|
|
134
|
+
i += replacement.length - 1;
|
|
65
135
|
onReplaced();
|
|
66
136
|
continue;
|
|
67
137
|
}
|
|
68
|
-
walkAndReplaceData(child, page, ctx, files, onReplaced);
|
|
138
|
+
walkAndReplaceData(child, page, ctx, files, onReplaced, child.tag ?? enclosing);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Bind one row into a copy of the template body.
|
|
143
|
+
*
|
|
144
|
+
* `$row.x` reaches the AST as a `Variable` in a node's *attributes* — on a tag
|
|
145
|
+
* (`href=$row.url`) and equally on a `text` node, where `{% $row.title %}`
|
|
146
|
+
* becomes `content: Variable(['row','title'])`. So one rule covers both.
|
|
147
|
+
*
|
|
148
|
+
* Substitution happens here, at preprocess, rather than being left to the
|
|
149
|
+
* transform's `config.variables`: the binding differs per row, and a single
|
|
150
|
+
* shared config cannot express that.
|
|
151
|
+
*/
|
|
152
|
+
function bindRow(node, row) {
|
|
153
|
+
const attributes = {};
|
|
154
|
+
for (const [key, value] of Object.entries(node.attributes ?? {})) {
|
|
155
|
+
attributes[key] = resolveRowVariable(value, row);
|
|
156
|
+
}
|
|
157
|
+
// **A nested `data` owns its own `$row`** (WORK-553). Its *attributes* bind
|
|
158
|
+
// from this row — that is how a subquery is parameterised, `where=$row.axis`
|
|
159
|
+
// — but its body belongs to the subquery's rows, so it is copied verbatim.
|
|
160
|
+
//
|
|
161
|
+
// Without the stop, the outer bind resolves the inner body's `$row.name`
|
|
162
|
+
// against the outer row, which has no such column, and blanks it to `''`
|
|
163
|
+
// before the subquery ever runs. Measured, not theorised.
|
|
164
|
+
const children = node.tag === 'data'
|
|
165
|
+
? (node.children ?? []).map(cloneNode)
|
|
166
|
+
: (node.children ?? []).map((child) => bindRow(child, row));
|
|
167
|
+
const copy = new Ast.Node(node.type, attributes, children, node.tag);
|
|
168
|
+
// `inline` and a few other node types carry meaning in fields the
|
|
169
|
+
// constructor does not take; copy what Markdoc sets.
|
|
170
|
+
if (node.lines)
|
|
171
|
+
copy.lines = node.lines;
|
|
172
|
+
if (node.location)
|
|
173
|
+
copy.location = node.location;
|
|
174
|
+
return copy;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Split a body into `---`-delimited cells (WORK-550).
|
|
178
|
+
*
|
|
179
|
+
* `---` is already refrakt's delimiter for this shape — `card` splits its body
|
|
180
|
+
* into media / body / footer on it, `grid` splits columns on it — and Markdoc
|
|
181
|
+
* parses it to an `hr` node whether or not blank lines surround it, so a cell
|
|
182
|
+
* can be written tightly without turning the line above into a setext heading.
|
|
183
|
+
*
|
|
184
|
+
* A cell may hold any number of block nodes, including none: `a --- --- b` is
|
|
185
|
+
* three cells, the middle one empty. That matters for a column an author wants
|
|
186
|
+
* blank on some rows.
|
|
187
|
+
*/
|
|
188
|
+
function splitCells(body) {
|
|
189
|
+
const cells = [[]];
|
|
190
|
+
for (const node of body) {
|
|
191
|
+
if (node.type === 'hr')
|
|
192
|
+
cells.push([]);
|
|
193
|
+
else
|
|
194
|
+
cells[cells.length - 1].push(node);
|
|
69
195
|
}
|
|
196
|
+
return cells;
|
|
70
197
|
}
|
|
71
|
-
|
|
198
|
+
/** Deep-copy a node without touching variables — the subquery body's copy. */
|
|
199
|
+
function cloneNode(node) {
|
|
200
|
+
const copy = new Ast.Node(node.type, { ...(node.attributes ?? {}) }, (node.children ?? []).map(cloneNode), node.tag);
|
|
201
|
+
if (node.lines)
|
|
202
|
+
copy.lines = node.lines;
|
|
203
|
+
if (node.location)
|
|
204
|
+
copy.location = node.location;
|
|
205
|
+
return copy;
|
|
206
|
+
}
|
|
207
|
+
function resolveRowVariable(value, row) {
|
|
208
|
+
if (value && typeof value === 'object') {
|
|
209
|
+
const node = value;
|
|
210
|
+
if (node.$$mdtype === 'Variable' && Array.isArray(node.path) && node.path[0] === 'row') {
|
|
211
|
+
let current = row;
|
|
212
|
+
for (const segment of node.path.slice(1)) {
|
|
213
|
+
if (current === null || current === undefined)
|
|
214
|
+
return '';
|
|
215
|
+
current = current[segment];
|
|
216
|
+
}
|
|
217
|
+
return current === null || current === undefined ? '' : current;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return value;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Project a typed table into plain row objects keyed by column header.
|
|
224
|
+
*
|
|
225
|
+
* A numeric column exposes its normalized number so a template can do
|
|
226
|
+
* arithmetic or formatting with it; everything else exposes the cell's text,
|
|
227
|
+
* which is what a template renders.
|
|
228
|
+
*
|
|
229
|
+
* Booleans are the one extra coercion. The table intermediate is text, so a
|
|
230
|
+
* JSON `false` arrives as the *string* `"false"` — which is truthy, making
|
|
231
|
+
* `{% if $row.flag %}` render for every row. Sources with boolean fields are
|
|
232
|
+
* exactly what a per-row template wants to branch on, so `"true"` / `"false"`
|
|
233
|
+
* bind as booleans. The match is on the whole cell, so a column of prose
|
|
234
|
+
* mentioning "false" is unaffected.
|
|
235
|
+
*/
|
|
236
|
+
function rowObjects(table) {
|
|
237
|
+
return table.rows.map((cells) => {
|
|
238
|
+
const row = {};
|
|
239
|
+
cells.forEach((cell, c) => {
|
|
240
|
+
if (table.columnTypes[c] === 'numeric' && cell.value !== null) {
|
|
241
|
+
row[table.headers[c]] = cell.value;
|
|
242
|
+
}
|
|
243
|
+
else if (cell.text === 'true' || cell.text === 'false') {
|
|
244
|
+
row[table.headers[c]] = cell.text === 'true';
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
row[table.headers[c]] = cell.text;
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
return row;
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
function resolveData(tag, page, ctx, files, enclosing) {
|
|
254
|
+
const body = (tag.children ?? []).filter((child) => child.type !== 'text' || String(child.attributes?.content ?? '').trim() !== '');
|
|
255
|
+
if (body.length > 0 && enclosing && TABLE_CONSUMERS.has(enclosing)) {
|
|
256
|
+
const msg = `a per-row body cannot be used inside {% ${enclosing} %}, which consumes the table this rune would otherwise emit — remove the body, or move the {% data %} outside`;
|
|
257
|
+
ctx.error(`data: ${msg}`, page.url);
|
|
258
|
+
return [emitErrorNode(`data error: ${msg}`)];
|
|
259
|
+
}
|
|
260
|
+
return resolveDataToNodes(tag, page, ctx, files, body);
|
|
261
|
+
}
|
|
262
|
+
function resolveDataToNodes(tag, page, ctx, files, body) {
|
|
72
263
|
const a = tag.attributes;
|
|
264
|
+
// BUG-010 — an attribute the author *wrote* but the rune cannot read is an
|
|
265
|
+
// error, and the reason is named. Absent stays absent: only keys actually
|
|
266
|
+
// present in the tag are checked, so omitting `where` is still fine.
|
|
267
|
+
//
|
|
268
|
+
// Checked up front and reported together, because one unreadable attribute
|
|
269
|
+
// usually means the call site is wrong in a way that affects several.
|
|
270
|
+
const unreadable = [];
|
|
271
|
+
for (const name of STRING_ATTRIBUTES) {
|
|
272
|
+
if (!(name in a))
|
|
273
|
+
continue;
|
|
274
|
+
const r = resolveAttr(a[name], ctx.variables);
|
|
275
|
+
if (!r.ok)
|
|
276
|
+
unreadable.push(`\`${name}\` ${r.why}`);
|
|
277
|
+
}
|
|
278
|
+
if (unreadable.length > 0) {
|
|
279
|
+
const msg = unreadable.length === 1
|
|
280
|
+
? unreadable[0]
|
|
281
|
+
: `${unreadable.length} attributes could not be read — ${unreadable.join('; ')}`;
|
|
282
|
+
ctx.error(`data: ${msg}`, page.url);
|
|
283
|
+
return [emitErrorNode(`data error: ${msg}`)];
|
|
284
|
+
}
|
|
73
285
|
const src = resolveString(a.src, ctx.variables);
|
|
286
|
+
const headers = splitList(resolveString(a.headers, ctx.variables));
|
|
287
|
+
// `headers` describes the *body's* cells, so without a body there is nothing
|
|
288
|
+
// for it to describe. Ignoring it silently would read as a rename of
|
|
289
|
+
// `columns`, which selects and renames source columns instead.
|
|
290
|
+
if (headers.length > 0 && body.length === 0) {
|
|
291
|
+
const msg = '`headers` names the columns of a `---`-delimited body and needs one. '
|
|
292
|
+
+ 'For a bodyless table, select and rename source columns with `columns`.';
|
|
293
|
+
ctx.error(`data "${src || '(unresolved)'}": ${msg}`, page.url);
|
|
294
|
+
return [emitErrorNode(`data error: ${msg}`)];
|
|
295
|
+
}
|
|
74
296
|
if (!src) {
|
|
75
297
|
const msg = 'data `src` attribute is required (and an unresolvable variable reference resolves to empty)';
|
|
76
298
|
ctx.error(msg, page.url);
|
|
77
|
-
return emitErrorNode(`data error: ${msg}`);
|
|
299
|
+
return [emitErrorNode(`data error: ${msg}`)];
|
|
78
300
|
}
|
|
79
301
|
try {
|
|
80
302
|
const raw = files.read(src);
|
|
@@ -83,29 +305,73 @@ function resolveDataToNode(tag, page, ctx, files) {
|
|
|
83
305
|
}
|
|
84
306
|
const format = resolveFormat(src, resolveString(a.format, ctx.variables));
|
|
85
307
|
const table = runAdapter(raw, format, a, ctx);
|
|
308
|
+
// A source that parsed to nothing is an error: the author pointed at the
|
|
309
|
+
// wrong file, or a `root` / JSON pointer into nothing. Checked *before*
|
|
310
|
+
// projection, so it stays distinct from "my filter excluded everything"
|
|
311
|
+
// — collapsing the two is what BUG-011 was.
|
|
312
|
+
if (table.rows.length === 0) {
|
|
313
|
+
throw new DataSourceError('source yielded no rows — check the file has data, and that `root` / `orient` point at the right place');
|
|
314
|
+
}
|
|
315
|
+
const whereSpec = resolveString(a.where, ctx.variables) || undefined;
|
|
316
|
+
const sortSpec = resolveString(a.sort, ctx.variables) || undefined;
|
|
317
|
+
const columnsSpec = resolveString(a.columns, ctx.variables) || undefined;
|
|
318
|
+
// The typo detector (BUG-011). Fires on a misspelt column whether or not
|
|
319
|
+
// the result ends up empty — a clause that names nothing is a mistake even
|
|
320
|
+
// when some other clause still matches rows.
|
|
321
|
+
for (const w of unknownFieldWarnings(table, { where: whereSpec, sort: sortSpec, columns: columnsSpec })) {
|
|
322
|
+
ctx.warn(`data "${src}": ${w}`, page.url);
|
|
323
|
+
}
|
|
86
324
|
// Shared projection: where → sort → columns → limit/offset.
|
|
87
|
-
const { table: filtered, warnings } = applyWhere(table,
|
|
325
|
+
const { table: filtered, warnings } = applyWhere(table, whereSpec);
|
|
88
326
|
for (const w of warnings)
|
|
89
327
|
ctx.warn(`data "${src}": ${w}`, page.url);
|
|
90
|
-
const sorted = applySort(filtered,
|
|
91
|
-
const { table: selected, sources } = applyColumns(sorted,
|
|
328
|
+
const sorted = applySort(filtered, sortSpec);
|
|
329
|
+
const { table: selected, sources } = applyColumns(sorted, columnsSpec);
|
|
92
330
|
const projected = applyLimitOffset(selected, numberAttr(a.limit), numberAttr(a.offset));
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
331
|
+
// A filter that legitimately matched nothing renders nothing, silently.
|
|
332
|
+
// Asking real data a question with no answer today is normal — a page
|
|
333
|
+
// listing open bugs when there are none is working, not broken — and the
|
|
334
|
+
// mistake this used to catch now has its own warning above.
|
|
335
|
+
if (projected.rows.length === 0)
|
|
336
|
+
return [];
|
|
96
337
|
// Shared typing → data-value channel (`numeric`/`text` may name the
|
|
97
338
|
// source or the renamed column).
|
|
98
339
|
const numericCols = splitList(resolveString(a.numeric, ctx.variables));
|
|
99
340
|
const textCols = splitList(resolveString(a.text, ctx.variables));
|
|
100
341
|
const typed = applyTyping(projected, { numeric: numericCols, text: textCols, sources });
|
|
101
|
-
|
|
342
|
+
if (body.length === 0)
|
|
343
|
+
return [emitTableNode(typed)];
|
|
344
|
+
// WORK-550 — `headers` switches what the body *means*: a `---`-delimited
|
|
345
|
+
// sequence of cells rather than a run of blocks. The cells stay authored
|
|
346
|
+
// Markdoc, so a generated table can carry the emphasis, links, runes and
|
|
347
|
+
// `{% if %}` the bodyless form's literal-text cells cannot.
|
|
348
|
+
if (headers.length > 0) {
|
|
349
|
+
const cells = splitCells(body);
|
|
350
|
+
if (cells.length !== headers.length) {
|
|
351
|
+
throw new DataSourceError(`\`headers\` names ${headers.length} column${headers.length === 1 ? '' : 's'} but the body has `
|
|
352
|
+
+ `${cells.length} \`---\`-delimited cell${cells.length === 1 ? '' : 's'}. `
|
|
353
|
+
+ 'Separate each cell with a `---` line; the counts must match.');
|
|
354
|
+
}
|
|
355
|
+
const rows = rowObjects(typed).map((row) => cells.map((cell) => cell.map((child) => bindRow(child, row))));
|
|
356
|
+
return [emitBodyTableNode(headers, rows)];
|
|
357
|
+
}
|
|
358
|
+
// `numeric` / `text` exist to drive the `data-value` channel that charts
|
|
359
|
+
// and sortable tables read off `<td>`s. With a body there are no cells to
|
|
360
|
+
// carry it, so say so rather than accepting an attribute that does
|
|
361
|
+
// nothing — the same posture WORK-536 took for silently dropped axes.
|
|
362
|
+
if (numericCols.length > 0 || textCols.length > 0) {
|
|
363
|
+
ctx.warn(`data "${src}": \`numeric\` / \`text\` set alongside a per-row body — they type the ` +
|
|
364
|
+
'`data-value` attribute on table cells, and a body emits no cells. Numeric columns are ' +
|
|
365
|
+
'still bound to `$row` as numbers.', page.url);
|
|
366
|
+
}
|
|
367
|
+
return rowObjects(typed).flatMap((row) => body.map((child) => bindRow(child, row)));
|
|
102
368
|
}
|
|
103
369
|
catch (err) {
|
|
104
370
|
const msg = err instanceof DataSourceError
|
|
105
371
|
? err.message
|
|
106
372
|
: `unexpected failure — ${err instanceof Error ? err.message : String(err)}`;
|
|
107
373
|
ctx.error(`data "${src}": ${msg}`, page.url);
|
|
108
|
-
return emitErrorNode(`data error: ${msg}`);
|
|
374
|
+
return [emitErrorNode(`data error: ${msg}`)];
|
|
109
375
|
}
|
|
110
376
|
}
|
|
111
377
|
/** Resolve the effective format: explicit override, else extension-inferred. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-pipeline.js","sourceRoot":"","sources":["../src/data-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EACN,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,WAAW,EACX,eAAe,GAGf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,UAAU,EACV,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,WAAW,GACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE9D;+EAC+E;AAC/E,SAAS,aAAa,CAAC,KAAc,EAAE,SAA8C;IACpF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAClF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,UAAU,IAAK,KAAiC,EAAE,CAAC;QACnF,MAAM,IAAI,GAAG,KAA6C,CAAC;QAC3D,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9D,IAAI,OAAO,GAAY,SAAS,CAAC;YACjC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,IAAgB,EAAE,CAAC;gBAC7C,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS;oBAAE,OAAO,EAAE,CAAC;gBACzD,OAAO,GAAI,OAAmC,CAAC,OAAO,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzE,CAAC;IACF,CAAC;IACD,OAAO,EAAE,CAAC;AACX,CAAC;AAED,yEAAyE;AACzE,SAAS,SAAS,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC7B,GAAS,EACT,IAAoB,EACpB,GAAsB;IAEtB,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO;IACzB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAClC,CAAC;AAED,SAAS,kBAAkB,CAC1B,IAAU,EACV,IAAoB,EACpB,GAAsB,EACtB,KAAmB,EACnB,UAAsB;IAEtB,IAAI,CAAC,IAAI,CAAC,QAAQ;QAAE,OAAO;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;YAClD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9D,UAAU,EAAE,CAAC;YACb,SAAS;QACV,CAAC;QACD,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;AACF,CAAC;AAED,SAAS,iBAAiB,CACzB,GAAS,EACT,IAAoB,EACpB,GAAsB,EACtB,KAAmB;IAEnB,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC;IACzB,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAEhD,IAAI,CAAC,GAAG,EAAE,CAAC;QACV,MAAM,GAAG,GAAG,6FAA6F,CAAC;QAC1G,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,OAAO,aAAa,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,eAAe,CACxB,WAAW,GAAG,wEAAwE,CACtF,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QAE9C,4DAA4D;QAC5D,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,CAAC;QAC5G,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,CAAC;QACtF,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,CAAC;QAChH,MAAM,SAAS,GAAc,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAEnG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,eAAe,CAAC,sDAAsD,CAAC,CAAC;QACnF,CAAC;QAED,oEAAoE;QACpE,iCAAiC;QACjC,MAAM,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAExF,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,MAAM,GAAG,GAAG,GAAG,YAAY,eAAe;YACzC,CAAC,CAAC,GAAG,CAAC,OAAO;YACb,CAAC,CAAC,wBAAwB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9E,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7C,OAAO,aAAa,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;AACF,CAAC;AAED,gFAAgF;AAChF,SAAS,aAAa,CAAC,GAAW,EAAE,QAAgB;IACnD,IAAI,QAAQ;QAAE,OAAO,QAAsB,CAAC;IAC5C,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,IAAI,eAAe,CACxB,gCAAgC,GAAG,sCAAsC,CACzE,CAAC;AACH,CAAC;AAED;8DAC8D;AAC9D,SAAS,UAAU,CAClB,GAAW,EACX,MAAkB,EAClB,CAA0B,EAC1B,GAAsB;IAEtB,QAAQ,MAAM,EAAE,CAAC;QAChB,KAAK,KAAK,CAAC;QACX,KAAK,KAAK;YACT,OAAO,gBAAgB,CAAC,GAAG,EAAE;gBAC5B,MAAM;gBACN,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS;gBACjE,MAAM,EAAE,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK;aAC/D,CAAC,CAAC;QACJ,KAAK,MAAM,CAAC,CAAC,CAAC;YACb,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;YACtD,OAAO,WAAW,CAAC,GAAG,EAAE;gBACvB,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS;gBACvD,MAAM,EAAE,MAAM,CAAC,CAAC,CAAE,MAAyC,CAAC,CAAC,CAAC,SAAS;gBACvE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS;aACrE,CAAC,CAAC;QACJ,CAAC;QACD,KAAK,QAAQ;YACZ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QAC3B;YACC,MAAM,IAAI,eAAe,CAAC,uBAAuB,MAAM,GAAG,CAAC,CAAC;IAC9D,CAAC;AACF,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACtD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC"}
|
|
1
|
+
{"version":3,"file":"data-pipeline.js","sourceRoot":"","sources":["../src/data-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAEvC,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;AAExB,OAAO,EACN,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,WAAW,EACX,eAAe,GAGf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,UAAU,EACV,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,oBAAoB,GAEpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAiBjF,SAAS,WAAW,CAAC,KAAc,EAAE,SAA8C;IAClF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;IACjF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC5E,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IACvG,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,UAAU,IAAK,KAAiC,EAAE,CAAC;QACnF,MAAM,IAAI,GAAG,KAA4D,CAAC;QAC1E,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,GAAI,IAAI,CAAC,IAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/C,IAAI,OAAO,GAAY,SAAS,CAAC;YACjC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,IAAgB,EAAE,CAAC;gBAC7C,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBAAC,OAAO,GAAG,SAAS,CAAC;oBAAC,MAAM;gBAAC,CAAC;gBAC9E,OAAO,GAAI,OAAmC,CAAC,OAAO,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS;gBAC/C,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,iBAAiB,IAAI,+BAA+B,EAAE;gBAC1E,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAClC,gEAAgE;YAChE,iEAAiE;YACjE,6CAA6C;YAC7C,OAAO;gBACN,EAAE,EAAE,KAAK;gBACT,GAAG,EAAE,kBAAkB,IAAI,CAAC,IAAI,IAAI,YAAY,0CAA0C;sBACvF,oDAAoD;aACvD,CAAC;QACH,CAAC;IACF,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,mBAAmB,EAAE,CAAC;AAChD,CAAC;AAED;2EAC2E;AAC3E,SAAS,aAAa,CAAC,KAAc,EAAE,SAA8C;IACpF,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACxC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,iBAAiB,GAAG;IACzB,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY;IAC5D,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS;CAC/C,CAAC;AAEX,yEAAyE;AACzE,SAAS,SAAS,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC7B,GAAS,EACT,IAAoB,EACpB,GAAsB;IAEtB,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO;IACzB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAClC,CAAC;AAED;8EAC8E;AAC9E,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;AAExD,SAAS,kBAAkB,CAC1B,IAAU,EACV,IAAoB,EACpB,GAAsB,EACtB,KAAmB,EACnB,UAAsB,EACtB,SAAkB;IAElB,IAAI,CAAC,IAAI,CAAC,QAAQ;QAAE,OAAO;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;YAClD,sEAAsE;YACtE,qEAAqE;YACrE,sEAAsE;YACtE,wEAAwE;YACxE,gEAAgE;YAChE,uEAAuE;YACvE,kCAAkC;YAClC,IAAI,WAAW,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YAClE,oEAAoE;YACpE,iEAAiE;YACjE,EAAE;YACF,mEAAmE;YACnE,kEAAkE;YAClE,oEAAoE;YACpE,8DAA8D;YAC9D,aAAa;YACb,EAAE;YACF,gEAAgE;YAChE,oEAAoE;YACpE,oEAAoE;YACpE,kDAAkD;YAClD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;gBAC5D,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;gBACvE,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC;YAClC,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC;YAC3C,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;YAC5B,UAAU,EAAE,CAAC;YACb,SAAS;QACV,CAAC;QACD,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;IACjF,CAAC;AACF,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,OAAO,CAAC,IAAU,EAAE,GAA4B;IACxD,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;QAClE,UAAU,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC;IACD,4EAA4E;IAC5E,6EAA6E;IAC7E,2EAA2E;IAC3E,EAAE;IACF,yEAAyE;IACzE,yEAAyE;IACzE,0DAA0D;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,KAAK,MAAM;QACnC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;QACtC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACrE,kEAAkE;IAClE,qDAAqD;IACrD,IAAI,IAAI,CAAC,KAAK;QAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACxC,IAAI,IAAI,CAAC,QAAQ;QAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IACjD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,UAAU,CAAC,IAAY;IAC/B,MAAM,KAAK,GAAa,CAAC,EAAE,CAAC,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;YAClC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,SAAS,SAAS,CAAC,IAAU;IAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CACxB,IAAI,CAAC,IAAI,EACT,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,EAC9B,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EACpC,IAAI,CAAC,GAAG,CACR,CAAC;IACF,IAAI,IAAI,CAAC,KAAK;QAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACxC,IAAI,IAAI,CAAC,QAAQ;QAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IACjD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc,EAAE,GAA4B;IACvE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,KAA8C,CAAC;QAC5D,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;YACxF,IAAI,OAAO,GAAY,GAAG,CAAC;YAC3B,KAAK,MAAM,OAAO,IAAK,IAAI,CAAC,IAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxD,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS;oBAAE,OAAO,EAAE,CAAC;gBACzD,OAAO,GAAI,OAAmC,CAAC,OAAO,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACjE,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,UAAU,CAAC,KAAiB;IACpC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/B,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACzB,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC/D,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACpC,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC1D,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACP,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;YACnC,CAAC;QACF,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACZ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CACnB,GAAS,EACT,IAAoB,EACpB,GAAsB,EACtB,KAAmB,EACnB,SAAkB;IAElB,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACpI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,IAAI,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACpE,MAAM,GAAG,GAAG,2CAA2C,SAAS,gHAAgH,CAAC;QACjL,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,CAAC,aAAa,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,kBAAkB,CAC1B,GAAS,EACT,IAAoB,EACpB,GAAsB,EACtB,KAAmB,EACnB,IAAY;IAEZ,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC;IAEzB,2EAA2E;IAC3E,0EAA0E;IAC1E,qEAAqE;IACrE,EAAE;IACF,2EAA2E;IAC3E,sEAAsE;IACtE,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACtC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;YAAE,SAAS;QAC3B,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC;YAClC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YACf,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,mCAAmC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClF,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,CAAC,aAAa,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAEnE,6EAA6E;IAC7E,qEAAqE;IACrE,+DAA+D;IAC/D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,uEAAuE;cAChF,wEAAwE,CAAC;QAC5E,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,cAAc,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/D,OAAO,CAAC,aAAa,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,CAAC,GAAG,EAAE,CAAC;QACV,MAAM,GAAG,GAAG,6FAA6F,CAAC;QAC1G,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,OAAO,CAAC,aAAa,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,eAAe,CACxB,WAAW,GAAG,wEAAwE,CACtF,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QAE9C,yEAAyE;QACzE,wEAAwE;QACxE,wEAAwE;QACxE,4CAA4C;QAC5C,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,eAAe,CACxB,uGAAuG,CACvG,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;QACrE,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;QACnE,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;QAEzE,yEAAyE;QACzE,2EAA2E;QAC3E,6CAA6C;QAC7C,KAAK,MAAM,CAAC,IAAI,oBAAoB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;YACzG,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;QAED,4DAA4D;QAC5D,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACnE,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC7C,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACvE,MAAM,SAAS,GAAc,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAEnG,wEAAwE;QACxE,sEAAsE;QACtE,yEAAyE;QACzE,4DAA4D;QAC5D,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE3C,oEAAoE;QACpE,iCAAiC;QACjC,MAAM,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAExF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QAErD,yEAAyE;QACzE,yEAAyE;QACzE,yEAAyE;QACzE,4DAA4D;QAC5D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;gBACrC,MAAM,IAAI,eAAe,CACxB,qBAAqB,OAAO,CAAC,MAAM,UAAU,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,oBAAoB;sBAC9F,GAAG,KAAK,CAAC,MAAM,0BAA0B,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI;sBAC1E,8DAA8D,CAChE,CAAC;YACH,CAAC;YACD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC1C,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAC7D,CAAC;YACF,OAAO,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,yEAAyE;QACzE,0EAA0E;QAC1E,mEAAmE;QACnE,sEAAsE;QACtE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,IAAI,CACP,SAAS,GAAG,yEAAyE;gBACrF,wFAAwF;gBACxF,mCAAmC,EACnC,IAAI,CAAC,GAAG,CACR,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,MAAM,GAAG,GAAG,GAAG,YAAY,eAAe;YACzC,CAAC,CAAC,GAAG,CAAC,OAAO;YACb,CAAC,CAAC,wBAAwB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9E,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7C,OAAO,CAAC,aAAa,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;AACF,CAAC;AAED,gFAAgF;AAChF,SAAS,aAAa,CAAC,GAAW,EAAE,QAAgB;IACnD,IAAI,QAAQ;QAAE,OAAO,QAAsB,CAAC;IAC5C,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,IAAI,eAAe,CACxB,gCAAgC,GAAG,sCAAsC,CACzE,CAAC;AACH,CAAC;AAED;8DAC8D;AAC9D,SAAS,UAAU,CAClB,GAAW,EACX,MAAkB,EAClB,CAA0B,EAC1B,GAAsB;IAEtB,QAAQ,MAAM,EAAE,CAAC;QAChB,KAAK,KAAK,CAAC;QACX,KAAK,KAAK;YACT,OAAO,gBAAgB,CAAC,GAAG,EAAE;gBAC5B,MAAM;gBACN,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS;gBACjE,MAAM,EAAE,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK;aAC/D,CAAC,CAAC;QACJ,KAAK,MAAM,CAAC,CAAC,CAAC;YACb,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;YACtD,OAAO,WAAW,CAAC,GAAG,EAAE;gBACvB,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS;gBACvD,MAAM,EAAE,MAAM,CAAC,CAAC,CAAE,MAAyC,CAAC,CAAC,CAAC,SAAS;gBACvE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS;aACrE,CAAC,CAAC;QACJ,CAAC;QACD,KAAK,QAAQ;YACZ,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;QAC3B;YACC,MAAM,IAAI,eAAe,CAAC,uBAAuB,MAAM,GAAG,CAAC,CAAC;IAC9D,CAAC;AACF,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACtD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC"}
|
|
@@ -62,6 +62,27 @@ export declare function applyColumns(table: DataTable, spec: string | undefined)
|
|
|
62
62
|
* when every non-empty cell in the column parses as a number, else by natural
|
|
63
63
|
* string collation. A no-op when `spec` is empty or names an unknown column. */
|
|
64
64
|
export declare function applySort(table: DataTable, spec: string | undefined): DataTable;
|
|
65
|
+
/**
|
|
66
|
+
* Warn about a `where` / `sort` / `columns` clause naming a column the source
|
|
67
|
+
* does not have (BUG-011).
|
|
68
|
+
*
|
|
69
|
+
* This is the typo detector. Before it, nothing reported a misspelt field: a
|
|
70
|
+
* clause naming a column that does not exist matched no rows, and the only
|
|
71
|
+
* thing that noticed was `data`'s blanket "result is empty after projection"
|
|
72
|
+
* error — which fired just as loudly on a *correct* filter that legitimately
|
|
73
|
+
* matched nothing. One signal was standing in for two conditions, so it was
|
|
74
|
+
* wrong about one of them. Detecting the typo directly is what lets the empty
|
|
75
|
+
* case stop being a failure.
|
|
76
|
+
*
|
|
77
|
+
* All three specs are checked against the adapter's headers, which is right for
|
|
78
|
+
* each of them: `where` and `sort` run before `columns`, and `columns` names
|
|
79
|
+
* *source* headers even when it renames them.
|
|
80
|
+
*/
|
|
81
|
+
export declare function unknownFieldWarnings(table: DataTable, specs: {
|
|
82
|
+
where?: string;
|
|
83
|
+
sort?: string;
|
|
84
|
+
columns?: string;
|
|
85
|
+
}): string[];
|
|
65
86
|
/** Apply `limit`/`offset` — a row slice (the `data` analogue of snippet `lines=`). */
|
|
66
87
|
export declare function applyLimitOffset(table: DataTable, limit?: number, offset?: number): DataTable;
|
|
67
88
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-projection.d.ts","sourceRoot":"","sources":["../src/data-projection.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAQ,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG1D,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAE5C;;oFAEoF;AACpF,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU3D;AAOD,qEAAqE;AACrE,UAAU,eAAe;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;CACZ;AAED;;uCAEuC;AACvC,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CAchE;AA4BD;;;;;;GAMG;AACH,wBAAgB,UAAU,CACzB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,MAAM,GAAG,SAAS,GACtB;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAa1C;AAED;;;;;qCAKqC;AACrC,wBAAgB,YAAY,CAC3B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,MAAM,GAAG,SAAS,GACtB;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAYzC;AAED;;iFAEiF;AACjF,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CA8B/E;AAED,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAK7F;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAC1B,KAAK,EAAE,SAAS,EAChB,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GACpE,UAAU,CAsBZ"}
|
|
1
|
+
{"version":3,"file":"data-projection.d.ts","sourceRoot":"","sources":["../src/data-projection.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAQ,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG1D,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAE5C;;oFAEoF;AACpF,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU3D;AAOD,qEAAqE;AACrE,UAAU,eAAe;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;CACZ;AAED;;uCAEuC;AACvC,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CAchE;AA4BD;;;;;;GAMG;AACH,wBAAgB,UAAU,CACzB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,MAAM,GAAG,SAAS,GACtB;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAa1C;AAED;;;;;qCAKqC;AACrC,wBAAgB,YAAY,CAC3B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,MAAM,GAAG,SAAS,GACtB;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAYzC;AAED;;iFAEiF;AACjF,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CA8B/E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CACnC,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,MAAM,EAAE,CAqBV;AAED,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAK7F;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAC1B,KAAK,EAAE,SAAS,EAChB,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GACpE,UAAU,CAsBZ"}
|
package/dist/data-projection.js
CHANGED
|
@@ -161,6 +161,43 @@ export function applySort(table, spec) {
|
|
|
161
161
|
});
|
|
162
162
|
return { headers: table.headers, rows: sorted };
|
|
163
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* Warn about a `where` / `sort` / `columns` clause naming a column the source
|
|
166
|
+
* does not have (BUG-011).
|
|
167
|
+
*
|
|
168
|
+
* This is the typo detector. Before it, nothing reported a misspelt field: a
|
|
169
|
+
* clause naming a column that does not exist matched no rows, and the only
|
|
170
|
+
* thing that noticed was `data`'s blanket "result is empty after projection"
|
|
171
|
+
* error — which fired just as loudly on a *correct* filter that legitimately
|
|
172
|
+
* matched nothing. One signal was standing in for two conditions, so it was
|
|
173
|
+
* wrong about one of them. Detecting the typo directly is what lets the empty
|
|
174
|
+
* case stop being a failure.
|
|
175
|
+
*
|
|
176
|
+
* All three specs are checked against the adapter's headers, which is right for
|
|
177
|
+
* each of them: `where` and `sort` run before `columns`, and `columns` names
|
|
178
|
+
* *source* headers even when it renames them.
|
|
179
|
+
*/
|
|
180
|
+
export function unknownFieldWarnings(table, specs) {
|
|
181
|
+
const known = new Set(table.headers);
|
|
182
|
+
const available = table.headers.join(', ');
|
|
183
|
+
const warnings = [];
|
|
184
|
+
const check = (attr, field) => {
|
|
185
|
+
if (field === '' || known.has(field))
|
|
186
|
+
return;
|
|
187
|
+
warnings.push(`\`${attr}\` names a column the source does not have: "${field}". Available: ${available}.`);
|
|
188
|
+
};
|
|
189
|
+
for (const clause of parseFieldMatch(specs.where).clauses)
|
|
190
|
+
check('where', clause.field);
|
|
191
|
+
if (specs.sort && specs.sort.trim() !== '') {
|
|
192
|
+
const trimmed = specs.sort.trim();
|
|
193
|
+
check('sort', (trimmed.startsWith('-') ? trimmed.slice(1) : trimmed).trim());
|
|
194
|
+
}
|
|
195
|
+
if (specs.columns && specs.columns.trim() !== '') {
|
|
196
|
+
for (const sel of parseColumnsSpec(specs.columns))
|
|
197
|
+
check('columns', sel.source);
|
|
198
|
+
}
|
|
199
|
+
return warnings;
|
|
200
|
+
}
|
|
164
201
|
/** Apply `limit`/`offset` — a row slice (the `data` analogue of snippet `lines=`). */
|
|
165
202
|
export function applyLimitOffset(table, limit, offset) {
|
|
166
203
|
const start = offset && offset > 0 ? offset : 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-projection.js","sourceRoot":"","sources":["../src/data-projection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-projection.js","sourceRoot":"","sources":["../src/data-projection.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAmB/D;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,OAAO,GAAG,OAAO;SACrB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAG,oCAAoC;SAC9D,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAU,uBAAuB;SAClD,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAQ,kBAAkB;IAC/C,IAAI,CAAC,yCAAyC,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1E,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1B,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC,CAAC;AAED,8EAA8E;AAC9E,SAAS,WAAW,CAAC,OAAiB,EAAE,IAAY;IACnD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAQD;;uCAEuC;AACvC,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC5C,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvC,MAAM,UAAU,GAAsB,EAAE,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,IAAI,KAAK,EAAE;YAAE,SAAS;QAC1B,MAAM,CAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,EAAE,CAAC;YACP,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACrF,CAAC;aAAM,CAAC;YACP,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChD,CAAC;IACF,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,wEAAwE;AACxE,SAAS,aAAa,CAAC,KAAa,EAAE,GAAW;IAChD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,KAAK,EAAE,CAAC;YACX,IAAI,EAAE,KAAK,KAAK;gBAAE,KAAK,GAAG,IAAI,CAAC;;gBAC1B,GAAG,IAAI,EAAE,CAAC;YACf,SAAS;QACV,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAAC,KAAK,GAAG,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QACvD,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,GAAG,GAAG,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QACtD,GAAG,IAAI,EAAE,CAAC;IACX,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,SAAS,WAAW,CAAC,CAAS;IAC7B,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;QAC/G,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,CAAC,CAAC;AACV,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACzB,KAAgB,EAChB,IAAwB;IAExB,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;IAE7E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAU,CAAC,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACtC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;QAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CACF,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC/E,CAAC;AAED;;;;;qCAKqC;AACrC,MAAM,UAAU,YAAY,CAC3B,KAAgB,EAChB,IAAwB;IAExB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/E,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,UAAU;SACvB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SACpE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;IAEvE,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1E,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC;AAC9C,CAAC;AAED;;iFAEiF;AACjF,MAAM,UAAU,SAAS,CAAC,KAAgB,EAAE,IAAwB;IACnE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IACtD,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7C,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAE7B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;WACjF,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC5C,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,GAAW,CAAC;QAChB,IAAI,UAAU,EAAE,CAAC;YAChB,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;YAC/B,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;YAC/B,mDAAmD;YACnD,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;gBAAE,GAAG,GAAG,CAAC,CAAC;iBACnC,IAAI,EAAE,KAAK,IAAI;gBAAE,GAAG,GAAG,CAAC,CAAC;iBACzB,IAAI,EAAE,KAAK,IAAI;gBAAE,GAAG,GAAG,CAAC,CAAC,CAAC;;gBAC1B,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;QACpB,CAAC;aAAM,CAAC;YACP,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1B,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACjD,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,oBAAoB,CACnC,KAAgB,EAChB,KAA0D;IAE1D,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE;QAC7C,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO;QAC7C,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,gDAAgD,KAAK,iBAAiB,SAAS,GAAG,CAAC,CAAC;IAC5G,CAAC,CAAC;IAEF,KAAK,MAAM,MAAM,IAAI,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO;QAAE,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAExF,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAClC,KAAK,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,KAAK,MAAM,GAAG,IAAI,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC;YAAE,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,gBAAgB,CAAC,KAAgB,EAAE,KAAc,EAAE,MAAe;IACjF,MAAM,KAAK,GAAG,MAAM,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACpE,MAAM,GAAG,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;AACvE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAC1B,KAAgB,EAChB,OAAoE,EAAE;IAEtE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAE7B,MAAM,WAAW,GAAiB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjE,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;QACtC,qEAAqE;QACrE,0BAA0B;QAC1B,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QACpE,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO,SAAS,CAAC;QAC7E,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAkB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAClD,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAa,EAAE,CAAC,CAAC;QAChC,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;KAClE,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AACtD,CAAC;AAED;+CAC+C;AAC/C,SAAS,YAAY,CAAC,IAAc,EAAE,GAAW;IAChD,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,SAAS;QACjC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QACjD,SAAS,GAAG,IAAI,CAAC;IAClB,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC"}
|