@graview/core 0.1.24 → 0.1.26
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/blocks.d.ts +2 -0
- package/dist/blocks.d.ts.map +1 -1
- package/dist/blocks.js +4 -0
- package/dist/blocks.js.map +1 -1
- package/dist/capabilities.js +1 -1
- package/dist/capabilities.js.map +1 -1
- package/dist/cli/check/relations.js +1 -1
- package/dist/cli/check/relations.js.map +1 -1
- package/dist/cli/check/views.d.ts.map +1 -1
- package/dist/cli/check/views.js +2 -1
- package/dist/cli/check/views.js.map +1 -1
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/types.js +7 -1
- package/dist/cli/types.js.map +1 -1
- package/dist/document/blocks.d.ts +18 -0
- package/dist/document/blocks.d.ts.map +1 -1
- package/dist/document/blocks.js +17 -3
- package/dist/document/blocks.js.map +1 -1
- package/dist/document/compiled.d.ts.map +1 -1
- package/dist/document/compiled.js +6 -1
- package/dist/document/compiled.js.map +1 -1
- package/dist/document/describe-place.d.ts.map +1 -1
- package/dist/document/describe-place.js +1 -0
- package/dist/document/describe-place.js.map +1 -1
- package/dist/document/edit.js +1 -1
- package/dist/document/edit.js.map +1 -1
- package/dist/document/field-spec.d.ts +14 -0
- package/dist/document/field-spec.d.ts.map +1 -0
- package/dist/document/field-spec.js +85 -0
- package/dist/document/field-spec.js.map +1 -0
- package/dist/document/index.d.ts +3 -2
- package/dist/document/index.d.ts.map +1 -1
- package/dist/document/index.js +3 -2
- package/dist/document/index.js.map +1 -1
- package/dist/document/migrate.d.ts +7 -0
- package/dist/document/migrate.d.ts.map +1 -1
- package/dist/document/migrate.js +12 -1
- package/dist/document/migrate.js.map +1 -1
- package/dist/document/schema.d.ts +22 -1
- package/dist/document/schema.d.ts.map +1 -1
- package/dist/document/schema.js +3 -2
- package/dist/document/schema.js.map +1 -1
- package/dist/document/to-document.d.ts +1 -7
- package/dist/document/to-document.d.ts.map +1 -1
- package/dist/document/to-document.js +1 -79
- package/dist/document/to-document.js.map +1 -1
- package/dist/document/view-specs.d.ts +17 -0
- package/dist/document/view-specs.d.ts.map +1 -0
- package/dist/document/view-specs.js +44 -0
- package/dist/document/view-specs.js.map +1 -0
- package/dist/document/views.d.ts +40 -15
- package/dist/document/views.d.ts.map +1 -1
- package/dist/document/views.js +20 -52
- package/dist/document/views.js.map +1 -1
- package/dist/document.schema.json +14 -6
- package/dist/forms.d.ts +16 -0
- package/dist/forms.d.ts.map +1 -0
- package/dist/forms.js +14 -0
- package/dist/forms.js.map +1 -0
- package/dist/index.d.ts +3 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/json-schema.d.ts +12 -0
- package/dist/json-schema.d.ts.map +1 -0
- package/dist/json-schema.js +11 -0
- package/dist/json-schema.js.map +1 -0
- package/dist/mutations/derive-edits.d.ts.map +1 -1
- package/dist/mutations/derive-edits.js +7 -2
- package/dist/mutations/derive-edits.js.map +1 -1
- package/dist/mutations/form.d.ts +7 -0
- package/dist/mutations/form.d.ts.map +1 -1
- package/dist/mutations/form.js +4 -0
- package/dist/mutations/form.js.map +1 -1
- package/dist/mutations/node-ref.d.ts +5 -0
- package/dist/mutations/node-ref.d.ts.map +1 -1
- package/dist/mutations/node-ref.js +4 -0
- package/dist/mutations/node-ref.js.map +1 -1
- package/dist/scaffold/project.d.ts.map +1 -1
- package/dist/scaffold/project.js +3 -0
- package/dist/scaffold/project.js.map +1 -1
- package/dist/schema/define-node.d.ts +7 -0
- package/dist/schema/define-node.d.ts.map +1 -1
- package/dist/schema/define-node.js +9 -3
- package/dist/schema/define-node.js.map +1 -1
- package/dist/schema/file-field.d.ts +7 -0
- package/dist/schema/file-field.d.ts.map +1 -0
- package/dist/schema/file-field.js +25 -0
- package/dist/schema/file-field.js.map +1 -0
- package/dist/schema/file-fields.d.ts +12 -0
- package/dist/schema/file-fields.d.ts.map +1 -0
- package/dist/schema/file-fields.js +31 -0
- package/dist/schema/file-fields.js.map +1 -0
- package/dist/schema/files.d.ts +57 -0
- package/dist/schema/files.d.ts.map +1 -0
- package/dist/schema/files.js +51 -0
- package/dist/schema/files.js.map +1 -0
- package/dist/typed.d.ts +6 -0
- package/dist/typed.d.ts.map +1 -1
- package/dist/typed.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +9 -1
|
@@ -1,86 +1,8 @@
|
|
|
1
|
-
import { descriptionOf } from "../schema/zod.js";
|
|
2
1
|
import { error, warning } from "./findings.js";
|
|
3
2
|
import { documentOf } from "./remembered.js";
|
|
3
|
+
import { fieldOf } from "./field-spec.js";
|
|
4
4
|
import { FORMAT, FORMAT_VERSION } from "./schema.js";
|
|
5
5
|
export { documentOf, rememberDocument } from "./remembered.js";
|
|
6
|
-
const defOf = (schema) => schema?._zod?.def;
|
|
7
|
-
const DATE = /^\^\\d\{4\}-\\d\{2\}-\\d\{2\}\$$/;
|
|
8
|
-
/** One zod field as a document field, or why it cannot be one. */
|
|
9
|
-
function fieldOf(schema) {
|
|
10
|
-
let def = defOf(schema);
|
|
11
|
-
let required = true;
|
|
12
|
-
let fallback;
|
|
13
|
-
for (let depth = 0; def && depth < 4; depth++) {
|
|
14
|
-
if (def["type"] === "optional" || def["type"] === "nullable")
|
|
15
|
-
required = false;
|
|
16
|
-
else if (def["type"] === "default") {
|
|
17
|
-
required = false;
|
|
18
|
-
fallback = def["defaultValue"];
|
|
19
|
-
}
|
|
20
|
-
else
|
|
21
|
-
break;
|
|
22
|
-
def = defOf(def["innerType"]);
|
|
23
|
-
}
|
|
24
|
-
if (!def)
|
|
25
|
-
return { why: "it is not a zod field" };
|
|
26
|
-
const description = descriptionOf(schema);
|
|
27
|
-
const base = { ...(required ? { required: true } : {}), ...(fallback !== undefined ? { default: fallback } : {}), ...(description ? { description } : {}) };
|
|
28
|
-
const checks = (def["checks"] ?? []).map((check) => defOf(check));
|
|
29
|
-
switch (def["type"]) {
|
|
30
|
-
case "string": {
|
|
31
|
-
const format = def["format"];
|
|
32
|
-
if (format === "email")
|
|
33
|
-
return { spec: { type: "email", ...base } };
|
|
34
|
-
if (format === "url")
|
|
35
|
-
return { spec: { type: "url", ...base } };
|
|
36
|
-
if (format === "date")
|
|
37
|
-
return { spec: { type: "date", ...base } };
|
|
38
|
-
if (format === "datetime")
|
|
39
|
-
return { spec: { type: "datetime", ...base } };
|
|
40
|
-
if (checks.some((check) => check?.["format"] === "regex" && DATE.test(String(check?.["pattern"]?.source ?? ""))))
|
|
41
|
-
return { spec: { type: "date", ...base } };
|
|
42
|
-
return { spec: { type: "string", ...base } };
|
|
43
|
-
}
|
|
44
|
-
case "number": {
|
|
45
|
-
// Its range, where the declaration bounds it inclusively (FR-114): `.min(1).max(5)`, `.multipleOf(0.5)`.
|
|
46
|
-
const range = {};
|
|
47
|
-
for (const check of checks) {
|
|
48
|
-
const value = check?.["value"];
|
|
49
|
-
if (typeof value !== "number")
|
|
50
|
-
continue;
|
|
51
|
-
if (check?.["check"] === "greater_than" && check["inclusive"])
|
|
52
|
-
range.min = Math.max(range.min ?? value, value);
|
|
53
|
-
else if (check?.["check"] === "less_than" && check["inclusive"])
|
|
54
|
-
range.max = Math.min(range.max ?? value, value);
|
|
55
|
-
else if (check?.["check"] === "multiple_of")
|
|
56
|
-
range.step = value;
|
|
57
|
-
}
|
|
58
|
-
return { spec: { type: checks.some((check) => check?.["format"] === "safeint" || check?.["format"] === "int") ? "integer" : "number", ...range, ...base } };
|
|
59
|
-
}
|
|
60
|
-
case "boolean":
|
|
61
|
-
return { spec: { type: "boolean", ...base } };
|
|
62
|
-
case "enum": {
|
|
63
|
-
const options = Object.keys(def["entries"] ?? {});
|
|
64
|
-
return options.length > 0 ? { spec: { type: "enum", options, ...base } } : { why: "it is an enum with no options" };
|
|
65
|
-
}
|
|
66
|
-
case "array": {
|
|
67
|
-
const element = defOf(def["element"]);
|
|
68
|
-
const of = element?.["type"] === "number" ? "number" : element?.["type"] === "string" ? "string" : undefined;
|
|
69
|
-
return of ? { spec: { type: "list", of, ...base } } : { why: `it is a list of ${String(element?.["type"] ?? "something")}, and a document lists words, numbers or dates` };
|
|
70
|
-
}
|
|
71
|
-
default:
|
|
72
|
-
return { why: `it is a ${String(def["type"])}, which a document has no field type for` };
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* What one declared field is, in the document's words — `url`, `date`,
|
|
77
|
-
* `enum` and the rest — or undefined when a document has no word for it.
|
|
78
|
-
* A view spec reads it to know which values may be a link and which a date.
|
|
79
|
-
*/
|
|
80
|
-
export function fieldSpecOf(field) {
|
|
81
|
-
const read = fieldOf(field);
|
|
82
|
-
return "spec" in read ? read.spec : undefined;
|
|
83
|
-
}
|
|
84
6
|
/** Write an app as a declaration document, naming every surface the document cannot say. */
|
|
85
7
|
export function toDocument(app) {
|
|
86
8
|
const remembered = documentOf(app);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"to-document.js","sourceRoot":"","sources":["../../src/document/to-document.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"to-document.js","sourceRoot":"","sources":["../../src/document/to-document.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AnySchema } from "../schema/schema.js";
|
|
2
|
+
import type { Finding } from "./findings.js";
|
|
3
|
+
/**
|
|
4
|
+
* Findings about a declaration's view specs (FR-03), each at
|
|
5
|
+
* `viewSpecs.<kind>.<slot>.<block>`: the vocabulary a document's `views`
|
|
6
|
+
* is held to, read against the declared schema — its fields, its relations,
|
|
7
|
+
* and its figures (the kind's own, or the brand's). With `home`, the
|
|
8
|
+
* declaration's home view at `home.<block>`; with `lenses`, the blocks of
|
|
9
|
+
* each lens drawn from blocks at `lenses.<i>.options.blocks` (FR-81).
|
|
10
|
+
*/
|
|
11
|
+
export declare function validateViewSpecs(schema: AnySchema, specs: unknown, options?: {
|
|
12
|
+
readonly figures?: Readonly<Record<string, string>>;
|
|
13
|
+
readonly at?: string;
|
|
14
|
+
readonly home?: unknown;
|
|
15
|
+
readonly lenses?: unknown;
|
|
16
|
+
}): Finding[];
|
|
17
|
+
//# sourceMappingURL=view-specs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-specs.d.ts","sourceRoot":"","sources":["../../src/document/view-specs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAa7C;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE;IACP,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CACtB,GACL,OAAO,EAAE,CA6BX"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { fieldSpecOf } from "./field-spec.js";
|
|
2
|
+
import { blockLenses, holdsFiles, own, subjectless, validateAll } from "./views.js";
|
|
3
|
+
/**
|
|
4
|
+
* Findings about a declaration's view specs (FR-03), each at
|
|
5
|
+
* `viewSpecs.<kind>.<slot>.<block>`: the vocabulary a document's `views`
|
|
6
|
+
* is held to, read against the declared schema — its fields, its relations,
|
|
7
|
+
* and its figures (the kind's own, or the brand's). With `home`, the
|
|
8
|
+
* declaration's home view at `home.<block>`; with `lenses`, the blocks of
|
|
9
|
+
* each lens drawn from blocks at `lenses.<i>.options.blocks` (FR-81).
|
|
10
|
+
*/
|
|
11
|
+
export function validateViewSpecs(schema, specs, options = {}) {
|
|
12
|
+
const declared = schema.kinds;
|
|
13
|
+
const kinds = new Set(declared);
|
|
14
|
+
const definitionOf = (kind) => schema.tryDefinition(kind);
|
|
15
|
+
const edges = new Set(declared.flatMap((kind) => Object.keys(definitionOf(kind)?.edges ?? {})));
|
|
16
|
+
const namesOf = (kind) => {
|
|
17
|
+
if (!kinds.has(kind))
|
|
18
|
+
return undefined;
|
|
19
|
+
const definition = definitionOf(kind);
|
|
20
|
+
const fields = definition?.fields?.shape ?? {};
|
|
21
|
+
const relations = definition?.edges ?? {};
|
|
22
|
+
const computed = definition?.computed ?? {};
|
|
23
|
+
return {
|
|
24
|
+
field: (n) => n !== "id" && n !== "kind" && (own(fields, n) || own(computed, n)),
|
|
25
|
+
relation: (n) => own(relations, n),
|
|
26
|
+
figure: definition?.figure !== undefined || options.figures?.[kind] !== undefined,
|
|
27
|
+
files: (n) => own(fields, n) && holdsFiles(fieldSpecOf(fields[n])),
|
|
28
|
+
choices: (n) => {
|
|
29
|
+
if (!own(fields, n))
|
|
30
|
+
return undefined;
|
|
31
|
+
const spec = fieldSpecOf(fields[n]);
|
|
32
|
+
return spec?.type === "enum" ? spec.options : undefined;
|
|
33
|
+
},
|
|
34
|
+
targets: (n) => (own(relations, n) ? relations[n].to : undefined),
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
const vocabulary = { namesOf, sources: (edge) => declared.filter((kind) => own(definitionOf(kind)?.edges, edge)) };
|
|
38
|
+
const findings = validateAll(specs, options.at ?? "viewSpecs", namesOf, kinds, edges, "app", vocabulary);
|
|
39
|
+
if (options.home !== undefined)
|
|
40
|
+
subjectless(options.home, "home", vocabulary, kinds, edges, findings, "the home");
|
|
41
|
+
blockLenses(options.lenses, vocabulary, kinds, edges, findings);
|
|
42
|
+
return findings;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=view-specs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-specs.js","sourceRoot":"","sources":["../../src/document/view-specs.ts"],"names":[],"mappings":"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"}
|
package/dist/document/views.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { type Finding } from "./findings.js";
|
|
2
|
-
import type { AnySchema } from "../schema/schema.js";
|
|
3
2
|
import type { GraviewDocument } from "./schema.js";
|
|
4
3
|
export declare const VIEW_SLOTS: readonly ["card", "row", "page"];
|
|
5
4
|
export type ViewSlot = (typeof VIEW_SLOTS)[number];
|
|
@@ -62,6 +61,12 @@ type OneBlock = {
|
|
|
62
61
|
readonly as?: ViewFieldFormat;
|
|
63
62
|
readonly currency?: string;
|
|
64
63
|
readonly label?: string;
|
|
64
|
+
}
|
|
65
|
+
/** A record's pictures (FR-162): the first, small (`thumb`), or every one, each opening full size (`gallery`). */
|
|
66
|
+
| {
|
|
67
|
+
readonly image: string;
|
|
68
|
+
readonly as?: "thumb" | "gallery";
|
|
69
|
+
readonly label?: string;
|
|
65
70
|
} | {
|
|
66
71
|
readonly progress: {
|
|
67
72
|
readonly value: string;
|
|
@@ -91,10 +96,38 @@ export type ViewSpecs = {
|
|
|
91
96
|
export type HomeView = readonly ViewBlock[];
|
|
92
97
|
/** Every kind's view specs, by kind: a document's `views`, and a declaration's `viewSpecs`. */
|
|
93
98
|
export type ViewSpecsByKind = Readonly<Record<string, ViewSpecs>>;
|
|
99
|
+
/** Whether a field holds pictures or documents: an `image` or `file`, or a list of them (FR-162). */
|
|
100
|
+
export declare const holdsFiles: (spec: {
|
|
101
|
+
readonly type: string;
|
|
102
|
+
readonly of?: string;
|
|
103
|
+
} | undefined) => boolean;
|
|
94
104
|
/** 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`. */
|
|
95
105
|
export declare function viewsOf(document: GraviewDocument): Readonly<Record<string, ViewSpecs>>;
|
|
96
106
|
/** A document's home view (`views.home`, a list of blocks), when it has one. */
|
|
97
107
|
export declare function homeOf(document: GraviewDocument): HomeView | undefined;
|
|
108
|
+
/**
|
|
109
|
+
* What a view may name on one kind: its fields, its relations, whether it
|
|
110
|
+
* has a figure. Read from a document's kind or from a declared schema, so
|
|
111
|
+
* the two are held to one vocabulary.
|
|
112
|
+
*/
|
|
113
|
+
export interface KindNames {
|
|
114
|
+
readonly field: (name: string) => boolean;
|
|
115
|
+
readonly relation: (name: string) => boolean;
|
|
116
|
+
readonly figure: boolean;
|
|
117
|
+
/** Whether a field holds pictures or documents (FR-162): what an `image` block shows. */
|
|
118
|
+
readonly files?: (name: string) => boolean;
|
|
119
|
+
/** A choice field's choices, in the order they are declared; undefined for any other name. */
|
|
120
|
+
readonly choices?: (name: string) => readonly string[] | undefined;
|
|
121
|
+
/** Where a relation leads: its target kinds, or every kind. */
|
|
122
|
+
readonly targets?: (relation: string) => readonly string[] | "*" | undefined;
|
|
123
|
+
}
|
|
124
|
+
/** What every kind holds, for a list's records: the kinds a walk or a sweep reaches. */
|
|
125
|
+
export interface Vocabulary {
|
|
126
|
+
readonly namesOf: (kind: string) => KindNames | undefined;
|
|
127
|
+
/** The kinds that declare a relation. */
|
|
128
|
+
readonly sources: (edge: string) => readonly string[];
|
|
129
|
+
}
|
|
130
|
+
export declare const own: (record: object | undefined, key: string) => boolean;
|
|
98
131
|
/**
|
|
99
132
|
* BRACES IN WORDS THAT ARE NO TEMPLATE (FR-99). A field's label, what an
|
|
100
133
|
* empty list says and a group's heading are drawn as written, so a `{name}`
|
|
@@ -114,21 +147,13 @@ export declare function viewBraces(views: unknown, at: string, home?: unknown, l
|
|
|
114
147
|
* `viewBraces`, and not by a page compiling what its host already checked.
|
|
115
148
|
*/
|
|
116
149
|
export declare function viewKeys(views: unknown, at: string, home?: unknown, lenses?: unknown): Finding[];
|
|
150
|
+
/** Blocks about no one record — the home, a blocks lens — checked at `at`. */
|
|
151
|
+
export declare function subjectless(list: unknown, at: string, vocabulary: Vocabulary, kinds: ReadonlySet<string>, edges: ReadonlySet<string>, findings: Finding[], what: string): void;
|
|
152
|
+
/** The lenses drawn from blocks, by their index in `lenses`: their blocks, checked where they are written. */
|
|
153
|
+
export declare function blockLenses(lenses: unknown, vocabulary: Vocabulary, kinds: ReadonlySet<string>, edges: ReadonlySet<string>, findings: Finding[]): void;
|
|
154
|
+
/** 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. */
|
|
155
|
+
export declare function validateAll(specsByKind: unknown, at: string, namesOf: (kind: string) => KindNames | undefined, kinds: ReadonlySet<string>, edges: ReadonlySet<string>, declares: string, vocabulary: Vocabulary): Finding[];
|
|
117
156
|
/** Findings about a document's `views` — every kind's, and the home's — and its blocks lenses, each at its JSON path. */
|
|
118
157
|
export declare function validateViews(document: GraviewDocument): Finding[];
|
|
119
|
-
/**
|
|
120
|
-
* Findings about a declaration's view specs (FR-03), each at
|
|
121
|
-
* `viewSpecs.<kind>.<slot>.<block>`: the vocabulary a document's `views`
|
|
122
|
-
* is held to, read against the declared schema — its fields, its relations,
|
|
123
|
-
* and its figures (the kind's own, or the brand's). With `home`, the
|
|
124
|
-
* declaration's home view at `home.<block>`; with `lenses`, the blocks of
|
|
125
|
-
* each lens drawn from blocks at `lenses.<i>.options.blocks` (FR-81).
|
|
126
|
-
*/
|
|
127
|
-
export declare function validateViewSpecs(schema: AnySchema, specs: unknown, options?: {
|
|
128
|
-
readonly figures?: Readonly<Record<string, string>>;
|
|
129
|
-
readonly at?: string;
|
|
130
|
-
readonly home?: unknown;
|
|
131
|
-
readonly lenses?: unknown;
|
|
132
|
-
}): Finding[];
|
|
133
158
|
export {};
|
|
134
159
|
//# sourceMappingURL=views.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../../src/document/views.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../../src/document/views.ts"],"names":[],"mappings":"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"}
|
package/dist/document/views.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { analyzeExpr } from "./expr/analyze.js";
|
|
2
2
|
import { ExprSyntaxError, parseExpr } from "./expr/parse.js";
|
|
3
3
|
import { error, warning } from "./findings.js";
|
|
4
|
-
import { fieldSpecOf } from "./to-document.js";
|
|
5
4
|
import { parseTemplate, TemplateError } from "./template-parse.js";
|
|
6
5
|
/*
|
|
7
6
|
* VIEW SPECS — Tier 1 custom UI, as data (ADR 0004, docs/declaration-document.md).
|
|
@@ -41,6 +40,7 @@ const BLOCK_KEYS = {
|
|
|
41
40
|
text: ["tone"],
|
|
42
41
|
badge: ["tone"],
|
|
43
42
|
field: ["as", "currency", "label"],
|
|
43
|
+
image: ["as", "label"],
|
|
44
44
|
progress: ["label"],
|
|
45
45
|
group: ["direction"],
|
|
46
46
|
when: ["show"],
|
|
@@ -49,7 +49,9 @@ const BLOCK_KEYS = {
|
|
|
49
49
|
figure: ["as", "currency", "label"],
|
|
50
50
|
};
|
|
51
51
|
const BLOCK_TYPES = Object.keys(BLOCK_KEYS);
|
|
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}';
|
|
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"?}, {"image": "photos", "as"?: "thumb"|"gallery"}, {"progress": {"value": expr, "max": expr}, "label"?}, {"group": [blocks], "direction"?: "row"|"column"}, {"when": expr, "show": [blocks]}, {"divider": true}, {"figure": true}';
|
|
53
|
+
/** Whether a field holds pictures or documents: an `image` or `file`, or a list of them (FR-162). */
|
|
54
|
+
export const holdsFiles = (spec) => /^(image|file)$/.test(spec?.of ?? spec?.type ?? "");
|
|
53
55
|
/** 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`. */
|
|
54
56
|
export function viewsOf(document) {
|
|
55
57
|
return Object.fromEntries(Object.entries(document.views ?? {}).filter(([, specs]) => !Array.isArray(specs)));
|
|
@@ -61,7 +63,7 @@ export function homeOf(document) {
|
|
|
61
63
|
}
|
|
62
64
|
const NO_RECORD = { field: () => false, relation: () => false, figure: false };
|
|
63
65
|
const about = (scope) => scope.kind ?? "the home";
|
|
64
|
-
const own = (record, key) => record !== undefined && Object.hasOwn(record, key);
|
|
66
|
+
export const own = (record, key) => record !== undefined && Object.hasOwn(record, key);
|
|
65
67
|
const isObject = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
66
68
|
function names(expr, path, scope) {
|
|
67
69
|
const shape = analyzeExpr(expr);
|
|
@@ -172,14 +174,19 @@ function oneBlock(raw, path, depth, scope) {
|
|
|
172
174
|
if ("tone" in raw)
|
|
173
175
|
tone(raw["tone"], `${path}.tone`, scope);
|
|
174
176
|
return;
|
|
177
|
+
// A field, or a field's pictures and documents (FR-162).
|
|
178
|
+
case "image":
|
|
175
179
|
case "field": {
|
|
176
|
-
|
|
180
|
+
const image = type === "image";
|
|
181
|
+
if (typeof value !== "string" || !(image ? scope.spec.files?.(value) : scope.spec.field(value))) {
|
|
177
182
|
const edge = typeof value === "string" && scope.spec.relation(value);
|
|
178
|
-
scope.findings.push(error(
|
|
183
|
+
scope.findings.push(error(`view-${type}`, `${path}.${type}`, `${scope.kind} has no ${image ? "image or file " : ""}field ${typeof value === "string" ? `"${value}"` : "by that name"}`, edge ? `"${value}" is a relation; show it with {"text": "{${value}.name}"}` : undefined));
|
|
179
184
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
185
|
+
const ways = image ? ["thumb", "gallery"] : VIEW_FIELD_FORMATS;
|
|
186
|
+
if ("as" in raw && !ways.includes(raw["as"]))
|
|
187
|
+
scope.findings.push(error("view-format", `${path}.as`, `"${String(raw["as"])}" is not a way to show ${image ? "pictures" : "a field"}`, `use one of ${ways.join(", ")}`));
|
|
188
|
+
if (!image)
|
|
189
|
+
currency(raw, path, scope, "field");
|
|
183
190
|
if ("label" in raw)
|
|
184
191
|
label(raw["label"], `${path}.label`, scope);
|
|
185
192
|
return;
|
|
@@ -472,7 +479,7 @@ export function viewBraces(views, at, home, lenses) {
|
|
|
472
479
|
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} …"}'));
|
|
473
480
|
};
|
|
474
481
|
eachBlock(views, at, home, lenses, (raw, at) => {
|
|
475
|
-
if ("field" in raw)
|
|
482
|
+
if ("field" in raw || "image" in raw)
|
|
476
483
|
words(raw["label"], `${at}.label`, "a field's label");
|
|
477
484
|
if ("list" in raw) {
|
|
478
485
|
const headings = isObject(raw["group"]) ? raw["group"]["headings"] : undefined;
|
|
@@ -512,7 +519,7 @@ export function viewKeys(views, at, home, lenses) {
|
|
|
512
519
|
return found;
|
|
513
520
|
}
|
|
514
521
|
/** Blocks about no one record — the home, a blocks lens — checked at `at`. */
|
|
515
|
-
function subjectless(list, at, vocabulary, kinds, edges, findings, what) {
|
|
522
|
+
export function subjectless(list, at, vocabulary, kinds, edges, findings, what) {
|
|
516
523
|
const scope = { kind: null, spec: NO_RECORD, kinds, edges, vocabulary, findings, count: 0 };
|
|
517
524
|
if (Array.isArray(list) && list.length === 0)
|
|
518
525
|
findings.push(error("view-shape", at, `${what} has no blocks`, 'give it one: {"headline": "…"}'));
|
|
@@ -521,7 +528,7 @@ function subjectless(list, at, vocabulary, kinds, edges, findings, what) {
|
|
|
521
528
|
findings.push(error("view-size", at, `${what} has ${scope.count} blocks; a view has at most ${MAX_VIEW_BLOCKS}`, "show less"));
|
|
522
529
|
}
|
|
523
530
|
/** The lenses drawn from blocks, by their index in `lenses`: their blocks, checked where they are written. */
|
|
524
|
-
function blockLenses(lenses, vocabulary, kinds, edges, findings) {
|
|
531
|
+
export function blockLenses(lenses, vocabulary, kinds, edges, findings) {
|
|
525
532
|
if (!Array.isArray(lenses))
|
|
526
533
|
return;
|
|
527
534
|
lenses.forEach((lens, index) => {
|
|
@@ -540,7 +547,7 @@ function blockLenses(lenses, vocabulary, kinds, edges, findings) {
|
|
|
540
547
|
});
|
|
541
548
|
}
|
|
542
549
|
/** 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. */
|
|
543
|
-
function validateAll(specsByKind, at, namesOf, kinds, edges, declares, vocabulary) {
|
|
550
|
+
export function validateAll(specsByKind, at, namesOf, kinds, edges, declares, vocabulary) {
|
|
544
551
|
const findings = [];
|
|
545
552
|
if (specsByKind === undefined)
|
|
546
553
|
return findings;
|
|
@@ -591,6 +598,7 @@ export function validateViews(document) {
|
|
|
591
598
|
field: (n) => own(spec.fields, n) || own(spec.computed, n),
|
|
592
599
|
relation: (n) => own(spec.edges, n),
|
|
593
600
|
figure: spec.figure !== undefined,
|
|
601
|
+
files: (n) => own(spec.fields, n) && holdsFiles(spec.fields[n]),
|
|
594
602
|
choices: (n) => (own(spec.fields, n) && spec.fields[n].type === "enum" ? spec.fields[n].options : undefined),
|
|
595
603
|
targets: (n) => (own(spec.edges, n) ? spec.edges[n].to : undefined),
|
|
596
604
|
}
|
|
@@ -601,44 +609,4 @@ export function validateViews(document) {
|
|
|
601
609
|
blockLenses(document.lenses, vocabulary, kinds, edges, findings);
|
|
602
610
|
return findings;
|
|
603
611
|
}
|
|
604
|
-
/**
|
|
605
|
-
* Findings about a declaration's view specs (FR-03), each at
|
|
606
|
-
* `viewSpecs.<kind>.<slot>.<block>`: the vocabulary a document's `views`
|
|
607
|
-
* is held to, read against the declared schema — its fields, its relations,
|
|
608
|
-
* and its figures (the kind's own, or the brand's). With `home`, the
|
|
609
|
-
* declaration's home view at `home.<block>`; with `lenses`, the blocks of
|
|
610
|
-
* each lens drawn from blocks at `lenses.<i>.options.blocks` (FR-81).
|
|
611
|
-
*/
|
|
612
|
-
export function validateViewSpecs(schema, specs, options = {}) {
|
|
613
|
-
const declared = schema.kinds;
|
|
614
|
-
const kinds = new Set(declared);
|
|
615
|
-
const definitionOf = (kind) => schema.tryDefinition(kind);
|
|
616
|
-
const edges = new Set(declared.flatMap((kind) => Object.keys(definitionOf(kind)?.edges ?? {})));
|
|
617
|
-
const namesOf = (kind) => {
|
|
618
|
-
if (!kinds.has(kind))
|
|
619
|
-
return undefined;
|
|
620
|
-
const definition = definitionOf(kind);
|
|
621
|
-
const fields = definition?.fields?.shape ?? {};
|
|
622
|
-
const relations = definition?.edges ?? {};
|
|
623
|
-
const computed = definition?.computed ?? {};
|
|
624
|
-
return {
|
|
625
|
-
field: (n) => n !== "id" && n !== "kind" && (own(fields, n) || own(computed, n)),
|
|
626
|
-
relation: (n) => own(relations, n),
|
|
627
|
-
figure: definition?.figure !== undefined || options.figures?.[kind] !== undefined,
|
|
628
|
-
choices: (n) => {
|
|
629
|
-
if (!own(fields, n))
|
|
630
|
-
return undefined;
|
|
631
|
-
const spec = fieldSpecOf(fields[n]);
|
|
632
|
-
return spec?.type === "enum" ? spec.options : undefined;
|
|
633
|
-
},
|
|
634
|
-
targets: (n) => (own(relations, n) ? relations[n].to : undefined),
|
|
635
|
-
};
|
|
636
|
-
};
|
|
637
|
-
const vocabulary = { namesOf, sources: (edge) => declared.filter((kind) => own(definitionOf(kind)?.edges, edge)) };
|
|
638
|
-
const findings = validateAll(specs, options.at ?? "viewSpecs", namesOf, kinds, edges, "app", vocabulary);
|
|
639
|
-
if (options.home !== undefined)
|
|
640
|
-
subjectless(options.home, "home", vocabulary, kinds, edges, findings, "the home");
|
|
641
|
-
blockLenses(options.lenses, vocabulary, kinds, edges, findings);
|
|
642
|
-
return findings;
|
|
643
|
-
}
|
|
644
612
|
//# sourceMappingURL=views.js.map
|