aontu 0.62.0 → 0.64.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/dist/agentsmd.js +0 -27
- package/dist/agentsmd.js.map +1 -1
- package/dist/alias.js.map +1 -1
- package/dist/allow.js +0 -92
- package/dist/allow.js.map +1 -1
- package/dist/aontu.d.ts +3 -3
- package/dist/aontu.js +4 -84
- package/dist/aontu.js.map +1 -1
- package/dist/aontumodel.d.ts +4 -0
- package/dist/aontumodel.js +27 -0
- package/dist/aontumodel.js.map +1 -0
- package/dist/casing.d.ts +5 -0
- package/dist/casing.js +90 -0
- package/dist/casing.js.map +1 -0
- package/dist/cli.d.ts +2 -2
- package/dist/cli.js +228 -935
- package/dist/cli.js.map +1 -1
- package/dist/ctx.js +0 -48
- package/dist/ctx.js.map +1 -1
- package/dist/diff.js +0 -32
- package/dist/diff.js.map +1 -1
- package/dist/err.js +0 -40
- package/dist/err.js.map +1 -1
- package/dist/escape.js +0 -45
- package/dist/escape.js.map +1 -1
- package/dist/exactjson.d.ts +0 -35
- package/dist/exactjson.js +0 -131
- package/dist/exactjson.js.map +1 -1
- package/dist/format.js +13 -203
- package/dist/format.js.map +1 -1
- package/dist/grammar.d.ts +9 -0
- package/dist/grammar.js +54 -0
- package/dist/grammar.js.map +1 -0
- package/dist/graph.js +0 -26
- package/dist/graph.js.map +1 -1
- package/dist/hcanon.js +0 -82
- package/dist/hcanon.js.map +1 -1
- package/dist/helpdoc.js +2 -2
- package/dist/helpdoc.js.map +1 -1
- package/dist/hints.d.ts +0 -6
- package/dist/hints.js +57 -55
- package/dist/hints.js.map +1 -1
- package/dist/jsonschema.js +0 -114
- package/dist/jsonschema.js.map +1 -1
- package/dist/keyorder.d.ts +0 -7
- package/dist/keyorder.js +0 -41
- package/dist/keyorder.js.map +1 -1
- package/dist/lang.js +17 -915
- package/dist/lang.js.map +1 -1
- package/dist/lsp-server.js +0 -16
- package/dist/lsp-server.js.map +1 -1
- package/dist/lsp.d.ts +1 -1
- package/dist/lsp.js +12 -159
- package/dist/lsp.js.map +1 -1
- package/dist/mcp-server.js +0 -26
- package/dist/mcp-server.js.map +1 -1
- package/dist/mcp.js +0 -149
- package/dist/mcp.js.map +1 -1
- package/dist/mod-tool.js +16 -131
- package/dist/mod-tool.js.map +1 -1
- package/dist/mod.js +0 -162
- package/dist/mod.js.map +1 -1
- package/dist/patch.js +0 -217
- package/dist/patch.js.map +1 -1
- package/dist/profile.d.ts +9 -0
- package/dist/profile.js +28 -0
- package/dist/profile.js.map +1 -0
- package/dist/provenance.js +0 -140
- package/dist/provenance.js.map +1 -1
- package/dist/query.js +0 -75
- package/dist/query.js.map +1 -1
- package/dist/reach.js +0 -43
- package/dist/reach.js.map +1 -1
- package/dist/relation.js +0 -61
- package/dist/relation.js.map +1 -1
- package/dist/report-sarif.d.ts +0 -11
- package/dist/report-sarif.js +0 -28
- package/dist/report-sarif.js.map +1 -1
- package/dist/sig.js +0 -35
- package/dist/sig.js.map +1 -1
- package/dist/sigdecl.js +1 -1
- package/dist/sigdecl.js.map +1 -1
- package/dist/siggate.js +0 -4
- package/dist/siggate.js.map +1 -1
- package/dist/site.js +3 -29
- package/dist/site.js.map +1 -1
- package/dist/subsume.d.ts +0 -10
- package/dist/subsume.js +0 -137
- package/dist/subsume.js.map +1 -1
- package/dist/template.d.ts +2 -1
- package/dist/template.js +58 -138
- package/dist/template.js.map +1 -1
- package/dist/trace.d.ts +21 -0
- package/dist/trace.js +107 -0
- package/dist/trace.js.map +1 -0
- package/dist/trim.js +0 -41
- package/dist/trim.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/type.js.map +1 -1
- package/dist/unify.js +13 -248
- package/dist/unify.js.map +1 -1
- package/dist/utility.js +0 -22
- package/dist/utility.js.map +1 -1
- package/dist/val/AbnfFuncVal.d.ts +18 -0
- package/dist/val/AbnfFuncVal.js +132 -0
- package/dist/val/AbnfFuncVal.js.map +1 -0
- package/dist/val/AbsentVal.d.ts +11 -0
- package/dist/val/AbsentVal.js +30 -0
- package/dist/val/AbsentVal.js.map +1 -0
- package/dist/val/AggFuncVal.d.ts +10 -1
- package/dist/val/AggFuncVal.js +104 -116
- package/dist/val/AggFuncVal.js.map +1 -1
- package/dist/val/ArithFuncVal.js +0 -12
- package/dist/val/ArithFuncVal.js.map +1 -1
- package/dist/val/BagVal.js +1 -78
- package/dist/val/BagVal.js.map +1 -1
- package/dist/val/BigDecimalVal.js +0 -16
- package/dist/val/BigDecimalVal.js.map +1 -1
- package/dist/val/BigIntegerVal.js +0 -16
- package/dist/val/BigIntegerVal.js.map +1 -1
- package/dist/val/CloseFuncVal.js +0 -9
- package/dist/val/CloseFuncVal.js.map +1 -1
- package/dist/val/CmpFuncVal.d.ts +2 -0
- package/dist/val/CmpFuncVal.js +49 -72
- package/dist/val/CmpFuncVal.js.map +1 -1
- package/dist/val/ConjunctVal.js +0 -29
- package/dist/val/ConjunctVal.js.map +1 -1
- package/dist/val/ConstraintVal.js +0 -500
- package/dist/val/ConstraintVal.js.map +1 -1
- package/dist/val/ContainerKindVal.js +0 -2
- package/dist/val/ContainerKindVal.js.map +1 -1
- package/dist/val/CopyFuncVal.js +0 -3
- package/dist/val/CopyFuncVal.js.map +1 -1
- package/dist/val/Decimal.js +0 -179
- package/dist/val/Decimal.js.map +1 -1
- package/dist/val/DeprecateFuncVal.js.map +1 -1
- package/dist/val/DisjunctVal.js +0 -152
- package/dist/val/DisjunctVal.js.map +1 -1
- package/dist/val/EachFuncVal.js +0 -3
- package/dist/val/EachFuncVal.js.map +1 -1
- package/dist/val/EmitFuncVal.d.ts +1 -1
- package/dist/val/EmitFuncVal.js +6 -119
- package/dist/val/EmitFuncVal.js.map +1 -1
- package/dist/val/ExpectVal.js +0 -62
- package/dist/val/ExpectVal.js.map +1 -1
- package/dist/val/FilterFuncVal.js +0 -25
- package/dist/val/FilterFuncVal.js.map +1 -1
- package/dist/val/FuncBaseVal.d.ts +1 -0
- package/dist/val/FuncBaseVal.js +7 -127
- package/dist/val/FuncBaseVal.js.map +1 -1
- package/dist/val/GraphAtomVal.js +0 -15
- package/dist/val/GraphAtomVal.js.map +1 -1
- package/dist/val/HideFuncVal.js +0 -13
- package/dist/val/HideFuncVal.js.map +1 -1
- package/dist/val/IntegerVal.js +0 -61
- package/dist/val/IntegerVal.js.map +1 -1
- package/dist/val/JunctionVal.js +0 -20
- package/dist/val/JunctionVal.js.map +1 -1
- package/dist/val/KeyFuncVal.js +0 -46
- package/dist/val/KeyFuncVal.js.map +1 -1
- package/dist/val/ListVal.js +0 -57
- package/dist/val/ListVal.js.map +1 -1
- package/dist/val/LowerFuncVal.js +0 -11
- package/dist/val/LowerFuncVal.js.map +1 -1
- package/dist/val/MapVal.js +0 -151
- package/dist/val/MapVal.js.map +1 -1
- package/dist/val/MatchFuncVal.js +0 -27
- package/dist/val/MatchFuncVal.js.map +1 -1
- package/dist/val/{FormFuncVal.d.ts → MaybeFuncVal.d.ts} +5 -5
- package/dist/val/MaybeFuncVal.js +50 -0
- package/dist/val/MaybeFuncVal.js.map +1 -0
- package/dist/val/MoveFuncVal.js +0 -18
- package/dist/val/MoveFuncVal.js.map +1 -1
- package/dist/val/NilVal.js +0 -60
- package/dist/val/NilVal.js.map +1 -1
- package/dist/val/NomFuncVal.js +18 -54
- package/dist/val/NomFuncVal.js.map +1 -1
- package/dist/val/NumberVal.js +0 -15
- package/dist/val/NumberVal.js.map +1 -1
- package/dist/val/OpBaseVal.d.ts +1 -0
- package/dist/val/OpBaseVal.js +3 -15
- package/dist/val/OpBaseVal.js.map +1 -1
- package/dist/val/PackFuncVal.js +0 -34
- package/dist/val/PackFuncVal.js.map +1 -1
- package/dist/val/PathFuncVal.js +0 -6
- package/dist/val/PathFuncVal.js.map +1 -1
- package/dist/val/PathVal.js +0 -41
- package/dist/val/PathVal.js.map +1 -1
- package/dist/val/PlaceVal.js +0 -25
- package/dist/val/PlaceVal.js.map +1 -1
- package/dist/val/PlusOpVal.d.ts +1 -7
- package/dist/val/PlusOpVal.js +13 -74
- package/dist/val/PlusOpVal.js.map +1 -1
- package/dist/val/PrefFuncVal.js +0 -1
- package/dist/val/PrefFuncVal.js.map +1 -1
- package/dist/val/PrefVal.js +0 -167
- package/dist/val/PrefVal.js.map +1 -1
- package/dist/val/RecurseVal.js +0 -55
- package/dist/val/RecurseVal.js.map +1 -1
- package/dist/val/RefVal.js +0 -282
- package/dist/val/RefVal.js.map +1 -1
- package/dist/val/ReferFuncVal.js +3 -232
- package/dist/val/ReferFuncVal.js.map +1 -1
- package/dist/val/ScalarKindVal.js +0 -49
- package/dist/val/ScalarKindVal.js.map +1 -1
- package/dist/val/ScalarVal.js +0 -11
- package/dist/val/ScalarVal.js.map +1 -1
- package/dist/val/StrFuncVal.js +0 -18
- package/dist/val/StrFuncVal.js.map +1 -1
- package/dist/val/SuperFuncVal.js +0 -32
- package/dist/val/SuperFuncVal.js.map +1 -1
- package/dist/val/TopVal.js +0 -1
- package/dist/val/TopVal.js.map +1 -1
- package/dist/val/TranslateFuncVal.js +1 -3
- package/dist/val/TranslateFuncVal.js.map +1 -1
- package/dist/val/UpperFuncVal.js +0 -11
- package/dist/val/UpperFuncVal.js.map +1 -1
- package/dist/val/Val.d.ts +1 -0
- package/dist/val/Val.js +2 -133
- package/dist/val/Val.js.map +1 -1
- package/dist/val/VarVal.js +0 -12
- package/dist/val/VarVal.js.map +1 -1
- package/dist/val/arith.js +0 -37
- package/dist/val/arith.js.map +1 -1
- package/dist/val/caserange.js +0 -61
- package/dist/val/caserange.js.map +1 -1
- package/dist/val/members.js +0 -6
- package/dist/val/members.js.map +1 -1
- package/dist/val/numcmp.js +0 -11
- package/dist/val/numcmp.js.map +1 -1
- package/dist/val/numkind.js +0 -145
- package/dist/val/numkind.js.map +1 -1
- package/dist/val/valutil.js +0 -16
- package/dist/val/valutil.js.map +1 -1
- package/dist/vet.js +0 -461
- package/dist/vet.js.map +1 -1
- package/dist/view.js +0 -414
- package/dist/view.js.map +1 -1
- package/dist/walk.js +0 -41
- package/dist/walk.js.map +1 -1
- package/grammar/aontu.abnf +8 -6
- package/grammar/aontu.gbnf +4 -4
- package/grammar/aontu.lark +4 -4
- package/grammar/aontu.tmLanguage.json +1 -1
- package/package.json +4 -2
- package/skill/tasks.md +9 -7
- package/src/agentsmd.ts +0 -35
- package/src/alias.ts +0 -39
- package/src/allow.ts +1 -96
- package/src/aontu.ts +4 -116
- package/src/aontumodel.ts +26 -0
- package/src/casing.ts +95 -0
- package/src/cli.ts +258 -1024
- package/src/ctx.ts +0 -103
- package/src/diff.ts +0 -40
- package/src/err.ts +0 -40
- package/src/escape.ts +0 -46
- package/src/exactjson.ts +0 -131
- package/src/format.ts +14 -257
- package/src/grammar.ts +72 -0
- package/src/graph.ts +0 -61
- package/src/hcanon.ts +0 -82
- package/src/helpdoc.ts +2 -2
- package/src/hints.ts +69 -57
- package/src/jsonschema.ts +0 -123
- package/src/keyorder.ts +0 -42
- package/src/lang.ts +19 -931
- package/src/lsp-server.ts +0 -16
- package/src/lsp.ts +12 -180
- package/src/mcp-server.ts +0 -31
- package/src/mcp.ts +0 -169
- package/src/mod-tool.ts +18 -159
- package/src/mod.ts +0 -178
- package/src/patch.ts +0 -232
- package/src/profile.ts +42 -0
- package/src/provenance.ts +0 -183
- package/src/query.ts +0 -84
- package/src/reach.ts +0 -53
- package/src/relation.ts +0 -84
- package/src/report-sarif.ts +0 -48
- package/src/sig.ts +0 -35
- package/src/sigdecl.ts +1 -1
- package/src/siggate.ts +0 -30
- package/src/site.ts +3 -29
- package/src/subsume.ts +1 -161
- package/src/template.ts +69 -140
- package/src/trace.ts +157 -0
- package/src/trim.ts +0 -53
- package/src/type.ts +2 -45
- package/src/unify.ts +14 -257
- package/src/utility.ts +0 -31
- package/src/val/AbnfFuncVal.ts +181 -0
- package/src/val/AbsentVal.ts +54 -0
- package/src/val/AggFuncVal.ts +152 -188
- package/src/val/ArithFuncVal.ts +0 -20
- package/src/val/BagVal.ts +1 -78
- package/src/val/BigDecimalVal.ts +0 -16
- package/src/val/BigIntegerVal.ts +0 -16
- package/src/val/CloseFuncVal.ts +0 -9
- package/src/val/CmpFuncVal.ts +68 -184
- package/src/val/ConjunctVal.ts +0 -33
- package/src/val/ConstraintVal.ts +2 -537
- package/src/val/ContainerKindVal.ts +0 -18
- package/src/val/CopyFuncVal.ts +0 -5
- package/src/val/Decimal.ts +1 -185
- package/src/val/DeprecateFuncVal.ts +0 -10
- package/src/val/DisjunctVal.ts +0 -157
- package/src/val/EachFuncVal.ts +0 -40
- package/src/val/EmitFuncVal.ts +8 -208
- package/src/val/ExpectVal.ts +0 -62
- package/src/val/FilterFuncVal.ts +0 -55
- package/src/val/FuncBaseVal.ts +9 -130
- package/src/val/GraphAtomVal.ts +0 -42
- package/src/val/HideFuncVal.ts +0 -15
- package/src/val/IntegerVal.ts +0 -61
- package/src/val/JunctionVal.ts +0 -20
- package/src/val/KeyFuncVal.ts +0 -48
- package/src/val/ListVal.ts +0 -59
- package/src/val/LowerFuncVal.ts +0 -12
- package/src/val/MapVal.ts +0 -151
- package/src/val/MatchFuncVal.ts +0 -59
- package/src/val/MaybeFuncVal.ts +86 -0
- package/src/val/MoveFuncVal.ts +0 -20
- package/src/val/NilVal.ts +0 -60
- package/src/val/NomFuncVal.ts +10 -99
- package/src/val/NumberVal.ts +0 -16
- package/src/val/OpBaseVal.ts +4 -17
- package/src/val/PackFuncVal.ts +0 -63
- package/src/val/PathFuncVal.ts +0 -32
- package/src/val/PathVal.ts +0 -66
- package/src/val/PlaceVal.ts +0 -45
- package/src/val/PlusOpVal.ts +18 -75
- package/src/val/PrefFuncVal.ts +0 -1
- package/src/val/PrefVal.ts +0 -179
- package/src/val/RecurseVal.ts +0 -81
- package/src/val/RefVal.ts +1 -285
- package/src/val/ReferFuncVal.ts +4 -255
- package/src/val/ScalarKindVal.ts +0 -50
- package/src/val/ScalarVal.ts +0 -12
- package/src/val/StrFuncVal.ts +0 -44
- package/src/val/SuperFuncVal.ts +0 -42
- package/src/val/TopVal.ts +0 -1
- package/src/val/TranslateFuncVal.ts +1 -51
- package/src/val/UpperFuncVal.ts +0 -12
- package/src/val/Val.ts +3 -192
- package/src/val/VarVal.ts +0 -15
- package/src/val/arith.ts +0 -92
- package/src/val/caserange.ts +0 -62
- package/src/val/members.ts +0 -23
- package/src/val/numcmp.ts +1 -27
- package/src/val/numkind.ts +0 -149
- package/src/val/valutil.ts +0 -16
- package/src/vet.ts +1 -582
- package/src/view.ts +0 -507
- package/src/walk.ts +0 -41
- package/dist/lower.d.ts +0 -23
- package/dist/lower.js +0 -578
- package/dist/lower.js.map +0 -1
- package/dist/render.d.ts +0 -53
- package/dist/render.js +0 -547
- package/dist/render.js.map +0 -1
- package/dist/std.d.ts +0 -3
- package/dist/std.js +0 -672
- package/dist/std.js.map +0 -1
- package/dist/val/FormFuncVal.js +0 -55
- package/dist/val/FormFuncVal.js.map +0 -1
- package/dist/val/NamerFuncVal.d.ts +0 -12
- package/dist/val/NamerFuncVal.js +0 -176
- package/dist/val/NamerFuncVal.js.map +0 -1
- package/src/lower.ts +0 -636
- package/src/render.ts +0 -732
- package/src/std.ts +0 -683
package/dist/lower.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lower.js","sourceRoot":"","sources":["../src/lower.ts"],"names":[],"mappings":"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"}
|
package/dist/render.d.ts
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import type { VetFinding } from './vet';
|
|
2
|
-
import type { IncludeOptions } from './utility';
|
|
3
|
-
export type RenderVerdict = 'ok' | 'lossy' | 'error';
|
|
4
|
-
export type RenderUnit = {
|
|
5
|
-
path: string;
|
|
6
|
-
lang: string;
|
|
7
|
-
text: string;
|
|
8
|
-
};
|
|
9
|
-
export type RenderLoss = {
|
|
10
|
-
unit: string;
|
|
11
|
-
path: string;
|
|
12
|
-
tier: 1 | 2 | 3;
|
|
13
|
-
construct: string;
|
|
14
|
-
reason: string;
|
|
15
|
-
};
|
|
16
|
-
export type RenderTrace = {
|
|
17
|
-
unit: string;
|
|
18
|
-
piece: string;
|
|
19
|
-
node: string;
|
|
20
|
-
rule: string;
|
|
21
|
-
};
|
|
22
|
-
export type RenderCoverage = {
|
|
23
|
-
read: string[];
|
|
24
|
-
dead: string[];
|
|
25
|
-
unruled: {
|
|
26
|
-
unit: string;
|
|
27
|
-
path: string;
|
|
28
|
-
}[];
|
|
29
|
-
};
|
|
30
|
-
export type RenderReport = {
|
|
31
|
-
verdict: RenderVerdict;
|
|
32
|
-
units: RenderUnit[];
|
|
33
|
-
lossy: RenderLoss[];
|
|
34
|
-
errors?: VetFinding[];
|
|
35
|
-
trace?: RenderTrace[];
|
|
36
|
-
coverage?: RenderCoverage;
|
|
37
|
-
};
|
|
38
|
-
export type RenderOptions = IncludeOptions & {
|
|
39
|
-
at?: string;
|
|
40
|
-
path?: string;
|
|
41
|
-
profiles?: any[];
|
|
42
|
-
unit?: string;
|
|
43
|
-
strict?: boolean;
|
|
44
|
-
trace?: boolean;
|
|
45
|
-
coverage?: boolean;
|
|
46
|
-
coverageAt?: string;
|
|
47
|
-
};
|
|
48
|
-
export declare function render(src: string, options?: RenderOptions): RenderReport;
|
|
49
|
-
export declare function renderProfile(src: string, options?: RenderOptions): {
|
|
50
|
-
profile?: any;
|
|
51
|
-
errors?: VetFinding[];
|
|
52
|
-
};
|
|
53
|
-
export declare function renderValue(instance: any, options?: RenderOptions): RenderReport;
|
package/dist/render.js
DELETED
|
@@ -1,547 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/* Copyright (c) 2025 Richard Rodger, MIT License */
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.render = render;
|
|
5
|
-
exports.renderProfile = renderProfile;
|
|
6
|
-
exports.renderValue = renderValue;
|
|
7
|
-
// THE RENDERER (docs/design/RENDER.0.md; docs/capability-review/
|
|
8
|
-
// g9-transformation.md §3). `render` evaluates a document, takes the
|
|
9
|
-
// value at `--at` (the root by default), vets it against the bundled
|
|
10
|
-
// `aontu:code` vocabulary, and folds `code.units` into bytes;
|
|
11
|
-
// `renderValue` is the fold alone, over `generate()` output. The fold
|
|
12
|
-
// is pure and total: it never touches the Val tree, never reads or
|
|
13
|
-
// writes a file, never sorts and never iterates a map, and every piece
|
|
14
|
-
// of a fragment carries its own depth (`at`), so the renderer owns
|
|
15
|
-
// every prefix and no piece nests another (the second amendment's
|
|
16
|
-
// fragment algebra, RENDER.0.md D2 and D6).
|
|
17
|
-
//
|
|
18
|
-
// WHAT THIS PHASE RENDERS (RENDER.0.md P3): fragments -- a line, a
|
|
19
|
-
// blank run, a raw block, a bare string piece, a reference inline --
|
|
20
|
-
// and the `text` escape, under a profile that knows its language. The
|
|
21
|
-
// one bundled profile is `aontu:lang/text`, which every fragment-only
|
|
22
|
-
// unit falls back to; a declaration (`record`, `enum`, ...) needs a
|
|
23
|
-
// LOWERING, which P5 brings with the TypeScript and Go profiles, and
|
|
24
|
-
// until then is `render_profile`.
|
|
25
|
-
const aontu_1 = require("./aontu");
|
|
26
|
-
const vet_1 = require("./vet");
|
|
27
|
-
const hcanon_1 = require("./hcanon");
|
|
28
|
-
const err_1 = require("./err");
|
|
29
|
-
const keyorder_1 = require("./keyorder");
|
|
30
|
-
const utility_1 = require("./utility");
|
|
31
|
-
const lower_1 = require("./lower");
|
|
32
|
-
const VOCABULARY = '@"aontu:code"';
|
|
33
|
-
// The bundled profiles, by lang: aontu:lang/<lang>.
|
|
34
|
-
const BUNDLED_LANGS = ['go', 'text', 'typescript'];
|
|
35
|
-
const PROFILE_VOCABULARY = '@"aontu:profile"';
|
|
36
|
-
function finding(code, cls, path, message) {
|
|
37
|
-
return { code, class: cls, severity: 'error', path, message, sites: [] };
|
|
38
|
-
}
|
|
39
|
-
function errorReport(errors) {
|
|
40
|
-
return { verdict: 'error', units: [], lossy: [], errors };
|
|
41
|
-
}
|
|
42
|
-
// The verb's evaluation, before the fold (RENDER.0.md D1): evaluate,
|
|
43
|
-
// anchor, vet the anchored value against the vocabulary as `aontu vet`
|
|
44
|
-
// would, and generate the MEET of the two -- so the vocabulary's
|
|
45
|
-
// defaults (`at: 0`, `n: 1`, `reindent: true`) are in the instance the
|
|
46
|
-
// fold reads, whether or not the document included the vocabulary
|
|
47
|
-
// itself. THE VET AND THE MEET READ THE SETTLED VALUE, re-sourced
|
|
48
|
-
// through its hash form (valid source that evaluates to the same
|
|
49
|
-
// value), not the document's text: a fragment's lines are what a
|
|
50
|
-
// transform COMPUTED -- an `emit`, a `join` -- and the vocabulary's
|
|
51
|
-
// alternatives are tried against values, not against calls that are
|
|
52
|
-
// still waiting to fire. A finding from that vet therefore addresses
|
|
53
|
-
// the instance by path, which is the addressing every render finding
|
|
54
|
-
// uses (G9 §3); a document that does not stand up at all is reported
|
|
55
|
-
// with its own sites, before any of this.
|
|
56
|
-
function render(src, options) {
|
|
57
|
-
const opts = options ?? {};
|
|
58
|
-
const aontu = new aontu_1.Aontu((0, utility_1.includeOpts)(opts));
|
|
59
|
-
// THE RECORDER (P7), on for a run that was asked for a trace or a
|
|
60
|
-
// coverage report and off for every other. Its presence is the one
|
|
61
|
-
// switch: the read set fills as references resolve, and the two
|
|
62
|
-
// riders that carry a read address and a dispatch stamp are written
|
|
63
|
-
// only while it is there.
|
|
64
|
-
const rec = true === opts.trace || true === opts.coverage;
|
|
65
|
-
const reads = rec ? new Set() : undefined;
|
|
66
|
-
// COLLECT MODE, so a syntax error arrives on the context rather than
|
|
67
|
-
// as a throw (the jsonschema and vet precedent; no try/catch, for
|
|
68
|
-
// the reason those verbs have none).
|
|
69
|
-
const actx = aontu.ctx({ collect: true, reads });
|
|
70
|
-
const root = aontu.unify(src, { path: opts.path, collect: true }, actx);
|
|
71
|
-
if (0 < actx.err.length || true === root?.isNil) {
|
|
72
|
-
return errorReport([(0, vet_1.failureFinding)(actx, opts.path, root)]);
|
|
73
|
-
}
|
|
74
|
-
let node = root;
|
|
75
|
-
if (null != opts.at && '' !== opts.at) {
|
|
76
|
-
const found = (0, vet_1.anchorAt)(root, opts.at);
|
|
77
|
-
if (null == found) {
|
|
78
|
-
// The anchor names nothing: a `no_path` nil through the finding
|
|
79
|
-
// shape every other refusal here uses.
|
|
80
|
-
const nil = (0, err_1.makeNilErr)(actx, 'no_path', root, undefined, 'at');
|
|
81
|
-
actx.err.push(nil);
|
|
82
|
-
return errorReport([(0, vet_1.failureFinding)(actx, opts.path, root)]);
|
|
83
|
-
}
|
|
84
|
-
node = found;
|
|
85
|
-
}
|
|
86
|
-
// UNDER NO CALLER CAPABILITY, here and in the meet below: the
|
|
87
|
-
// vocabulary is the engine's own and the instance is a canon, which
|
|
88
|
-
// includes nothing, so the caller's include capability -- which
|
|
89
|
-
// governs the DOCUMENT -- has nothing to govern here, and `none`
|
|
90
|
-
// must not deny the renderer its own schema.
|
|
91
|
-
const value = (0, hcanon_1.hcanon)(node);
|
|
92
|
-
const report = (0, vet_1.vet)(VOCABULARY, value);
|
|
93
|
-
if ('valid' !== report.verdict) {
|
|
94
|
-
return errorReport(report.findings);
|
|
95
|
-
}
|
|
96
|
-
// The meet, keyed: the vocabulary's root holds `aontu.Code`, and so
|
|
97
|
-
// does the instance's (a value the vet admitted is a map), and a
|
|
98
|
-
// document with no `code` at all is the vocabulary's own empty
|
|
99
|
-
// instance. The key is namespaced (ADR-029), so the reach is two deep.
|
|
100
|
-
const codeVal = node.peg.aontu?.peg?.Code;
|
|
101
|
-
const instance = new aontu_1.Aontu().generate(VOCABULARY + (undefined === codeVal ? '' : '\naontu: Code: ' + (0, hcanon_1.hcanon)(codeVal)));
|
|
102
|
-
const folded = renderValue(instance, opts);
|
|
103
|
-
// THE TWO REPORTS ARE JOINED TO THE FOLD BY PATH (P7), which is what
|
|
104
|
-
// lets the fold stay the pure total function D6 asks for: the
|
|
105
|
-
// dispatch stamps ride the VALUE, the instance the fold reads is
|
|
106
|
-
// that value re-sourced through its hash form, and a piece is at the
|
|
107
|
-
// same path in both. Nothing to report on `error`: there are no
|
|
108
|
-
// units to attribute pieces to.
|
|
109
|
-
if (rec && 'error' !== folded.verdict) {
|
|
110
|
-
const marks = emitted(node);
|
|
111
|
-
const trace = traceOf(marks, instance, folded.units);
|
|
112
|
-
// AN EMPTY TRACE IS NO TRACE, in both ports: Go omits an empty
|
|
113
|
-
// slice, and a report shape that differed by port would be the one
|
|
114
|
-
// thing the shared rows exist to refuse. A run that emitted no
|
|
115
|
-
// piece has nothing to attribute, and the coverage report says so
|
|
116
|
-
// in its own words.
|
|
117
|
-
if (0 < trace.length) {
|
|
118
|
-
folded.trace = trace;
|
|
119
|
-
}
|
|
120
|
-
if (true === opts.coverage) {
|
|
121
|
-
const cov = coverOf(root, node, reads, opts, marks, instance, folded.units);
|
|
122
|
-
if (undefined === cov) {
|
|
123
|
-
const nil = (0, err_1.makeNilErr)(actx, 'no_path', root, undefined, 'coverageAt');
|
|
124
|
-
actx.err.push(nil);
|
|
125
|
-
return errorReport([(0, vet_1.failureFinding)(actx, opts.path, root)]);
|
|
126
|
-
}
|
|
127
|
-
folded.coverage = cov;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
return folded;
|
|
131
|
-
}
|
|
132
|
-
// ---------------------------------------------------------------------
|
|
133
|
-
// THE TRACE AND THE COVERAGE REPORT (RENDER.0.md D11, P7).
|
|
134
|
-
// The one walk order both ports walk in: a list by index, a map by key
|
|
135
|
-
// in code-point order. `fn` answers whether to descend.
|
|
136
|
-
function walkVals(root, fn) {
|
|
137
|
-
const walk = (v, path) => {
|
|
138
|
-
if (null == v || true !== v.isVal || !fn(v, path)) {
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
if (true === v.isList && null != v.peg) {
|
|
142
|
-
for (let i = 0; i < v.peg.length; i++) {
|
|
143
|
-
walk(v.peg[i], [...path, String(i)]);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
else if (true === v.isMap && null != v.peg) {
|
|
147
|
-
for (const k of Object.keys(v.peg).sort(keyorder_1.cmpCodePoint)) {
|
|
148
|
-
// AN ALIAS DECLARATION IS NOT A MEMBER, here for the reason
|
|
149
|
-
// every fold has it (./val/members.ts): `%wire = …` holds a
|
|
150
|
-
// value the document never generates, so it is neither a piece
|
|
151
|
-
// to trace nor model that could be called dead.
|
|
152
|
-
if (!v.aliasKeys.includes(k)) {
|
|
153
|
-
walk(v.peg[k], [...path, k]);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
};
|
|
158
|
-
walk(root, []);
|
|
159
|
-
}
|
|
160
|
-
// A path as an address: `$`, then a dot before every segment.
|
|
161
|
-
function addr(path) {
|
|
162
|
-
return '$' + path.map((seg) => '.' + seg).join('');
|
|
163
|
-
}
|
|
164
|
-
// Every piece a dispatch stamped, under the anchored value, in
|
|
165
|
-
// document order. The path is relative to the anchor, which is where
|
|
166
|
-
// the instance the fold reads is rooted too.
|
|
167
|
-
function emitted(node) {
|
|
168
|
-
const out = [];
|
|
169
|
-
walkVals(node, (v, path) => {
|
|
170
|
-
if (null != v.emitted) {
|
|
171
|
-
out.push({ path: addr(path), mark: v.emitted });
|
|
172
|
-
}
|
|
173
|
-
return true;
|
|
174
|
-
});
|
|
175
|
-
return out;
|
|
176
|
-
}
|
|
177
|
-
// The trace: one entry per stamped piece that a RENDERED unit holds. A
|
|
178
|
-
// piece is IN the unit whose path prefixes its own, which is the whole
|
|
179
|
-
// of the question -- no path is parsed, and a stamp that lies under no
|
|
180
|
-
// unit at all (a rule set held under a key of its own, and referred to
|
|
181
|
-
// from a unit) simply matches nothing. A unit the run did not render
|
|
182
|
-
// (`--unit` names one) has no bytes for a piece of it to be in, so it
|
|
183
|
-
// is not among the prefixes either.
|
|
184
|
-
function traceOf(marks, instance, units) {
|
|
185
|
-
const pre = [];
|
|
186
|
-
unitList(instance).forEach((u, i) => {
|
|
187
|
-
if (units.some((r) => r.path === u.path)) {
|
|
188
|
-
pre.push({ at: '$.aontu.Code.units.' + i, path: u.path });
|
|
189
|
-
}
|
|
190
|
-
});
|
|
191
|
-
const out = [];
|
|
192
|
-
for (const m of marks) {
|
|
193
|
-
const hit = pre.find((p) => m.path === p.at || m.path.startsWith(p.at + '.'));
|
|
194
|
-
if (undefined === hit) {
|
|
195
|
-
continue;
|
|
196
|
-
}
|
|
197
|
-
out.push({ unit: hit.path, piece: m.path, node: m.mark.node, rule: m.mark.rule });
|
|
198
|
-
}
|
|
199
|
-
return out;
|
|
200
|
-
}
|
|
201
|
-
// Every proper ancestor of an address, `$` included.
|
|
202
|
-
function ancestors(a) {
|
|
203
|
-
const parts = a.split('.');
|
|
204
|
-
const out = [];
|
|
205
|
-
for (let i = 1; i < parts.length; i++) {
|
|
206
|
-
out.push(parts.slice(0, i).join('.'));
|
|
207
|
-
}
|
|
208
|
-
return out;
|
|
209
|
-
}
|
|
210
|
-
// Is the value at `a` covered by the set -- the address itself in it,
|
|
211
|
-
// or an address above it? An address ABOVE it covers the whole subtree:
|
|
212
|
-
// a reference that read `$.schema` read everything under it, and a rule
|
|
213
|
-
// that emitted a unit emitted every declaration in it.
|
|
214
|
-
function covered(set, a) {
|
|
215
|
-
if (set.has(a)) {
|
|
216
|
-
return true;
|
|
217
|
-
}
|
|
218
|
-
for (const up of ancestors(a)) {
|
|
219
|
-
if (set.has(up)) {
|
|
220
|
-
return true;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
return false;
|
|
224
|
-
}
|
|
225
|
-
// THE COVERAGE REPORT (P7). Dead model is measured over the DOCUMENT
|
|
226
|
-
// ROOT, or under `coverageAt` when a document keeps its model under one
|
|
227
|
-
// key (X-3, decided here): the read set is absolute, so a narrower
|
|
228
|
-
// measure is a narrower walk, not a different origin. The render's own
|
|
229
|
-
// output -- the `aontu` namespace under the anchor -- is not model and
|
|
230
|
-
// is never walked into: nothing reads it, so every document would
|
|
231
|
-
// otherwise report it dead. The whole NAMESPACE is excluded, not just
|
|
232
|
-
// `aontu.Code` (ADR-029): everything under it is language-supplied, so
|
|
233
|
-
// an included vocabulary is not dead model either.
|
|
234
|
-
function coverOf(root, node, reads, opts, marks, instance, units) {
|
|
235
|
-
// THE ANCHOR IS THE ONE render() ALREADY FOUND, so the namespace
|
|
236
|
-
// under it is named without asking a second time: `--at` is resolved
|
|
237
|
-
// before the vet, and an anchor that named nothing never reached here.
|
|
238
|
-
const codeAddr = addr(node.path.concat('aontu'));
|
|
239
|
-
let from = root;
|
|
240
|
-
let base = [];
|
|
241
|
-
if (null != opts.coverageAt && '' !== opts.coverageAt) {
|
|
242
|
-
const found = (0, vet_1.anchorAt)(root, opts.coverageAt);
|
|
243
|
-
if (null == found) {
|
|
244
|
-
return undefined;
|
|
245
|
-
}
|
|
246
|
-
from = found;
|
|
247
|
-
base = found.path;
|
|
248
|
-
}
|
|
249
|
-
// The two questions asked of the read set, as sets: is this address
|
|
250
|
-
// read (or under one that is), and does a read lie BELOW it?
|
|
251
|
-
const above = new Set(reads);
|
|
252
|
-
const below = new Set();
|
|
253
|
-
for (const r of reads) {
|
|
254
|
-
for (const up of ancestors(r)) {
|
|
255
|
-
below.add(up);
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
const dead = [];
|
|
259
|
-
walkVals(from, (_v, path) => {
|
|
260
|
-
const a = addr(base.concat(path));
|
|
261
|
-
if (a === codeAddr || covered(above, a)) {
|
|
262
|
-
return false;
|
|
263
|
-
}
|
|
264
|
-
// THE ROOT OF THE MEASURE IS NEVER ITSELF DEAD MODEL, and is
|
|
265
|
-
// descended into whatever the read set holds. A document that is
|
|
266
|
-
// only a transform reads nothing above its own model, and naming
|
|
267
|
-
// the root there would report the whole document dead while its
|
|
268
|
-
// one live subtree sat inside it.
|
|
269
|
-
if (below.has(a) || 0 === path.length) {
|
|
270
|
-
return true;
|
|
271
|
-
}
|
|
272
|
-
dead.push(a);
|
|
273
|
-
return false;
|
|
274
|
-
});
|
|
275
|
-
// A SILENT HOLE: a declaration of a rendered unit that no stamp
|
|
276
|
-
// touches -- neither its own, nor one on the unit above it, nor one
|
|
277
|
-
// on a piece inside it.
|
|
278
|
-
const stamped = new Set(marks.map((m) => m.path));
|
|
279
|
-
const inside = new Set();
|
|
280
|
-
for (const m of marks) {
|
|
281
|
-
for (const up of ancestors(m.path)) {
|
|
282
|
-
inside.add(up);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
const unruled = [];
|
|
286
|
-
unitList(instance).forEach((unit, i) => {
|
|
287
|
-
if (!units.some((u) => u.path === unit.path)) {
|
|
288
|
-
return;
|
|
289
|
-
}
|
|
290
|
-
const decls = unit.decls;
|
|
291
|
-
decls.forEach((_d, j) => {
|
|
292
|
-
const a = '$.aontu.Code.units.' + i + '.decls.' + j;
|
|
293
|
-
if (!covered(stamped, a) && !inside.has(a)) {
|
|
294
|
-
unruled.push({ unit: unit.path, path: a });
|
|
295
|
-
}
|
|
296
|
-
});
|
|
297
|
-
});
|
|
298
|
-
return { read: [...reads].sort(keyorder_1.cmpCodePoint), dead, unruled };
|
|
299
|
-
}
|
|
300
|
-
// The bundled text profile, evaluated once: the profile of a unit
|
|
301
|
-
// whose declarations are fragments and text escapes only.
|
|
302
|
-
const bundled = {};
|
|
303
|
-
// A bundled profile, evaluated once: the meet of aontu:lang/<lang>
|
|
304
|
-
// with the vocabulary, so its defaults are in it.
|
|
305
|
-
function bundledProfile(lang) {
|
|
306
|
-
if (!BUNDLED_LANGS.includes(lang)) {
|
|
307
|
-
return undefined;
|
|
308
|
-
}
|
|
309
|
-
if (undefined === bundled[lang]) {
|
|
310
|
-
bundled[lang] = new aontu_1.Aontu().generate('@"aontu:lang/' + lang + '"').aontu.Profile;
|
|
311
|
-
}
|
|
312
|
-
return bundled[lang];
|
|
313
|
-
}
|
|
314
|
-
// PROFILE SELECTION, per unit (RENDER.0.md D5): a caller-supplied
|
|
315
|
-
// profile whose `lang` is the unit's; else the bundled profile of that
|
|
316
|
-
// `lang`; else `aontu:lang/text`, if and only if every declaration in
|
|
317
|
-
// the unit is a fragment or a text escape; else nothing, which the
|
|
318
|
-
// caller reports as `render_profile`. The unit's inline `profile` is
|
|
319
|
-
// merged over whichever base was found.
|
|
320
|
-
function profileFor(lang, given, fragOnly) {
|
|
321
|
-
const supplied = (given ?? []).find((p) => p?.lang === lang);
|
|
322
|
-
if (undefined !== supplied) {
|
|
323
|
-
return supplied;
|
|
324
|
-
}
|
|
325
|
-
const own = bundledProfile(lang);
|
|
326
|
-
if (undefined !== own) {
|
|
327
|
-
return own;
|
|
328
|
-
}
|
|
329
|
-
return fragOnly ? bundledProfile('text') : undefined;
|
|
330
|
-
}
|
|
331
|
-
function isMap(v) {
|
|
332
|
-
return null != v && 'object' === typeof v && !Array.isArray(v);
|
|
333
|
-
}
|
|
334
|
-
// An inline profile merged over its base, map by map, the inline
|
|
335
|
-
// value winning at a leaf; keys in code-point order, so the merge is
|
|
336
|
-
// the same in both ports.
|
|
337
|
-
function mergeProfile(base, over) {
|
|
338
|
-
const out = { ...base };
|
|
339
|
-
for (const k of Object.keys(over).sort(keyorder_1.cmpCodePoint)) {
|
|
340
|
-
out[k] = isMap(base[k]) && isMap(over[k]) ?
|
|
341
|
-
mergeProfile(base[k], over[k]) : over[k];
|
|
342
|
-
}
|
|
343
|
-
return out;
|
|
344
|
-
}
|
|
345
|
-
// THE FOLD (RENDER.0.md D6). `pad(at)` is `indent.unit` repeated
|
|
346
|
-
// `indent.width × at` times; a line is `pad + text + LF`, and an empty
|
|
347
|
-
// text emits no pad; a blank is its terminators alone; a raw block's
|
|
348
|
-
// lines each get the pad unless `reindent: false`, which emits them
|
|
349
|
-
// at column 0 verbatim -- and common leading indentation is never
|
|
350
|
-
// stripped. A reference inline is its name, verbatim (a
|
|
351
|
-
// declaration-capable profile puts it through its identifier rules,
|
|
352
|
-
// P5). Nothing is trimmed (D3): the text is the transform's.
|
|
353
|
-
// A profile with no indent -- a caller-supplied map the vocabulary
|
|
354
|
-
// never filled -- takes the vocabulary's own default, two spaces.
|
|
355
|
-
function pad(profile, at) {
|
|
356
|
-
const indent = profile.indent ?? { unit: ' ', width: 2 };
|
|
357
|
-
return (indent.unit ?? ' ').repeat((indent.width ?? 2) * at);
|
|
358
|
-
}
|
|
359
|
-
function line(profile, at, text) {
|
|
360
|
-
return ('' === text ? '' : pad(profile, at)) + text + '\n';
|
|
361
|
-
}
|
|
362
|
-
// A reference inline is its name: through the profile's identifier
|
|
363
|
-
// rules under a lowering, verbatim under text.
|
|
364
|
-
function inline(piece, ctx) {
|
|
365
|
-
if ('string' === typeof piece) {
|
|
366
|
-
return piece;
|
|
367
|
-
}
|
|
368
|
-
return undefined === ctx ? piece.name : (0, lower_1.ident)(piece.name, 'record', ctx, '', false);
|
|
369
|
-
}
|
|
370
|
-
function foldPiece(piece, profile, unit, path, lossy, ctx) {
|
|
371
|
-
if ('string' === typeof piece) {
|
|
372
|
-
return line(profile, 0, piece);
|
|
373
|
-
}
|
|
374
|
-
if ('line' === piece.k) {
|
|
375
|
-
return line(profile, piece.at ?? 0, piece.of.map((p) => inline(p, ctx)).join(''));
|
|
376
|
-
}
|
|
377
|
-
if ('blank' === piece.k) {
|
|
378
|
-
return '\n'.repeat(piece.n ?? 1);
|
|
379
|
-
}
|
|
380
|
-
lossy.push({
|
|
381
|
-
unit, path, tier: 3, construct: 'raw',
|
|
382
|
-
reason: 'verbatim text: the renderer re-indents it and checks nothing else',
|
|
383
|
-
});
|
|
384
|
-
const at = piece.at ?? 0;
|
|
385
|
-
const reindent = piece.reindent ?? true;
|
|
386
|
-
const lines = piece.text.split('\n');
|
|
387
|
-
if ('' === lines[lines.length - 1]) {
|
|
388
|
-
lines.pop();
|
|
389
|
-
}
|
|
390
|
-
return lines.map((l) => reindent ? line(profile, at, l) : l + '\n').join('');
|
|
391
|
-
}
|
|
392
|
-
// A PROFILE DOCUMENT (RENDER.0.md D5), evaluated the way `render`
|
|
393
|
-
// evaluates its own: under the caller's include options, then vetted
|
|
394
|
-
// against aontu:profile as a settled value and met with that vocabulary
|
|
395
|
-
// so its defaults (`indent.width: 2`, ...) are in it. The answer is the
|
|
396
|
-
// `profile` map the fold reads -- what `--profile <file>` hands to
|
|
397
|
-
// RenderOptions.profiles -- or the findings that refused the document:
|
|
398
|
-
// one that does not stand up, or one the vocabulary rejects.
|
|
399
|
-
function renderProfile(src, options) {
|
|
400
|
-
const opts = options ?? {};
|
|
401
|
-
const aontu = new aontu_1.Aontu((0, utility_1.includeOpts)(opts));
|
|
402
|
-
const actx = aontu.ctx({ collect: true });
|
|
403
|
-
const root = aontu.unify(src, { path: opts.path, collect: true }, actx);
|
|
404
|
-
if (0 < actx.err.length || true === root?.isNil) {
|
|
405
|
-
return { errors: [(0, vet_1.failureFinding)(actx, opts.path, root)] };
|
|
406
|
-
}
|
|
407
|
-
const report = (0, vet_1.vet)(PROFILE_VOCABULARY, (0, hcanon_1.hcanon)(root));
|
|
408
|
-
if ('valid' !== report.verdict) {
|
|
409
|
-
return { errors: report.findings };
|
|
410
|
-
}
|
|
411
|
-
// The meet, keyed as render's is: the vocabulary requires `profile`,
|
|
412
|
-
// so a value the vet admitted has one.
|
|
413
|
-
const instance = new aontu_1.Aontu().generate(PROFILE_VOCABULARY + '\naontu: Profile: ' +
|
|
414
|
-
(0, hcanon_1.hcanon)(root.peg.aontu.peg.Profile));
|
|
415
|
-
return { profile: instance.aontu.Profile };
|
|
416
|
-
}
|
|
417
|
-
// The instance's unit list, or none: `code` is the vocabulary's own
|
|
418
|
-
// key and is always there, `units` is not. One reader, so the fold,
|
|
419
|
-
// the trace and the coverage report all see the same list.
|
|
420
|
-
function unitList(instance) {
|
|
421
|
-
return Array.isArray(instance?.aontu?.Code?.units) ?
|
|
422
|
-
instance.aontu.Code.units : [];
|
|
423
|
-
}
|
|
424
|
-
// The fold alone, over `generate()` output: the instance is
|
|
425
|
-
// `{code: {units: [...]}}` as the vocabulary shapes it, with its
|
|
426
|
-
// defaults filled -- which is what `render` hands over, and what a
|
|
427
|
-
// caller of this function is responsible for.
|
|
428
|
-
function renderValue(instance, options) {
|
|
429
|
-
const opts = options ?? {};
|
|
430
|
-
const errors = [];
|
|
431
|
-
const lossy = [];
|
|
432
|
-
const units = [];
|
|
433
|
-
const list = unitList(instance);
|
|
434
|
-
const seen = [];
|
|
435
|
-
let selected = 0;
|
|
436
|
-
list.forEach((unit, i) => {
|
|
437
|
-
const upath = '$.aontu.Code.units.' + i;
|
|
438
|
-
const path = unit.path;
|
|
439
|
-
const lang = unit.lang;
|
|
440
|
-
// A UNIT PATH IS RELATIVE, DESCENDS, AND IS ITS OWN (RENDER.0.md
|
|
441
|
-
// D8): an absolute path, a `..` segment or a repeat of another
|
|
442
|
-
// unit's path is refused before anything is written.
|
|
443
|
-
if (path.startsWith('/')) {
|
|
444
|
-
errors.push(finding('render_path', 'parse', upath + '.path', 'the unit path ' + path + ' is absolute.'));
|
|
445
|
-
return;
|
|
446
|
-
}
|
|
447
|
-
if (path.split('/').includes('..')) {
|
|
448
|
-
errors.push(finding('render_path', 'parse', upath + '.path', 'the unit path ' + path + ' climbs out of the output directory.'));
|
|
449
|
-
return;
|
|
450
|
-
}
|
|
451
|
-
if (seen.includes(path)) {
|
|
452
|
-
errors.push(finding('render_path', 'parse', upath + '.path', 'the unit path ' + path + ' repeats another unit\'s.'));
|
|
453
|
-
return;
|
|
454
|
-
}
|
|
455
|
-
seen.push(path);
|
|
456
|
-
if (undefined !== opts.unit && opts.unit !== path) {
|
|
457
|
-
return;
|
|
458
|
-
}
|
|
459
|
-
selected++;
|
|
460
|
-
const decls = unit.decls;
|
|
461
|
-
const fragOnly = decls.every((d) => 'frag' === d.k || 'text' === d.k);
|
|
462
|
-
const base = profileFor(lang, opts.profiles, fragOnly);
|
|
463
|
-
if (undefined === base) {
|
|
464
|
-
errors.push(finding('render_profile', 'parse', upath + '.lang', 'no profile renders ' + lang + ': a declaration needs a lowering, and ' +
|
|
465
|
-
'only fragments and text escapes render under aontu:lang/text.'));
|
|
466
|
-
return;
|
|
467
|
-
}
|
|
468
|
-
const profile = null == unit.profile ? base : mergeProfile(base, unit.profile);
|
|
469
|
-
// THE LOWERING (D5, P5), when the profile names one: the unit's
|
|
470
|
-
// header -- banner, package clause, imports -- and each declaration
|
|
471
|
-
// as pieces the fold takes, a blank line between two lowered
|
|
472
|
-
// declarations. A fragment or a text escape owns its own blanks.
|
|
473
|
-
const family = profile.lowering;
|
|
474
|
-
const ctx = undefined === family ? undefined
|
|
475
|
-
: { profile, family, unit: path, lossy };
|
|
476
|
-
let text = '';
|
|
477
|
-
if (undefined !== ctx) {
|
|
478
|
-
const header = (0, lower_1.lowerHeader)(unit, instance?.aontu?.Code?.source, ctx);
|
|
479
|
-
for (const piece of header) {
|
|
480
|
-
text += foldPiece(piece, profile, path, upath, lossy, ctx);
|
|
481
|
-
}
|
|
482
|
-
if (0 < header.length && 0 < decls.length) {
|
|
483
|
-
text += '\n';
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
let lowered = false;
|
|
487
|
-
decls.forEach((decl, j) => {
|
|
488
|
-
const dpath = upath + '.decls.' + j;
|
|
489
|
-
if ('frag' === decl.k) {
|
|
490
|
-
lowered = false;
|
|
491
|
-
lossy.push({
|
|
492
|
-
unit: path, path: dpath, tier: 2, construct: 'frag',
|
|
493
|
-
reason: 'a fragment says nothing about ' + lang + ' syntax',
|
|
494
|
-
});
|
|
495
|
-
decl.of.forEach((piece, n) => {
|
|
496
|
-
text += foldPiece(piece, profile, path, dpath + '.of.' + n, lossy, ctx);
|
|
497
|
-
});
|
|
498
|
-
}
|
|
499
|
-
else if ('text' === decl.k) {
|
|
500
|
-
lowered = false;
|
|
501
|
-
if (decl.lang !== lang) {
|
|
502
|
-
errors.push(finding('render_lang', 'conflict', dpath + '.lang', 'the text escape is ' + decl.lang + ' in a ' + lang + ' unit.'));
|
|
503
|
-
return;
|
|
504
|
-
}
|
|
505
|
-
lossy.push({
|
|
506
|
-
unit: path, path: dpath, tier: 3, construct: 'text',
|
|
507
|
-
reason: 'verbatim ' + lang + ': the renderer checks nothing in it',
|
|
508
|
-
});
|
|
509
|
-
text += decl.text;
|
|
510
|
-
}
|
|
511
|
-
else if (undefined !== ctx) {
|
|
512
|
-
if (lowered) {
|
|
513
|
-
text += '\n';
|
|
514
|
-
}
|
|
515
|
-
for (const piece of (0, lower_1.lowerDecl)(decl, dpath, ctx)) {
|
|
516
|
-
text += foldPiece(piece, profile, path, dpath, lossy, ctx);
|
|
517
|
-
}
|
|
518
|
-
lowered = true;
|
|
519
|
-
}
|
|
520
|
-
else {
|
|
521
|
-
errors.push(finding('render_profile', 'parse', dpath + '.k', 'a ' + decl.k + ' declaration has no lowering under the ' +
|
|
522
|
-
profile.lang + ' profile.'));
|
|
523
|
-
}
|
|
524
|
-
});
|
|
525
|
-
units.push({ path, lang, text });
|
|
526
|
-
});
|
|
527
|
-
if (undefined !== opts.unit && 0 === selected) {
|
|
528
|
-
errors.push(finding('render_unit', 'reference', '$.aontu.Code.units', 'no unit has the path ' + opts.unit + '.'));
|
|
529
|
-
}
|
|
530
|
-
if (true === opts.strict) {
|
|
531
|
-
for (const loss of lossy) {
|
|
532
|
-
if (3 === loss.tier) {
|
|
533
|
-
errors.push(finding('render_strict', 'conflict', loss.path, 'the ' + loss.construct + ' in ' + loss.unit +
|
|
534
|
-
' is an opaque escape, refused under strict.'));
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
}
|
|
538
|
-
if (0 < errors.length) {
|
|
539
|
-
return errorReport(errors);
|
|
540
|
-
}
|
|
541
|
-
return {
|
|
542
|
-
verdict: 0 < lossy.length ? 'lossy' : 'ok',
|
|
543
|
-
units,
|
|
544
|
-
lossy,
|
|
545
|
-
};
|
|
546
|
-
}
|
|
547
|
-
//# sourceMappingURL=render.js.map
|