@peripheries/renderer 0.8.1 → 0.9.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/README.md +33 -2
- package/dist/catalog.js +2 -2
- package/dist/chunks/{projection-CDMo5g6t.js → projection-DNj8lq4J.js} +3 -3
- package/dist/chunks/projection-DNj8lq4J.js.map +1 -0
- package/dist/chunks/query-BsvcULsk.js +457 -0
- package/dist/chunks/query-BsvcULsk.js.map +1 -0
- package/dist/chunks/references-BawYmQMY.js +131 -0
- package/dist/chunks/references-BawYmQMY.js.map +1 -0
- package/dist/chunks/{structure-Bp7xbPck.js → structure-BdsfUYHS.js} +137 -110
- package/dist/chunks/structure-BdsfUYHS.js.map +1 -0
- package/dist/chunks/{validate-Cz2tUUdm.js → validate-Bji5gGV1.js} +163 -10
- package/dist/chunks/validate-Bji5gGV1.js.map +1 -0
- package/dist/core.js +306 -48
- package/dist/core.js.map +1 -1
- package/dist/react.js +26 -17
- package/dist/react.js.map +1 -1
- package/dist/testing.js +11 -0
- package/dist/testing.js.map +1 -1
- package/dist/types/core/actions.d.ts +33 -1
- package/dist/types/core/cell-props.d.ts +2 -2
- package/dist/types/core/data-context.d.ts +7 -5
- package/dist/types/core/diagnostics.d.ts +59 -3
- package/dist/types/core/graph.d.ts +6 -2
- package/dist/types/core/index.d.ts +7 -4
- package/dist/types/core/load-page.d.ts +31 -7
- package/dist/types/core/query.d.ts +93 -0
- package/dist/types/core/references.d.ts +27 -5
- package/dist/types/core/selected.d.ts +9 -0
- package/dist/types/react/cell-view.d.ts +5 -0
- package/dist/types/react/page-renderer.d.ts +10 -1
- package/dist/types/testing/golden.d.ts +5 -0
- package/package.json +4 -3
- package/dist/chunks/projection-CDMo5g6t.js.map +0 -1
- package/dist/chunks/structure-Bp7xbPck.js.map +0 -1
- package/dist/chunks/validate-Cz2tUUdm.js.map +0 -1
package/README.md
CHANGED
|
@@ -23,8 +23,8 @@ page looks the same in each.
|
|
|
23
23
|
diagnostics go.
|
|
24
24
|
|
|
25
25
|
```tsx
|
|
26
|
-
const runtime = await loadPageData(page, source)
|
|
27
|
-
<PageRenderer runtime={runtime} bundles={bundles} params={params} baseProps={baseProps} context={context} environment={environment} />
|
|
26
|
+
const runtime = await loadPageData(page, source, { params, baseProps, viewer, context })
|
|
27
|
+
<PageRenderer runtime={runtime} bundles={bundles} params={params} baseProps={baseProps} context={context} viewer={viewer} environment={environment} />
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
## What a consumer can hook in
|
|
@@ -68,6 +68,37 @@ bundle's `ThemeProvider` export.
|
|
|
68
68
|
|
|
69
69
|
## Versions
|
|
70
70
|
|
|
71
|
+
- **0.9.0** (data-render M1; prerelease `0.9.0-data-render.0`): queries
|
|
72
|
+
(design/data.md §2–§6), realtime's inputs, the host contract retired, and
|
|
73
|
+
the renderer half of actions (§9.2).
|
|
74
|
+
- A label can be `{ descriptor: QueryDescriptor }`, or a node binding to a
|
|
75
|
+
live `query_data` node, whose descriptor runs instead of returning its
|
|
76
|
+
state. `GraphSource` gains `query(descriptor, variables)`, which returns
|
|
77
|
+
the shaped result; the golden source answers from `queries`, by operation
|
|
78
|
+
name.
|
|
79
|
+
- `/core` exports `validateDescriptor`, `prepareDocument` (the render-time
|
|
80
|
+
rule, with `RENDER_FUNCTIONS`), `resolveDescriptorVariables` (the props
|
|
81
|
+
resolver, for variables), `selectionShape` and `selectionIssues`.
|
|
82
|
+
- `loadPageData(page, source, { params, baseProps, viewer, context })`
|
|
83
|
+
runs queries in rounds: those whose variables read no label with the
|
|
84
|
+
states and walks, then those that read a label, and live nodes' queries.
|
|
85
|
+
A failed or unresolved query gives its own label an error
|
|
86
|
+
(`QUERY_FAILED`, `QUERY_UNRESOLVED`); the rest of the page renders.
|
|
87
|
+
- `@viewer.*` and `@context.*` resolve in props (`PageRenderer` takes
|
|
88
|
+
`viewer`). `viewer`, `context`, `input` and `scope` are reserved labels
|
|
89
|
+
(`LABEL_RESERVED`).
|
|
90
|
+
- New diagnostics: `DESCRIPTOR_*`, `REF_NOT_SELECTED`, `QUERY_READS_QUERY`,
|
|
91
|
+
`QUERY_UNRESOLVED`, `QUERY_FAILED`, `LABEL_RESERVED`.
|
|
92
|
+
- `graphql` is a dependency.
|
|
93
|
+
- `PageRuntime.graphNodeIds`: every graph node a page reads, whose graphs
|
|
94
|
+
are its Realtime topics.
|
|
95
|
+
- `{ registry: "x.y" }` query bindings are retired: an error
|
|
96
|
+
(`UNSUPPORTED_REGISTRY_BINDING`) that aliases nothing.
|
|
97
|
+
- Actions: a cell declares `{ action, … }` with `@input` for what the
|
|
98
|
+
component passes; `RendererEnvironment.runAction` runs it, a call never
|
|
99
|
+
throws, and `WriteResult.code` says why one failed (`ACTION_INVALID`;
|
|
100
|
+
the registry form is `ACTION_REGISTRY`, legacy).
|
|
101
|
+
|
|
71
102
|
- **0.8.1:** `BaseProps` carries the org's `locale` and `currency` (from its
|
|
72
103
|
org template's metadata), which `@stack/charts` formats with.
|
|
73
104
|
- **0.8.0:** the old names go (design/core-and-tokens.md §14). The renderer
|
package/dist/catalog.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { i as eachFormProblems, s as validatePage } from "./chunks/validate-
|
|
1
|
+
import { a as isEach } from "./chunks/references-BawYmQMY.js";
|
|
2
|
+
import { i as eachFormProblems, s as validatePage } from "./chunks/validate-Bji5gGV1.js";
|
|
3
3
|
import { KNOWLEDGE_BUDGETS, KNOWLEDGE_KEY } from "@peripheries/runtime";
|
|
4
4
|
import Ajv2020 from "ajv/dist/2020.js";
|
|
5
5
|
//#region packages/renderer/src/catalog/check.ts
|
|
@@ -92,8 +92,8 @@ function projectCellData(cell, ctx) {
|
|
|
92
92
|
const data = { ...cell.data.static };
|
|
93
93
|
const errors = [];
|
|
94
94
|
let isLoading = false;
|
|
95
|
-
for (const
|
|
96
|
-
const entry = ctx[
|
|
95
|
+
for (const key of Object.keys(cell.data.queries ?? {})) {
|
|
96
|
+
const entry = ctx[key];
|
|
97
97
|
data[key] = entry?.isLoading ? void 0 : entry?.data;
|
|
98
98
|
if (entry?.isLoading) isLoading = true;
|
|
99
99
|
if (entry?.error) errors.push(entry.error);
|
|
@@ -296,4 +296,4 @@ function collectScopeIds(ctx, selections, viewState) {
|
|
|
296
296
|
//#endregion
|
|
297
297
|
export { resolveCell as C, normalizeCell as S, projectCellData as _, projectSelections as a, STORE_FIELDS as b, pageScopeKey as c, resolveComponent as d, cellAttributes as f, assembleCellProps as g, pageContainerStyle as h, projectLive as i, projectScopeKey as l, documentProfile as m, attachViewStateSetters as n, projectViewState as o, cellPlacementStyle as p, collectScopeIds as r, shallowEqualBundle as s, attachSelectionSetters as t, resolveScopeId as u, CONTENT_FIELDS as v, rootCells as w, hasRef as x, HYDRATED_CELL_FIELDS as y };
|
|
298
298
|
|
|
299
|
-
//# sourceMappingURL=projection-
|
|
299
|
+
//# sourceMappingURL=projection-DNj8lq4J.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection-DNj8lq4J.js","names":[],"sources":["../../src/core/cells.ts","../../src/core/cell-props.ts","../../src/core/layout.ts","../../src/core/bundles/resolve.ts","../../src/core/store/scope-keys.ts","../../src/core/store/projection.ts"],"mappings":"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"}
|
|
@@ -0,0 +1,457 @@
|
|
|
1
|
+
import { a as isEach, c as resolveReferences } from "./references-BawYmQMY.js";
|
|
2
|
+
import { DESCRIPTOR_VERSION } from "@peripheries/runtime";
|
|
3
|
+
import { Kind, parse, print, visit } from "graphql";
|
|
4
|
+
//#region packages/renderer/src/core/query.ts
|
|
5
|
+
var RENDER_FUNCTIONS = {
|
|
6
|
+
walk_graph: [
|
|
7
|
+
"edge",
|
|
8
|
+
"graph_edge",
|
|
9
|
+
"graph_node",
|
|
10
|
+
"node",
|
|
11
|
+
"system_node_state"
|
|
12
|
+
],
|
|
13
|
+
resolve_placements: [
|
|
14
|
+
"edge",
|
|
15
|
+
"graph",
|
|
16
|
+
"graph_edge",
|
|
17
|
+
"graph_node",
|
|
18
|
+
"node",
|
|
19
|
+
"object_source",
|
|
20
|
+
"process",
|
|
21
|
+
"system",
|
|
22
|
+
"system_node_state"
|
|
23
|
+
]
|
|
24
|
+
};
|
|
25
|
+
var UnsafeDocumentError = class extends Error {
|
|
26
|
+
name = "UnsafeDocumentError";
|
|
27
|
+
};
|
|
28
|
+
var ENTITY_ROOT = /^(.+?)(Collection|ByPk)$/;
|
|
29
|
+
var prepared = new Map();
|
|
30
|
+
function prepareDocument(source) {
|
|
31
|
+
const hit = prepared.get(source);
|
|
32
|
+
if (hit) return hit;
|
|
33
|
+
const { doc, op } = parseOperation(source);
|
|
34
|
+
const entities = new Set();
|
|
35
|
+
for (const selection of op.selectionSet.selections) {
|
|
36
|
+
if (selection.kind !== Kind.FIELD) throw new UnsafeDocumentError("Fragments are not allowed at the root of a render-time query");
|
|
37
|
+
for (const e of rootEntities(selection)) entities.add(e);
|
|
38
|
+
}
|
|
39
|
+
const text = print(withTypename(doc));
|
|
40
|
+
const out = {
|
|
41
|
+
text,
|
|
42
|
+
operationName: op.name?.value,
|
|
43
|
+
entities: [...entities].sort(),
|
|
44
|
+
hash: fnv1a(text)
|
|
45
|
+
};
|
|
46
|
+
prepared.set(source, out);
|
|
47
|
+
return out;
|
|
48
|
+
}
|
|
49
|
+
function parseOperation(source) {
|
|
50
|
+
let doc;
|
|
51
|
+
try {
|
|
52
|
+
doc = parse(source);
|
|
53
|
+
} catch (e) {
|
|
54
|
+
throw new UnsafeDocumentError(`Not a valid GraphQL document: ${e.message}`);
|
|
55
|
+
}
|
|
56
|
+
const operations = doc.definitions.filter((d) => d.kind === Kind.OPERATION_DEFINITION);
|
|
57
|
+
if (operations.length !== 1) throw new UnsafeDocumentError(`Expected exactly one operation, found ${operations.length}`);
|
|
58
|
+
const [op] = operations;
|
|
59
|
+
if (op.operation !== "query") throw new UnsafeDocumentError(`Only query operations are executable at render time (got ${op.operation})`);
|
|
60
|
+
return {
|
|
61
|
+
doc,
|
|
62
|
+
op
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function rootEntities(field) {
|
|
66
|
+
const name = field.name.value;
|
|
67
|
+
if (name === "__typename") return ["__typename"];
|
|
68
|
+
if (name === "node") return ["*"];
|
|
69
|
+
if (Object.hasOwn(RENDER_FUNCTIONS, name)) return RENDER_FUNCTIONS[name];
|
|
70
|
+
const match = ENTITY_ROOT.exec(name);
|
|
71
|
+
if (!match) throw new UnsafeDocumentError(`Root field "${name}" is not a table or view collection, or a render function. Other function fields (RPCs, rls_* helpers) and introspection are not allowed at render time.`);
|
|
72
|
+
return [match[1]];
|
|
73
|
+
}
|
|
74
|
+
function withTypename(doc) {
|
|
75
|
+
return visit(doc, { SelectionSet: { leave(node, _key, parent) {
|
|
76
|
+
if (parent && "kind" in parent && parent.kind === Kind.OPERATION_DEFINITION) return node;
|
|
77
|
+
if (node.selections.some((s) => s.kind === Kind.FIELD && s.name.value === "__typename" && !s.alias)) return node;
|
|
78
|
+
return {
|
|
79
|
+
...node,
|
|
80
|
+
selections: [...node.selections, {
|
|
81
|
+
kind: Kind.FIELD,
|
|
82
|
+
name: {
|
|
83
|
+
kind: Kind.NAME,
|
|
84
|
+
value: "__typename"
|
|
85
|
+
}
|
|
86
|
+
}]
|
|
87
|
+
};
|
|
88
|
+
} } });
|
|
89
|
+
}
|
|
90
|
+
function fnv1a(input) {
|
|
91
|
+
let hash = 2166136261;
|
|
92
|
+
for (let i = 0; i < input.length; i++) {
|
|
93
|
+
hash ^= input.charCodeAt(i);
|
|
94
|
+
hash = Math.imul(hash, 16777619);
|
|
95
|
+
}
|
|
96
|
+
return (hash >>> 0).toString(36);
|
|
97
|
+
}
|
|
98
|
+
var LEAF = { kind: "leaf" };
|
|
99
|
+
function selectionShape(document, flatten = true) {
|
|
100
|
+
const { doc, op } = parseOperation(document);
|
|
101
|
+
const fragments = new Map(doc.definitions.filter((d) => d.kind === Kind.FRAGMENT_DEFINITION).map((f) => [f.name.value, f]));
|
|
102
|
+
const build = (set, nested, seen) => {
|
|
103
|
+
const fields = nested ? { __typename: LEAF } : {};
|
|
104
|
+
const visiting = new Set(seen);
|
|
105
|
+
const add = (s) => {
|
|
106
|
+
for (const sel of s.selections) if (sel.kind === Kind.FIELD) {
|
|
107
|
+
const key = sel.alias?.value ?? sel.name.value;
|
|
108
|
+
const child = sel.selectionSet ? build(sel.selectionSet, true, visiting) : LEAF;
|
|
109
|
+
fields[key] = merge(fields[key], sel.name.value === "edges" && child.kind === "object" && child.fields.node ? {
|
|
110
|
+
kind: "list",
|
|
111
|
+
of: child
|
|
112
|
+
} : child);
|
|
113
|
+
} else if (sel.kind === Kind.INLINE_FRAGMENT) add(sel.selectionSet);
|
|
114
|
+
else {
|
|
115
|
+
const f = fragments.get(sel.name.value);
|
|
116
|
+
if (f && !visiting.has(f.name.value)) {
|
|
117
|
+
visiting.add(f.name.value);
|
|
118
|
+
add(f.selectionSet);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
add(set);
|
|
123
|
+
if (flatten) {
|
|
124
|
+
const edges = fields.edges;
|
|
125
|
+
if (edges?.kind === "list" && edges.of.kind === "object" && edges.of.fields.node) return {
|
|
126
|
+
kind: "list",
|
|
127
|
+
of: edges.of.fields.node
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
return {
|
|
131
|
+
kind: "object",
|
|
132
|
+
fields
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
return build(op.selectionSet, false, new Set());
|
|
136
|
+
}
|
|
137
|
+
function merge(a, b) {
|
|
138
|
+
if (!a || a.kind === "leaf") return b;
|
|
139
|
+
if (b.kind === "leaf") return a;
|
|
140
|
+
if (a.kind === "object" && b.kind === "object") {
|
|
141
|
+
const fields = { ...a.fields };
|
|
142
|
+
for (const [k, v] of Object.entries(b.fields)) fields[k] = merge(fields[k], v);
|
|
143
|
+
return {
|
|
144
|
+
kind: "object",
|
|
145
|
+
fields
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
if (a.kind === "list" && b.kind === "list") return {
|
|
149
|
+
kind: "list",
|
|
150
|
+
of: merge(a.of, b.of)
|
|
151
|
+
};
|
|
152
|
+
return b;
|
|
153
|
+
}
|
|
154
|
+
function shapeAt(shape, path) {
|
|
155
|
+
let cur = shape;
|
|
156
|
+
for (const seg of path) {
|
|
157
|
+
if (cur.kind === "leaf") return LEAF;
|
|
158
|
+
if (cur.kind === "list") {
|
|
159
|
+
if (!/^\d+$/.test(seg)) return null;
|
|
160
|
+
cur = cur.of;
|
|
161
|
+
} else {
|
|
162
|
+
const next = cur.fields[seg];
|
|
163
|
+
if (!next) return null;
|
|
164
|
+
cur = next;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return cur;
|
|
168
|
+
}
|
|
169
|
+
function descriptorShape(descriptor) {
|
|
170
|
+
return shapeAt(selectionShape(descriptor.document, descriptor.result?.flatten_connections !== false), splitPath(descriptor.result?.path));
|
|
171
|
+
}
|
|
172
|
+
var splitPath = (path) => path ? path.split(".").filter(Boolean) : [];
|
|
173
|
+
var DESCRIPTOR_KEYS = new Set([
|
|
174
|
+
"kind",
|
|
175
|
+
"version",
|
|
176
|
+
"document",
|
|
177
|
+
"variables",
|
|
178
|
+
"result",
|
|
179
|
+
"order_by"
|
|
180
|
+
]);
|
|
181
|
+
var RESULT_KEYS = new Set(["path", "flatten_connections"]);
|
|
182
|
+
var ORDER_KEYS = new Set([
|
|
183
|
+
"field",
|
|
184
|
+
"direction",
|
|
185
|
+
"nulls"
|
|
186
|
+
]);
|
|
187
|
+
var COLUMN = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
188
|
+
var STRICT_REF = /^@([A-Za-z0-9_$-]+)(\.[A-Za-z0-9_$[\]-]+)*$/;
|
|
189
|
+
var VARIABLE_NAMESPACES = [
|
|
190
|
+
"params",
|
|
191
|
+
"baseProps",
|
|
192
|
+
"viewer",
|
|
193
|
+
"context"
|
|
194
|
+
];
|
|
195
|
+
var NOT_IN_VARIABLES = new Set(["input", "scope"]);
|
|
196
|
+
var NAMESPACES = new Set(VARIABLE_NAMESPACES);
|
|
197
|
+
var isObject = (v) => !!v && typeof v === "object" && !Array.isArray(v);
|
|
198
|
+
function variableReferences(variables) {
|
|
199
|
+
const out = [];
|
|
200
|
+
const visitValue = (v) => {
|
|
201
|
+
if (typeof v === "string") {
|
|
202
|
+
const m = STRICT_REF.exec(v);
|
|
203
|
+
if (m) out.push({
|
|
204
|
+
ref: v,
|
|
205
|
+
label: m[1]
|
|
206
|
+
});
|
|
207
|
+
} else if (Array.isArray(v)) v.forEach(visitValue);
|
|
208
|
+
else if (isObject(v)) Object.values(v).forEach(visitValue);
|
|
209
|
+
};
|
|
210
|
+
visitValue(variables);
|
|
211
|
+
return out;
|
|
212
|
+
}
|
|
213
|
+
var variableLabels = (descriptor) => [...new Set(variableReferences(descriptor.variables).map((r) => r.label))].filter((l) => !NAMESPACES.has(l));
|
|
214
|
+
function validateDescriptor(descriptor, path = "descriptor") {
|
|
215
|
+
const out = [];
|
|
216
|
+
const push = (d) => out.push(d);
|
|
217
|
+
if (!isObject(descriptor)) {
|
|
218
|
+
push({
|
|
219
|
+
severity: "error",
|
|
220
|
+
code: "DESCRIPTOR_INVALID",
|
|
221
|
+
path,
|
|
222
|
+
message: "a descriptor is an object: { kind: \"graphql\", version: 1, document, variables?, result?, order_by? }"
|
|
223
|
+
});
|
|
224
|
+
return out;
|
|
225
|
+
}
|
|
226
|
+
if (descriptor.kind !== "graphql") push({
|
|
227
|
+
severity: "error",
|
|
228
|
+
code: "DESCRIPTOR_INVALID",
|
|
229
|
+
path: `${path}.kind`,
|
|
230
|
+
message: `kind is "${String(descriptor.kind)}"; expected "graphql"`
|
|
231
|
+
});
|
|
232
|
+
if (descriptor.version !== DESCRIPTOR_VERSION) push({
|
|
233
|
+
severity: "error",
|
|
234
|
+
code: "DESCRIPTOR_INVALID",
|
|
235
|
+
path: `${path}.version`,
|
|
236
|
+
message: `version is ${JSON.stringify(descriptor.version)}; expected ${DESCRIPTOR_VERSION}`
|
|
237
|
+
});
|
|
238
|
+
for (const k of Object.keys(descriptor)) if (!DESCRIPTOR_KEYS.has(k)) push({
|
|
239
|
+
severity: "error",
|
|
240
|
+
code: "DESCRIPTOR_INVALID",
|
|
241
|
+
path: `${path}.${k}`,
|
|
242
|
+
message: `a descriptor has no "${k}"`
|
|
243
|
+
});
|
|
244
|
+
const variables = descriptor.variables;
|
|
245
|
+
if (variables !== void 0 && !isObject(variables)) push({
|
|
246
|
+
severity: "error",
|
|
247
|
+
code: "DESCRIPTOR_INVALID",
|
|
248
|
+
path: `${path}.variables`,
|
|
249
|
+
message: "variables must be an object of name → value"
|
|
250
|
+
});
|
|
251
|
+
const given = isObject(variables) ? variables : {};
|
|
252
|
+
checkVariableValues(given, `${path}.variables`, push);
|
|
253
|
+
const result = descriptor.result;
|
|
254
|
+
if (result !== void 0) {
|
|
255
|
+
if (!isObject(result)) push({
|
|
256
|
+
severity: "error",
|
|
257
|
+
code: "DESCRIPTOR_INVALID",
|
|
258
|
+
path: `${path}.result`,
|
|
259
|
+
message: "result must be { path?, flatten_connections? }"
|
|
260
|
+
});
|
|
261
|
+
else {
|
|
262
|
+
for (const k of Object.keys(result)) if (!RESULT_KEYS.has(k)) push({
|
|
263
|
+
severity: "error",
|
|
264
|
+
code: "DESCRIPTOR_INVALID",
|
|
265
|
+
path: `${path}.result.${k}`,
|
|
266
|
+
message: `result has no "${k}"`
|
|
267
|
+
});
|
|
268
|
+
if (result.path !== void 0 && typeof result.path !== "string") push({
|
|
269
|
+
severity: "error",
|
|
270
|
+
code: "DESCRIPTOR_INVALID",
|
|
271
|
+
path: `${path}.result.path`,
|
|
272
|
+
message: "result.path is a dot path string"
|
|
273
|
+
});
|
|
274
|
+
if (result.flatten_connections !== void 0 && typeof result.flatten_connections !== "boolean") push({
|
|
275
|
+
severity: "error",
|
|
276
|
+
code: "DESCRIPTOR_INVALID",
|
|
277
|
+
path: `${path}.result.flatten_connections`,
|
|
278
|
+
message: "result.flatten_connections is true or false"
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
const orderBy = descriptor.order_by;
|
|
283
|
+
if (orderBy !== void 0) {
|
|
284
|
+
if (!Array.isArray(orderBy)) push({
|
|
285
|
+
severity: "error",
|
|
286
|
+
code: "DESCRIPTOR_INVALID",
|
|
287
|
+
path: `${path}.order_by`,
|
|
288
|
+
message: "order_by is a list of { field, direction?, nulls? }"
|
|
289
|
+
});
|
|
290
|
+
else orderBy.forEach((o, i) => {
|
|
291
|
+
const at = `${path}.order_by[${i}]`;
|
|
292
|
+
if (!isObject(o)) return push({
|
|
293
|
+
severity: "error",
|
|
294
|
+
code: "DESCRIPTOR_INVALID",
|
|
295
|
+
path: at,
|
|
296
|
+
message: "an order_by entry is { field, direction?, nulls? }"
|
|
297
|
+
});
|
|
298
|
+
for (const k of Object.keys(o)) if (!ORDER_KEYS.has(k)) push({
|
|
299
|
+
severity: "error",
|
|
300
|
+
code: "DESCRIPTOR_INVALID",
|
|
301
|
+
path: `${at}.${k}`,
|
|
302
|
+
message: `an order_by entry has no "${k}"`
|
|
303
|
+
});
|
|
304
|
+
if (typeof o.field !== "string" || !COLUMN.test(o.field)) push({
|
|
305
|
+
severity: "error",
|
|
306
|
+
code: "DESCRIPTOR_INVALID",
|
|
307
|
+
path: `${at}.field`,
|
|
308
|
+
message: "a query sorts by a column of its rows; a path into a state is for traversals and folders"
|
|
309
|
+
});
|
|
310
|
+
if (o.direction !== void 0 && o.direction !== "asc" && o.direction !== "desc") push({
|
|
311
|
+
severity: "error",
|
|
312
|
+
code: "DESCRIPTOR_INVALID",
|
|
313
|
+
path: `${at}.direction`,
|
|
314
|
+
message: "direction is asc or desc"
|
|
315
|
+
});
|
|
316
|
+
if (o.nulls !== void 0 && o.nulls !== "first" && o.nulls !== "last") push({
|
|
317
|
+
severity: "error",
|
|
318
|
+
code: "DESCRIPTOR_INVALID",
|
|
319
|
+
path: `${at}.nulls`,
|
|
320
|
+
message: "nulls is first or last"
|
|
321
|
+
});
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
if (typeof descriptor.document !== "string" || !descriptor.document.trim()) {
|
|
325
|
+
push({
|
|
326
|
+
severity: "error",
|
|
327
|
+
code: "DESCRIPTOR_DOCUMENT_INVALID",
|
|
328
|
+
path: `${path}.document`,
|
|
329
|
+
message: "document is one GraphQL query operation"
|
|
330
|
+
});
|
|
331
|
+
return out;
|
|
332
|
+
}
|
|
333
|
+
let op;
|
|
334
|
+
try {
|
|
335
|
+
prepareDocument(descriptor.document);
|
|
336
|
+
op = parseOperation(descriptor.document).op;
|
|
337
|
+
} catch (e) {
|
|
338
|
+
push({
|
|
339
|
+
severity: "error",
|
|
340
|
+
code: "DESCRIPTOR_DOCUMENT_INVALID",
|
|
341
|
+
path: `${path}.document`,
|
|
342
|
+
message: e.message
|
|
343
|
+
});
|
|
344
|
+
return out;
|
|
345
|
+
}
|
|
346
|
+
const declared = new Map(op.variableDefinitions?.map((v) => [v.variable.name.value, v]) ?? []);
|
|
347
|
+
for (const [name, def] of declared) {
|
|
348
|
+
const required = def.type.kind === Kind.NON_NULL_TYPE && !def.defaultValue;
|
|
349
|
+
if (name === "orderBy" && Array.isArray(orderBy) && orderBy.length) continue;
|
|
350
|
+
if (required && given[name] === void 0) push({
|
|
351
|
+
severity: "error",
|
|
352
|
+
code: "DESCRIPTOR_VARIABLE_MISSING",
|
|
353
|
+
path: `${path}.variables.${name}`,
|
|
354
|
+
message: `the document requires $${name}, and variables gives none`
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
for (const name of Object.keys(given)) if (!declared.has(name)) push({
|
|
358
|
+
severity: "warning",
|
|
359
|
+
code: "DESCRIPTOR_VARIABLE_UNDECLARED",
|
|
360
|
+
path: `${path}.variables.${name}`,
|
|
361
|
+
message: `the document declares no $${name}, so this value is never used`
|
|
362
|
+
});
|
|
363
|
+
if (Array.isArray(orderBy) && orderBy.length && !declared.has("orderBy")) push({
|
|
364
|
+
severity: "warning",
|
|
365
|
+
code: "DESCRIPTOR_ORDER_BY_UNUSED",
|
|
366
|
+
path: `${path}.order_by`,
|
|
367
|
+
message: "the document declares no $orderBy, so its own orderBy applies and order_by is ignored"
|
|
368
|
+
});
|
|
369
|
+
const resultPath = isObject(result) && typeof result.path === "string" ? result.path : void 0;
|
|
370
|
+
if (resultPath && !descriptorShape(descriptor)) push({
|
|
371
|
+
severity: "error",
|
|
372
|
+
code: "DESCRIPTOR_RESULT_PATH",
|
|
373
|
+
path: `${path}.result.path`,
|
|
374
|
+
message: `the document selects nothing at "${resultPath}"`
|
|
375
|
+
});
|
|
376
|
+
return out;
|
|
377
|
+
}
|
|
378
|
+
function checkVariableValues(value, path, push) {
|
|
379
|
+
if (typeof value === "string") {
|
|
380
|
+
if (!value.startsWith("@")) return;
|
|
381
|
+
const m = STRICT_REF.exec(value);
|
|
382
|
+
if (!m) return push({
|
|
383
|
+
severity: "error",
|
|
384
|
+
code: "DESCRIPTOR_REFERENCE_INVALID",
|
|
385
|
+
path,
|
|
386
|
+
message: `"${value}" isn't a whole \`@label.path\` reference`
|
|
387
|
+
});
|
|
388
|
+
if (NOT_IN_VARIABLES.has(m[1])) push({
|
|
389
|
+
severity: "error",
|
|
390
|
+
code: "DESCRIPTOR_REFERENCE_INVALID",
|
|
391
|
+
path,
|
|
392
|
+
message: `a variable can't read @${m[1]}; it reads @params, @baseProps, @viewer, @context or a label`
|
|
393
|
+
});
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
if (Array.isArray(value)) return value.forEach((v, i) => checkVariableValues(v, `${path}[${i}]`, push));
|
|
397
|
+
if (!isObject(value)) return;
|
|
398
|
+
if (isEach(value)) return push({
|
|
399
|
+
severity: "error",
|
|
400
|
+
code: "DESCRIPTOR_REFERENCE_INVALID",
|
|
401
|
+
path,
|
|
402
|
+
message: "a projection (@each) shapes props, not variables; select the list you need in the query"
|
|
403
|
+
});
|
|
404
|
+
for (const [k, v] of Object.entries(value)) checkVariableValues(v, `${path}.${k}`, push);
|
|
405
|
+
}
|
|
406
|
+
var ORDER = {
|
|
407
|
+
"asc|first": "AscNullsFirst",
|
|
408
|
+
"asc|last": "AscNullsLast",
|
|
409
|
+
"desc|first": "DescNullsFirst",
|
|
410
|
+
"desc|last": "DescNullsLast"
|
|
411
|
+
};
|
|
412
|
+
var orderByVariable = (orderBy) => orderBy.map((o) => ({ [o.field]: ORDER[`${o.direction ?? "asc"}|${o.nulls ?? "last"}`] }));
|
|
413
|
+
function resolveDescriptorVariables(descriptor, ctx) {
|
|
414
|
+
const unresolved = [];
|
|
415
|
+
const pending = [];
|
|
416
|
+
const resolve = (v) => {
|
|
417
|
+
if (typeof v === "string") {
|
|
418
|
+
if (!STRICT_REF.test(v)) return resolveReferences(v, ctx);
|
|
419
|
+
let loading = false;
|
|
420
|
+
const value = resolveReferences(v, {
|
|
421
|
+
...ctx,
|
|
422
|
+
onUnresolved: void 0,
|
|
423
|
+
onLoading: () => loading = true
|
|
424
|
+
});
|
|
425
|
+
if (loading) pending.push(v);
|
|
426
|
+
else if (value === null || value === void 0) unresolved.push(v);
|
|
427
|
+
return value;
|
|
428
|
+
}
|
|
429
|
+
if (Array.isArray(v)) return v.map(resolve);
|
|
430
|
+
if (isObject(v)) return Object.fromEntries(Object.entries(v).map(([k, x]) => [k, resolve(x)]));
|
|
431
|
+
return v;
|
|
432
|
+
};
|
|
433
|
+
const variables = resolve(descriptor.variables ?? {});
|
|
434
|
+
if (descriptor.order_by?.length && declaresVariable(descriptor.document, "orderBy")) variables.orderBy = orderByVariable(descriptor.order_by);
|
|
435
|
+
return {
|
|
436
|
+
variables,
|
|
437
|
+
unresolved,
|
|
438
|
+
pending
|
|
439
|
+
};
|
|
440
|
+
}
|
|
441
|
+
function declaresVariable(document, name) {
|
|
442
|
+
try {
|
|
443
|
+
return parseOperation(document).op.variableDefinitions?.some((v) => v.variable.name.value === name) ?? false;
|
|
444
|
+
} catch {
|
|
445
|
+
return false;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
var queryKey = (descriptor, variables) => JSON.stringify([
|
|
449
|
+
prepareDocument(descriptor.document).hash,
|
|
450
|
+
variables,
|
|
451
|
+
descriptor.result?.path ?? null,
|
|
452
|
+
descriptor.result?.flatten_connections !== false
|
|
453
|
+
]);
|
|
454
|
+
//#endregion
|
|
455
|
+
export { orderByVariable as a, resolveDescriptorVariables as c, validateDescriptor as d, variableLabels as f, descriptorShape as i, selectionShape as l, UnsafeDocumentError as n, prepareDocument as o, variableReferences as p, VARIABLE_NAMESPACES as r, queryKey as s, RENDER_FUNCTIONS as t, shapeAt as u };
|
|
456
|
+
|
|
457
|
+
//# sourceMappingURL=query-BsvcULsk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-BsvcULsk.js","names":[],"sources":["../../src/core/query.ts"],"mappings":"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"}
|