@hyperjump/json-schema 0.23.3 → 1.0.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.
Files changed (202) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +459 -120
  3. package/draft-04/additionalItems.js +29 -0
  4. package/{lib/keywords → draft-04}/dependencies.js +9 -5
  5. package/draft-04/exclusiveMaximum.js +5 -0
  6. package/draft-04/exclusiveMinimum.js +5 -0
  7. package/draft-04/id.js +1 -0
  8. package/draft-04/index.d.ts +43 -0
  9. package/draft-04/index.js +69 -0
  10. package/draft-04/items.js +35 -0
  11. package/draft-04/maximum.js +26 -0
  12. package/draft-04/minimum.js +25 -0
  13. package/draft-04/ref.js +1 -0
  14. package/draft-04/schema.js +149 -0
  15. package/draft-06/contains.js +13 -0
  16. package/draft-06/index.d.ts +47 -0
  17. package/draft-06/index.js +66 -0
  18. package/draft-06/schema.js +154 -0
  19. package/{lib/draft-07.d.ts → draft-07/index.d.ts} +21 -19
  20. package/draft-07/index.js +72 -0
  21. package/draft-07/schema.js +172 -0
  22. package/{lib/keywords/contains-minContains-maxContains.js → draft-2019-09/contains.js} +14 -7
  23. package/{lib/draft-2019-09.d.ts → draft-2019-09/index.d.ts} +24 -22
  24. package/draft-2019-09/index.js +117 -0
  25. package/draft-2019-09/meta/applicator.js +55 -0
  26. package/draft-2019-09/meta/content.js +17 -0
  27. package/draft-2019-09/meta/core.js +57 -0
  28. package/draft-2019-09/meta/format.js +14 -0
  29. package/draft-2019-09/meta/meta-data.js +37 -0
  30. package/draft-2019-09/meta/validation.js +98 -0
  31. package/draft-2019-09/recursiveAnchor.js +1 -0
  32. package/draft-2019-09/recursiveRef.js +19 -0
  33. package/draft-2019-09/schema.js +42 -0
  34. package/draft-2020-12/dynamicAnchor.js +1 -0
  35. package/draft-2020-12/dynamicRef.js +35 -0
  36. package/draft-2020-12/index.d.ts +66 -0
  37. package/draft-2020-12/index.js +124 -0
  38. package/draft-2020-12/meta/applicator.js +46 -0
  39. package/draft-2020-12/meta/content.js +14 -0
  40. package/draft-2020-12/meta/core.js +54 -0
  41. package/draft-2020-12/meta/format-annotation.js +11 -0
  42. package/draft-2020-12/meta/format-assertion.js +11 -0
  43. package/draft-2020-12/meta/meta-data.js +34 -0
  44. package/draft-2020-12/meta/unevaluated.js +12 -0
  45. package/draft-2020-12/meta/validation.js +95 -0
  46. package/draft-2020-12/schema.js +44 -0
  47. package/lib/common.d.ts +5 -1
  48. package/lib/common.js +80 -9
  49. package/lib/configuration.d.ts +9 -0
  50. package/lib/configuration.js +18 -0
  51. package/lib/core.d.ts +48 -0
  52. package/lib/core.js +102 -0
  53. package/lib/experimental.d.ts +8 -0
  54. package/lib/experimental.js +4 -0
  55. package/lib/fetch.browser.js +1 -0
  56. package/lib/fetch.js +19 -0
  57. package/lib/index.d.ts +11 -42
  58. package/lib/index.js +130 -23
  59. package/lib/instance.d.ts +75 -0
  60. package/lib/instance.js +58 -0
  61. package/lib/invalid-schema-error.d.ts +8 -0
  62. package/lib/invalid-schema-error.js +7 -0
  63. package/lib/keywords/additionalProperties.js +19 -17
  64. package/lib/keywords/allOf.js +10 -7
  65. package/lib/keywords/anchor.js +1 -0
  66. package/lib/keywords/anyOf.js +10 -7
  67. package/lib/keywords/comment.js +4 -0
  68. package/lib/keywords/const.js +6 -3
  69. package/lib/keywords/contains.js +48 -5
  70. package/lib/keywords/contentEncoding.js +4 -0
  71. package/lib/keywords/contentMediaType.js +4 -0
  72. package/lib/keywords/contentSchema.js +4 -0
  73. package/lib/keywords/default.js +4 -0
  74. package/lib/keywords/definitions.js +7 -4
  75. package/lib/keywords/dependentRequired.js +6 -3
  76. package/lib/keywords/dependentSchemas.js +10 -6
  77. package/lib/keywords/deprecated.js +4 -0
  78. package/lib/keywords/description.js +4 -0
  79. package/lib/keywords/dynamicAnchor.js +1 -0
  80. package/lib/keywords/dynamicRef.js +13 -17
  81. package/lib/keywords/else.js +16 -11
  82. package/lib/keywords/enum.js +6 -3
  83. package/lib/keywords/examples.js +4 -0
  84. package/lib/keywords/exclusiveMaximum.js +5 -2
  85. package/lib/keywords/exclusiveMinimum.js +5 -2
  86. package/lib/keywords/format.js +4 -0
  87. package/lib/keywords/id.js +1 -0
  88. package/lib/keywords/if.js +8 -6
  89. package/lib/keywords/items.js +17 -19
  90. package/lib/keywords/maxContains.js +4 -0
  91. package/lib/keywords/maxItems.js +5 -2
  92. package/lib/keywords/maxLength.js +5 -2
  93. package/lib/keywords/maxProperties.js +5 -2
  94. package/lib/keywords/maximum.js +5 -2
  95. package/lib/keywords/meta-data.js +4 -0
  96. package/lib/keywords/minContains.js +4 -0
  97. package/lib/keywords/minItems.js +5 -2
  98. package/lib/keywords/minLength.js +5 -2
  99. package/lib/keywords/minProperties.js +5 -2
  100. package/lib/keywords/minimum.js +5 -2
  101. package/lib/keywords/multipleOf.js +5 -2
  102. package/lib/keywords/not.js +6 -4
  103. package/lib/keywords/oneOf.js +9 -6
  104. package/lib/keywords/pattern.js +5 -2
  105. package/lib/keywords/patternProperties.js +9 -5
  106. package/lib/keywords/prefixItems.js +28 -0
  107. package/lib/keywords/properties.js +11 -6
  108. package/lib/keywords/propertyDependencies.js +49 -0
  109. package/lib/keywords/propertyNames.js +7 -4
  110. package/lib/keywords/readOnly.js +4 -0
  111. package/lib/keywords/ref.js +9 -6
  112. package/lib/keywords/requireAllExcept.js +24 -0
  113. package/lib/keywords/required.js +5 -2
  114. package/lib/keywords/then.js +16 -11
  115. package/lib/keywords/title.js +4 -0
  116. package/lib/keywords/type.js +5 -2
  117. package/lib/keywords/unevaluatedItems.js +9 -5
  118. package/lib/keywords/unevaluatedProperties.js +9 -5
  119. package/lib/keywords/uniqueItems.js +6 -3
  120. package/lib/keywords/validation.js +123 -0
  121. package/lib/keywords/vocabulary.js +1 -0
  122. package/lib/keywords/writeOnly.js +4 -0
  123. package/lib/keywords.d.ts +19 -0
  124. package/lib/keywords.js +59 -0
  125. package/lib/media-types.d.ts +9 -0
  126. package/lib/media-types.js +26 -0
  127. package/lib/pubsub.js +42 -0
  128. package/lib/reference.d.ts +11 -0
  129. package/lib/reference.js +11 -0
  130. package/lib/schema.d.ts +64 -0
  131. package/lib/schema.js +308 -0
  132. package/package.json +31 -22
  133. package/{lib/draft-2020-12.d.ts → stable/index.d.ts} +26 -24
  134. package/stable/index.js +118 -0
  135. package/stable/meta/applicator.js +49 -0
  136. package/stable/meta/content.js +12 -0
  137. package/stable/meta/core.js +49 -0
  138. package/stable/meta/format-annotation.js +10 -0
  139. package/stable/meta/format-assertion.js +10 -0
  140. package/stable/meta/meta-data.js +16 -0
  141. package/stable/meta/unevaluated.js +11 -0
  142. package/stable/meta/validation.js +67 -0
  143. package/stable/validation.js +24 -0
  144. package/dist/json-schema-amd.js +0 -6602
  145. package/dist/json-schema-amd.js.map +0 -1
  146. package/dist/json-schema-amd.min.js +0 -3
  147. package/dist/json-schema-amd.min.js.map +0 -1
  148. package/dist/json-schema-cjs.js +0 -6600
  149. package/dist/json-schema-cjs.js.map +0 -1
  150. package/dist/json-schema-cjs.min.js +0 -3
  151. package/dist/json-schema-cjs.min.js.map +0 -1
  152. package/dist/json-schema-esm.js +0 -6596
  153. package/dist/json-schema-esm.js.map +0 -1
  154. package/dist/json-schema-esm.min.js +0 -3
  155. package/dist/json-schema-esm.min.js.map +0 -1
  156. package/dist/json-schema-iife.js +0 -6605
  157. package/dist/json-schema-iife.js.map +0 -1
  158. package/dist/json-schema-iife.min.js +0 -3
  159. package/dist/json-schema-iife.min.js.map +0 -1
  160. package/dist/json-schema-system.js +0 -6603
  161. package/dist/json-schema-system.js.map +0 -1
  162. package/dist/json-schema-system.min.js +0 -3
  163. package/dist/json-schema-system.min.js.map +0 -1
  164. package/dist/json-schema-umd.js +0 -6606
  165. package/dist/json-schema-umd.js.map +0 -1
  166. package/dist/json-schema-umd.min.js +0 -3
  167. package/dist/json-schema-umd.min.js.map +0 -1
  168. package/lib/draft-04.d.ts +0 -41
  169. package/lib/draft-04.js +0 -46
  170. package/lib/draft-06.d.ts +0 -45
  171. package/lib/draft-06.js +0 -51
  172. package/lib/draft-07.js +0 -55
  173. package/lib/draft-2019-09.js +0 -92
  174. package/lib/draft-2020-12.js +0 -103
  175. package/lib/index.mjs +0 -19
  176. package/lib/keywords/additionalItems.js +0 -27
  177. package/lib/keywords/additionalItems6.js +0 -23
  178. package/lib/keywords/additionalProperties6.js +0 -28
  179. package/lib/keywords/index.js +0 -53
  180. package/lib/keywords/items202012.js +0 -23
  181. package/lib/keywords/maximum-exclusiveMaximum.js +0 -20
  182. package/lib/keywords/minimum-exclusiveMinimum.js +0 -20
  183. package/lib/keywords/tupleItems.js +0 -24
  184. package/meta/draft/2019-09/meta/applicator.js +0 -55
  185. package/meta/draft/2019-09/meta/content.js +0 -17
  186. package/meta/draft/2019-09/meta/core.js +0 -57
  187. package/meta/draft/2019-09/meta/format.js +0 -14
  188. package/meta/draft/2019-09/meta/meta-data.js +0 -37
  189. package/meta/draft/2019-09/meta/validation.js +0 -98
  190. package/meta/draft/2019-09/schema.js +0 -42
  191. package/meta/draft/2020-12/meta/applicator.js +0 -49
  192. package/meta/draft/2020-12/meta/content.js +0 -17
  193. package/meta/draft/2020-12/meta/core.js +0 -57
  194. package/meta/draft/2020-12/meta/format-annotation.js +0 -14
  195. package/meta/draft/2020-12/meta/format-assertion.js +0 -14
  196. package/meta/draft/2020-12/meta/meta-data.js +0 -37
  197. package/meta/draft/2020-12/meta/unevaluated.js +0 -15
  198. package/meta/draft/2020-12/meta/validation.js +0 -98
  199. package/meta/draft/2020-12/schema.js +0 -44
  200. package/meta/draft-04/schema.js +0 -149
  201. package/meta/draft-06/schema.js +0 -154
  202. package/meta/draft-07/schema.js +0 -172
package/lib/draft-04.d.ts DELETED
@@ -1,41 +0,0 @@
1
- import type { Json } from "@hyperjump/json-schema-core";
2
- import type { JsonSchemaType } from "./common";
3
-
4
-
5
- export type Draft04Schema = {
6
- $ref: string;
7
- } | {
8
- $schema?: "http://json-schema.org/draft-04/schema#";
9
- id?: string;
10
- title?: string;
11
- description?: string;
12
- default?: Json;
13
- multipleOf?: number;
14
- maximum?: number;
15
- exclusiveMaximum?: boolean;
16
- minimum?: number;
17
- exclusiveMinimum?: boolean;
18
- maxLength?: number;
19
- minLength?: number;
20
- pattern?: string;
21
- additionalItems?: boolean | Draft04Schema;
22
- items?: Draft04Schema | Draft04Schema[];
23
- maxItems?: number;
24
- minItems?: number;
25
- uniqueItems?: boolean;
26
- maxProperties?: number;
27
- minProperties?: number;
28
- required?: string[];
29
- additionalProperties?: boolean | Draft04Schema;
30
- definitions?: Record<string, Draft04Schema>;
31
- properties?: Record<string, Draft04Schema>;
32
- patternProperties?: Record<string, Draft04Schema>;
33
- dependencies?: Record<string, Draft04Schema | string[]>;
34
- enum?: Json[];
35
- type?: JsonSchemaType | JsonSchemaType[];
36
- format?: "date-time" | "email" | "hostname" | "ipv4" | "ipv6" | "uri";
37
- allOf?: Draft04Schema[];
38
- anyOf?: Draft04Schema[];
39
- oneOf?: Draft04Schema[];
40
- not?: Draft04Schema;
41
- };
package/lib/draft-04.js DELETED
@@ -1,46 +0,0 @@
1
- const { Core, Schema } = require("@hyperjump/json-schema-core");
2
- const keywords = require("./keywords");
3
- const metaSchema = require("../meta/draft-04/schema");
4
-
5
-
6
- // JSON Schema Draft-04
7
- const jsonSchemaVersion = "http://json-schema.org/draft-04/schema";
8
-
9
- Schema.setConfig(jsonSchemaVersion, "baseToken", "id");
10
- Schema.setConfig(jsonSchemaVersion, "embeddedToken", "id");
11
- Schema.setConfig(jsonSchemaVersion, "anchorToken", "id");
12
- Schema.setConfig(jsonSchemaVersion, "jrefToken", "$ref");
13
-
14
- Schema.add(JSON.parse(metaSchema));
15
- Core.defineVocabulary(jsonSchemaVersion, {
16
- "validate": keywords.validate,
17
- "additionalItems": keywords.additionalItems,
18
- "additionalProperties": keywords.additionalProperties,
19
- "allOf": keywords.allOf,
20
- "anyOf": keywords.anyOf,
21
- "default": keywords.metaData,
22
- "definitions": keywords.definitions,
23
- "dependencies": keywords.dependencies,
24
- "description": keywords.metaData,
25
- "enum": keywords.enum,
26
- "format": keywords.metaData,
27
- "items": keywords.items,
28
- "maxItems": keywords.maxItems,
29
- "maxLength": keywords.maxLength,
30
- "maxProperties": keywords.maxProperties,
31
- "maximum": keywords.maximumExclusiveMaximum,
32
- "minItems": keywords.minItems,
33
- "minLength": keywords.minLength,
34
- "minProperties": keywords.minProperties,
35
- "minimum": keywords.minimumExclusiveMinimum,
36
- "multipleOf": keywords.multipleOf,
37
- "not": keywords.not,
38
- "oneOf": keywords.oneOf,
39
- "pattern": keywords.pattern,
40
- "patternProperties": keywords.patternProperties,
41
- "properties": keywords.properties,
42
- "required": keywords.required,
43
- "title": keywords.metaData,
44
- "type": keywords.type,
45
- "uniqueItems": keywords.uniqueItems
46
- });
package/lib/draft-06.d.ts DELETED
@@ -1,45 +0,0 @@
1
- import type { Json } from "@hyperjump/json-schema-core";
2
- import type { JsonSchemaType } from "./common";
3
-
4
-
5
- export type Draft06Schema = boolean | {
6
- $ref: string;
7
- } | {
8
- $schema?: "http://json-schema.org/draft-06/schema#";
9
- $id?: string;
10
- title?: string;
11
- description?: string;
12
- default?: Json;
13
- examples?: Json[];
14
- multipleOf?: number;
15
- maximum?: number;
16
- exclusiveMaximum?: number;
17
- minimum?: number;
18
- exclusiveMinimum?: number;
19
- maxLength?: number;
20
- minLength?: number;
21
- pattern?: string;
22
- additionalItems?: Draft06Schema;
23
- items?: Draft06Schema | Draft06Schema[];
24
- maxItems?: number;
25
- minItems?: number;
26
- uniqueItems?: boolean;
27
- contains?: Draft06Schema;
28
- maxProperties?: number;
29
- minProperties?: number;
30
- required?: string[];
31
- additionalProperties?: Draft06Schema;
32
- definitions?: Record<string, Draft06Schema>;
33
- properties?: Record<string, Draft06Schema>;
34
- patternProperties?: Record<string, Draft06Schema>;
35
- dependencies?: Record<string, Draft06Schema | string[]>;
36
- propertyNames?: Draft06Schema;
37
- const?: Json;
38
- enum?: Json[];
39
- type?: JsonSchemaType | JsonSchemaType[];
40
- format?: "date-time" | "email" | "hostname" | "ipv4" | "ipv6" | "uri" | "uri-reference" | "uri-template" | "json-pointer";
41
- allOf?: Draft06Schema[];
42
- anyOf?: Draft06Schema[];
43
- oneOf?: Draft06Schema[];
44
- not?: Draft06Schema;
45
- };
package/lib/draft-06.js DELETED
@@ -1,51 +0,0 @@
1
- const { Core, Schema } = require("@hyperjump/json-schema-core");
2
- const keywords = require("./keywords");
3
- const metaSchema = require("../meta/draft-06/schema");
4
-
5
-
6
- const jsonSchemaVersion = "http://json-schema.org/draft-06/schema";
7
-
8
- Schema.setConfig(jsonSchemaVersion, "baseToken", "$id");
9
- Schema.setConfig(jsonSchemaVersion, "embeddedToken", "$id");
10
- Schema.setConfig(jsonSchemaVersion, "anchorToken", "$id");
11
- Schema.setConfig(jsonSchemaVersion, "jrefToken", "$ref");
12
-
13
- Schema.add(JSON.parse(metaSchema));
14
- Core.defineVocabulary(jsonSchemaVersion, {
15
- "validate": keywords.validate,
16
- "additionalItems": keywords.additionalItems6,
17
- "additionalProperties": keywords.additionalProperties6,
18
- "allOf": keywords.allOf,
19
- "anyOf": keywords.anyOf,
20
- "const": keywords.const,
21
- "contains": keywords.contains,
22
- "default": keywords.metaData,
23
- "definitions": keywords.definitions,
24
- "dependencies": keywords.dependencies,
25
- "description": keywords.metaData,
26
- "enum": keywords.enum,
27
- "examples": keywords.metaData,
28
- "exclusiveMaximum": keywords.exclusiveMaximum,
29
- "exclusiveMinimum": keywords.exclusiveMinimum,
30
- "format": keywords.metaData,
31
- "items": keywords.items,
32
- "maxItems": keywords.maxItems,
33
- "maxLength": keywords.maxLength,
34
- "maxProperties": keywords.maxProperties,
35
- "maximum": keywords.maximum,
36
- "minItems": keywords.minItems,
37
- "minLength": keywords.minLength,
38
- "minProperties": keywords.minProperties,
39
- "minimum": keywords.minimum,
40
- "multipleOf": keywords.multipleOf,
41
- "not": keywords.not,
42
- "oneOf": keywords.oneOf,
43
- "pattern": keywords.pattern,
44
- "patternProperties": keywords.patternProperties,
45
- "properties": keywords.properties,
46
- "propertyNames": keywords.propertyNames,
47
- "required": keywords.required,
48
- "title": keywords.metaData,
49
- "type": keywords.type,
50
- "uniqueItems": keywords.uniqueItems
51
- });
package/lib/draft-07.js DELETED
@@ -1,55 +0,0 @@
1
- const { Core, Schema } = require("@hyperjump/json-schema-core");
2
- const keywords = require("./keywords");
3
- const metaSchema = require("../meta/draft-07/schema");
4
-
5
-
6
- const jsonSchemaVersion = "http://json-schema.org/draft-07/schema";
7
-
8
- Schema.setConfig(jsonSchemaVersion, "baseToken", "$id");
9
- Schema.setConfig(jsonSchemaVersion, "embeddedToken", "$id");
10
- Schema.setConfig(jsonSchemaVersion, "anchorToken", "$id");
11
- Schema.setConfig(jsonSchemaVersion, "jrefToken", "$ref");
12
-
13
- Schema.add(JSON.parse(metaSchema));
14
- Core.defineVocabulary(jsonSchemaVersion, {
15
- "validate": keywords.validate,
16
- "additionalItems": keywords.additionalItems6,
17
- "additionalProperties": keywords.additionalProperties6,
18
- "allOf": keywords.allOf,
19
- "anyOf": keywords.anyOf,
20
- "const": keywords.const,
21
- "contains": keywords.contains,
22
- "default": keywords.metaData,
23
- "definitions": keywords.definitions,
24
- "dependencies": keywords.dependencies,
25
- "description": keywords.metaData,
26
- "enum": keywords.enum,
27
- "exclusiveMaximum": keywords.exclusiveMaximum,
28
- "exclusiveMinimum": keywords.exclusiveMinimum,
29
- "format": keywords.metaData,
30
- "if": keywords.if,
31
- "then": keywords.then,
32
- "else": keywords.else,
33
- "items": keywords.items,
34
- "maxItems": keywords.maxItems,
35
- "maxLength": keywords.maxLength,
36
- "maxProperties": keywords.maxProperties,
37
- "maximum": keywords.maximum,
38
- "minItems": keywords.minItems,
39
- "minLength": keywords.minLength,
40
- "minProperties": keywords.minProperties,
41
- "minimum": keywords.minimum,
42
- "multipleOf": keywords.multipleOf,
43
- "not": keywords.not,
44
- "oneOf": keywords.oneOf,
45
- "pattern": keywords.pattern,
46
- "patternProperties": keywords.patternProperties,
47
- "properties": keywords.properties,
48
- "propertyNames": keywords.propertyNames,
49
- "readOnly": keywords.metaData,
50
- "required": keywords.required,
51
- "title": keywords.metaData,
52
- "type": keywords.type,
53
- "uniqueItems": keywords.uniqueItems,
54
- "writeOnly": keywords.metaData
55
- });
@@ -1,92 +0,0 @@
1
- const { Core, Schema } = require("@hyperjump/json-schema-core");
2
- const keywords = require("./keywords");
3
- const metaSchema = require("../meta/draft/2019-09/schema");
4
- const coreMetaSchema = require("../meta/draft/2019-09/meta/core");
5
- const applicatorMetaSchema = require("../meta/draft/2019-09/meta/applicator");
6
- const validationMetaSchema = require("../meta/draft/2019-09/meta/validation");
7
- const metaDataMetaSchema = require("../meta/draft/2019-09/meta/meta-data");
8
- const formatMetaSchema = require("../meta/draft/2019-09/meta/format");
9
- const contentMetaSchema = require("../meta/draft/2019-09/meta/content");
10
-
11
-
12
- const jsonSchemaVersion = "https://json-schema.org/draft/2019-09/vocab/core";
13
-
14
- Schema.setConfig(jsonSchemaVersion, "baseToken", "$id");
15
- Schema.setConfig(jsonSchemaVersion, "embeddedToken", "$id");
16
- Schema.setConfig(jsonSchemaVersion, "anchorToken", "$anchor");
17
- Schema.setConfig(jsonSchemaVersion, "recursiveAnchorToken", "$recursiveAnchor");
18
- Schema.setConfig(jsonSchemaVersion, "vocabularyToken", "$vocabulary");
19
- Schema.setConfig(jsonSchemaVersion, "mandatoryVocabularies", ["https://json-schema.org/draft/2019-09/vocab/core"]);
20
-
21
- Schema.add(JSON.parse(metaSchema));
22
-
23
- Schema.add(JSON.parse(coreMetaSchema));
24
- Core.defineVocabulary("https://json-schema.org/draft/2019-09/vocab/core", {
25
- "validate": keywords.validate,
26
- "$defs": keywords.definitions,
27
- "$recursiveRef": keywords.dynamicRef,
28
- "$ref": keywords.ref
29
- });
30
-
31
- Schema.add(JSON.parse(applicatorMetaSchema));
32
- Core.defineVocabulary("https://json-schema.org/draft/2019-09/vocab/applicator", {
33
- "additionalItems": keywords.additionalItems6,
34
- "additionalProperties": keywords.additionalProperties6,
35
- "allOf": keywords.allOf,
36
- "anyOf": keywords.anyOf,
37
- "contains": keywords.containsMinContainsMaxContains,
38
- "dependentSchemas": keywords.dependentSchemas,
39
- "if": keywords.if,
40
- "then": keywords.then,
41
- "else": keywords.else,
42
- "items": keywords.items,
43
- "not": keywords.not,
44
- "oneOf": keywords.oneOf,
45
- "patternProperties": keywords.patternProperties,
46
- "properties": keywords.properties,
47
- "propertyNames": keywords.propertyNames,
48
- "unevaluatedItems": keywords.unevaluatedItems,
49
- "unevaluatedProperties": keywords.unevaluatedProperties
50
- });
51
-
52
- Schema.add(JSON.parse(validationMetaSchema));
53
- Core.defineVocabulary("https://json-schema.org/draft/2019-09/vocab/validation", {
54
- "const": keywords.const,
55
- "dependentRequired": keywords.dependentRequired,
56
- "enum": keywords.enum,
57
- "exclusiveMaximum": keywords.exclusiveMaximum,
58
- "exclusiveMinimum": keywords.exclusiveMinimum,
59
- "maxItems": keywords.maxItems,
60
- "maxLength": keywords.maxLength,
61
- "maxProperties": keywords.maxProperties,
62
- "maximum": keywords.maximum,
63
- "minItems": keywords.minItems,
64
- "minLength": keywords.minLength,
65
- "minProperties": keywords.minProperties,
66
- "minimum": keywords.minimum,
67
- "multipleOf": keywords.multipleOf,
68
- "pattern": keywords.pattern,
69
- "required": keywords.required,
70
- "type": keywords.type,
71
- "uniqueItems": keywords.uniqueItems
72
- });
73
-
74
- Schema.add(JSON.parse(metaDataMetaSchema));
75
- Core.defineVocabulary("https://json-schema.org/draft/2019-09/vocab/meta-data", {
76
- "default": keywords.metaData,
77
- "deprecated": keywords.metaData,
78
- "description": keywords.metaData,
79
- "examples": keywords.metaData,
80
- "readOnly": keywords.metaData,
81
- "title": keywords.metaData,
82
- "writeOnly": keywords.metaData
83
- });
84
-
85
- Schema.add(JSON.parse(formatMetaSchema));
86
-
87
- Schema.add(JSON.parse(contentMetaSchema));
88
- Core.defineVocabulary("https://json-schema.org/draft/2019-09/vocab/content", {
89
- "contentEncoding": keywords.metaData,
90
- "contentMediaType": keywords.metaData,
91
- "contentSchema": keywords.metaData
92
- });
@@ -1,103 +0,0 @@
1
- const { Core, Schema } = require("@hyperjump/json-schema-core");
2
- const keywords = require("./keywords");
3
- const metaSchema = require("../meta/draft/2020-12/schema");
4
- const coreMetaSchema = require("../meta/draft/2020-12/meta/core");
5
- const applicatorMetaSchema = require("../meta/draft/2020-12/meta/applicator");
6
- const validationMetaSchema = require("../meta/draft/2020-12/meta/validation");
7
- const metaDataMetaSchema = require("../meta/draft/2020-12/meta/meta-data");
8
- const formatAnnotationMetaSchema = require("../meta/draft/2020-12/meta/format-annotation");
9
- const formatAssertionMetaSchema = require("../meta/draft/2020-12/meta/format-assertion");
10
- const contentMetaSchema = require("../meta/draft/2020-12/meta/content");
11
- const unevaluatedMetaSchema = require("../meta/draft/2020-12/meta/unevaluated");
12
-
13
-
14
- const jsonSchemaVersion = "https://json-schema.org/draft/2020-12/vocab/core";
15
-
16
- Schema.setConfig(jsonSchemaVersion, "baseToken", "$id");
17
- Schema.setConfig(jsonSchemaVersion, "embeddedToken", "$id");
18
- Schema.setConfig(jsonSchemaVersion, "anchorToken", "$anchor");
19
- Schema.setConfig(jsonSchemaVersion, "dynamicAnchorToken", "$dynamicAnchor");
20
- Schema.setConfig(jsonSchemaVersion, "vocabularyToken", "$vocabulary");
21
- Schema.setConfig(jsonSchemaVersion, "mandatoryVocabularies", ["https://json-schema.org/draft/2020-12/vocab/core"]);
22
-
23
- Schema.add(JSON.parse(metaSchema));
24
-
25
- Schema.add(JSON.parse(coreMetaSchema));
26
- Core.defineVocabulary("https://json-schema.org/draft/2020-12/vocab/core", {
27
- "validate": keywords.validate,
28
- "$defs": keywords.definitions,
29
- "$dynamicRef": keywords.dynamicRef,
30
- "$ref": keywords.ref
31
- });
32
-
33
- Schema.add(JSON.parse(applicatorMetaSchema));
34
- Core.defineVocabulary("https://json-schema.org/draft/2020-12/vocab/applicator", {
35
- "additionalProperties": keywords.additionalProperties6,
36
- "allOf": keywords.allOf,
37
- "anyOf": keywords.anyOf,
38
- "contains": keywords.containsMinContainsMaxContains,
39
- "dependentSchemas": keywords.dependentSchemas,
40
- "if": keywords.if,
41
- "then": keywords.then,
42
- "else": keywords.else,
43
- "items": keywords.items202012,
44
- "not": keywords.not,
45
- "oneOf": keywords.oneOf,
46
- "patternProperties": keywords.patternProperties,
47
- "prefixItems": keywords.tupleItems,
48
- "properties": keywords.properties,
49
- "propertyNames": keywords.propertyNames
50
- });
51
-
52
- Schema.add(JSON.parse(validationMetaSchema));
53
- Core.defineVocabulary("https://json-schema.org/draft/2020-12/vocab/validation", {
54
- "const": keywords.const,
55
- "dependentRequired": keywords.dependentRequired,
56
- "enum": keywords.enum,
57
- "exclusiveMaximum": keywords.exclusiveMaximum,
58
- "exclusiveMinimum": keywords.exclusiveMinimum,
59
- "maxItems": keywords.maxItems,
60
- "maxLength": keywords.maxLength,
61
- "maxProperties": keywords.maxProperties,
62
- "maximum": keywords.maximum,
63
- "minItems": keywords.minItems,
64
- "minLength": keywords.minLength,
65
- "minProperties": keywords.minProperties,
66
- "minimum": keywords.minimum,
67
- "multipleOf": keywords.multipleOf,
68
- "pattern": keywords.pattern,
69
- "required": keywords.required,
70
- "type": keywords.type,
71
- "uniqueItems": keywords.uniqueItems
72
- });
73
-
74
- Schema.add(JSON.parse(metaDataMetaSchema));
75
- Core.defineVocabulary("https://json-schema.org/draft/2020-12/vocab/meta-data", {
76
- "default": keywords.metaData,
77
- "deprecated": keywords.metaData,
78
- "description": keywords.metaData,
79
- "examples": keywords.metaData,
80
- "readOnly": keywords.metaData,
81
- "title": keywords.metaData,
82
- "writeOnly": keywords.metaData
83
- });
84
-
85
- Schema.add(JSON.parse(formatAnnotationMetaSchema));
86
- Core.defineVocabulary("https://json-schema.org/draft/2020-12/vocab/format-annotation", {
87
- "format": keywords.metaData
88
- });
89
-
90
- Schema.add(JSON.parse(formatAssertionMetaSchema));
91
-
92
- Schema.add(JSON.parse(contentMetaSchema));
93
- Core.defineVocabulary("https://json-schema.org/draft/2020-12/vocab/content", {
94
- "contentEncoding": keywords.metaData,
95
- "contentMediaType": keywords.metaData,
96
- "contentSchema": keywords.metaData
97
- });
98
-
99
- Schema.add(JSON.parse(unevaluatedMetaSchema));
100
- Core.defineVocabulary("https://json-schema.org/draft/2020-12/vocab/unevaluated", {
101
- "unevaluatedItems": keywords.unevaluatedItems,
102
- "unevaluatedProperties": keywords.unevaluatedProperties
103
- });
package/lib/index.mjs DELETED
@@ -1,19 +0,0 @@
1
- import JsonSchema from "./index.js";
2
-
3
-
4
- export const add = JsonSchema.add;
5
- export const get = JsonSchema.get;
6
- export const validate = JsonSchema.validate;
7
- export const compile = JsonSchema.compile;
8
- export const interpret = JsonSchema.interpret;
9
- export const setMetaOutputFormat = JsonSchema.setMetaOutputFormat;
10
- export const setShouldMetaValidate = JsonSchema.setShouldMetaValidate;
11
- export const addMediaTypePlugin = JsonSchema.addMediaTypePlugin;
12
- export const FLAG = JsonSchema.FLAG;
13
- export const BASIC = JsonSchema.BASIC;
14
- export const DETAILED = JsonSchema.DETAILED;
15
- export const VERBOSE = JsonSchema.VERBOSE;
16
- export const Keywords = JsonSchema.Keywords;
17
- export const InvalidSchemaError = JsonSchema.InvalidSchemaError;
18
-
19
- export default JsonSchema;
@@ -1,27 +0,0 @@
1
- const { Core, Schema, Instance } = require("@hyperjump/json-schema-core");
2
-
3
-
4
- const compile = async (schema, ast, parentSchema) => {
5
- const items = await Schema.step("items", parentSchema);
6
- const numberOfItems = Schema.typeOf(items, "array") ? Schema.length(items) : Number.MAX_SAFE_INTEGER;
7
-
8
- if (Schema.typeOf(schema, "boolean")) {
9
- return [numberOfItems, Schema.value(schema)];
10
- } else {
11
- return [numberOfItems, await Core.compileSchema(schema, ast)];
12
- }
13
- };
14
-
15
- const interpret = ([numberOfItems, additionalItems], instance, ast, dynamicAnchors) => {
16
- if (!Instance.typeOf(instance, "array")) {
17
- return true;
18
- }
19
-
20
- if (typeof additionalItems === "string") {
21
- return Instance.every((item, ndx) => ndx < numberOfItems || Core.interpretSchema(additionalItems, item, ast, dynamicAnchors), instance);
22
- } else {
23
- return Instance.every((item, ndx) => ndx < numberOfItems ? true : additionalItems, instance);
24
- }
25
- };
26
-
27
- module.exports = { compile, interpret };
@@ -1,23 +0,0 @@
1
- const { Core, Schema, Instance } = require("@hyperjump/json-schema-core");
2
-
3
-
4
- const compile = async (schema, ast, parentSchema) => {
5
- const items = await Schema.step("items", parentSchema);
6
- const numberOfItems = Schema.typeOf(items, "array") ? Schema.length(items) : Number.MAX_SAFE_INTEGER;
7
-
8
- return [numberOfItems, await Core.compileSchema(schema, ast)];
9
- };
10
-
11
- const interpret = ([numberOfItems, additionalItems], instance, ast, dynamicAnchors) => {
12
- if (!Instance.typeOf(instance, "array")) {
13
- return true;
14
- }
15
-
16
- return Instance.every((item, ndx) => ndx < numberOfItems || Core.interpretSchema(additionalItems, item, ast, dynamicAnchors), instance);
17
- };
18
-
19
- const collectEvaluatedItems = (keywordValue, instance, ast, dynamicAnchors) => {
20
- return interpret(keywordValue, instance, ast, dynamicAnchors) && new Set(Instance.map((item, ndx) => ndx, instance));
21
- };
22
-
23
- module.exports = { compile, interpret, collectEvaluatedItems };
@@ -1,28 +0,0 @@
1
- const { Core, Schema, Instance } = require("@hyperjump/json-schema-core");
2
-
3
-
4
- const compile = async (schema, ast, parentSchema) => {
5
- const propertiesSchema = await Schema.step("properties", parentSchema);
6
- const propertyNames = Schema.typeOf(propertiesSchema, "object") ? Schema.keys(propertiesSchema) : [];
7
-
8
- const patternProperties = await Schema.step("patternProperties", parentSchema);
9
- const propertyNamePatterns = Schema.typeOf(patternProperties, "object") ? Schema.keys(patternProperties).map((pattern) => new RegExp(pattern)) : [];
10
-
11
- return [propertyNames, propertyNamePatterns, await Core.compileSchema(schema, ast)];
12
- };
13
-
14
- const interpret = ([propertyNames, propertyNamePatterns, additionalProperties], instance, ast, dynamicAnchors) => {
15
- if (!Instance.typeOf(instance, "object")) {
16
- return true;
17
- }
18
-
19
- return Instance.entries(instance)
20
- .filter(([propertyName]) => !propertyNames.includes(propertyName) && !propertyNamePatterns.some((pattern) => pattern.test(propertyName)))
21
- .every(([, property]) => Core.interpretSchema(additionalProperties, property, ast, dynamicAnchors));
22
- };
23
-
24
- const collectEvaluatedProperties = (keywordValue, instance, ast, dynamicAnchors) => {
25
- return interpret(keywordValue, instance, ast, dynamicAnchors) && [new RegExp("")];
26
- };
27
-
28
- module.exports = { compile, interpret, collectEvaluatedProperties };
@@ -1,53 +0,0 @@
1
- const { Keywords } = require("@hyperjump/json-schema-core");
2
-
3
-
4
- module.exports = {
5
- additionalItems: require("./additionalItems"),
6
- additionalItems6: require("./additionalItems6"),
7
- additionalProperties: require("./additionalProperties"),
8
- additionalProperties6: require("./additionalProperties6"),
9
- allOf: require("./allOf"),
10
- anyOf: require("./anyOf"),
11
- const: require("./const"),
12
- contains: require("./contains"),
13
- containsMinContainsMaxContains: require("./contains-minContains-maxContains"),
14
- definitions: require("./definitions"),
15
- dependencies: require("./dependencies"),
16
- dependentRequired: require("./dependentRequired"),
17
- dependentSchemas: require("./dependentSchemas"),
18
- enum: require("./enum"),
19
- exclusiveMaximum: require("./exclusiveMaximum"),
20
- exclusiveMinimum: require("./exclusiveMinimum"),
21
- if: require("./if"),
22
- then: require("./then"),
23
- else: require("./else"),
24
- items: require("./items"),
25
- items202012: require("./items202012"),
26
- maxItems: require("./maxItems"),
27
- maxLength: require("./maxLength"),
28
- maxProperties: require("./maxProperties"),
29
- maximumExclusiveMaximum: require("./maximum-exclusiveMaximum"),
30
- maximum: require("./maximum"),
31
- metaData: Keywords.metaData,
32
- minItems: require("./minItems"),
33
- minLength: require("./minLength"),
34
- minProperties: require("./minProperties"),
35
- minimumExclusiveMinimum: require("./minimum-exclusiveMinimum"),
36
- minimum: require("./minimum"),
37
- multipleOf: require("./multipleOf"),
38
- not: require("./not"),
39
- oneOf: require("./oneOf"),
40
- pattern: require("./pattern"),
41
- patternProperties: require("./patternProperties"),
42
- properties: require("./properties"),
43
- propertyNames: require("./propertyNames"),
44
- dynamicRef: require("./dynamicRef"),
45
- ref: require("./ref"),
46
- required: require("./required"),
47
- tupleItems: require("./tupleItems"),
48
- type: require("./type"),
49
- unevaluatedItems: require("./unevaluatedItems"),
50
- unevaluatedProperties: require("./unevaluatedProperties"),
51
- uniqueItems: require("./uniqueItems"),
52
- validate: Keywords.validate
53
- };
@@ -1,23 +0,0 @@
1
- const { Core, Schema, Instance } = require("@hyperjump/json-schema-core");
2
-
3
-
4
- const compile = async (schema, ast, parentSchema) => {
5
- const items = await Schema.step("prefixItems", parentSchema);
6
- const numberOfPrefixItems = Schema.typeOf(items, "array") ? Schema.length(items) : 0;
7
-
8
- return [numberOfPrefixItems, await Core.compileSchema(schema, ast)];
9
- };
10
-
11
- const interpret = ([numberOfPrefixItems, items], instance, ast, dynamicAnchors) => {
12
- if (!Instance.typeOf(instance, "array")) {
13
- return true;
14
- }
15
-
16
- return Instance.every((item, ndx) => ndx < numberOfPrefixItems || Core.interpretSchema(items, item, ast, dynamicAnchors), instance);
17
- };
18
-
19
- const collectEvaluatedItems = (keywordValue, instance, ast, dynamicAnchors) => {
20
- return interpret(keywordValue, instance, ast, dynamicAnchors) && new Set(Instance.map((item, ndx) => ndx, instance));
21
- };
22
-
23
- module.exports = { compile, interpret, collectEvaluatedItems };
@@ -1,20 +0,0 @@
1
- const { Schema, Instance } = require("@hyperjump/json-schema-core");
2
-
3
-
4
- const compile = async (schema, ast, parentSchema) => {
5
- const exclusiveMaximum = await Schema.step("exclusiveMaximum", parentSchema);
6
- const isExclusive = Schema.value(exclusiveMaximum);
7
-
8
- return [Schema.value(schema), isExclusive];
9
- };
10
-
11
- const interpret = ([maximum, isExclusive], instance) => {
12
- if (!Instance.typeOf(instance, "number")) {
13
- return true;
14
- }
15
-
16
- const value = Instance.value(instance);
17
- return isExclusive ? value < maximum : value <= maximum;
18
- };
19
-
20
- module.exports = { compile, interpret };
@@ -1,20 +0,0 @@
1
- const { Schema, Instance } = require("@hyperjump/json-schema-core");
2
-
3
-
4
- const compile = async (schema, ast, parentSchema) => {
5
- const exclusiveMinimum = await Schema.step("exclusiveMinimum", parentSchema);
6
- const isExclusive = Schema.value(exclusiveMinimum);
7
-
8
- return [Schema.value(schema), isExclusive];
9
- };
10
-
11
- const interpret = ([minimum, isExclusive], instance) => {
12
- if (!Instance.typeOf(instance, "number")) {
13
- return true;
14
- }
15
-
16
- const value = Instance.value(instance);
17
- return isExclusive ? value > minimum : value >= minimum;
18
- };
19
-
20
- module.exports = { compile, interpret };