@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.
Files changed (35) hide show
  1. package/README.md +33 -2
  2. package/dist/catalog.js +2 -2
  3. package/dist/chunks/{projection-CDMo5g6t.js → projection-DNj8lq4J.js} +3 -3
  4. package/dist/chunks/projection-DNj8lq4J.js.map +1 -0
  5. package/dist/chunks/query-BsvcULsk.js +457 -0
  6. package/dist/chunks/query-BsvcULsk.js.map +1 -0
  7. package/dist/chunks/references-BawYmQMY.js +131 -0
  8. package/dist/chunks/references-BawYmQMY.js.map +1 -0
  9. package/dist/chunks/{structure-Bp7xbPck.js → structure-BdsfUYHS.js} +137 -110
  10. package/dist/chunks/structure-BdsfUYHS.js.map +1 -0
  11. package/dist/chunks/{validate-Cz2tUUdm.js → validate-Bji5gGV1.js} +163 -10
  12. package/dist/chunks/validate-Bji5gGV1.js.map +1 -0
  13. package/dist/core.js +306 -48
  14. package/dist/core.js.map +1 -1
  15. package/dist/react.js +26 -17
  16. package/dist/react.js.map +1 -1
  17. package/dist/testing.js +11 -0
  18. package/dist/testing.js.map +1 -1
  19. package/dist/types/core/actions.d.ts +33 -1
  20. package/dist/types/core/cell-props.d.ts +2 -2
  21. package/dist/types/core/data-context.d.ts +7 -5
  22. package/dist/types/core/diagnostics.d.ts +59 -3
  23. package/dist/types/core/graph.d.ts +6 -2
  24. package/dist/types/core/index.d.ts +7 -4
  25. package/dist/types/core/load-page.d.ts +31 -7
  26. package/dist/types/core/query.d.ts +93 -0
  27. package/dist/types/core/references.d.ts +27 -5
  28. package/dist/types/core/selected.d.ts +9 -0
  29. package/dist/types/react/cell-view.d.ts +5 -0
  30. package/dist/types/react/page-renderer.d.ts +10 -1
  31. package/dist/types/testing/golden.d.ts +5 -0
  32. package/package.json +4 -3
  33. package/dist/chunks/projection-CDMo5g6t.js.map +0 -1
  34. package/dist/chunks/structure-Bp7xbPck.js.map +0 -1
  35. 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 { y as isEach } from "./chunks/structure-Bp7xbPck.js";
2
- import { i as eachFormProblems, s as validatePage } from "./chunks/validate-Cz2tUUdm.js";
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 [key, decl] of Object.entries(cell.data.queries ?? {})) {
96
- const entry = ctx[decl.registry ?? key];
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-CDMo5g6t.js.map
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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"}