@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.
@@ -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 "./recursiveRef.js";
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-2019-09/recursiveRef",
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 interpret = ([id, fragment, ref], instance, ast, dynamicAnchors, quiet) => {
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 Validation.interpret(dynamicAnchors[fragment], instance, ast, dynamicAnchors, quiet);
18
+ return strategy(dynamicAnchors[fragment], instance, ast, dynamicAnchors, quiet);
19
19
  } else {
20
- return Validation.interpret(ref, instance, ast, dynamicAnchors, quiet);
20
+ return strategy(ref, instance, ast, dynamicAnchors, quiet);
21
21
  }
22
22
  };
23
23
 
24
- const collectEvaluatedProperties = Validation.collectEvaluatedProperties;
25
- const collectEvaluatedItems = Validation.collectEvaluatedItems;
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 interpret = (fragment, instance, ast, dynamicAnchors, quiet) => {
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 Validation.interpret(dynamicAnchors[fragment], instance, ast, dynamicAnchors, quiet);
14
+ return strategy(dynamicAnchors[fragment], instance, ast, dynamicAnchors, quiet);
15
15
  };
16
16
 
17
- const collectEvaluatedProperties = Validation.collectEvaluatedProperties;
18
- const collectEvaluatedItems = Validation.collectEvaluatedItems;
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.1",
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": "^20.6.2",
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 };