@json-schema-engine/core 0.0.1
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/LICENSE +21 -0
- package/README.md +50 -0
- package/dist/coverage.d.ts +30 -0
- package/dist/coverage.d.ts.map +1 -0
- package/dist/coverage.js +81 -0
- package/dist/coverage.js.map +1 -0
- package/dist/cursor.d.ts +16 -0
- package/dist/cursor.d.ts.map +1 -0
- package/dist/cursor.js +28 -0
- package/dist/cursor.js.map +1 -0
- package/dist/dialect.d.ts +316 -0
- package/dist/dialect.d.ts.map +1 -0
- package/dist/dialect.js +135 -0
- package/dist/dialect.js.map +1 -0
- package/dist/engine.d.ts +203 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +493 -0
- package/dist/engine.js.map +1 -0
- package/dist/index.d.ts +182 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +370 -0
- package/dist/index.js.map +1 -0
- package/dist/json.d.ts +49 -0
- package/dist/json.d.ts.map +1 -0
- package/dist/json.js +128 -0
- package/dist/json.js.map +1 -0
- package/dist/keywords/applicator.d.ts +57 -0
- package/dist/keywords/applicator.d.ts.map +1 -0
- package/dist/keywords/applicator.js +789 -0
- package/dist/keywords/applicator.js.map +1 -0
- package/dist/keywords/core.d.ts +42 -0
- package/dist/keywords/core.d.ts.map +1 -0
- package/dist/keywords/core.js +139 -0
- package/dist/keywords/core.js.map +1 -0
- package/dist/keywords/format.d.ts +43 -0
- package/dist/keywords/format.d.ts.map +1 -0
- package/dist/keywords/format.js +101 -0
- package/dist/keywords/format.js.map +1 -0
- package/dist/keywords/metaschemas2019.d.ts +3 -0
- package/dist/keywords/metaschemas2019.d.ts.map +1 -0
- package/dist/keywords/metaschemas2019.js +406 -0
- package/dist/keywords/metaschemas2019.js.map +1 -0
- package/dist/keywords/metaschemas2020.d.ts +3 -0
- package/dist/keywords/metaschemas2020.d.ts.map +1 -0
- package/dist/keywords/metaschemas2020.js +441 -0
- package/dist/keywords/metaschemas2020.js.map +1 -0
- package/dist/keywords/metaschemas6.d.ts +3 -0
- package/dist/keywords/metaschemas6.d.ts.map +1 -0
- package/dist/keywords/metaschemas6.js +221 -0
- package/dist/keywords/metaschemas6.js.map +1 -0
- package/dist/keywords/metaschemas7.d.ts +3 -0
- package/dist/keywords/metaschemas7.d.ts.map +1 -0
- package/dist/keywords/metaschemas7.js +248 -0
- package/dist/keywords/metaschemas7.js.map +1 -0
- package/dist/keywords/unevaluated.d.ts +14 -0
- package/dist/keywords/unevaluated.d.ts.map +1 -0
- package/dist/keywords/unevaluated.js +296 -0
- package/dist/keywords/unevaluated.js.map +1 -0
- package/dist/keywords/validation.d.ts +21 -0
- package/dist/keywords/validation.d.ts.map +1 -0
- package/dist/keywords/validation.js +332 -0
- package/dist/keywords/validation.js.map +1 -0
- package/dist/keywords/vocab2019.d.ts +36 -0
- package/dist/keywords/vocab2019.d.ts.map +1 -0
- package/dist/keywords/vocab2019.js +585 -0
- package/dist/keywords/vocab2019.js.map +1 -0
- package/dist/keywords/vocab2020.d.ts +20 -0
- package/dist/keywords/vocab2020.d.ts.map +1 -0
- package/dist/keywords/vocab2020.js +55 -0
- package/dist/keywords/vocab2020.js.map +1 -0
- package/dist/keywords/vocab7.d.ts +46 -0
- package/dist/keywords/vocab7.d.ts.map +1 -0
- package/dist/keywords/vocab7.js +305 -0
- package/dist/keywords/vocab7.js.map +1 -0
- package/dist/loader.d.ts +41 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +13 -0
- package/dist/loader.js.map +1 -0
- package/dist/lowering.d.ts +371 -0
- package/dist/lowering.d.ts.map +1 -0
- package/dist/lowering.js +59 -0
- package/dist/lowering.js.map +1 -0
- package/dist/output.d.ts +251 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +357 -0
- package/dist/output.js.map +1 -0
- package/dist/records.d.ts +71 -0
- package/dist/records.d.ts.map +1 -0
- package/dist/records.js +150 -0
- package/dist/records.js.map +1 -0
- package/dist/ref.d.ts +10 -0
- package/dist/ref.d.ts.map +1 -0
- package/dist/ref.js +5 -0
- package/dist/ref.js.map +1 -0
- package/dist/regex.d.ts +45 -0
- package/dist/regex.d.ts.map +1 -0
- package/dist/regex.js +163 -0
- package/dist/regex.js.map +1 -0
- package/dist/registry.d.ts +141 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +407 -0
- package/dist/registry.js.map +1 -0
- package/dist/result.d.ts +109 -0
- package/dist/result.d.ts.map +1 -0
- package/dist/result.js +112 -0
- package/dist/result.js.map +1 -0
- package/dist/uri.d.ts +18 -0
- package/dist/uri.d.ts.map +1 -0
- package/dist/uri.js +27 -0
- package/dist/uri.js.map +1 -0
- package/dist/walk.d.ts +25 -0
- package/dist/walk.d.ts.map +1 -0
- package/dist/walk.js +65 -0
- package/dist/walk.js.map +1 -0
- package/package.json +32 -0
- package/src/coverage.ts +88 -0
- package/src/cursor.ts +42 -0
- package/src/dialect.ts +428 -0
- package/src/engine.ts +741 -0
- package/src/index.ts +699 -0
- package/src/json.ts +137 -0
- package/src/keywords/applicator.ts +895 -0
- package/src/keywords/core.ts +168 -0
- package/src/keywords/format.ts +143 -0
- package/src/keywords/metaschemas2019.ts +410 -0
- package/src/keywords/metaschemas2020.ts +443 -0
- package/src/keywords/metaschemas6.ts +226 -0
- package/src/keywords/metaschemas7.ts +253 -0
- package/src/keywords/unevaluated.ts +329 -0
- package/src/keywords/validation.ts +627 -0
- package/src/keywords/vocab2019.ts +676 -0
- package/src/keywords/vocab2020.ts +82 -0
- package/src/keywords/vocab7.ts +393 -0
- package/src/loader.ts +60 -0
- package/src/lowering.ts +414 -0
- package/src/output.ts +651 -0
- package/src/records.ts +226 -0
- package/src/ref.ts +14 -0
- package/src/regex.ts +171 -0
- package/src/registry.ts +481 -0
- package/src/result.ts +252 -0
- package/src/uri.ts +35 -0
- package/src/walk.ts +88 -0
package/dist/json.js
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// JSON utilities. Discipline notes carried over from the F2 prototype
|
|
2
|
+
// (DESIGN.md §5): Object.hasOwn everywhere an instance or schema key is
|
|
3
|
+
// tested (`__proto__`/`toString`/`constructor` are legal property names);
|
|
4
|
+
// regex compiled in unicode mode with fallback; length in code points.
|
|
5
|
+
/** True for JSON objects, excluding arrays and `null`. */
|
|
6
|
+
export const isObject = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
7
|
+
/**
|
|
8
|
+
* The primitive type of an instance value. `"integer"` is a numeric subtype
|
|
9
|
+
* handled by the `type` keyword and is never returned here.
|
|
10
|
+
*/
|
|
11
|
+
export function jsonTypeOf(v) {
|
|
12
|
+
if (v === null)
|
|
13
|
+
return "null";
|
|
14
|
+
if (Array.isArray(v))
|
|
15
|
+
return "array";
|
|
16
|
+
switch (typeof v) {
|
|
17
|
+
case "boolean":
|
|
18
|
+
return "boolean";
|
|
19
|
+
case "number":
|
|
20
|
+
return "number";
|
|
21
|
+
case "string":
|
|
22
|
+
return "string";
|
|
23
|
+
default:
|
|
24
|
+
return "object";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* JSON equality per the spec: same type and value, object member order
|
|
29
|
+
* insignificant.
|
|
30
|
+
*/
|
|
31
|
+
export function jsonEqual(a, b) {
|
|
32
|
+
if (a === b)
|
|
33
|
+
return true;
|
|
34
|
+
if (Array.isArray(a)) {
|
|
35
|
+
if (!Array.isArray(b) || a.length !== b.length)
|
|
36
|
+
return false;
|
|
37
|
+
for (let i = 0; i < a.length; i++) {
|
|
38
|
+
if (!jsonEqual(a[i], b[i]))
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
if (isObject(a)) {
|
|
44
|
+
if (!isObject(b))
|
|
45
|
+
return false;
|
|
46
|
+
const keys = Object.keys(a);
|
|
47
|
+
if (keys.length !== Object.keys(b).length)
|
|
48
|
+
return false;
|
|
49
|
+
for (const k of keys) {
|
|
50
|
+
if (!Object.hasOwn(b, k) || !jsonEqual(a[k], b[k]))
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* A canonical string key for JSON equality: two values share a key exactly
|
|
59
|
+
* when {@link jsonEqual} holds (object member order made insignificant by
|
|
60
|
+
* sorting keys). Used to bucket values for near-linear duplicate detection;
|
|
61
|
+
* callers confirm bucket collisions with {@link jsonEqual} since distinct
|
|
62
|
+
* values could, in principle, collide on the key.
|
|
63
|
+
*/
|
|
64
|
+
export function canonicalKey(value) {
|
|
65
|
+
if (value === null || typeof value !== "object")
|
|
66
|
+
return JSON.stringify(value);
|
|
67
|
+
if (Array.isArray(value))
|
|
68
|
+
return `[${value.map(canonicalKey).join(",")}]`;
|
|
69
|
+
const keys = Object.keys(value).sort();
|
|
70
|
+
return `{${keys.map((k) => `${JSON.stringify(k)}:${canonicalKey(value[k])}`).join(",")}}`;
|
|
71
|
+
}
|
|
72
|
+
/** String length in Unicode code points, per `minLength`/`maxLength`. */
|
|
73
|
+
export function codePointLength(s) {
|
|
74
|
+
let n = 0;
|
|
75
|
+
for (let i = 0; i < s.length; i++) {
|
|
76
|
+
n++;
|
|
77
|
+
const c = s.charCodeAt(i);
|
|
78
|
+
if (c >= 0xd800 && c <= 0xdbff)
|
|
79
|
+
i++;
|
|
80
|
+
}
|
|
81
|
+
return n;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Compiles an ECMA-262 regex in unicode mode where possible (required for
|
|
85
|
+
* `\p{...}` property escapes), falling back for patterns invalid under the
|
|
86
|
+
* `u` flag.
|
|
87
|
+
*/
|
|
88
|
+
export function schemaRegExp(pattern) {
|
|
89
|
+
try {
|
|
90
|
+
return new RegExp(pattern, "u");
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return new RegExp(pattern);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/** Escapes a JSON Pointer segment (RFC 6901). */
|
|
97
|
+
export const escapeSegment = (s) => s.replace(/~/g, "~0").replace(/\//g, "~1");
|
|
98
|
+
/** Unescapes a JSON Pointer segment (RFC 6901). */
|
|
99
|
+
export const unescapeSegment = (s) => s.replace(/~1/g, "/").replace(/~0/g, "~");
|
|
100
|
+
/**
|
|
101
|
+
* The first jsonEqual-duplicate pair in `items` (by ascending index), or
|
|
102
|
+
* `null` when every item is distinct — `uniqueItems`' predicate, shared by
|
|
103
|
+
* both tiers. Buckets by {@link canonicalKey} for near-linear detection; a
|
|
104
|
+
* key collision is confirmed with {@link jsonEqual} so distinct values that
|
|
105
|
+
* happen to share a key are never misreported as duplicates.
|
|
106
|
+
*/
|
|
107
|
+
export function firstDuplicatePair(items) {
|
|
108
|
+
const seen = new Map();
|
|
109
|
+
for (let i = 0; i < items.length; i++) {
|
|
110
|
+
const key = canonicalKey(items[i]);
|
|
111
|
+
const bucket = seen.get(key);
|
|
112
|
+
if (bucket === undefined) {
|
|
113
|
+
seen.set(key, [i]);
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
for (const j of bucket) {
|
|
117
|
+
if (jsonEqual(items[j], items[i]))
|
|
118
|
+
return [j, i];
|
|
119
|
+
}
|
|
120
|
+
bucket.push(i);
|
|
121
|
+
}
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
/** True when `items` contains any jsonEqual-duplicate pair (`uniqueItems`'s compiled-tier predicate). */
|
|
125
|
+
export function hasDuplicateItems(items) {
|
|
126
|
+
return firstDuplicatePair(items) !== null;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=json.js.map
|
package/dist/json.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { KeywordBehavior } from "../dialect.js";
|
|
2
|
+
/** 2020-12 applicator vocabulary URI. */
|
|
3
|
+
export declare const VOCAB_APPLICATOR = "https://json-schema.org/draft/2020-12/vocab/applicator";
|
|
4
|
+
/** `allOf`: every subschema must match, at the same cursor. */
|
|
5
|
+
export declare const allOf: KeywordBehavior;
|
|
6
|
+
/** EXEMPLAR (in-place applicator class): every branch runs, even after a match (DESIGN.md §4 rule 6; see engine.ts). */
|
|
7
|
+
export declare const anyOf: KeywordBehavior;
|
|
8
|
+
/** `oneOf`: exactly one subschema must match, at the same cursor. */
|
|
9
|
+
export declare const oneOf: KeywordBehavior;
|
|
10
|
+
/** `not`: the subschema must not match. */
|
|
11
|
+
export declare const not: KeywordBehavior;
|
|
12
|
+
/**
|
|
13
|
+
* `if`: applies its subschema and communicates the outcome to `then`/`else`
|
|
14
|
+
* as dependency data (draft-03 Appendix D); the keyword itself always
|
|
15
|
+
* accepts, so a rejecting condition's errors are irrelevant (§12.2). The
|
|
16
|
+
* compiled form realizes the dependency structurally — the hoisted condition
|
|
17
|
+
* selects the sibling apply — so `then`/`else` lower nothing and the planner
|
|
18
|
+
* edges for both branches are declared here.
|
|
19
|
+
*/
|
|
20
|
+
export declare const ifKeyword: KeywordBehavior;
|
|
21
|
+
/**
|
|
22
|
+
* `then` / `else`: consume `if`'s outcome; the selected branch applies its
|
|
23
|
+
* subschema and reports that verdict as its own, the other is inert. Without
|
|
24
|
+
* a sibling `if` there is no outcome and the keyword accepts.
|
|
25
|
+
*/
|
|
26
|
+
export declare const conditionalBranch: (branchId: string, name: "then" | "else", when: boolean) => KeywordBehavior;
|
|
27
|
+
export declare const thenKeyword: KeywordBehavior;
|
|
28
|
+
export declare const elseKeyword: KeywordBehavior;
|
|
29
|
+
/** `dependentSchemas`: applies a named subschema when the property is present. */
|
|
30
|
+
export declare const dependentSchemas: KeywordBehavior;
|
|
31
|
+
/** EXEMPLAR (child applicator class): child cursors, produces the matched property names. */
|
|
32
|
+
export declare const properties: KeywordBehavior;
|
|
33
|
+
/** `patternProperties`: applies to properties whose name matches a pattern; produces the matched names. */
|
|
34
|
+
export declare const patternProperties: KeywordBehavior;
|
|
35
|
+
/**
|
|
36
|
+
* `additionalProperties`: applies to properties not matched by sibling
|
|
37
|
+
* `properties`/`patternProperties` — statically derivable from the schema
|
|
38
|
+
* object, no channel involvement (contrast `unevaluatedProperties`).
|
|
39
|
+
*/
|
|
40
|
+
export declare const additionalProperties: KeywordBehavior;
|
|
41
|
+
/** `prefixItems`: applies each subschema to the array item at its index; produces the largest applied index. */
|
|
42
|
+
export declare const prefixItems: KeywordBehavior;
|
|
43
|
+
/** `items`: applies to array items past sibling `prefixItems`; produces `true` when it applied to any item. */
|
|
44
|
+
export declare const items: KeywordBehavior;
|
|
45
|
+
/**
|
|
46
|
+
* `contains`: at least one array item must match (range configurable by
|
|
47
|
+
* sibling `minContains`/`maxContains`); produces matched indexes.
|
|
48
|
+
*/
|
|
49
|
+
export declare const contains: KeywordBehavior;
|
|
50
|
+
/**
|
|
51
|
+
* `propertyNames`: applies the subschema to each property name (as a string
|
|
52
|
+
* instance), not to the object itself.
|
|
53
|
+
*/
|
|
54
|
+
export declare const propertyNames: KeywordBehavior;
|
|
55
|
+
/** The 2020-12 applicator vocabulary's keyword behaviors, by name. */
|
|
56
|
+
export declare const applicatorVocabulary: Record<string, KeywordBehavior>;
|
|
57
|
+
//# sourceMappingURL=applicator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"applicator.d.ts","sourceRoot":"","sources":["../../src/keywords/applicator.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,eAAe,EAGhB,MAAM,eAAe,CAAC;AAKvB,yCAAyC;AACzC,eAAO,MAAM,gBAAgB,2DAC6B,CAAC;AA2B3D,+DAA+D;AAC/D,eAAO,MAAM,KAAK,EAAE,eAkBnB,CAAC;AAEF,wHAAwH;AACxH,eAAO,MAAM,KAAK,EAAE,eAgCnB,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,KAAK,EAAE,eA0CnB,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,GAAG,EAAE,eAgCjB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,EAAE,eAgEvB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,MAAM,EAChB,MAAM,MAAM,GAAG,MAAM,EACrB,MAAM,OAAO,KACZ,eAWD,CAAC;AAEH,eAAO,MAAM,WAAW,EAAE,eAIzB,CAAC;AACF,eAAO,MAAM,WAAW,EAAE,eAIzB,CAAC;AAEF,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,EAAE,eA6C9B,CAAC;AAEF,6FAA6F;AAC7F,eAAO,MAAM,UAAU,EAAE,eAqExB,CAAC;AAEF,2GAA2G;AAC3G,eAAO,MAAM,iBAAiB,EAAE,eAoF/B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,eAwFlC,CAAC;AAEF,gHAAgH;AAChH,eAAO,MAAM,WAAW,EAAE,eAuEzB,CAAC;AAEF,+GAA+G;AAC/G,eAAO,MAAM,KAAK,EAAE,eAiEnB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,eA6FtB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,eAuC3B,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAgBhE,CAAC"}
|