aontu 0.52.0 → 0.53.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 +88 -0
- package/bin/aontu-mcp.js +4 -0
- package/dist/agentsmd.d.ts +16 -0
- package/dist/agentsmd.js +107 -0
- package/dist/agentsmd.js.map +1 -0
- package/dist/aontu.d.ts +14 -3
- package/dist/aontu.js +145 -4
- package/dist/aontu.js.map +1 -1
- package/dist/cli.d.ts +44 -1
- package/dist/cli.js +2401 -44
- package/dist/cli.js.map +1 -1
- package/dist/ctx.d.ts +16 -0
- package/dist/ctx.js +44 -0
- package/dist/ctx.js.map +1 -1
- package/dist/diff.d.ts +22 -0
- package/dist/diff.js +141 -0
- package/dist/diff.js.map +1 -0
- package/dist/err.d.ts +3 -1
- package/dist/err.js +48 -8
- package/dist/err.js.map +1 -1
- package/dist/graph.d.ts +16 -0
- package/dist/graph.js +73 -0
- package/dist/graph.js.map +1 -0
- package/dist/hcanon.d.ts +3 -0
- package/dist/hcanon.js +146 -0
- package/dist/hcanon.js.map +1 -0
- package/dist/hints.js +223 -5
- package/dist/hints.js.map +1 -1
- package/dist/jsonschema.d.ts +20 -0
- package/dist/jsonschema.js +391 -0
- package/dist/jsonschema.js.map +1 -0
- package/dist/lang.js +698 -35
- package/dist/lang.js.map +1 -1
- package/dist/lsp.d.ts +9 -2
- package/dist/lsp.js +262 -46
- package/dist/lsp.js.map +1 -1
- package/dist/mcp-server.d.ts +20 -0
- package/dist/mcp-server.js +147 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/mcp.d.ts +42 -0
- package/dist/mcp.js +814 -0
- package/dist/mcp.js.map +1 -0
- package/dist/mod-tool.d.ts +58 -0
- package/dist/mod-tool.js +498 -0
- package/dist/mod-tool.js.map +1 -0
- package/dist/mod.d.ts +31 -0
- package/dist/mod.js +250 -0
- package/dist/mod.js.map +1 -0
- package/dist/patch.d.ts +44 -0
- package/dist/patch.js +506 -0
- package/dist/patch.js.map +1 -0
- package/dist/provenance.d.ts +40 -0
- package/dist/provenance.js +335 -0
- package/dist/provenance.js.map +1 -0
- package/dist/query.d.ts +27 -0
- package/dist/query.js +294 -0
- package/dist/query.js.map +1 -0
- package/dist/reach.d.ts +14 -0
- package/dist/reach.js +140 -0
- package/dist/reach.js.map +1 -0
- package/dist/relation.d.ts +19 -0
- package/dist/relation.js +305 -0
- package/dist/relation.js.map +1 -0
- package/dist/report-sarif.d.ts +14 -0
- package/dist/report-sarif.js +102 -0
- package/dist/report-sarif.js.map +1 -0
- package/dist/site.d.ts +4 -0
- package/dist/site.js +31 -0
- package/dist/site.js.map +1 -1
- package/dist/std.d.ts +1 -0
- package/dist/std.js +73 -0
- package/dist/std.js.map +1 -0
- package/dist/subsume.d.ts +39 -0
- package/dist/subsume.js +526 -0
- package/dist/subsume.js.map +1 -0
- package/dist/trim.d.ts +19 -0
- package/dist/trim.js +155 -0
- package/dist/trim.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/type.d.ts +17 -1
- package/dist/type.js.map +1 -1
- package/dist/unify.d.ts +3 -1
- package/dist/unify.js +287 -18
- package/dist/unify.js.map +1 -1
- package/dist/utility.d.ts +9 -1
- package/dist/utility.js +122 -1
- package/dist/utility.js.map +1 -1
- package/dist/val/AggFuncVal.d.ts +33 -0
- package/dist/val/AggFuncVal.js +202 -0
- package/dist/val/AggFuncVal.js.map +1 -0
- package/dist/val/ArithFuncVal.d.ts +31 -0
- package/dist/val/ArithFuncVal.js +62 -0
- package/dist/val/ArithFuncVal.js.map +1 -0
- package/dist/val/BagVal.d.ts +5 -0
- package/dist/val/BagVal.js +96 -5
- package/dist/val/BagVal.js.map +1 -1
- package/dist/val/CloseFuncVal.js +9 -1
- package/dist/val/CloseFuncVal.js.map +1 -1
- package/dist/val/ConjunctVal.d.ts +1 -1
- package/dist/val/ConjunctVal.js +19 -0
- package/dist/val/ConjunctVal.js.map +1 -1
- package/dist/val/ConstraintVal.d.ts +48 -1
- package/dist/val/ConstraintVal.js +1501 -110
- package/dist/val/ConstraintVal.js.map +1 -1
- package/dist/val/CopyFuncVal.d.ts +1 -2
- package/dist/val/CopyFuncVal.js +7 -0
- package/dist/val/CopyFuncVal.js.map +1 -1
- package/dist/val/Decimal.d.ts +1 -0
- package/dist/val/Decimal.js +13 -0
- package/dist/val/Decimal.js.map +1 -1
- package/dist/val/DeprecateFuncVal.d.ts +11 -0
- package/dist/val/DeprecateFuncVal.js +47 -0
- package/dist/val/DeprecateFuncVal.js.map +1 -0
- package/dist/val/DisjunctVal.js +130 -21
- package/dist/val/DisjunctVal.js.map +1 -1
- package/dist/val/EachFuncVal.d.ts +15 -0
- package/dist/val/EachFuncVal.js +75 -0
- package/dist/val/EachFuncVal.js.map +1 -0
- package/dist/val/ExpectVal.d.ts +1 -0
- package/dist/val/ExpectVal.js +41 -4
- package/dist/val/ExpectVal.js.map +1 -1
- package/dist/val/FeatureVal.js +1 -1
- package/dist/val/FeatureVal.js.map +1 -1
- package/dist/val/FilterFuncVal.d.ts +15 -0
- package/dist/val/FilterFuncVal.js +91 -0
- package/dist/val/FilterFuncVal.js.map +1 -0
- package/dist/val/FuncBaseVal.d.ts +6 -1
- package/dist/val/FuncBaseVal.js +178 -2
- package/dist/val/FuncBaseVal.js.map +1 -1
- package/dist/val/HideFuncVal.js.map +1 -1
- package/dist/val/IdFuncVal.d.ts +13 -0
- package/dist/val/IdFuncVal.js +54 -0
- package/dist/val/IdFuncVal.js.map +1 -0
- package/dist/val/JunctionVal.js +7 -1
- package/dist/val/JunctionVal.js.map +1 -1
- package/dist/val/KeyFuncVal.d.ts +1 -1
- package/dist/val/KeyFuncVal.js +38 -30
- package/dist/val/KeyFuncVal.js.map +1 -1
- package/dist/val/ListVal.js +117 -17
- package/dist/val/ListVal.js.map +1 -1
- package/dist/val/LowerFuncVal.js.map +1 -1
- package/dist/val/MapVal.js +102 -8
- package/dist/val/MapVal.js.map +1 -1
- package/dist/val/MatchFuncVal.d.ts +15 -0
- package/dist/val/MatchFuncVal.js +107 -0
- package/dist/val/MatchFuncVal.js.map +1 -0
- package/dist/val/MoveFuncVal.js.map +1 -1
- package/dist/val/NilVal.js +24 -0
- package/dist/val/NilVal.js.map +1 -1
- package/dist/val/OpBaseVal.d.ts +1 -1
- package/dist/val/OpBaseVal.js +24 -2
- package/dist/val/OpBaseVal.js.map +1 -1
- package/dist/val/OpenFuncVal.js +4 -1
- package/dist/val/OpenFuncVal.js.map +1 -1
- package/dist/val/PackFuncVal.d.ts +15 -0
- package/dist/val/PackFuncVal.js +108 -0
- package/dist/val/PackFuncVal.js.map +1 -0
- package/dist/val/PathFuncVal.js.map +1 -1
- package/dist/val/PlaceVal.d.ts +13 -0
- package/dist/val/PlaceVal.js +131 -0
- package/dist/val/PlaceVal.js.map +1 -0
- package/dist/val/PlusOpVal.js +11 -2
- package/dist/val/PlusOpVal.js.map +1 -1
- package/dist/val/PrefFuncVal.js.map +1 -1
- package/dist/val/PrefVal.d.ts +2 -2
- package/dist/val/PrefVal.js +78 -23
- package/dist/val/PrefVal.js.map +1 -1
- package/dist/val/RefVal.d.ts +1 -1
- package/dist/val/RefVal.js +158 -30
- package/dist/val/RefVal.js.map +1 -1
- package/dist/val/ReferFuncVal.d.ts +36 -0
- package/dist/val/ReferFuncVal.js +303 -0
- package/dist/val/ReferFuncVal.js.map +1 -0
- package/dist/val/ScalarKindVal.d.ts +1 -2
- package/dist/val/ScalarKindVal.js +0 -11
- package/dist/val/ScalarKindVal.js.map +1 -1
- package/dist/val/TopVal.js.map +1 -1
- package/dist/val/TypeFuncVal.js.map +1 -1
- package/dist/val/UpperFuncVal.js.map +1 -1
- package/dist/val/Val.d.ts +9 -2
- package/dist/val/Val.js +150 -4
- package/dist/val/Val.js.map +1 -1
- package/dist/val/VarVal.js.map +1 -1
- package/dist/val/arith.d.ts +6 -0
- package/dist/val/arith.js +170 -0
- package/dist/val/arith.js.map +1 -0
- package/dist/vet.d.ts +45 -0
- package/dist/vet.js +776 -0
- package/dist/vet.js.map +1 -0
- package/dist/walk.d.ts +2 -0
- package/dist/walk.js +91 -0
- package/dist/walk.js.map +1 -0
- package/grammar/aontu.gbnf +130 -0
- package/grammar/aontu.lark +113 -0
- package/package.json +30 -15
- package/skill/SKILL.md +37 -0
- package/skill/error-codes.md +62 -0
- package/skill/examples.md +99 -0
- package/skill/grammar-card.md +57 -0
- package/src/agentsmd.ts +135 -0
- package/src/aontu.ts +192 -4
- package/src/cli.ts +2858 -71
- package/src/ctx.ts +81 -0
- package/src/diff.ts +196 -0
- package/src/err.ts +52 -8
- package/src/graph.ts +135 -0
- package/src/hcanon.ts +169 -0
- package/src/hints.ts +271 -5
- package/src/jsonschema.ts +511 -0
- package/src/lang.ts +779 -37
- package/src/lsp.ts +281 -47
- package/src/mcp-server.ts +187 -0
- package/src/mcp.ts +993 -0
- package/src/mod-tool.ts +679 -0
- package/src/mod.ts +344 -0
- package/src/patch.ts +624 -0
- package/src/provenance.ts +430 -0
- package/src/query.ts +379 -0
- package/src/reach.ts +184 -0
- package/src/relation.ts +395 -0
- package/src/report-sarif.ts +137 -0
- package/src/site.ts +36 -1
- package/src/std.ts +73 -0
- package/src/subsume.ts +690 -0
- package/src/trim.ts +195 -0
- package/src/tsconfig.json +10 -4
- package/src/type.ts +51 -2
- package/src/unify.ts +311 -16
- package/src/utility.ts +139 -1
- package/src/val/AggFuncVal.ts +319 -0
- package/src/val/ArithFuncVal.ts +108 -0
- package/src/val/BagVal.ts +101 -4
- package/src/val/CloseFuncVal.ts +9 -1
- package/src/val/ConjunctVal.ts +20 -0
- package/src/val/ConstraintVal.ts +1699 -116
- package/src/val/CopyFuncVal.ts +7 -1
- package/src/val/Decimal.ts +15 -0
- package/src/val/DeprecateFuncVal.ts +84 -0
- package/src/val/DisjunctVal.ts +139 -28
- package/src/val/EachFuncVal.ts +133 -0
- package/src/val/ExpectVal.ts +43 -6
- package/src/val/FeatureVal.ts +1 -1
- package/src/val/FilterFuncVal.ts +154 -0
- package/src/val/FuncBaseVal.ts +200 -3
- package/src/val/HideFuncVal.ts +0 -2
- package/src/val/IdFuncVal.ts +91 -0
- package/src/val/JunctionVal.ts +7 -1
- package/src/val/KeyFuncVal.ts +39 -35
- package/src/val/ListVal.ts +125 -18
- package/src/val/LowerFuncVal.ts +0 -1
- package/src/val/MapVal.ts +110 -8
- package/src/val/MatchFuncVal.ts +176 -0
- package/src/val/MoveFuncVal.ts +0 -2
- package/src/val/NilVal.ts +25 -0
- package/src/val/OpBaseVal.ts +26 -3
- package/src/val/OpenFuncVal.ts +4 -2
- package/src/val/PackFuncVal.ts +175 -0
- package/src/val/PathFuncVal.ts +0 -1
- package/src/val/PlaceVal.ts +193 -0
- package/src/val/PlusOpVal.ts +11 -2
- package/src/val/PrefFuncVal.ts +0 -1
- package/src/val/PrefVal.ts +79 -36
- package/src/val/RefVal.ts +163 -30
- package/src/val/ReferFuncVal.ts +387 -0
- package/src/val/ScalarKindVal.ts +0 -13
- package/src/val/TopVal.ts +0 -1
- package/src/val/TypeFuncVal.ts +0 -2
- package/src/val/UpperFuncVal.ts +0 -1
- package/src/val/Val.ts +213 -3
- package/src/val/VarVal.ts +0 -1
- package/src/val/arith.ts +316 -0
- package/src/vet.ts +992 -0
- package/src/walk.ts +99 -0
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* Copyright (c) 2025 Richard Rodger, MIT License */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.jsonSchema = jsonSchema;
|
|
5
|
+
// JSON SCHEMA EXPORT (the review's finding I / SUPPORT.md act 2).
|
|
6
|
+
//
|
|
7
|
+
// "JSON Schema's decisive 2026 advantage is not its validator ecosystem
|
|
8
|
+
// -- it is that every major LLM provider's structured-output API
|
|
9
|
+
// natively constrains generation to JSON Schema." Without an export,
|
|
10
|
+
// Aontu cannot ride that path and then apply `vet` as the semantic gate
|
|
11
|
+
// -- the hybrid an enterprise would actually deploy -- and an MCP tool's
|
|
12
|
+
// `inputSchema`, which the protocol REQUIRES to be JSON Schema, cannot
|
|
13
|
+
// be derived from an Aontu tool model at all (use case 09's interop
|
|
14
|
+
// wall).
|
|
15
|
+
//
|
|
16
|
+
// THE MAPPING IS LOSSY, AND SAYS SO PER CONSTRUCT. That is the whole
|
|
17
|
+
// design. Aontu's constraint algebra maps cleanly onto JSON Schema's
|
|
18
|
+
// core -- bounds, patterns, lengths, enums, required and closed -- and
|
|
19
|
+
// then stops: an evaluate-only `must()` is opaque by construction, an
|
|
20
|
+
// exact `0d` leaf has no JSON type that preserves it, a cross-field
|
|
21
|
+
// reference is not a property constraint at all, and `unique(k)` has no
|
|
22
|
+
// JSON Schema spelling. A converter that dropped those silently would
|
|
23
|
+
// hand its caller a schema that ADMITS MORE than the model does, which
|
|
24
|
+
// is the failure mode this whole language exists to refuse. So every
|
|
25
|
+
// loss is reported with its path, its construct and its reason, and
|
|
26
|
+
// `--strict` turns the report into a refusal.
|
|
27
|
+
//
|
|
28
|
+
// It exports the UNIFIED value, not the parse: what a document MEANS is
|
|
29
|
+
// what a consumer should be constrained to, and the meaning is what the
|
|
30
|
+
// fixpoint produced.
|
|
31
|
+
//
|
|
32
|
+
// Draft 2020-12, because that is what the structured-output APIs read.
|
|
33
|
+
const aontu_1 = require("./aontu");
|
|
34
|
+
const err_1 = require("./err");
|
|
35
|
+
const BagVal_1 = require("./val/BagVal");
|
|
36
|
+
const vet_1 = require("./vet");
|
|
37
|
+
const vet_2 = require("./vet");
|
|
38
|
+
const DRAFT = 'https://json-schema.org/draft/2020-12/schema';
|
|
39
|
+
function pathText(path) {
|
|
40
|
+
return '$' + (0 < path.length ? '.' + path.join('.') : '');
|
|
41
|
+
}
|
|
42
|
+
function lose(ctx, path, construct, reason) {
|
|
43
|
+
ctx.lossy.push({ path: pathText(path), construct, reason });
|
|
44
|
+
}
|
|
45
|
+
// The JSON type for a kind marker, by the marker CLASS's name -- the
|
|
46
|
+
// same load-bearing name canon renders (ScalarKindVal). `number` and
|
|
47
|
+
// its four leaves all become JSON's two numeric types; the exactness of
|
|
48
|
+
// `biginteger`/`bigdecimal` has no JSON type at all, which is a loss the
|
|
49
|
+
// caller is told about rather than a silent widening.
|
|
50
|
+
const KIND_TYPE = {
|
|
51
|
+
String: 'string',
|
|
52
|
+
Boolean: 'boolean',
|
|
53
|
+
Integer: 'integer',
|
|
54
|
+
BigInteger: 'integer',
|
|
55
|
+
Float: 'number',
|
|
56
|
+
BigDecimal: 'number',
|
|
57
|
+
Number: 'number',
|
|
58
|
+
};
|
|
59
|
+
// The JSON value of a concrete scalar, for `const`, `enum` and
|
|
60
|
+
// `default`. An exact leaf renders through its own digits rather than
|
|
61
|
+
// through binary64 -- and is reported as a loss where it is emitted,
|
|
62
|
+
// because JSON's number has no exactness to receive it.
|
|
63
|
+
function scalarJson(v) {
|
|
64
|
+
if (v.isBigInteger) {
|
|
65
|
+
return Number(v.peg);
|
|
66
|
+
}
|
|
67
|
+
if (v.isBigDecimal) {
|
|
68
|
+
return Number(v.peg.toString());
|
|
69
|
+
}
|
|
70
|
+
return v.peg;
|
|
71
|
+
}
|
|
72
|
+
function scalarType(v) {
|
|
73
|
+
if (v.isBigDecimal) {
|
|
74
|
+
return 'number';
|
|
75
|
+
}
|
|
76
|
+
if (v.isInteger || v.isBigInteger) {
|
|
77
|
+
return 'integer';
|
|
78
|
+
}
|
|
79
|
+
const t = typeof v.peg;
|
|
80
|
+
return 'number' === t ? 'number' : 'boolean' === t ? 'boolean' : 'string';
|
|
81
|
+
}
|
|
82
|
+
// The constraint residual's atoms, onto JSON Schema's keywords. The
|
|
83
|
+
// three that map exactly (bounds, pattern, count) go across; the two
|
|
84
|
+
// that cannot (`must`, `unique(k)`) are reported.
|
|
85
|
+
function fromConstraint(ctx, path, c) {
|
|
86
|
+
const out = {};
|
|
87
|
+
if (null != c.kind && null != KIND_TYPE[c.kind.name]) {
|
|
88
|
+
out.type = KIND_TYPE[c.kind.name];
|
|
89
|
+
}
|
|
90
|
+
else if ('string' === c.domain) {
|
|
91
|
+
out.type = 'string';
|
|
92
|
+
}
|
|
93
|
+
else if ('number' === c.domain) {
|
|
94
|
+
out.type = 'number';
|
|
95
|
+
}
|
|
96
|
+
// Bounds. An OPEN endpoint is JSON Schema's exclusive form, which is
|
|
97
|
+
// a keyword of its own in 2020-12 rather than the boolean flag draft-4
|
|
98
|
+
// used.
|
|
99
|
+
if (null != c.lo) {
|
|
100
|
+
out[c.lo.open ? 'exclusiveMinimum' : 'minimum'] = scalarJson(c.lo.v);
|
|
101
|
+
}
|
|
102
|
+
if (null != c.hi) {
|
|
103
|
+
out[c.hi.open ? 'exclusiveMaximum' : 'maximum'] = scalarJson(c.hi.v);
|
|
104
|
+
}
|
|
105
|
+
// Exclusions. `neq(1,2)` is "not one of these", which is exactly
|
|
106
|
+
// `not: {enum: [...]}`.
|
|
107
|
+
if (0 < c.neqs.length) {
|
|
108
|
+
out.not = { enum: c.neqs.map(scalarJson) };
|
|
109
|
+
}
|
|
110
|
+
// Patterns. Aontu DEFINES its portable subset (`re`'s abbreviations
|
|
111
|
+
// mean the same in both ports); every member of that subset is also
|
|
112
|
+
// an ECMA-262 regular expression, which is what JSON Schema's
|
|
113
|
+
// `pattern` is read as, so this crosses without translation. More
|
|
114
|
+
// than one pattern needs `allOf`: `pattern` is a single keyword.
|
|
115
|
+
if (1 === c.res.length) {
|
|
116
|
+
out.pattern = c.res[0].src;
|
|
117
|
+
}
|
|
118
|
+
else if (1 < c.res.length) {
|
|
119
|
+
out.allOf = c.res.map((r) => ({ pattern: r.src }));
|
|
120
|
+
}
|
|
121
|
+
// A COUNT is a length or a size depending on what is counted, and the
|
|
122
|
+
// residual does not always know which. Where the domain says string,
|
|
123
|
+
// it is minLength/maxLength; otherwise the container keywords, since
|
|
124
|
+
// a count atom on a container is what `length` overwhelmingly means.
|
|
125
|
+
if (null != c.count) {
|
|
126
|
+
const lo = null == c.count.lo ? undefined : scalarJson(c.count.lo.v);
|
|
127
|
+
const hi = null == c.count.hi ? undefined : scalarJson(c.count.hi.v);
|
|
128
|
+
const str = 'string' === c.domain || 'string' === out.type;
|
|
129
|
+
if (null != lo) {
|
|
130
|
+
out[str ? 'minLength' : 'minItems'] = lo;
|
|
131
|
+
}
|
|
132
|
+
if (null != hi) {
|
|
133
|
+
out[str ? 'maxLength' : 'maxItems'] = hi;
|
|
134
|
+
}
|
|
135
|
+
if (!str && null == c.domain) {
|
|
136
|
+
lose(ctx, path, 'length', 'a count with no domain is exported as minItems/maxItems; ' +
|
|
137
|
+
'JSON Schema has no keyword that counts a string OR a container');
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (c.uniq) {
|
|
141
|
+
out.uniqueItems = true;
|
|
142
|
+
}
|
|
143
|
+
for (const key of c.uniqBy) {
|
|
144
|
+
lose(ctx, path, 'unique(' + key + ')', 'JSON Schema has no uniqueness-by-property keyword; uniqueItems ' +
|
|
145
|
+
'compares whole items, so this constraint is DROPPED and the ' +
|
|
146
|
+
'schema admits records sharing a `' + key + '`');
|
|
147
|
+
}
|
|
148
|
+
if (0 < c.musts.length) {
|
|
149
|
+
lose(ctx, path, 'must', 'an evaluate-only check is opaque by construction -- it carries ' +
|
|
150
|
+
'the author\'s own message and the algebra never reasons about ' +
|
|
151
|
+
'it -- so it is DROPPED and the schema admits values `vet` refuses');
|
|
152
|
+
}
|
|
153
|
+
return out;
|
|
154
|
+
}
|
|
155
|
+
// The exporter proper. Every arm answers a schema; the ones that cannot
|
|
156
|
+
// answer honestly report a loss and fall back to `{}`, which admits
|
|
157
|
+
// anything -- the safe direction for a document that will be checked
|
|
158
|
+
// again by `vet`, and the direction the loss report exists to make
|
|
159
|
+
// visible.
|
|
160
|
+
// NO DEFENSIVE GUARD ON `v`. Every caller walks a bag's own children
|
|
161
|
+
// and a bag holds Vals, so a non-Val here is not a degenerate input,
|
|
162
|
+
// it is a bug in this file -- and an unreachable `if` is a branch arm
|
|
163
|
+
// the ADR-002 gate counts and no `node:coverage ignore` suppresses
|
|
164
|
+
// (the marker drops LINES, not branches). Go's twin keeps its `nil ==
|
|
165
|
+
// v` arm because a missing map key there yields a typed nil rather
|
|
166
|
+
// than an absent property.
|
|
167
|
+
function fromVal(ctx, path, v) {
|
|
168
|
+
// A preference is its inner value plus a DEFAULT. JSON Schema's
|
|
169
|
+
// `default` is annotation rather than constraint -- it does not
|
|
170
|
+
// validate -- which is exactly what a preference is when something
|
|
171
|
+
// else supplies the value.
|
|
172
|
+
if (true === v.isPref) {
|
|
173
|
+
const inner = fromVal(ctx, path, v.peg);
|
|
174
|
+
const gen = generated(v.peg);
|
|
175
|
+
return undefined === gen ? inner : { ...inner, default: gen };
|
|
176
|
+
}
|
|
177
|
+
if (true === v.isDisjunct && Array.isArray(v.peg)) {
|
|
178
|
+
return fromDisjunct(ctx, path, v);
|
|
179
|
+
}
|
|
180
|
+
if (true === v.isConstraint) {
|
|
181
|
+
return fromConstraint(ctx, path, v);
|
|
182
|
+
}
|
|
183
|
+
// A SIZING RESIDUE is a container and its own sizing atom, kept
|
|
184
|
+
// together because more members could still change the atom's reading
|
|
185
|
+
// (use-cases/BUGS.md §16). Both halves are exportable and both must
|
|
186
|
+
// be: the container gives the shape, the atom gives `uniqueItems` and
|
|
187
|
+
// the length keywords, and a walk that saw only "a conjunct" would
|
|
188
|
+
// report the whole field as unresolved and admit anything.
|
|
189
|
+
const residue = (0, BagVal_1.sizingResidue)(v);
|
|
190
|
+
if (undefined !== residue) {
|
|
191
|
+
return {
|
|
192
|
+
...fromVal(ctx, path, residue.bag),
|
|
193
|
+
...fromConstraint(ctx, path, residue.con),
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
if (true === v.isMap) {
|
|
197
|
+
return fromMap(ctx, path, v);
|
|
198
|
+
}
|
|
199
|
+
if (true === v.isList) {
|
|
200
|
+
return fromList(ctx, path, v);
|
|
201
|
+
}
|
|
202
|
+
if (true === v.isScalarKind) {
|
|
203
|
+
const t = KIND_TYPE[v.peg?.name];
|
|
204
|
+
if ('BigInteger' === v.peg?.name || 'BigDecimal' === v.peg?.name) {
|
|
205
|
+
lose(ctx, path, v.peg.name.toLowerCase(), 'JSON has one number type and it is binary64, so the EXACTNESS ' +
|
|
206
|
+
'this leaf exists for cannot be carried; the schema says ' +
|
|
207
|
+
'"' + t + '" and a consumer may round');
|
|
208
|
+
}
|
|
209
|
+
// KIND_TYPE is TOTAL over the kinds a marker can carry, so there is
|
|
210
|
+
// no miss to fall back from -- and a fallback that cannot be taken
|
|
211
|
+
// is a branch arm the coverage gate counts. Go's twin keeps its
|
|
212
|
+
// empty-map arm, which its own ignore mechanism can carry.
|
|
213
|
+
return { type: t };
|
|
214
|
+
}
|
|
215
|
+
if (true === v.isNull) {
|
|
216
|
+
return { type: 'null' };
|
|
217
|
+
}
|
|
218
|
+
if (true === v.isTop) {
|
|
219
|
+
return {};
|
|
220
|
+
}
|
|
221
|
+
if (true === v.isScalar) {
|
|
222
|
+
if (v.isBigInteger || v.isBigDecimal) {
|
|
223
|
+
lose(ctx, path, 'exact literal', 'JSON has one number type and it is binary64, so this exact ' +
|
|
224
|
+
'value is emitted as the nearest JSON number');
|
|
225
|
+
}
|
|
226
|
+
return { const: scalarJson(v), type: scalarType(v) };
|
|
227
|
+
}
|
|
228
|
+
// Everything else is residue: a reference that did not resolve, a
|
|
229
|
+
// function or operator still waiting, a nil. None of them is a
|
|
230
|
+
// property constraint, and guessing one would be inventing a promise.
|
|
231
|
+
lose(ctx, path, residueName(v), 'this is not a value yet, so there is nothing to constrain a ' +
|
|
232
|
+
'consumer to; the schema admits anything here');
|
|
233
|
+
return {};
|
|
234
|
+
}
|
|
235
|
+
function residueName(v) {
|
|
236
|
+
return true === v.isNil ? 'nil' :
|
|
237
|
+
true === v.isRef ? 'reference' :
|
|
238
|
+
true === v.isFunc ? v.funcname() :
|
|
239
|
+
'unresolved';
|
|
240
|
+
}
|
|
241
|
+
// The generated JSON of a value, or undefined where it does not
|
|
242
|
+
// generate. Used for `default` and for `enum` members: both are VALUES
|
|
243
|
+
// in the schema, so a member that is itself a shape has none to give.
|
|
244
|
+
function generated(v) {
|
|
245
|
+
// No try/catch: a collecting context RECORDS a failed generation on
|
|
246
|
+
// itself instead of throwing, which is the whole point of the mode.
|
|
247
|
+
// Neither `vet` nor the Go twin (`schemaGenerated`) wraps this
|
|
248
|
+
// either, and an untakeable catch is a branch arm the gate counts.
|
|
249
|
+
const a0 = new aontu_1.Aontu();
|
|
250
|
+
const ctx = a0.ctx({ collect: true });
|
|
251
|
+
const out = v.gen(ctx);
|
|
252
|
+
return 0 === ctx.err.length ? out : undefined;
|
|
253
|
+
}
|
|
254
|
+
// A disjunction of CONCRETE members is an enum -- the shape a
|
|
255
|
+
// structured-output API constrains best. Anything else is `anyOf`. A
|
|
256
|
+
// preferred member contributes the `default` either way, which is how
|
|
257
|
+
// `*"a"|"b"|"c"` reaches a provider as a defaulted enum.
|
|
258
|
+
function fromDisjunct(ctx, path, v) {
|
|
259
|
+
const members = v.peg;
|
|
260
|
+
let def = undefined;
|
|
261
|
+
for (const m of members) {
|
|
262
|
+
if (true === m?.isPref && undefined === def) {
|
|
263
|
+
def = generated(m.peg);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
const bare = members.map((m) => true === m?.isPref ? m.peg : m);
|
|
267
|
+
const consts = bare.map((m) => true === m?.isScalar && true !== m?.isNil ? scalarJson(m) : undefined);
|
|
268
|
+
const out = consts.every((c) => undefined !== c) ?
|
|
269
|
+
{ enum: consts } :
|
|
270
|
+
{ anyOf: bare.map((m) => fromVal(ctx, path, m)) };
|
|
271
|
+
return undefined === def ? out : { ...out, default: def };
|
|
272
|
+
}
|
|
273
|
+
function fromMap(ctx, path, v) {
|
|
274
|
+
const props = {};
|
|
275
|
+
const required = [];
|
|
276
|
+
const optional = v.optionalKeys;
|
|
277
|
+
let spread = undefined;
|
|
278
|
+
for (const key of Object.keys(v.peg).sort()) {
|
|
279
|
+
const child = v.peg[key];
|
|
280
|
+
// A hidden child does not generate, so it is not part of the value
|
|
281
|
+
// a consumer produces -- and a schema that demanded it would refuse
|
|
282
|
+
// every correct document.
|
|
283
|
+
if (true === child?.mark?.hide) {
|
|
284
|
+
lose(ctx, [...path, key], 'hide', 'a hidden entry is not generated, so it is omitted from the ' +
|
|
285
|
+
'schema; a consumer is neither asked for it nor allowed to know ' +
|
|
286
|
+
'about it');
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
289
|
+
props[key] = fromVal(ctx, [...path, key], child);
|
|
290
|
+
if (!optional.includes(key)) {
|
|
291
|
+
required.push(key);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
const spr = v.spread?.cj;
|
|
295
|
+
if (null != spr) {
|
|
296
|
+
spread = fromVal(ctx, [...path, '&'], spr);
|
|
297
|
+
}
|
|
298
|
+
const out = { type: 'object', properties: props };
|
|
299
|
+
if (0 < required.length) {
|
|
300
|
+
out.required = required;
|
|
301
|
+
}
|
|
302
|
+
// CLOSEDNESS IS THE ONE THING JSON SCHEMA SAYS EXACTLY AS AONTU DOES.
|
|
303
|
+
// A closed map is `additionalProperties: false`; an open one leaves
|
|
304
|
+
// the keyword off, since JSON Schema's default is already open.
|
|
305
|
+
if (true === v.closed) {
|
|
306
|
+
out.additionalProperties = false;
|
|
307
|
+
if (null != spread) {
|
|
308
|
+
lose(ctx, path, '&:', 'a spread on a CLOSED map constrains keys that cannot exist, ' +
|
|
309
|
+
'so additionalProperties:false stands alone and the template ' +
|
|
310
|
+
'is dropped');
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
else if (null != spread) {
|
|
314
|
+
// A spread IS additionalProperties-with-a-schema: every key the
|
|
315
|
+
// author did not name must still satisfy the template.
|
|
316
|
+
out.additionalProperties = spread;
|
|
317
|
+
}
|
|
318
|
+
return out;
|
|
319
|
+
}
|
|
320
|
+
function fromList(ctx, path, v) {
|
|
321
|
+
const els = v.peg;
|
|
322
|
+
const spr = v.spread?.cj;
|
|
323
|
+
// A list with a spread template is homogeneous: every element, named
|
|
324
|
+
// or not, satisfies it. That is `items`.
|
|
325
|
+
if (null != spr) {
|
|
326
|
+
const out = {
|
|
327
|
+
type: 'array',
|
|
328
|
+
items: fromVal(ctx, [...path, '&'], spr),
|
|
329
|
+
};
|
|
330
|
+
if (0 < els.length) {
|
|
331
|
+
out.minItems = els.length;
|
|
332
|
+
}
|
|
333
|
+
return out;
|
|
334
|
+
}
|
|
335
|
+
// A written list literal is a TUPLE: position by position, and no
|
|
336
|
+
// more. 2020-12 spells that `prefixItems` plus `items: false`.
|
|
337
|
+
return {
|
|
338
|
+
type: 'array',
|
|
339
|
+
prefixItems: els.map((el, i) => fromVal(ctx, [...path, String(i)], el)),
|
|
340
|
+
items: false,
|
|
341
|
+
minItems: els.length,
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
// The verb. Evaluate, anchor, walk, report.
|
|
345
|
+
function jsonSchema(src, options) {
|
|
346
|
+
const opts = options ?? {};
|
|
347
|
+
const aontu = new aontu_1.Aontu(null == opts.trust ? {} : { trust: opts.trust });
|
|
348
|
+
// COLLECT MODE, so a syntax error arrives on the context rather than
|
|
349
|
+
// as a throw -- the same failure Go's `parseEntry` hands back as an
|
|
350
|
+
// error, reached by the branch below. No try/catch here for the same
|
|
351
|
+
// reason `vet` has none: the mode exists so the failure can be
|
|
352
|
+
// reported rather than escape, and a catch that cannot be entered is
|
|
353
|
+
// a branch arm the ADR-002 gate counts.
|
|
354
|
+
const actx = aontu.ctx({ collect: true });
|
|
355
|
+
const root = aontu.unify(src, { path: opts.path, collect: true }, actx);
|
|
356
|
+
// A nil root always arrives with its reason collected beside it, which
|
|
357
|
+
// is failureFinding's stated precondition (ts/src/vet.ts: "ctx.err is
|
|
358
|
+
// never empty at a call site").
|
|
359
|
+
if (0 < actx.err.length || true === root?.isNil) {
|
|
360
|
+
return {
|
|
361
|
+
verdict: 'error', schema: {}, lossy: [],
|
|
362
|
+
errors: [(0, vet_1.failureFinding)(actx, opts.path, root)],
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
let node = root;
|
|
366
|
+
const anchor = [];
|
|
367
|
+
if (null != opts.at && '' !== opts.at) {
|
|
368
|
+
const found = (0, vet_2.anchorAt)(root, opts.at);
|
|
369
|
+
if (null == found) {
|
|
370
|
+
// The anchor names nothing. Reported as a `no_path` nil through
|
|
371
|
+
// the same finding shape every other refusal here uses, so a
|
|
372
|
+
// caller reads one error format rather than two.
|
|
373
|
+
const nil = (0, err_1.makeNilErr)(actx, 'no_path', root, undefined, 'at');
|
|
374
|
+
actx.err.push(nil);
|
|
375
|
+
return {
|
|
376
|
+
verdict: 'error', schema: {}, lossy: [],
|
|
377
|
+
errors: [(0, vet_1.failureFinding)(actx, opts.path, root)],
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
node = found;
|
|
381
|
+
anchor.push(...opts.at.replace(/^\$/, '').split('.').filter((p) => '' !== p));
|
|
382
|
+
}
|
|
383
|
+
const ctx = { lossy: [] };
|
|
384
|
+
const body = fromVal(ctx, anchor, node);
|
|
385
|
+
return {
|
|
386
|
+
verdict: 0 < ctx.lossy.length ? 'lossy' : 'ok',
|
|
387
|
+
schema: { $schema: DRAFT, ...body },
|
|
388
|
+
lossy: ctx.lossy,
|
|
389
|
+
};
|
|
390
|
+
}
|
|
391
|
+
//# sourceMappingURL=jsonschema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonschema.js","sourceRoot":"","sources":["../src/jsonschema.ts"],"names":[],"mappings":"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"}
|