@elaraai/east 1.0.70 → 1.0.71
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/src/location.d.ts +12 -0
- package/dist/src/location.d.ts.map +1 -1
- package/dist/src/location.js +15 -3
- package/dist/src/location.js.map +1 -1
- package/dist/src/serialization/index.d.ts +2 -0
- package/dist/src/serialization/index.d.ts.map +1 -1
- package/dist/src/serialization/index.js +2 -0
- package/dist/src/serialization/index.js.map +1 -1
- package/dist/src/serialization/json.d.ts.map +1 -1
- package/dist/src/serialization/json.js +31 -1
- package/dist/src/serialization/json.js.map +1 -1
- package/dist/src/serialization/json_schema.d.ts +76 -0
- package/dist/src/serialization/json_schema.d.ts.map +1 -0
- package/dist/src/serialization/json_schema.js +290 -0
- package/dist/src/serialization/json_schema.js.map +1 -0
- package/dist/src/serialization/json_schema.spec.d.ts +2 -0
- package/dist/src/serialization/json_schema.spec.d.ts.map +1 -0
- package/dist/src/serialization/json_schema.spec.js +327 -0
- package/dist/src/serialization/json_schema.spec.js.map +1 -0
- package/dist/src/serialization/json_schema_to_type.d.ts +74 -0
- package/dist/src/serialization/json_schema_to_type.d.ts.map +1 -0
- package/dist/src/serialization/json_schema_to_type.js +500 -0
- package/dist/src/serialization/json_schema_to_type.js.map +1 -0
- package/dist/src/serialization/json_schema_to_type.spec.d.ts +2 -0
- package/dist/src/serialization/json_schema_to_type.spec.d.ts.map +1 -0
- package/dist/src/serialization/json_schema_to_type.spec.js +372 -0
- package/dist/src/serialization/json_schema_to_type.spec.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json_schema.spec.js","sourceRoot":"","sources":["../../../src/serialization/json_schema.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
import { type EastType } from "../types.js";
|
|
6
|
+
import type { JsonSchema } from "./json_schema.js";
|
|
7
|
+
/**
|
|
8
|
+
* Raised when a schema cannot be expressed as an East type.
|
|
9
|
+
*
|
|
10
|
+
* @remarks
|
|
11
|
+
* Carries the RFC 6901 pointer to the offending node, because a contract
|
|
12
|
+
* document is large and "unsupported keyword" without a location is not
|
|
13
|
+
* actionable.
|
|
14
|
+
*/
|
|
15
|
+
export declare class JsonSchemaUnsupportedError extends Error {
|
|
16
|
+
/** RFC 6901 pointer to the schema node that could not be converted. */
|
|
17
|
+
readonly pointer: string;
|
|
18
|
+
constructor(message: string, pointer: string);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Builds an East type from a JSON Schema document.
|
|
22
|
+
*
|
|
23
|
+
* @param schema - The schema document
|
|
24
|
+
* @returns The East type the schema describes
|
|
25
|
+
* @throws {JsonSchemaUnsupportedError} When the schema uses a keyword East's
|
|
26
|
+
* type system cannot express, naming the keyword and its RFC 6901 pointer
|
|
27
|
+
*
|
|
28
|
+
* @remarks
|
|
29
|
+
* This is the one place the full JSON Schema vocabulary is confronted, and it
|
|
30
|
+
* runs at build time, so nothing it rejects can reach a runtime.
|
|
31
|
+
*
|
|
32
|
+
* A document emitted by {@link jsonSchemaFor} carries `x-east-type`
|
|
33
|
+
* annotations and inverts exactly — JSON Schema alone cannot tell `DateTime`
|
|
34
|
+
* from a `String` with `format: date-time`, `Set` from `Array`, or `Dict`
|
|
35
|
+
* from an array of two-property objects. A foreign document without those
|
|
36
|
+
* annotations still converts, under the structural mapping below, but does
|
|
37
|
+
* not promise to round-trip:
|
|
38
|
+
*
|
|
39
|
+
* | schema | East type |
|
|
40
|
+
* |---|---|
|
|
41
|
+
* | `{"type":"null"}`, or OpenAPI 3.0's `nullable` + `enum: [null]` | `Null` |
|
|
42
|
+
* | `{"type":"boolean"}` | `Boolean` |
|
|
43
|
+
* | `{"type":"string"}` | `String` |
|
|
44
|
+
* | `{"type":"number"}`, `{"type":"integer"}` | `Float`, `Integer` |
|
|
45
|
+
* | `{"type":"array","items":X}` | `Array<X>` |
|
|
46
|
+
* | a closed object with `required` covering every property | `Struct` |
|
|
47
|
+
* | `oneOf` of objects tagged by a constant `type` | `Variant` |
|
|
48
|
+
*
|
|
49
|
+
* OpenAPI 3.0's `nullable: true` beside a type is refused rather than dropped:
|
|
50
|
+
* East JSON has no bare null for any type but `Null`, so the only reading
|
|
51
|
+
* would silently admit a schema whose nulls the reader then rejects — model
|
|
52
|
+
* the value as an Option instead.
|
|
53
|
+
*
|
|
54
|
+
* Definitions are resolved through `$defs` or `definitions`, whichever the
|
|
55
|
+
* document uses. Cycles among definitions become `RecursiveType`s, one per
|
|
56
|
+
* cycle group: `Node → NodeList → Node`, the ordinary way a recursive schema is
|
|
57
|
+
* written, is the single type `RecursiveType(self => Struct({ children:
|
|
58
|
+
* Array(self) }))` with the alias inlined. A group whose cycles do not all pass
|
|
59
|
+
* through one definition would need two binders, which East does not support,
|
|
60
|
+
* and is refused naming the group.
|
|
61
|
+
*
|
|
62
|
+
* A `$schema` is honoured when present, and a release this cannot read — a
|
|
63
|
+
* draft-04 document, say — is refused by name instead of being structurally
|
|
64
|
+
* guessed at. It is not required: an OpenAPI 3.0 schema object is a fragment of
|
|
65
|
+
* a larger document and carries none, so demanding one would reject what
|
|
66
|
+
* `jsonSchemaFor(T, { draft: "openapi-3.0" })` emits.
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```ts
|
|
70
|
+
* const T = typeFromJsonSchema(JSON.parse(readFileSync("contract.schema.json", "utf-8")));
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export declare function typeFromJsonSchema(schema: JsonSchema): EastType;
|
|
74
|
+
//# sourceMappingURL=json_schema_to_type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json_schema_to_type.d.ts","sourceRoot":"","sources":["../../../src/serialization/json_schema_to_type.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAiBL,KAAK,QAAQ,EAEd,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,UAAU,EAAoC,MAAM,kBAAkB,CAAC;AAErF;;;;;;;GAOG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEb,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAK7C;AA2ID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,CAuB/D"}
|
|
@@ -0,0 +1,500 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
|
+
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
|
+
*/
|
|
5
|
+
import { ArrayType, BlobType, BooleanType, DateTimeType, DictType, FloatType, IntegerType, MatrixType, NullType, RecursiveType, RefType, SetType, StringType, StructType, VariantType, VectorType, } from "../types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Raised when a schema cannot be expressed as an East type.
|
|
8
|
+
*
|
|
9
|
+
* @remarks
|
|
10
|
+
* Carries the RFC 6901 pointer to the offending node, because a contract
|
|
11
|
+
* document is large and "unsupported keyword" without a location is not
|
|
12
|
+
* actionable.
|
|
13
|
+
*/
|
|
14
|
+
export class JsonSchemaUnsupportedError extends Error {
|
|
15
|
+
/** RFC 6901 pointer to the schema node that could not be converted. */
|
|
16
|
+
pointer;
|
|
17
|
+
constructor(message, pointer) {
|
|
18
|
+
super(pointer === "" ? message : `${message} (at ${pointer})`);
|
|
19
|
+
this.name = "JsonSchemaUnsupportedError";
|
|
20
|
+
this.pointer = pointer;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/** Keywords East's type system has no counterpart for, and why. */
|
|
24
|
+
const UNSUPPORTED = {
|
|
25
|
+
allOf: "East types have no intersection; rewrite it as one object schema",
|
|
26
|
+
not: "East types have no negation",
|
|
27
|
+
if: "East types have no conditionals",
|
|
28
|
+
then: "East types have no conditionals",
|
|
29
|
+
else: "East types have no conditionals",
|
|
30
|
+
anyOf: "East variants are discriminated; use oneOf with a constant tag per case",
|
|
31
|
+
patternProperties: "East has no pattern-keyed record; use a Dict encoding",
|
|
32
|
+
dependentSchemas: "East types have no conditionals",
|
|
33
|
+
dependentRequired: "East structs require every field",
|
|
34
|
+
propertyNames: "East has no constraint on property names",
|
|
35
|
+
unevaluatedProperties: "East structs are closed; use additionalProperties: false",
|
|
36
|
+
unevaluatedItems: "East arrays are homogeneous",
|
|
37
|
+
prefixItems: "East has no tuple type; use a Struct",
|
|
38
|
+
additionalItems: "East has no tuple type; use a Struct",
|
|
39
|
+
contains: "East has no containment constraint",
|
|
40
|
+
};
|
|
41
|
+
/** RFC 6901 pointer from a path of already-escaped-free segments. */
|
|
42
|
+
function pointerOf(path) {
|
|
43
|
+
if (path.length === 0)
|
|
44
|
+
return "";
|
|
45
|
+
return "/" + path.map(s => s.replace(/~/g, "~0").replace(/\//g, "~1")).join("/");
|
|
46
|
+
}
|
|
47
|
+
function fail(message, path) {
|
|
48
|
+
throw new JsonSchemaUnsupportedError(message, pointerOf(path));
|
|
49
|
+
}
|
|
50
|
+
function asSchema(v, path, what) {
|
|
51
|
+
if (v === null || typeof v !== "object" || Array.isArray(v)) {
|
|
52
|
+
fail(`expected ${what} to be a schema object`, path);
|
|
53
|
+
}
|
|
54
|
+
return v;
|
|
55
|
+
}
|
|
56
|
+
/** Whether a document object carries `key` itself — `in` would also find `Object.prototype`'s. */
|
|
57
|
+
function has(node, key) {
|
|
58
|
+
return Object.prototype.hasOwnProperty.call(node, key);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* A schema scalar as a message spells it — JSON's `null`, `true` and `false`,
|
|
62
|
+
* anything else as itself — so the two language twins word a refusal the same.
|
|
63
|
+
*/
|
|
64
|
+
function spell(value) {
|
|
65
|
+
if (value === null)
|
|
66
|
+
return "null";
|
|
67
|
+
if (value === true)
|
|
68
|
+
return "true";
|
|
69
|
+
if (value === false)
|
|
70
|
+
return "false";
|
|
71
|
+
return String(value);
|
|
72
|
+
}
|
|
73
|
+
/** The `$schema` values this converter recognises, normalised, and the release each names. */
|
|
74
|
+
const SCHEMA_URI_DRAFTS = {
|
|
75
|
+
"https://json-schema.org/draft/2020-12/schema": "2020-12",
|
|
76
|
+
"https://json-schema.org/draft-07/schema": "draft-07",
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* The release a document declares.
|
|
80
|
+
*
|
|
81
|
+
* @throws {JsonSchemaUnsupportedError} On a release this converter cannot read
|
|
82
|
+
*
|
|
83
|
+
* @remarks
|
|
84
|
+
* A document that declares a release is taken at its word, so one written for
|
|
85
|
+
* draft-04 (or a release later than these) is refused by name rather than
|
|
86
|
+
* structurally guessed at and quietly mis-read. The scheme and a trailing `#`
|
|
87
|
+
* carry no meaning in a `$schema` value, so both are normalised away.
|
|
88
|
+
*/
|
|
89
|
+
function draftOfSchemaUri(uri, path) {
|
|
90
|
+
const key = uri.replace(/#$/, "").replace(/^http:/, "https:");
|
|
91
|
+
const draft = SCHEMA_URI_DRAFTS[key];
|
|
92
|
+
if (draft === undefined) {
|
|
93
|
+
fail(`typeFromJsonSchema cannot read the JSON Schema release "${uri}" — it reads 2020-12, ` +
|
|
94
|
+
"draft-07, and OpenAPI 3.0 schema objects, which carry no $schema of their own", path);
|
|
95
|
+
}
|
|
96
|
+
return draft;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Where a document keeps its definitions.
|
|
100
|
+
*
|
|
101
|
+
* @remarks
|
|
102
|
+
* The declared release says which keyword to expect, but a document that
|
|
103
|
+
* declares one and uses the other still resolves: only the prefix its `$ref`s
|
|
104
|
+
* are written against actually matters, and that is read back from whichever
|
|
105
|
+
* keyword is present.
|
|
106
|
+
*/
|
|
107
|
+
function definitionsOf(root, draft) {
|
|
108
|
+
const asDefs = (v) => v !== undefined && typeof v === "object" && v !== null && !Array.isArray(v)
|
|
109
|
+
? v
|
|
110
|
+
: null;
|
|
111
|
+
const order = draft === "draft-07" ? ["definitions", "$defs"] : ["$defs", "definitions"];
|
|
112
|
+
for (const keyword of order) {
|
|
113
|
+
const defs = asDefs(root[keyword]);
|
|
114
|
+
if (defs !== null)
|
|
115
|
+
return { defs, keyword };
|
|
116
|
+
}
|
|
117
|
+
return { defs: {}, keyword: draft === "draft-07" ? "definitions" : "$defs" };
|
|
118
|
+
}
|
|
119
|
+
/** The definition name a local `$ref` points at, or null when it is not local. */
|
|
120
|
+
function refTarget(ref, keyword) {
|
|
121
|
+
const prefix = `#/${keyword}/`;
|
|
122
|
+
if (!ref.startsWith(prefix))
|
|
123
|
+
return null;
|
|
124
|
+
return ref.slice(prefix.length).replace(/~1/g, "/").replace(/~0/g, "~");
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Builds an East type from a JSON Schema document.
|
|
128
|
+
*
|
|
129
|
+
* @param schema - The schema document
|
|
130
|
+
* @returns The East type the schema describes
|
|
131
|
+
* @throws {JsonSchemaUnsupportedError} When the schema uses a keyword East's
|
|
132
|
+
* type system cannot express, naming the keyword and its RFC 6901 pointer
|
|
133
|
+
*
|
|
134
|
+
* @remarks
|
|
135
|
+
* This is the one place the full JSON Schema vocabulary is confronted, and it
|
|
136
|
+
* runs at build time, so nothing it rejects can reach a runtime.
|
|
137
|
+
*
|
|
138
|
+
* A document emitted by {@link jsonSchemaFor} carries `x-east-type`
|
|
139
|
+
* annotations and inverts exactly — JSON Schema alone cannot tell `DateTime`
|
|
140
|
+
* from a `String` with `format: date-time`, `Set` from `Array`, or `Dict`
|
|
141
|
+
* from an array of two-property objects. A foreign document without those
|
|
142
|
+
* annotations still converts, under the structural mapping below, but does
|
|
143
|
+
* not promise to round-trip:
|
|
144
|
+
*
|
|
145
|
+
* | schema | East type |
|
|
146
|
+
* |---|---|
|
|
147
|
+
* | `{"type":"null"}`, or OpenAPI 3.0's `nullable` + `enum: [null]` | `Null` |
|
|
148
|
+
* | `{"type":"boolean"}` | `Boolean` |
|
|
149
|
+
* | `{"type":"string"}` | `String` |
|
|
150
|
+
* | `{"type":"number"}`, `{"type":"integer"}` | `Float`, `Integer` |
|
|
151
|
+
* | `{"type":"array","items":X}` | `Array<X>` |
|
|
152
|
+
* | a closed object with `required` covering every property | `Struct` |
|
|
153
|
+
* | `oneOf` of objects tagged by a constant `type` | `Variant` |
|
|
154
|
+
*
|
|
155
|
+
* OpenAPI 3.0's `nullable: true` beside a type is refused rather than dropped:
|
|
156
|
+
* East JSON has no bare null for any type but `Null`, so the only reading
|
|
157
|
+
* would silently admit a schema whose nulls the reader then rejects — model
|
|
158
|
+
* the value as an Option instead.
|
|
159
|
+
*
|
|
160
|
+
* Definitions are resolved through `$defs` or `definitions`, whichever the
|
|
161
|
+
* document uses. Cycles among definitions become `RecursiveType`s, one per
|
|
162
|
+
* cycle group: `Node → NodeList → Node`, the ordinary way a recursive schema is
|
|
163
|
+
* written, is the single type `RecursiveType(self => Struct({ children:
|
|
164
|
+
* Array(self) }))` with the alias inlined. A group whose cycles do not all pass
|
|
165
|
+
* through one definition would need two binders, which East does not support,
|
|
166
|
+
* and is refused naming the group.
|
|
167
|
+
*
|
|
168
|
+
* A `$schema` is honoured when present, and a release this cannot read — a
|
|
169
|
+
* draft-04 document, say — is refused by name instead of being structurally
|
|
170
|
+
* guessed at. It is not required: an OpenAPI 3.0 schema object is a fragment of
|
|
171
|
+
* a larger document and carries none, so demanding one would reject what
|
|
172
|
+
* `jsonSchemaFor(T, { draft: "openapi-3.0" })` emits.
|
|
173
|
+
*
|
|
174
|
+
* @example
|
|
175
|
+
* ```ts
|
|
176
|
+
* const T = typeFromJsonSchema(JSON.parse(readFileSync("contract.schema.json", "utf-8")));
|
|
177
|
+
* ```
|
|
178
|
+
*/
|
|
179
|
+
export function typeFromJsonSchema(schema) {
|
|
180
|
+
// A declared release is honoured; its absence is not an error, because an
|
|
181
|
+
// OpenAPI 3.0 schema object is a fragment of a larger document and carries no
|
|
182
|
+
// $schema of its own — refusing that would refuse what jsonSchemaFor writes
|
|
183
|
+
// for `draft: "openapi-3.0"`. An explicit null is present, not absent.
|
|
184
|
+
let draft;
|
|
185
|
+
if (has(schema, "$schema")) {
|
|
186
|
+
const declared = schema["$schema"];
|
|
187
|
+
if (typeof declared !== "string") {
|
|
188
|
+
fail("typeFromJsonSchema expected \"$schema\" to be a string", ["$schema"]);
|
|
189
|
+
}
|
|
190
|
+
draft = draftOfSchemaUri(declared, ["$schema"]);
|
|
191
|
+
}
|
|
192
|
+
const { defs, keyword } = definitionsOf(schema, draft);
|
|
193
|
+
const ctx = {
|
|
194
|
+
defsKeyword: keyword,
|
|
195
|
+
defs,
|
|
196
|
+
groups: cycleGroups(defs, keyword),
|
|
197
|
+
building: new Map(),
|
|
198
|
+
done: new Map(),
|
|
199
|
+
};
|
|
200
|
+
return build(schema, ctx, []);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* The cyclic groups among the definitions, each with the one definition its
|
|
204
|
+
* cycles all pass through.
|
|
205
|
+
*
|
|
206
|
+
* @throws {JsonSchemaUnsupportedError} On a group whose cycles do not all
|
|
207
|
+
* pass through one definition — East binds one `RecursiveType` per group, so
|
|
208
|
+
* such a group would need two
|
|
209
|
+
*
|
|
210
|
+
* @remarks
|
|
211
|
+
* East's rule is one recursive binder per strongly connected group of
|
|
212
|
+
* definitions, not one definition per cycle. The binder is the first
|
|
213
|
+
* definition, in document order, whose removal leaves the rest of its group
|
|
214
|
+
* acyclic; document order alone decides it, so the two language twins choose
|
|
215
|
+
* the same one. Reachability is a closure, never a walk that stops at its
|
|
216
|
+
* first hit, so nothing here depends on the order `$ref`s appear in.
|
|
217
|
+
*/
|
|
218
|
+
function cycleGroups(defs, keyword) {
|
|
219
|
+
const names = Object.keys(defs);
|
|
220
|
+
const edges = new Map();
|
|
221
|
+
for (const name of names) {
|
|
222
|
+
const seen = new Set();
|
|
223
|
+
collectRefs(defs[name], keyword, seen);
|
|
224
|
+
edges.set(name, [...seen].filter(target => has(defs, target)));
|
|
225
|
+
}
|
|
226
|
+
/** Every definition reachable from `from` through definitions `allowed` admits. */
|
|
227
|
+
const reach = (from, allowed) => {
|
|
228
|
+
const out = new Set();
|
|
229
|
+
const stack = [from];
|
|
230
|
+
while (stack.length > 0) {
|
|
231
|
+
const at = stack.pop();
|
|
232
|
+
for (const next of edges.get(at) ?? []) {
|
|
233
|
+
if (!allowed(next) || out.has(next))
|
|
234
|
+
continue;
|
|
235
|
+
out.add(next);
|
|
236
|
+
stack.push(next);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return out;
|
|
240
|
+
};
|
|
241
|
+
const closure = new Map();
|
|
242
|
+
for (const name of names)
|
|
243
|
+
closure.set(name, reach(name, () => true));
|
|
244
|
+
const groups = new Map();
|
|
245
|
+
for (const name of names) {
|
|
246
|
+
if (groups.has(name) || !closure.get(name).has(name))
|
|
247
|
+
continue;
|
|
248
|
+
const members = names.filter(other => other === name || (closure.get(name).has(other) && closure.get(other).has(name)));
|
|
249
|
+
const inGroup = new Set(members);
|
|
250
|
+
let binder = null;
|
|
251
|
+
for (const candidate of members) {
|
|
252
|
+
const allowed = (other) => inGroup.has(other) && other !== candidate;
|
|
253
|
+
if (members.every(member => member === candidate || !reach(member, allowed).has(member))) {
|
|
254
|
+
binder = candidate;
|
|
255
|
+
break;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
if (binder === null) {
|
|
259
|
+
const quoted = members.map(member => `"${member}"`);
|
|
260
|
+
const list = `${quoted.slice(0, -1).join(", ")} and ${quoted[quoted.length - 1]}`;
|
|
261
|
+
throw new JsonSchemaUnsupportedError(`definitions ${list} are mutually recursive in a way East cannot express — every cycle ` +
|
|
262
|
+
"among them must pass through one definition, and East binds one RecursiveType per group", pointerOf([keyword, name]));
|
|
263
|
+
}
|
|
264
|
+
const group = { members, binder };
|
|
265
|
+
for (const member of members)
|
|
266
|
+
groups.set(member, group);
|
|
267
|
+
}
|
|
268
|
+
return groups;
|
|
269
|
+
}
|
|
270
|
+
/** Every local definition name referenced anywhere inside a schema node. */
|
|
271
|
+
function collectRefs(node, keyword, out) {
|
|
272
|
+
if (node === null || typeof node !== "object")
|
|
273
|
+
return;
|
|
274
|
+
if (Array.isArray(node)) {
|
|
275
|
+
for (const item of node)
|
|
276
|
+
collectRefs(item, keyword, out);
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
for (const [key, value] of Object.entries(node)) {
|
|
280
|
+
if (key === "$ref" && typeof value === "string") {
|
|
281
|
+
const target = refTarget(value, keyword);
|
|
282
|
+
if (target !== null)
|
|
283
|
+
out.add(target);
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
collectRefs(value, keyword, out);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
function build(node, ctx, path) {
|
|
290
|
+
for (const [keyword, reason] of Object.entries(UNSUPPORTED)) {
|
|
291
|
+
if (has(node, keyword)) {
|
|
292
|
+
fail(`typeFromJsonSchema cannot express "${keyword}" — ${reason}`, [...path, keyword]);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
// OpenAPI 3.0 spells "this or null" as `nullable: true`. East JSON has no
|
|
296
|
+
// bare null for any type but Null itself — an Option is a tagged object — so
|
|
297
|
+
// the only reading is the Null spelling: `nullable` with no type, $ref, oneOf
|
|
298
|
+
// or annotation. Beside anything else it would be dropped silently, and the
|
|
299
|
+
// reader would then refuse the nulls the partner's contract permits.
|
|
300
|
+
if (node["nullable"] === true
|
|
301
|
+
&& (has(node, "type") || has(node, "$ref") || has(node, "oneOf") || has(node, "x-east-type"))) {
|
|
302
|
+
fail("typeFromJsonSchema cannot express \"nullable\" beside a type — East JSON has no bare null " +
|
|
303
|
+
"for it; model the value as an Option (a oneOf tagged none and some)", [...path, "nullable"]);
|
|
304
|
+
}
|
|
305
|
+
const ref = node["$ref"];
|
|
306
|
+
if (typeof ref === "string")
|
|
307
|
+
return buildRef(ref, ctx, [...path, "$ref"]);
|
|
308
|
+
// An annotated document says outright what it came from.
|
|
309
|
+
const annotation = node["x-east-type"];
|
|
310
|
+
if (typeof annotation === "string")
|
|
311
|
+
return buildAnnotated(annotation, node, ctx, path);
|
|
312
|
+
if (has(node, "oneOf"))
|
|
313
|
+
return buildVariant(node, ctx, path);
|
|
314
|
+
// OpenAPI 3.0 has no "null" type and spells it with `nullable`.
|
|
315
|
+
if (!has(node, "type") && node["nullable"] === true)
|
|
316
|
+
return NullType;
|
|
317
|
+
const type = node["type"];
|
|
318
|
+
if (Array.isArray(type)) {
|
|
319
|
+
fail(`typeFromJsonSchema cannot express a union of primitive types [${type.map(spell).join(", ")}] — ` +
|
|
320
|
+
"East unions are discriminated variants", [...path, "type"]);
|
|
321
|
+
}
|
|
322
|
+
switch (type) {
|
|
323
|
+
case "null": return NullType;
|
|
324
|
+
case "boolean": return BooleanType;
|
|
325
|
+
case "string": return StringType;
|
|
326
|
+
case "number": return FloatType;
|
|
327
|
+
case "integer": return IntegerType;
|
|
328
|
+
case "array": return ArrayType(buildItems(node, ctx, path));
|
|
329
|
+
case "object": return buildStruct(node, ctx, path);
|
|
330
|
+
case undefined:
|
|
331
|
+
fail("typeFromJsonSchema needs a \"type\" (or a $ref, oneOf, or x-east-type annotation) — " +
|
|
332
|
+
"an unconstrained schema has no East type", path);
|
|
333
|
+
break;
|
|
334
|
+
default:
|
|
335
|
+
fail(`typeFromJsonSchema does not recognise the type "${spell(type)}"`, [...path, "type"]);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
function buildRef(ref, ctx, path) {
|
|
339
|
+
const name = refTarget(ref, ctx.defsKeyword);
|
|
340
|
+
if (name === null) {
|
|
341
|
+
fail(`typeFromJsonSchema cannot resolve "${ref}" — only local #/${ctx.defsKeyword}/… references are supported`, path);
|
|
342
|
+
}
|
|
343
|
+
if (!has(ctx.defs, name)) {
|
|
344
|
+
fail(`typeFromJsonSchema cannot resolve "${ref}" — no such definition`, path);
|
|
345
|
+
}
|
|
346
|
+
const defPath = [ctx.defsKeyword, name];
|
|
347
|
+
const def = asSchema(ctx.defs[name], defPath, `definition "${name}"`);
|
|
348
|
+
const group = ctx.groups.get(name);
|
|
349
|
+
if (group === undefined) {
|
|
350
|
+
// On no cycle: nothing it builds captures a marker, so build once and share.
|
|
351
|
+
const cached = ctx.done.get(name);
|
|
352
|
+
if (cached !== undefined)
|
|
353
|
+
return cached;
|
|
354
|
+
const built = build(def, ctx, defPath);
|
|
355
|
+
ctx.done.set(name, built);
|
|
356
|
+
return built;
|
|
357
|
+
}
|
|
358
|
+
const scope = ctx.building.get(group.binder);
|
|
359
|
+
if (name === group.binder) {
|
|
360
|
+
if (scope !== undefined)
|
|
361
|
+
return scope.marker;
|
|
362
|
+
const cached = ctx.done.get(name);
|
|
363
|
+
if (cached !== undefined)
|
|
364
|
+
return cached;
|
|
365
|
+
const built = RecursiveType(self => {
|
|
366
|
+
ctx.building.set(name, { marker: self, built: new Map() });
|
|
367
|
+
try {
|
|
368
|
+
return build(def, ctx, defPath);
|
|
369
|
+
}
|
|
370
|
+
finally {
|
|
371
|
+
ctx.building.delete(name);
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
ctx.done.set(name, built);
|
|
375
|
+
return built;
|
|
376
|
+
}
|
|
377
|
+
if (scope !== undefined) {
|
|
378
|
+
// Inside its binder: the member captures the marker, so it is built inline
|
|
379
|
+
// and shared only within this scope.
|
|
380
|
+
const cached = scope.built.get(name);
|
|
381
|
+
if (cached !== undefined)
|
|
382
|
+
return cached;
|
|
383
|
+
const built = build(def, ctx, defPath);
|
|
384
|
+
scope.built.set(name, built);
|
|
385
|
+
return built;
|
|
386
|
+
}
|
|
387
|
+
// Outside its binder: references to the binder resolve to the completed
|
|
388
|
+
// RecursiveType, so the member captures nothing and can be shared.
|
|
389
|
+
const cached = ctx.done.get(name);
|
|
390
|
+
if (cached !== undefined)
|
|
391
|
+
return cached;
|
|
392
|
+
const built = build(def, ctx, defPath);
|
|
393
|
+
ctx.done.set(name, built);
|
|
394
|
+
return built;
|
|
395
|
+
}
|
|
396
|
+
function buildItems(node, ctx, path) {
|
|
397
|
+
if (!has(node, "items")) {
|
|
398
|
+
fail("typeFromJsonSchema needs \"items\" on an array — East arrays are homogeneous", path);
|
|
399
|
+
}
|
|
400
|
+
return build(asSchema(node["items"], [...path, "items"], "items"), ctx, [...path, "items"]);
|
|
401
|
+
}
|
|
402
|
+
function buildStruct(node, ctx, path) {
|
|
403
|
+
const additional = node["additionalProperties"];
|
|
404
|
+
if (additional !== false) {
|
|
405
|
+
fail("typeFromJsonSchema needs \"additionalProperties\": false on an object — " +
|
|
406
|
+
"East structs are closed, so an open record has no East type", path);
|
|
407
|
+
}
|
|
408
|
+
if (!has(node, "properties")) {
|
|
409
|
+
fail("typeFromJsonSchema needs \"properties\" on an object", path);
|
|
410
|
+
}
|
|
411
|
+
const props = asSchema(node["properties"], [...path, "properties"], "properties");
|
|
412
|
+
const required = node["required"];
|
|
413
|
+
const requiredNames = new Set(Array.isArray(required) ? required.filter((r) => typeof r === "string") : []);
|
|
414
|
+
// Names come from the document, so the accumulator must have no prototype:
|
|
415
|
+
// assigning "__proto__" on a plain object sets the prototype instead of a
|
|
416
|
+
// field, silently dropping it. The python twin uses a list of pairs.
|
|
417
|
+
const fields = Object.create(null);
|
|
418
|
+
for (const [name, value] of Object.entries(props)) {
|
|
419
|
+
if (!requiredNames.has(name)) {
|
|
420
|
+
fail(`typeFromJsonSchema needs every property required — "${name}" is optional, and East ` +
|
|
421
|
+
"structs have no absent field; model it as an Option", [...path, "properties", name]);
|
|
422
|
+
}
|
|
423
|
+
fields[name] = build(asSchema(value, [...path, "properties", name], `property "${name}"`), ctx, [...path, "properties", name]);
|
|
424
|
+
}
|
|
425
|
+
return StructType(fields);
|
|
426
|
+
}
|
|
427
|
+
/** The constant tag an alternative pins, or null when it pins none. */
|
|
428
|
+
function tagOf(alternative) {
|
|
429
|
+
const properties = alternative["properties"];
|
|
430
|
+
if (properties === null || typeof properties !== "object" || Array.isArray(properties))
|
|
431
|
+
return null;
|
|
432
|
+
const tag = properties["type"];
|
|
433
|
+
if (tag === null || typeof tag !== "object" || Array.isArray(tag))
|
|
434
|
+
return null;
|
|
435
|
+
const constant = tag["const"];
|
|
436
|
+
if (typeof constant === "string")
|
|
437
|
+
return constant;
|
|
438
|
+
// draft-04 (and so OpenAPI 3.0) has no `const`; a single-valued enum is the
|
|
439
|
+
// same assertion.
|
|
440
|
+
const choices = tag["enum"];
|
|
441
|
+
if (Array.isArray(choices) && choices.length === 1 && typeof choices[0] === "string") {
|
|
442
|
+
return choices[0];
|
|
443
|
+
}
|
|
444
|
+
return null;
|
|
445
|
+
}
|
|
446
|
+
function buildVariant(node, ctx, path) {
|
|
447
|
+
const alternatives = node["oneOf"];
|
|
448
|
+
if (!Array.isArray(alternatives) || alternatives.length === 0) {
|
|
449
|
+
fail("typeFromJsonSchema needs a non-empty \"oneOf\"", [...path, "oneOf"]);
|
|
450
|
+
}
|
|
451
|
+
// As above — and reading `cases["constructor"]` on a plain object finds
|
|
452
|
+
// Object.prototype's, which reported a false duplicate case.
|
|
453
|
+
const cases = Object.create(null);
|
|
454
|
+
for (let i = 0; i < alternatives.length; i++) {
|
|
455
|
+
const altPath = [...path, "oneOf", String(i)];
|
|
456
|
+
const alternative = asSchema(alternatives[i], altPath, `oneOf[${i}]`);
|
|
457
|
+
const tag = tagOf(alternative);
|
|
458
|
+
if (tag === null) {
|
|
459
|
+
fail("typeFromJsonSchema needs each oneOf alternative to pin a constant \"type\" tag — " +
|
|
460
|
+
"an untagged union is not an East variant", altPath);
|
|
461
|
+
}
|
|
462
|
+
const properties = asSchema(alternative["properties"], [...altPath, "properties"], "properties");
|
|
463
|
+
if (!has(properties, "value")) {
|
|
464
|
+
fail("typeFromJsonSchema needs a \"value\" property on each variant case", [...altPath, "properties"]);
|
|
465
|
+
}
|
|
466
|
+
if (cases[tag] !== undefined) {
|
|
467
|
+
fail(`typeFromJsonSchema found the variant case "${tag}" twice`, altPath);
|
|
468
|
+
}
|
|
469
|
+
cases[tag] = build(asSchema(properties["value"], [...altPath, "properties", "value"], "value"), ctx, [...altPath, "properties", "value"]);
|
|
470
|
+
}
|
|
471
|
+
return VariantType(cases);
|
|
472
|
+
}
|
|
473
|
+
function buildAnnotated(annotation, node, ctx, path) {
|
|
474
|
+
switch (annotation) {
|
|
475
|
+
case "Integer": return IntegerType;
|
|
476
|
+
case "Float": return FloatType;
|
|
477
|
+
case "DateTime": return DateTimeType;
|
|
478
|
+
case "Blob": return BlobType;
|
|
479
|
+
case "Set": return SetType(buildItems(node, ctx, path));
|
|
480
|
+
case "Vector": return VectorType(buildItems(node, ctx, path));
|
|
481
|
+
case "Matrix": {
|
|
482
|
+
const rows = asSchema(node["items"], [...path, "items"], "items");
|
|
483
|
+
return MatrixType(buildItems(rows, ctx, [...path, "items"]));
|
|
484
|
+
}
|
|
485
|
+
case "Dict": {
|
|
486
|
+
const entry = asSchema(node["items"], [...path, "items"], "items");
|
|
487
|
+
const entryPath = [...path, "items"];
|
|
488
|
+
const properties = asSchema(entry["properties"], [...entryPath, "properties"], "properties");
|
|
489
|
+
if (!has(properties, "key") || !has(properties, "value")) {
|
|
490
|
+
fail("typeFromJsonSchema needs \"key\" and \"value\" on a Dict entry", [...entryPath, "properties"]);
|
|
491
|
+
}
|
|
492
|
+
return DictType(build(asSchema(properties["key"], [...entryPath, "properties", "key"], "key"), ctx, [...entryPath, "properties", "key"]), build(asSchema(properties["value"], [...entryPath, "properties", "value"], "value"), ctx, [...entryPath, "properties", "value"]));
|
|
493
|
+
}
|
|
494
|
+
case "Ref":
|
|
495
|
+
return RefType(buildItems(node, ctx, path));
|
|
496
|
+
default:
|
|
497
|
+
fail(`typeFromJsonSchema does not recognise the x-east-type "${annotation}"`, [...path, "x-east-type"]);
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
//# sourceMappingURL=json_schema_to_type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json_schema_to_type.js","sourceRoot":"","sources":["../../../src/serialization/json_schema_to_type.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json_schema_to_type.spec.d.ts","sourceRoot":"","sources":["../../../src/serialization/json_schema_to_type.spec.ts"],"names":[],"mappings":""}
|