@hyperjump/json-schema 1.6.1 → 1.6.3
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/draft-2019-09/index.js
CHANGED
|
@@ -13,7 +13,7 @@ import additionalItems from "../draft-04/additionalItems.js";
|
|
|
13
13
|
import contains from "./contains.js";
|
|
14
14
|
import items from "../draft-04/items.js";
|
|
15
15
|
import recursiveAnchor from "./recursiveAnchor.js";
|
|
16
|
-
import recursiveRef from "
|
|
16
|
+
import recursiveRef from "../draft-2020-12/dynamicRef.js";
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
addKeyword(additionalItems);
|
|
@@ -27,7 +27,7 @@ defineVocabulary("https://json-schema.org/draft/2019-09/vocab/core", {
|
|
|
27
27
|
"$comment": "https://json-schema.org/keyword/comment",
|
|
28
28
|
"$defs": "https://json-schema.org/keyword/definitions",
|
|
29
29
|
"$recursiveAnchor": "https://json-schema.org/keyword/draft-2019-09/recursiveAnchor",
|
|
30
|
-
"$recursiveRef": "https://json-schema.org/keyword/draft-
|
|
30
|
+
"$recursiveRef": "https://json-schema.org/keyword/draft-2020-12/dynamicRef",
|
|
31
31
|
"$id": "https://json-schema.org/keyword/id",
|
|
32
32
|
"$ref": "https://json-schema.org/keyword/ref",
|
|
33
33
|
"$vocabulary": "https://json-schema.org/keyword/vocabulary"
|
|
@@ -12,16 +12,17 @@ const compile = async (dynamicRef, ast) => {
|
|
|
12
12
|
return [referencedSchema.id, fragment, Schema.uri(referencedSchema)];
|
|
13
13
|
};
|
|
14
14
|
|
|
15
|
-
const
|
|
15
|
+
const evaluate = (strategy) => ([id, fragment, ref], instance, ast, dynamicAnchors, quiet) => {
|
|
16
16
|
if (fragment in ast.metaData[id].dynamicAnchors) {
|
|
17
17
|
dynamicAnchors = { ...ast.metaData[id].dynamicAnchors, ...dynamicAnchors };
|
|
18
|
-
return
|
|
18
|
+
return strategy(dynamicAnchors[fragment], instance, ast, dynamicAnchors, quiet);
|
|
19
19
|
} else {
|
|
20
|
-
return
|
|
20
|
+
return strategy(ref, instance, ast, dynamicAnchors, quiet);
|
|
21
21
|
}
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
-
const
|
|
25
|
-
const
|
|
24
|
+
const interpret = evaluate(Validation.interpret);
|
|
25
|
+
const collectEvaluatedProperties = evaluate(Validation.collectEvaluatedProperties);
|
|
26
|
+
const collectEvaluatedItems = evaluate(Validation.collectEvaluatedItems);
|
|
26
27
|
|
|
27
28
|
export default { id, compile, interpret, collectEvaluatedProperties, collectEvaluatedItems };
|
|
@@ -7,14 +7,15 @@ const experimental = true;
|
|
|
7
7
|
|
|
8
8
|
const compile = Schema.value;
|
|
9
9
|
|
|
10
|
-
const
|
|
10
|
+
const evaluate = (strategy) => (fragment, instance, ast, dynamicAnchors, quiet) => {
|
|
11
11
|
if (!(fragment in dynamicAnchors)) {
|
|
12
12
|
throw Error(`No dynamic anchor found for "${fragment}"`);
|
|
13
13
|
}
|
|
14
|
-
return
|
|
14
|
+
return strategy(dynamicAnchors[fragment], instance, ast, dynamicAnchors, quiet);
|
|
15
15
|
};
|
|
16
16
|
|
|
17
|
-
const
|
|
18
|
-
const
|
|
17
|
+
const interpret = evaluate(Validation.interpret);
|
|
18
|
+
const collectEvaluatedProperties = evaluate(Validation.collectEvaluatedProperties);
|
|
19
|
+
const collectEvaluatedItems = evaluate(Validation.collectEvaluatedItems);
|
|
19
20
|
|
|
20
21
|
export default { id, experimental, compile, interpret, collectEvaluatedProperties, collectEvaluatedItems };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyperjump/json-schema",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.3",
|
|
4
4
|
"description": "A JSON Schema validator with support for custom keywords, vocabularies, and dialects",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./stable/index.js",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@types/chai": "*",
|
|
55
55
|
"@types/mocha": "*",
|
|
56
|
-
"@types/node": "
|
|
56
|
+
"@types/node": "*",
|
|
57
57
|
"@typescript-eslint/eslint-plugin": "*",
|
|
58
58
|
"@typescript-eslint/parser": "*",
|
|
59
59
|
"chai": "*",
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import Validation from "../lib/keywords/validation.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const id = "https://json-schema.org/keyword/draft-2019-09/recursiveRef";
|
|
5
|
-
|
|
6
|
-
const compile = (schema) => schema.id;
|
|
7
|
-
|
|
8
|
-
const interpret = (id, instance, ast, dynamicAnchors, quiet) => {
|
|
9
|
-
if ("" in ast.metaData[id].dynamicAnchors) {
|
|
10
|
-
dynamicAnchors = { ...ast.metaData[id].dynamicAnchors, ...dynamicAnchors };
|
|
11
|
-
return Validation.interpret(dynamicAnchors[""], instance, ast, dynamicAnchors, quiet);
|
|
12
|
-
} else {
|
|
13
|
-
return Validation.interpret(`${id}#`, instance, ast, dynamicAnchors, quiet);
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
const collectEvaluatedProperties = Validation.collectEvaluatedProperties;
|
|
18
|
-
const collectEvaluatedItems = Validation.collectEvaluatedItems;
|
|
19
|
-
|
|
20
|
-
export default { id, compile, interpret, collectEvaluatedProperties, collectEvaluatedItems };
|