@graview/core 0.1.9 → 0.1.12

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 (200) hide show
  1. package/README.md +19 -8
  2. package/dist/app.d.ts +41 -2
  3. package/dist/app.d.ts.map +1 -1
  4. package/dist/app.js.map +1 -1
  5. package/dist/blocks.d.ts +5 -0
  6. package/dist/blocks.d.ts.map +1 -0
  7. package/dist/blocks.js +14 -0
  8. package/dist/blocks.js.map +1 -0
  9. package/dist/capabilities.js +1 -1
  10. package/dist/capabilities.js.map +1 -1
  11. package/dist/check.d.ts +8 -0
  12. package/dist/check.d.ts.map +1 -0
  13. package/dist/check.js +19 -0
  14. package/dist/check.js.map +1 -0
  15. package/dist/cli/check/arrangement.d.ts.map +1 -1
  16. package/dist/cli/check/arrangement.js +3 -2
  17. package/dist/cli/check/arrangement.js.map +1 -1
  18. package/dist/cli/check/brand.d.ts.map +1 -1
  19. package/dist/cli/check/brand.js +21 -0
  20. package/dist/cli/check/brand.js.map +1 -1
  21. package/dist/cli/check/computed.d.ts +14 -0
  22. package/dist/cli/check/computed.d.ts.map +1 -0
  23. package/dist/cli/check/computed.js +34 -0
  24. package/dist/cli/check/computed.js.map +1 -0
  25. package/dist/cli/check/hidden-reads.d.ts +4 -0
  26. package/dist/cli/check/hidden-reads.d.ts.map +1 -0
  27. package/dist/cli/check/hidden-reads.js +152 -0
  28. package/dist/cli/check/hidden-reads.js.map +1 -0
  29. package/dist/cli/check/index.d.ts +2 -0
  30. package/dist/cli/check/index.d.ts.map +1 -1
  31. package/dist/cli/check/index.js +2 -0
  32. package/dist/cli/check/index.js.map +1 -1
  33. package/dist/cli/check/lenses.d.ts +10 -0
  34. package/dist/cli/check/lenses.d.ts.map +1 -1
  35. package/dist/cli/check/lenses.js +37 -19
  36. package/dist/cli/check/lenses.js.map +1 -1
  37. package/dist/cli/check/relations.d.ts.map +1 -1
  38. package/dist/cli/check/relations.js +2 -1
  39. package/dist/cli/check/relations.js.map +1 -1
  40. package/dist/cli/check/views.d.ts.map +1 -1
  41. package/dist/cli/check/views.js +13 -3
  42. package/dist/cli/check/views.js.map +1 -1
  43. package/dist/cli/check.d.ts.map +1 -1
  44. package/dist/cli/check.js +5 -1
  45. package/dist/cli/check.js.map +1 -1
  46. package/dist/cli/create.d.ts.map +1 -1
  47. package/dist/cli/create.js +1 -1
  48. package/dist/cli/create.js.map +1 -1
  49. package/dist/cli/describe.d.ts.map +1 -1
  50. package/dist/cli/describe.js +66 -1
  51. package/dist/cli/describe.js.map +1 -1
  52. package/dist/cli/index.d.ts +2 -2
  53. package/dist/cli/index.d.ts.map +1 -1
  54. package/dist/cli/index.js +23 -2
  55. package/dist/cli/index.js.map +1 -1
  56. package/dist/columns.d.ts +73 -0
  57. package/dist/columns.d.ts.map +1 -0
  58. package/dist/columns.js +100 -0
  59. package/dist/columns.js.map +1 -0
  60. package/dist/conformance/index.js +1 -1
  61. package/dist/conformance/index.js.map +1 -1
  62. package/dist/describe.d.ts +5 -0
  63. package/dist/describe.d.ts.map +1 -0
  64. package/dist/describe.js +19 -0
  65. package/dist/describe.js.map +1 -0
  66. package/dist/document/blocks.d.ts +187 -0
  67. package/dist/document/blocks.d.ts.map +1 -0
  68. package/dist/document/blocks.js +372 -0
  69. package/dist/document/blocks.js.map +1 -0
  70. package/dist/document/compile-checked.d.ts +8 -0
  71. package/dist/document/compile-checked.d.ts.map +1 -0
  72. package/dist/document/compile-checked.js +36 -0
  73. package/dist/document/compile-checked.js.map +1 -0
  74. package/dist/document/compile.d.ts +8 -6
  75. package/dist/document/compile.d.ts.map +1 -1
  76. package/dist/document/compile.js +68 -46
  77. package/dist/document/compile.js.map +1 -1
  78. package/dist/document/computed-values.d.ts +33 -0
  79. package/dist/document/computed-values.d.ts.map +1 -0
  80. package/dist/document/computed-values.js +60 -0
  81. package/dist/document/computed-values.js.map +1 -0
  82. package/dist/document/computed.d.ts +42 -0
  83. package/dist/document/computed.d.ts.map +1 -0
  84. package/dist/document/computed.js +173 -0
  85. package/dist/document/computed.js.map +1 -0
  86. package/dist/document/describe-place.d.ts +95 -0
  87. package/dist/document/describe-place.d.ts.map +1 -0
  88. package/dist/document/describe-place.js +286 -0
  89. package/dist/document/describe-place.js.map +1 -0
  90. package/dist/document/diff.d.ts.map +1 -1
  91. package/dist/document/diff.js +78 -4
  92. package/dist/document/diff.js.map +1 -1
  93. package/dist/document/edit.d.ts +1 -1
  94. package/dist/document/edit.d.ts.map +1 -1
  95. package/dist/document/edit.js +908 -107
  96. package/dist/document/edit.js.map +1 -1
  97. package/dist/document/expr/analyze.d.ts +22 -0
  98. package/dist/document/expr/analyze.d.ts.map +1 -1
  99. package/dist/document/expr/analyze.js +51 -4
  100. package/dist/document/expr/analyze.js.map +1 -1
  101. package/dist/document/expr/evaluate.d.ts +7 -1
  102. package/dist/document/expr/evaluate.d.ts.map +1 -1
  103. package/dist/document/expr/evaluate.js +121 -8
  104. package/dist/document/expr/evaluate.js.map +1 -1
  105. package/dist/document/expr/index.d.ts +1 -1
  106. package/dist/document/expr/index.d.ts.map +1 -1
  107. package/dist/document/expr/index.js +1 -1
  108. package/dist/document/expr/index.js.map +1 -1
  109. package/dist/document/expr/parse.d.ts +2 -1
  110. package/dist/document/expr/parse.d.ts.map +1 -1
  111. package/dist/document/expr/parse.js +6 -3
  112. package/dist/document/expr/parse.js.map +1 -1
  113. package/dist/document/expr/print.d.ts.map +1 -1
  114. package/dist/document/expr/print.js +4 -2
  115. package/dist/document/expr/print.js.map +1 -1
  116. package/dist/document/graview-template.d.ts +20 -12
  117. package/dist/document/graview-template.d.ts.map +1 -1
  118. package/dist/document/graview-template.js +5 -44
  119. package/dist/document/graview-template.js.map +1 -1
  120. package/dist/document/index.d.ts +8 -8
  121. package/dist/document/index.d.ts.map +1 -1
  122. package/dist/document/index.js +5 -5
  123. package/dist/document/index.js.map +1 -1
  124. package/dist/document/instantiate-template.d.ts +14 -0
  125. package/dist/document/instantiate-template.d.ts.map +1 -0
  126. package/dist/document/instantiate-template.js +46 -0
  127. package/dist/document/instantiate-template.js.map +1 -0
  128. package/dist/document/rules.d.ts +2 -1
  129. package/dist/document/rules.d.ts.map +1 -1
  130. package/dist/document/rules.js +5 -1
  131. package/dist/document/rules.js.map +1 -1
  132. package/dist/document/schema.d.ts +46 -5
  133. package/dist/document/schema.d.ts.map +1 -1
  134. package/dist/document/schema.js +31 -3
  135. package/dist/document/schema.js.map +1 -1
  136. package/dist/document/template.d.ts +33 -2
  137. package/dist/document/template.d.ts.map +1 -1
  138. package/dist/document/template.js +156 -18
  139. package/dist/document/template.js.map +1 -1
  140. package/dist/document/thumbnail.d.ts +5 -4
  141. package/dist/document/thumbnail.d.ts.map +1 -1
  142. package/dist/document/thumbnail.js +29 -21
  143. package/dist/document/thumbnail.js.map +1 -1
  144. package/dist/document/to-document.d.ts.map +1 -1
  145. package/dist/document/to-document.js +6 -1
  146. package/dist/document/to-document.js.map +1 -1
  147. package/dist/document/views.d.ts +58 -3
  148. package/dist/document/views.d.ts.map +1 -1
  149. package/dist/document/views.js +356 -24
  150. package/dist/document/views.js.map +1 -1
  151. package/dist/figures.d.ts +3 -0
  152. package/dist/figures.d.ts.map +1 -0
  153. package/dist/figures.js +14 -0
  154. package/dist/figures.js.map +1 -0
  155. package/dist/index.d.ts +3 -12
  156. package/dist/index.d.ts.map +1 -1
  157. package/dist/index.js +2 -7
  158. package/dist/index.js.map +1 -1
  159. package/dist/mutations/types.d.ts +12 -0
  160. package/dist/mutations/types.d.ts.map +1 -1
  161. package/dist/places.d.ts +197 -0
  162. package/dist/places.d.ts.map +1 -0
  163. package/dist/places.js +376 -0
  164. package/dist/places.js.map +1 -0
  165. package/dist/scaffold/domain.js +1 -1
  166. package/dist/scaffold/from-template.d.ts.map +1 -1
  167. package/dist/scaffold/from-template.js +3 -3
  168. package/dist/scaffold/from-template.js.map +1 -1
  169. package/dist/scaffold/project.d.ts.map +1 -1
  170. package/dist/scaffold/project.js +13 -0
  171. package/dist/scaffold/project.js.map +1 -1
  172. package/dist/scaffold/ui.d.ts.map +1 -1
  173. package/dist/scaffold/ui.js +13 -10
  174. package/dist/scaffold/ui.js.map +1 -1
  175. package/dist/scene-districts.d.ts +5 -1
  176. package/dist/scene-districts.d.ts.map +1 -1
  177. package/dist/scene-districts.js +11 -4
  178. package/dist/scene-districts.js.map +1 -1
  179. package/dist/scene.d.ts +7 -0
  180. package/dist/scene.d.ts.map +1 -0
  181. package/dist/scene.js +16 -0
  182. package/dist/scene.js.map +1 -0
  183. package/dist/schema/define-node.d.ts +3 -0
  184. package/dist/schema/define-node.d.ts.map +1 -1
  185. package/dist/schema/define-node.js +3 -1
  186. package/dist/schema/define-node.js.map +1 -1
  187. package/dist/schema/types.d.ts +17 -0
  188. package/dist/schema/types.d.ts.map +1 -1
  189. package/dist/theme/types.d.ts +9 -0
  190. package/dist/theme/types.d.ts.map +1 -1
  191. package/dist/theme/types.js.map +1 -1
  192. package/dist/version.d.ts +1 -1
  193. package/dist/version.d.ts.map +1 -1
  194. package/dist/version.js +1 -1
  195. package/dist/version.js.map +1 -1
  196. package/dist/views/types.d.ts +19 -0
  197. package/dist/views/types.d.ts.map +1 -1
  198. package/dist/views/types.js +14 -0
  199. package/dist/views/types.js.map +1 -1
  200. package/package.json +21 -1
@@ -1,6 +1,7 @@
1
1
  import { analyzeExpr } from "./expr/analyze.js";
2
2
  import { ExprSyntaxError, parseExpr } from "./expr/parse.js";
3
- import { error } from "./findings.js";
3
+ import { error, warning } from "./findings.js";
4
+ import { fieldSpecOf } from "./to-document.js";
4
5
  import { parseTemplate, TemplateError } from "./template.js";
5
6
  /*
6
7
  * VIEW SPECS — Tier 1 custom UI, as data (ADR 0004, docs/declaration-document.md).
@@ -26,30 +27,51 @@ export const VIEW_FIELD_FORMATS = ["money", "percent", "date", "relative", "coun
26
27
  export const MAX_VIEW_DEPTH = 4;
27
28
  /** Blocks in one view, counting nested ones. */
28
29
  export const MAX_VIEW_BLOCKS = 40;
30
+ /** How a `figure` block says its number (FR-81). */
31
+ export const FIGURE_FORMATS = ["number", "money", "percent"];
32
+ /** How a `list` block draws each record it lists: with the kind's own card, or its own row (FR-81, FR-82). */
33
+ export const LIST_AS = ["card", "row"];
34
+ /** The most records one list draws; a `limit` says fewer. */
35
+ export const MAX_LIST_LIMIT = 100;
29
36
  /** What each block may say besides the key that names it. */
30
37
  const BLOCK_KEYS = {
31
38
  title: [],
39
+ headline: [],
40
+ list: ["sort", "limit", "group", "empty", "as"],
32
41
  text: ["tone"],
33
42
  badge: ["tone"],
34
- field: ["as", "label"],
43
+ field: ["as", "currency", "label"],
35
44
  progress: ["label"],
36
45
  group: ["direction"],
37
46
  when: ["show"],
38
47
  divider: [],
39
- figure: [],
48
+ // `{"figure": true}` is the kind's picture; `{"figure": expr, …}` a number worked out (FR-81).
49
+ figure: ["as", "currency", "label"],
40
50
  };
41
51
  const BLOCK_TYPES = Object.keys(BLOCK_KEYS);
42
- const SHAPES = '{"title": "{name}"}, {"text": "…", "tone"?}, {"badge": "{status}", "tone"?}, {"field": "quote", "as"?, "label"?}, {"progress": {"value": expr, "max": expr}, "label"?}, {"group": [blocks], "direction"?: "row"|"column"}, {"when": expr, "show": [blocks]}, {"divider": true}, {"figure": true}';
43
- /** The view specs of a document that has been read; empty when it has none. */
52
+ const SHAPES = '{"title": "{name}"}, {"headline": "{count(all(\'offer\'))} offers"}, {"figure": expr, "as"?: "number"|"money"|"percent", "currency"?, "label"?}, {"list": expr, "sort"?, "limit"?, "group"?, "empty"?, "as"?: "card"|"row"}, {"text": "…", "tone"?}, {"badge": "{status}", "tone"?}, {"field": "quote", "as"?, "currency"?, "label"?}, {"progress": {"value": expr, "max": expr}, "label"?}, {"group": [blocks], "direction"?: "row"|"column"}, {"when": expr, "show": [blocks]}, {"divider": true}, {"figure": true}';
53
+ /** The view specs of a document that has been read, by kind; empty when it has none. The home view is no kind's: see `homeOf`. */
44
54
  export function viewsOf(document) {
45
- return (document.views ?? {});
55
+ return Object.fromEntries(Object.entries(document.views ?? {}).filter(([, specs]) => !Array.isArray(specs)));
46
56
  }
57
+ /** A document's home view (`views.home`, a list of blocks), when it has one. */
58
+ export function homeOf(document) {
59
+ const home = document.views?.["home"];
60
+ return Array.isArray(home) ? home : undefined;
61
+ }
62
+ const NO_RECORD = { field: () => false, relation: () => false, figure: false };
63
+ const about = (scope) => scope.kind ?? "the home";
64
+ const own = (record, key) => record !== undefined && Object.prototype.hasOwnProperty.call(record, key);
47
65
  const isObject = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
48
66
  function names(expr, path, scope) {
49
67
  const shape = analyzeExpr(expr);
50
68
  for (const fn of shape.unknownFunctions)
51
69
  scope.findings.push(error("unknown-function", path, `"${fn}" is not a function the rule language knows`, "see docs/declaration-document.md#expression-language"));
52
70
  for (const n of shape.names) {
71
+ if (scope.kind === null) {
72
+ scope.findings.push(error("view-name", path, `"${n}" names nothing here: these blocks are about no one record`, "reach records with all('<kind>'), like count(all('offer')) or first(all('party') where role == 'client').name"));
73
+ continue;
74
+ }
53
75
  if (n === "id" || scope.spec.field(n) || scope.spec.relation(n))
54
76
  continue;
55
77
  scope.findings.push(error("view-name", path, `${scope.kind} has no field or relation called "${n}"`));
@@ -125,7 +147,8 @@ function oneBlock(raw, path, depth, scope) {
125
147
  return;
126
148
  }
127
149
  const keys = Object.keys(raw);
128
- const types = keys.filter((k) => BLOCK_TYPES.includes(k));
150
+ // A list's `group` is how it is grouped, not a group block of its own.
151
+ const types = keys.filter((k) => BLOCK_TYPES.includes(k) && !(k === "group" && keys.includes("list")));
129
152
  if (types.length === 0) {
130
153
  scope.findings.push(error("view-block", path, `${keys.length > 0 ? keys.map((k) => `"${k}"`).join(", ") : "an empty object"} is not a block Graview knows`, `one of ${SHAPES}`));
131
154
  return;
@@ -141,6 +164,7 @@ function oneBlock(raw, path, depth, scope) {
141
164
  const value = raw[type];
142
165
  switch (type) {
143
166
  case "title":
167
+ case "headline":
144
168
  case "text":
145
169
  case "badge":
146
170
  template(value, `${path}.${type}`, scope);
@@ -154,6 +178,7 @@ function oneBlock(raw, path, depth, scope) {
154
178
  }
155
179
  if ("as" in raw && !VIEW_FIELD_FORMATS.includes(raw["as"]))
156
180
  scope.findings.push(error("view-format", `${path}.as`, `"${String(raw["as"])}" is not a way to show a field`, `use one of ${VIEW_FIELD_FORMATS.join(", ")}`));
181
+ currency(raw, path, scope, "field");
157
182
  if ("label" in raw)
158
183
  label(raw["label"], `${path}.label`, scope);
159
184
  return;
@@ -166,8 +191,9 @@ function oneBlock(raw, path, depth, scope) {
166
191
  expression(value["value"], `${path}.progress.value`, scope);
167
192
  expression(value["max"], `${path}.progress.max`, scope);
168
193
  }
194
+ // A meter's label is a template, like a figure's (FR-99).
169
195
  if ("label" in raw)
170
- label(raw["label"], `${path}.label`, scope);
196
+ template(raw["label"], `${path}.label`, scope);
171
197
  return;
172
198
  }
173
199
  case "group":
@@ -182,27 +208,304 @@ function oneBlock(raw, path, depth, scope) {
182
208
  else
183
209
  blocks(raw["show"], `${path}.show`, depth + 1, scope);
184
210
  return;
185
- case "divider":
186
211
  case "figure":
212
+ if (typeof value === "string")
213
+ return figureBlock(raw, path, scope);
214
+ for (const k of ["as", "currency", "label"])
215
+ if (k in raw)
216
+ scope.findings.push(error("unknown-key", `${path}.${k}`, `"${k}" belongs to a figure that works a number out; {"figure": true} is the kind's picture`, `write {"figure": "count(all('offer'))", "as": "number"}`));
217
+ if (value !== true)
218
+ scope.findings.push(error("view-block", `${path}.figure`, `a figure is a number worked out, {"figure": "sum(all('offer'), net)", "as": "money"}, or the kind's picture, {"figure": true}`));
219
+ else if (!scope.spec.figure)
220
+ scope.findings.push(error("view-figure", `${path}.figure`, `${about(scope)} has no figure to show`, scope.kind === null ? `work a number out: {"figure": "count(all('offer'))"}` : 'give the kind a "figure", or leave this block out'));
221
+ return;
222
+ case "list":
223
+ return listBlock(raw, path, scope);
224
+ case "divider":
187
225
  if (value !== true)
188
226
  scope.findings.push(error("view-block", `${path}.${type}`, `write {"${type}": true}`));
189
- if (type === "figure" && !scope.spec.figure)
190
- scope.findings.push(error("view-figure", `${path}.figure`, `${scope.kind} has no figure to show`, 'give the kind a "figure", or leave this block out'));
191
227
  return;
192
228
  }
193
229
  }
230
+ /** A figure that works a number out (FR-81): an expression, a formatter, a currency for money, a label. */
231
+ function figureBlock(raw, path, scope) {
232
+ expression(raw["figure"], `${path}.figure`, scope);
233
+ if ("as" in raw && !FIGURE_FORMATS.includes(raw["as"]))
234
+ scope.findings.push(error("view-format", `${path}.as`, `"${String(raw["as"])}" is not a way to say a figure`, `use one of ${FIGURE_FORMATS.join(", ")}`));
235
+ currency(raw, path, scope, "figure");
236
+ // A figure's label is a template, like a headline (FR-99): "{name}, net".
237
+ if ("label" in raw)
238
+ template(raw["label"], `${path}.label`, scope);
239
+ }
240
+ /** A currency on money (FR-100): its three-letter code, on a figure or a field shown as money. Without one, the app's `brand.currency`. */
241
+ function currency(raw, path, scope, what) {
242
+ if (!("currency" in raw))
243
+ return;
244
+ if (typeof raw["currency"] !== "string" || !/^[A-Z]{3}$/.test(raw["currency"]))
245
+ scope.findings.push(error("view-currency", `${path}.currency`, 'a currency is its three-letter code, like "USD" or "EUR"'));
246
+ else if (raw["as"] !== "money")
247
+ scope.findings.push(error("view-currency", `${path}.currency`, `a currency belongs on a ${what} shown as money`, 'add "as": "money"'));
248
+ }
249
+ /**
250
+ * THE KINDS A LIST'S RECORDS ARE, read from its source without running it:
251
+ * `all('offer')` lists offers; `out('includes')` the targets of the
252
+ * relation from the kind the view is about; `in('answers')` the kinds that
253
+ * declare it; a relation by name its targets; `where`, `sort`, `first` and
254
+ * `either` the kinds of what they are handed. Undefined when the source
255
+ * does not say — then its names are not held to one kind.
256
+ */
257
+ function listedKinds(expr, scope) {
258
+ const every = [...scope.kinds];
259
+ const targetsFrom = (kinds, relation) => {
260
+ const found = new Set();
261
+ for (const kind of kinds) {
262
+ const to = scope.vocabulary.namesOf(kind)?.targets?.(relation);
263
+ if (to === "*")
264
+ return every;
265
+ for (const target of to ?? [])
266
+ found.add(target);
267
+ }
268
+ return found.size > 0 ? [...found] : undefined;
269
+ };
270
+ const visit = (e) => {
271
+ switch (e.t) {
272
+ case "ident":
273
+ return scope.kind !== null && scope.spec.relation(e.name) ? targetsFrom([scope.kind], e.name) : undefined;
274
+ case "member": {
275
+ const from = visit(e.object);
276
+ return from ? targetsFrom(from, e.name) : undefined;
277
+ }
278
+ case "where":
279
+ return visit(e.set);
280
+ case "call": {
281
+ const first = e.args[0];
282
+ const word = first?.t === "lit" && typeof first.value === "string" ? first.value : undefined;
283
+ if (e.fn === "all")
284
+ return word !== undefined && scope.kinds.has(word) ? [word] : undefined;
285
+ // A walk from every member of a set (FR-101): out(S, 'edge') reaches what the relation leads to from S's kinds.
286
+ const walked = e.args.length === 2 && e.args[1]?.t === "lit" && typeof e.args[1].value === "string" ? e.args[1].value : undefined;
287
+ if (e.fn === "out" && walked !== undefined) {
288
+ const from = visit(first);
289
+ return from ? targetsFrom(from, walked) : undefined;
290
+ }
291
+ if (e.fn === "out")
292
+ return word !== undefined && scope.kind !== null ? targetsFrom([scope.kind], word) : undefined;
293
+ if (e.fn === "in") {
294
+ const relation = walked ?? word;
295
+ const sources = relation !== undefined ? scope.vocabulary.sources(relation) : [];
296
+ return sources.length > 0 ? sources : undefined;
297
+ }
298
+ if ((e.fn === "sort" || e.fn === "first") && first)
299
+ return visit(first);
300
+ if (e.fn === "either") {
301
+ const each = e.args.map(visit);
302
+ return each.every((one) => one !== undefined) ? [...new Set(each.flatMap((one) => one ?? []))] : undefined;
303
+ }
304
+ return undefined;
305
+ }
306
+ default:
307
+ return undefined;
308
+ }
309
+ };
310
+ return visit(expr);
311
+ }
312
+ /** A per-record expression of a list (its sort key), its names held to the kinds the list reaches. */
313
+ function memberExpression(source, path, kinds, scope) {
314
+ let parsed;
315
+ try {
316
+ parsed = parseExpr(source);
317
+ }
318
+ catch (e) {
319
+ if (!(e instanceof ExprSyntaxError))
320
+ throw e;
321
+ scope.findings.push(error("expression", path, `${e.sentence} (at character ${e.at + 1})`));
322
+ return;
323
+ }
324
+ const shape = analyzeExpr(parsed);
325
+ for (const fn of shape.unknownFunctions)
326
+ scope.findings.push(error("unknown-function", path, `"${fn}" is not a function the rule language knows`, "see docs/declaration-document.md#expression-language"));
327
+ for (const e of shape.edges)
328
+ if (!scope.edges.has(e))
329
+ scope.findings.push(error("view-edge", path, `"${e}" is not a relation any kind declares`));
330
+ if (!kinds)
331
+ return;
332
+ for (const n of shape.names) {
333
+ if (n === "id" || kinds.some((kind) => scope.vocabulary.namesOf(kind)?.field(n) || scope.vocabulary.namesOf(kind)?.relation(n)))
334
+ continue;
335
+ scope.findings.push(error("view-name", path, `${kinds.join(" and ")} ${kinds.length === 1 ? "has" : "have"} no field or relation called "${n}"`));
336
+ }
337
+ }
338
+ /** A list of records (FR-81) — chosen by an expression, or a walk from the record (FR-82) — in an order, a few, grouped, each drawn as its card or its row. */
339
+ function listBlock(raw, path, scope) {
340
+ const source = raw["list"];
341
+ expression(source, `${path}.list`, scope);
342
+ let kinds;
343
+ if (typeof source === "string") {
344
+ try {
345
+ kinds = listedKinds(parseExpr(source), scope);
346
+ }
347
+ catch {
348
+ kinds = undefined;
349
+ }
350
+ }
351
+ /** A choice field's choices across the kinds listed — or, when the source does not say, on any kind. */
352
+ const choicesOf = (field) => {
353
+ if (!kinds)
354
+ return [...scope.kinds].map((kind) => scope.vocabulary.namesOf(kind)?.choices?.(field)).find((choices) => choices !== undefined);
355
+ const each = kinds.map((kind) => scope.vocabulary.namesOf(kind)?.choices?.(field));
356
+ return each.every((choices) => choices !== undefined) ? [...new Set(each.flatMap((choices) => choices ?? []))] : undefined;
357
+ };
358
+ const named = kinds ? kinds.join(" and ") : "any kind";
359
+ if ("sort" in raw) {
360
+ const sort = raw["sort"];
361
+ if (typeof sort === "string")
362
+ memberExpression(sort, `${path}.sort`, kinds, scope);
363
+ else if (isObject(sort) && typeof sort["by"] === "string" && Object.keys(sort).every((k) => k === "by" || k === "direction")) {
364
+ const direction = sort["direction"];
365
+ if (direction !== undefined && direction !== "asc" && direction !== "desc" && direction !== "choices") {
366
+ scope.findings.push(error("list-sort", `${path}.sort.direction`, `a list is sorted "asc", "desc" or "choices", not "${String(direction)}"`, '"choices" puts a choice field in the order its choices are declared'));
367
+ }
368
+ else if (direction === "choices") {
369
+ if (choicesOf(sort["by"]) === undefined)
370
+ scope.findings.push(error("list-sort", `${path}.sort.by`, `"${sort["by"]}" is not a choice field of ${named}, so it has no declared order`, 'sort by a choice field, or say "asc" or "desc"'));
371
+ }
372
+ else
373
+ memberExpression(sort["by"], `${path}.sort.by`, kinds, scope);
374
+ }
375
+ else
376
+ scope.findings.push(error("list-sort", `${path}.sort`, 'a sort is a key, like "net", or {"by": key, "direction": "asc" | "desc" | "choices"}'));
377
+ }
378
+ if ("limit" in raw) {
379
+ const limit = raw["limit"];
380
+ if (typeof limit !== "number" || !Number.isInteger(limit) || limit < 1 || limit > MAX_LIST_LIMIT)
381
+ scope.findings.push(error("list-limit", `${path}.limit`, `a limit is a whole number from 1 to ${MAX_LIST_LIMIT}`));
382
+ }
383
+ if ("group" in raw) {
384
+ const group = raw["group"];
385
+ const by = typeof group === "string" ? group : isObject(group) && typeof group["by"] === "string" ? group["by"] : undefined;
386
+ const shaped = typeof group === "string" || (isObject(group) && Object.keys(group).every((k) => k === "by" || k === "headings"));
387
+ if (!shaped || by === undefined) {
388
+ scope.findings.push(error("list-group", `${path}.group`, 'a group is a choice field, like "type", or {"by": "type", "headings": {"pain": "What hurts"}}'));
389
+ }
390
+ else {
391
+ const choices = choicesOf(by);
392
+ if (choices === undefined)
393
+ scope.findings.push(error("list-group", `${path}.group`, `"${by}" is not a choice field of ${named}, so it has no choices to group by`, "group by a field whose type is enum"));
394
+ if (isObject(group) && "headings" in group) {
395
+ const headings = group["headings"];
396
+ if (!isObject(headings) || Object.values(headings).some((words) => typeof words !== "string" || words.length === 0 || words.length > 80)) {
397
+ scope.findings.push(error("list-group", `${path}.group.headings`, 'headings are words per choice, like {"pain": "What hurts"}, at most 80 characters each'));
398
+ }
399
+ else if (choices) {
400
+ for (const choice of Object.keys(headings))
401
+ if (!choices.includes(choice))
402
+ scope.findings.push(error("list-group", `${path}.group.headings.${choice}`, `"${choice}" is not one of ${by}'s choices`, `use ${choices.join(", ")}`));
403
+ }
404
+ }
405
+ }
406
+ }
407
+ if ("empty" in raw && (typeof raw["empty"] !== "string" || raw["empty"].length === 0 || raw["empty"].length > 200))
408
+ scope.findings.push(error("list-empty", `${path}.empty`, "what an empty list says is a sentence, at most 200 characters"));
409
+ if ("as" in raw && !LIST_AS.includes(raw["as"]))
410
+ scope.findings.push(error("list-as", `${path}.as`, `a list draws each record as its "card" or its "row", not "${String(raw["as"])}"`));
411
+ }
194
412
  function label(value, path, scope) {
195
413
  if (typeof value !== "string" || value.length === 0 || value.length > 60)
196
414
  scope.findings.push(error("view-label", path, "a label is a few words, at most 60 characters"));
197
415
  }
198
- /** Every kind's specs, checked against what each kind holds, at `<at>.<kind>.<slot>`. */
199
- function validateAll(specsByKind, at, namesOf, kinds, edges, declares) {
416
+ /**
417
+ * BRACES IN WORDS THAT ARE NO TEMPLATE (FR-99). A field's label, what an
418
+ * empty list says and a group's heading are drawn as written, so a `{name}`
419
+ * in one would be drawn with its braces; each is said, at its block's path,
420
+ * as a `view-braces` warning. Asked by the check (`compileDocument`,
421
+ * `checkApp`) and not by a page compiling what its host already checked,
422
+ * so the page does not carry it. `views` is a document's `views` or a
423
+ * declaration's `viewSpecs` at `at`; `home` a declaration's home view.
424
+ */
425
+ export function viewBraces(views, at, home, lenses) {
426
+ const found = [];
427
+ const words = (value, path, what) => {
428
+ if (typeof value === "string" && /[{}]/.test(value))
429
+ found.push(warning("view-braces", path, `${what} is words, not a template, so "${value}" would be drawn with its braces`, 'say it without braces, or say the value in a text block: {"text": "… {name} …"}'));
430
+ };
431
+ const blocks = (list, path) => {
432
+ if (!Array.isArray(list))
433
+ return;
434
+ list.forEach((raw, i) => {
435
+ if (!isObject(raw))
436
+ return;
437
+ const at = `${path}.${i}`;
438
+ if ("field" in raw)
439
+ words(raw["label"], `${at}.label`, "a field's label");
440
+ if ("list" in raw) {
441
+ const headings = isObject(raw["group"]) ? raw["group"]["headings"] : undefined;
442
+ if (isObject(headings))
443
+ for (const [choice, heading] of Object.entries(headings))
444
+ words(heading, `${at}.group.headings.${choice}`, "a group's heading");
445
+ words(raw["empty"], `${at}.empty`, "what an empty list says");
446
+ }
447
+ else
448
+ blocks(raw["group"], `${at}.group`);
449
+ blocks(raw["show"], `${at}.show`);
450
+ });
451
+ };
452
+ if (isObject(views)) {
453
+ for (const [kind, specs] of Object.entries(views)) {
454
+ if (Array.isArray(specs))
455
+ blocks(specs, `${at}.${kind}`);
456
+ else if (isObject(specs))
457
+ for (const slot of VIEW_SLOTS)
458
+ blocks(specs[slot], `${at}.${kind}.${slot}`);
459
+ }
460
+ }
461
+ blocks(home, "home");
462
+ if (Array.isArray(lenses))
463
+ lenses.forEach((lens, i) => isObject(lens) && lens["name"] === "blocks" && isObject(lens["options"]) && blocks(lens["options"]["blocks"], `lenses.${i}.options.blocks`));
464
+ return found;
465
+ }
466
+ /** Blocks about no one record — the home, a blocks lens — checked at `at`. */
467
+ function subjectless(list, at, vocabulary, kinds, edges, findings, what) {
468
+ const scope = { kind: null, spec: NO_RECORD, kinds, edges, vocabulary, findings, count: 0 };
469
+ if (Array.isArray(list) && list.length === 0)
470
+ findings.push(error("view-shape", at, `${what} has no blocks`, 'give it one: {"headline": "…"}'));
471
+ blocks(list, at, 1, scope);
472
+ if (scope.count > MAX_VIEW_BLOCKS)
473
+ findings.push(error("view-size", at, `${what} has ${scope.count} blocks; a view has at most ${MAX_VIEW_BLOCKS}`, "show less"));
474
+ }
475
+ /** The lenses drawn from blocks, by their index in `lenses`: their blocks, checked where they are written. */
476
+ function blockLenses(lenses, vocabulary, kinds, edges, findings) {
477
+ if (!Array.isArray(lenses))
478
+ return;
479
+ lenses.forEach((lens, index) => {
480
+ if (!isObject(lens) || lens["name"] !== "blocks" || !isObject(lens["options"]) || !("blocks" in lens["options"]))
481
+ return;
482
+ /*
483
+ * WARNINGS, NOT ERRORS: before FR-81 a lens called "blocks" was a lens
484
+ * the framework did not ship — a warning — and a document carrying one
485
+ * compiled. It still does; a block the lens cannot draw is left out of
486
+ * the picture, and the check says which at its path.
487
+ */
488
+ const found = [];
489
+ subjectless(lens["options"]["blocks"], `lenses.${index}.options.blocks`, vocabulary, kinds, edges, found, `the lens "${String(lens["title"] ?? index)}"`);
490
+ for (const finding of found)
491
+ findings.push({ ...finding, severity: "warning" });
492
+ });
493
+ }
494
+ /** Every kind's specs, checked against what each kind holds, at `<at>.<kind>.<slot>`; and a list of blocks at `<at>.home`, the home view. */
495
+ function validateAll(specsByKind, at, namesOf, kinds, edges, declares, vocabulary) {
200
496
  const findings = [];
497
+ if (specsByKind === undefined)
498
+ return findings;
201
499
  if (!isObject(specsByKind)) {
202
500
  findings.push(error("view-shape", at, 'views are an object of kinds, each with a "card", a "row" or a "page"'));
203
501
  return findings;
204
502
  }
205
503
  for (const [kind, specs] of Object.entries(specsByKind)) {
504
+ // A list of blocks at `home` is the home view (FR-81); an object there is the slots of a kind called home.
505
+ if (kind === "home" && Array.isArray(specs)) {
506
+ subjectless(specs, `${at}.home`, vocabulary, kinds, edges, findings, "the home");
507
+ continue;
508
+ }
206
509
  const spec = namesOf(kind);
207
510
  if (!spec) {
208
511
  findings.push(error("view-kind", `${at}.${kind}`, `"${kind}" is not a kind this ${declares} declares`));
@@ -220,7 +523,7 @@ function validateAll(specsByKind, at, namesOf, kinds, edges, declares) {
220
523
  const list = specs[slot];
221
524
  if (list === undefined)
222
525
  continue;
223
- const scope = { kind, spec, kinds, edges, findings, count: 0 };
526
+ const scope = { kind, spec, kinds, edges, vocabulary, findings, count: 0 };
224
527
  blocks(list, `${at}.${kind}.${slot}`, 1, scope);
225
528
  if (scope.count > MAX_VIEW_BLOCKS)
226
529
  findings.push(error("view-size", `${at}.${kind}.${slot}`, `this ${slot} has ${scope.count} blocks; a view has at most ${MAX_VIEW_BLOCKS}`, "show less, or move detail to the page"));
@@ -228,37 +531,66 @@ function validateAll(specsByKind, at, namesOf, kinds, edges, declares) {
228
531
  }
229
532
  return findings;
230
533
  }
231
- /** Findings about a document's `views`, each at its JSON path. */
534
+ /** Findings about a document's `views` — every kind's, and the home's — and its blocks lenses, each at its JSON path. */
232
535
  export function validateViews(document) {
233
536
  const kinds = new Set(Object.keys(document.kinds));
234
537
  const edges = new Set(Object.values(document.kinds).flatMap((k) => Object.keys(k.edges ?? {})));
235
- return validateAll(viewsOf(document), "views", (kind) => {
236
- const spec = document.kinds[kind];
237
- return spec ? { field: (n) => spec.fields[n] !== undefined, relation: (n) => spec.edges?.[n] !== undefined, figure: spec.figure !== undefined } : undefined;
238
- }, kinds, edges, "document");
538
+ const namesOf = (kind) => {
539
+ const spec = own(document.kinds, kind) ? document.kinds[kind] : undefined;
540
+ // A computed field is shown like a stored one (FR-83).
541
+ return spec
542
+ ? {
543
+ field: (n) => own(spec.fields, n) || own(spec.computed, n),
544
+ relation: (n) => own(spec.edges, n),
545
+ figure: spec.figure !== undefined,
546
+ choices: (n) => (own(spec.fields, n) && spec.fields[n].type === "enum" ? spec.fields[n].options : undefined),
547
+ targets: (n) => (own(spec.edges, n) ? spec.edges[n].to : undefined),
548
+ }
549
+ : undefined;
550
+ };
551
+ const vocabulary = { namesOf, sources: (edge) => Object.keys(document.kinds).filter((kind) => own(document.kinds[kind].edges, edge)) };
552
+ const findings = validateAll(document.views, "views", namesOf, kinds, edges, "document", vocabulary);
553
+ blockLenses(document.lenses, vocabulary, kinds, edges, findings);
554
+ return findings;
239
555
  }
240
556
  /**
241
557
  * Findings about a declaration's view specs (FR-03), each at
242
558
  * `viewSpecs.<kind>.<slot>.<block>`: the vocabulary a document's `views`
243
559
  * is held to, read against the declared schema — its fields, its relations,
244
- * and its figures (the kind's own, or the brand's).
560
+ * and its figures (the kind's own, or the brand's). With `home`, the
561
+ * declaration's home view at `home.<block>`; with `lenses`, the blocks of
562
+ * each lens drawn from blocks at `lenses.<i>.options.blocks` (FR-81).
245
563
  */
246
564
  export function validateViewSpecs(schema, specs, options = {}) {
247
565
  const declared = schema.kinds;
248
566
  const kinds = new Set(declared);
249
567
  const definitionOf = (kind) => schema.tryDefinition(kind);
250
568
  const edges = new Set(declared.flatMap((kind) => Object.keys(definitionOf(kind)?.edges ?? {})));
251
- return validateAll(specs, options.at ?? "viewSpecs", (kind) => {
569
+ const namesOf = (kind) => {
252
570
  if (!kinds.has(kind))
253
571
  return undefined;
254
572
  const definition = definitionOf(kind);
255
573
  const fields = definition?.fields?.shape ?? {};
256
574
  const relations = definition?.edges ?? {};
575
+ const computed = definition?.computed ?? {};
257
576
  return {
258
- field: (n) => n !== "id" && n !== "kind" && Object.prototype.hasOwnProperty.call(fields, n),
259
- relation: (n) => Object.prototype.hasOwnProperty.call(relations, n),
577
+ field: (n) => n !== "id" && n !== "kind" && (own(fields, n) || own(computed, n)),
578
+ relation: (n) => own(relations, n),
260
579
  figure: definition?.figure !== undefined || options.figures?.[kind] !== undefined,
580
+ choices: (n) => {
581
+ if (!own(fields, n))
582
+ return undefined;
583
+ const spec = fieldSpecOf(fields[n]);
584
+ return spec?.type === "enum" ? spec.options : undefined;
585
+ },
586
+ targets: (n) => (own(relations, n) ? relations[n].to : undefined),
261
587
  };
262
- }, kinds, edges, "app");
588
+ };
589
+ const vocabulary = { namesOf, sources: (edge) => declared.filter((kind) => own(definitionOf(kind)?.edges, edge)) };
590
+ const findings = validateAll(specs, options.at ?? "viewSpecs", namesOf, kinds, edges, "app", vocabulary);
591
+ if (options.home !== undefined)
592
+ subjectless(options.home, "home", vocabulary, kinds, edges, findings, "the home");
593
+ blockLenses(options.lenses, vocabulary, kinds, edges, findings);
594
+ return findings;
263
595
  }
264
596
  //# sourceMappingURL=views.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"views.js","sourceRoot":"","sources":["../../src/document/views.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"views.js","sourceRoot":"","sources":["../../src/document/views.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { FIGURES, FIGURE_NAMES, figureBrief, figureFaults, figureSvg } from "./schema/figures.js";
2
+ export type { Figure } from "./schema/figures.js";
3
+ //# sourceMappingURL=figures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"figures.d.ts","sourceRoot":"","sources":["../src/figures.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAClG,YAAY,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,14 @@
1
+ /*
2
+ * `@graview/core/figures` — a kind's figure: the shipped set of line
3
+ * drawings, what one says to a model asked to draw one, and the faults that
4
+ * keep a drawn one honest.
5
+ *
6
+ * An entry of its own, not part of `@graview/core`: a hosted page imports
7
+ * that barrel up front, and a bundler places a whole module in every chunk
8
+ * that can reach it — so the shipped drawings, which only a face draws once
9
+ * it is fetched and the checker judges, rode in what every hosted page
10
+ * loads first. The faces, the agent's figure tool and the studio import
11
+ * them from here.
12
+ */
13
+ export { FIGURES, FIGURE_NAMES, figureBrief, figureFaults, figureSvg } from "./schema/figures.js";
14
+ //# sourceMappingURL=figures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"figures.js","sourceRoot":"","sources":["../src/figures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC"}