@hyperjump/json-schema 0.18.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.
- package/LICENSE +21 -0
- package/README.md +176 -0
- package/dist/json-schema-amd.js +4710 -0
- package/dist/json-schema-amd.js.map +1 -0
- package/dist/json-schema-amd.min.js +2 -0
- package/dist/json-schema-amd.min.js.map +1 -0
- package/dist/json-schema-cjs.js +4708 -0
- package/dist/json-schema-cjs.js.map +1 -0
- package/dist/json-schema-cjs.min.js +2 -0
- package/dist/json-schema-cjs.min.js.map +1 -0
- package/dist/json-schema-esm.js +4691 -0
- package/dist/json-schema-esm.js.map +1 -0
- package/dist/json-schema-esm.min.js +2 -0
- package/dist/json-schema-esm.min.js.map +1 -0
- package/dist/json-schema-iife.js +4713 -0
- package/dist/json-schema-iife.js.map +1 -0
- package/dist/json-schema-iife.min.js +2 -0
- package/dist/json-schema-iife.min.js.map +1 -0
- package/dist/json-schema-system.js +4698 -0
- package/dist/json-schema-system.js.map +1 -0
- package/dist/json-schema-system.min.js +2 -0
- package/dist/json-schema-system.min.js.map +1 -0
- package/dist/json-schema-umd.js +4714 -0
- package/dist/json-schema-umd.js.map +1 -0
- package/dist/json-schema-umd.min.js +2 -0
- package/dist/json-schema-umd.min.js.map +1 -0
- package/lib/common.js +13 -0
- package/lib/draft-04.d.ts +40 -0
- package/lib/draft-04.js +94 -0
- package/lib/draft-06.d.ts +44 -0
- package/lib/draft-06.js +51 -0
- package/lib/draft-07.d.ts +52 -0
- package/lib/draft-07.js +55 -0
- package/lib/draft-2019-09.d.ts +62 -0
- package/lib/draft-2019-09.js +92 -0
- package/lib/draft-2020-12.d.ts +62 -0
- package/lib/draft-2020-12.js +103 -0
- package/lib/index.d.ts +28 -0
- package/lib/index.js +26 -0
- package/lib/index.mjs +18 -0
- package/lib/keywords/additionalItems.js +27 -0
- package/lib/keywords/additionalItems6.js +23 -0
- package/lib/keywords/additionalProperties.js +33 -0
- package/lib/keywords/additionalProperties6.js +28 -0
- package/lib/keywords/allOf.js +28 -0
- package/lib/keywords/anyOf.js +29 -0
- package/lib/keywords/const.js +8 -0
- package/lib/keywords/contains-minContains-maxContains.js +33 -0
- package/lib/keywords/contains.js +10 -0
- package/lib/keywords/definitions.js +15 -0
- package/lib/keywords/dependencies.js +29 -0
- package/lib/keywords/dependentRequired.js +19 -0
- package/lib/keywords/dependentSchemas.js +30 -0
- package/lib/keywords/dynamicRef.js +24 -0
- package/lib/keywords/else.js +43 -0
- package/lib/keywords/enum.js +8 -0
- package/lib/keywords/exclusiveMaximum.js +7 -0
- package/lib/keywords/exclusiveMinimum.js +7 -0
- package/lib/keywords/if.js +19 -0
- package/lib/keywords/index.js +55 -0
- package/lib/keywords/items.js +31 -0
- package/lib/keywords/items202012.js +23 -0
- package/lib/keywords/maxItems.js +7 -0
- package/lib/keywords/maxLength.js +7 -0
- package/lib/keywords/maxLength6.js +7 -0
- package/lib/keywords/maxProperties.js +7 -0
- package/lib/keywords/maximum-exclusiveMaximum.js +20 -0
- package/lib/keywords/maximum.js +7 -0
- package/lib/keywords/minItems.js +7 -0
- package/lib/keywords/minLength.js +7 -0
- package/lib/keywords/minLength6.js +7 -0
- package/lib/keywords/minProperties.js +7 -0
- package/lib/keywords/minimum-exclusiveMinimum.js +20 -0
- package/lib/keywords/minimum.js +7 -0
- package/lib/keywords/multipleOf.js +17 -0
- package/lib/keywords/not.js +7 -0
- package/lib/keywords/oneOf.js +48 -0
- package/lib/keywords/pattern.js +7 -0
- package/lib/keywords/patternProperties.js +23 -0
- package/lib/keywords/properties.js +25 -0
- package/lib/keywords/propertyNames.js +11 -0
- package/lib/keywords/ref.js +13 -0
- package/lib/keywords/required.js +10 -0
- package/lib/keywords/then.js +43 -0
- package/lib/keywords/tupleItems.js +24 -0
- package/lib/keywords/type.js +7 -0
- package/lib/keywords/unevaluatedItems.js +23 -0
- package/lib/keywords/unevaluatedProperties.js +24 -0
- package/lib/keywords/uniqueItems.js +16 -0
- package/meta/draft/2019-09/meta/applicator.js +55 -0
- package/meta/draft/2019-09/meta/content.js +17 -0
- package/meta/draft/2019-09/meta/core.js +57 -0
- package/meta/draft/2019-09/meta/format.js +14 -0
- package/meta/draft/2019-09/meta/meta-data.js +37 -0
- package/meta/draft/2019-09/meta/validation.js +98 -0
- package/meta/draft/2019-09/schema.js +42 -0
- package/meta/draft/2020-12/meta/applicator.js +49 -0
- package/meta/draft/2020-12/meta/content.js +17 -0
- package/meta/draft/2020-12/meta/core.js +57 -0
- package/meta/draft/2020-12/meta/format-annotation.js +14 -0
- package/meta/draft/2020-12/meta/format-assertion.js +14 -0
- package/meta/draft/2020-12/meta/meta-data.js +37 -0
- package/meta/draft/2020-12/meta/unevaluated.js +15 -0
- package/meta/draft/2020-12/meta/validation.js +98 -0
- package/meta/draft/2020-12/schema.js +44 -0
- package/meta/draft-04/hyper-schema.js +136 -0
- package/meta/draft-04/schema.js +149 -0
- package/meta/draft-06/schema.js +154 -0
- package/meta/draft-07/schema.js +172 -0
- package/package.json +57 -0
package/lib/common.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const isObject = (value) => typeof value === "object" && !Array.isArray(value) && value !== null;
|
|
2
|
+
const escapeRegExp = (string) => string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&");
|
|
3
|
+
|
|
4
|
+
const splitUrl = (url) => {
|
|
5
|
+
const indexOfHash = url.indexOf("#");
|
|
6
|
+
const ndx = indexOfHash === -1 ? url.length : indexOfHash;
|
|
7
|
+
const urlReference = url.slice(0, ndx);
|
|
8
|
+
const urlFragment = url.slice(ndx + 1);
|
|
9
|
+
|
|
10
|
+
return [decodeURI(urlReference), decodeURI(urlFragment)];
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
module.exports = { isObject, escapeRegExp, splitUrl };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { Json, JsonType } from "@hyperjump/json-schema-core";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
export type Draft04Schema = {
|
|
5
|
+
$ref: string;
|
|
6
|
+
} | {
|
|
7
|
+
$schema?: "http://json-schema.org/draft-04/schema#";
|
|
8
|
+
id?: string;
|
|
9
|
+
title?: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
default?: Json;
|
|
12
|
+
multipleOf?: number;
|
|
13
|
+
maximum?: number;
|
|
14
|
+
exclusiveMaximum?: boolean;
|
|
15
|
+
minimum?: number;
|
|
16
|
+
exclusiveMinimum?: boolean;
|
|
17
|
+
maxLength?: number;
|
|
18
|
+
minLength?: number;
|
|
19
|
+
pattern?: string;
|
|
20
|
+
additionalItems?: boolean | Draft04Schema;
|
|
21
|
+
items?: Draft04Schema | Draft04Schema[];
|
|
22
|
+
maxItems?: number;
|
|
23
|
+
minItems?: number;
|
|
24
|
+
uniqueItems?: boolean;
|
|
25
|
+
maxProperties?: number;
|
|
26
|
+
minProperties?: number;
|
|
27
|
+
required?: string[];
|
|
28
|
+
additionalProperties?: boolean | Draft04Schema;
|
|
29
|
+
definitions?: Record<string, Draft04Schema>;
|
|
30
|
+
properties?: Record<string, Draft04Schema>;
|
|
31
|
+
patternProperties?: Record<string, Draft04Schema>;
|
|
32
|
+
dependencies?: Record<string, Draft04Schema | string[]>;
|
|
33
|
+
enum?: Json[];
|
|
34
|
+
type?: JsonType | JsonType[];
|
|
35
|
+
format?: "date-time" | "email" | "hostname" | "ipv4" | "ipv6" | "uri";
|
|
36
|
+
allOf?: Draft04Schema[];
|
|
37
|
+
anyOf?: Draft04Schema[];
|
|
38
|
+
oneOf?: Draft04Schema[];
|
|
39
|
+
not?: Draft04Schema;
|
|
40
|
+
};
|
package/lib/draft-04.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
const { Core, Schema } = require("@hyperjump/json-schema-core");
|
|
2
|
+
const keywords = require("./keywords");
|
|
3
|
+
const metaSchema = require("../meta/draft-04/schema");
|
|
4
|
+
const metaHyperSchema = require("../meta/draft-04/hyper-schema");
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
// JSON Schema Draft-04
|
|
8
|
+
const schemaVersion = "http://json-schema.org/draft-04/schema";
|
|
9
|
+
|
|
10
|
+
Schema.setConfig(schemaVersion, "baseToken", "id");
|
|
11
|
+
Schema.setConfig(schemaVersion, "embeddedToken", "id");
|
|
12
|
+
Schema.setConfig(schemaVersion, "anchorToken", "id");
|
|
13
|
+
Schema.setConfig(schemaVersion, "jrefToken", "$ref");
|
|
14
|
+
|
|
15
|
+
Schema.add(JSON.parse(metaSchema));
|
|
16
|
+
Core.defineVocabulary(schemaVersion, {
|
|
17
|
+
"validate": keywords.validate,
|
|
18
|
+
"additionalItems": keywords.additionalItems,
|
|
19
|
+
"additionalProperties": keywords.additionalProperties,
|
|
20
|
+
"allOf": keywords.allOf,
|
|
21
|
+
"anyOf": keywords.anyOf,
|
|
22
|
+
"default": keywords.metaData,
|
|
23
|
+
"definitions": keywords.definitions,
|
|
24
|
+
"dependencies": keywords.dependencies,
|
|
25
|
+
"description": keywords.metaData,
|
|
26
|
+
"enum": keywords.enum,
|
|
27
|
+
"format": keywords.metaData,
|
|
28
|
+
"items": keywords.items,
|
|
29
|
+
"maxItems": keywords.maxItems,
|
|
30
|
+
"maxLength": keywords.maxLength,
|
|
31
|
+
"maxProperties": keywords.maxProperties,
|
|
32
|
+
"maximum": keywords.maximumExclusiveMaximum,
|
|
33
|
+
"minItems": keywords.minItems,
|
|
34
|
+
"minLength": keywords.minLength,
|
|
35
|
+
"minProperties": keywords.minProperties,
|
|
36
|
+
"minimum": keywords.minimumExclusiveMinimum,
|
|
37
|
+
"multipleOf": keywords.multipleOf,
|
|
38
|
+
"not": keywords.not,
|
|
39
|
+
"oneOf": keywords.oneOf,
|
|
40
|
+
"pattern": keywords.pattern,
|
|
41
|
+
"patternProperties": keywords.patternProperties,
|
|
42
|
+
"properties": keywords.properties,
|
|
43
|
+
"required": keywords.required,
|
|
44
|
+
"title": keywords.metaData,
|
|
45
|
+
"type": keywords.type,
|
|
46
|
+
"uniqueItems": keywords.uniqueItems
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
// JSON Hyper-Schema Draft-04
|
|
50
|
+
const hyperSchemaVersion = "http://json-schema.org/draft-04/hyper-schema";
|
|
51
|
+
|
|
52
|
+
Schema.setConfig(hyperSchemaVersion, "baseToken", "id");
|
|
53
|
+
Schema.setConfig(hyperSchemaVersion, "embeddedToken", "id");
|
|
54
|
+
Schema.setConfig(hyperSchemaVersion, "anchorToken", "id");
|
|
55
|
+
Schema.setConfig(hyperSchemaVersion, "jrefToken", "$ref");
|
|
56
|
+
|
|
57
|
+
Schema.add(JSON.parse(metaHyperSchema));
|
|
58
|
+
Core.defineVocabulary(hyperSchemaVersion, {
|
|
59
|
+
"validate": keywords.validate,
|
|
60
|
+
"additionalItems": keywords.additionalItems,
|
|
61
|
+
"additionalProperties": keywords.additionalProperties,
|
|
62
|
+
"allOf": keywords.allOf,
|
|
63
|
+
"anyOf": keywords.anyOf,
|
|
64
|
+
"default": keywords.metaData,
|
|
65
|
+
"definitions": keywords.definitions,
|
|
66
|
+
"dependencies": keywords.dependencies,
|
|
67
|
+
"description": keywords.metaData,
|
|
68
|
+
"enum": keywords.enum,
|
|
69
|
+
"format": keywords.metaData,
|
|
70
|
+
"fragmentResolution": keywords.metaData,
|
|
71
|
+
"items": keywords.items,
|
|
72
|
+
"maxItems": keywords.maxItems,
|
|
73
|
+
"minProperties": keywords.minProperties,
|
|
74
|
+
"maxProperties": keywords.maxProperties,
|
|
75
|
+
"maximum": keywords.maximumExclusiveMaximum,
|
|
76
|
+
"media": keywords.metaData,
|
|
77
|
+
"minItems": keywords.minItems,
|
|
78
|
+
"minLength": keywords.minLength,
|
|
79
|
+
"maxLength": keywords.maxLength,
|
|
80
|
+
"minimum": keywords.minimumExclusiveMinimum,
|
|
81
|
+
"multipleOf": keywords.multipleOf,
|
|
82
|
+
"links": keywords.metaData,
|
|
83
|
+
"not": keywords.not,
|
|
84
|
+
"oneOf": keywords.oneOf,
|
|
85
|
+
"pathStart": keywords.metaData,
|
|
86
|
+
"pattern": keywords.pattern,
|
|
87
|
+
"patternProperties": keywords.patternProperties,
|
|
88
|
+
"properties": keywords.properties,
|
|
89
|
+
"readOnly": keywords.metaData,
|
|
90
|
+
"required": keywords.required,
|
|
91
|
+
"title": keywords.metaData,
|
|
92
|
+
"type": keywords.type,
|
|
93
|
+
"uniqueItems": keywords.uniqueItems
|
|
94
|
+
});
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { Json, JsonType } from "@hyperjump/json-schema-core";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
export type Draft06Schema = boolean | {
|
|
5
|
+
$ref: string;
|
|
6
|
+
} | {
|
|
7
|
+
$schema?: "http://json-schema.org/draft-06/schema#";
|
|
8
|
+
$id?: string;
|
|
9
|
+
title?: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
default?: Json;
|
|
12
|
+
examples?: Json[];
|
|
13
|
+
multipleOf?: number;
|
|
14
|
+
maximum?: number;
|
|
15
|
+
exclusiveMaximum?: number;
|
|
16
|
+
minimum?: number;
|
|
17
|
+
exclusiveMinimum?: number;
|
|
18
|
+
maxLength?: number;
|
|
19
|
+
minLength?: number;
|
|
20
|
+
pattern?: string;
|
|
21
|
+
additionalItems?: Draft06Schema;
|
|
22
|
+
items?: Draft06Schema | Draft06Schema[];
|
|
23
|
+
maxItems?: number;
|
|
24
|
+
minItems?: number;
|
|
25
|
+
uniqueItems?: boolean;
|
|
26
|
+
contains?: Draft06Schema;
|
|
27
|
+
maxProperties?: number;
|
|
28
|
+
minProperties?: number;
|
|
29
|
+
required?: string[];
|
|
30
|
+
additionalProperties?: Draft06Schema;
|
|
31
|
+
definitions?: Record<string, Draft06Schema>;
|
|
32
|
+
properties?: Record<string, Draft06Schema>;
|
|
33
|
+
patternProperties?: Record<string, Draft06Schema>;
|
|
34
|
+
dependencies?: Record<string, Draft06Schema | string[]>;
|
|
35
|
+
propertyNames?: Draft06Schema;
|
|
36
|
+
const?: Json;
|
|
37
|
+
enum?: Json[];
|
|
38
|
+
type?: JsonType | JsonType[];
|
|
39
|
+
format?: "date-time" | "email" | "hostname" | "ipv4" | "ipv6" | "uri" | "uri-reference" | "uri-template" | "json-pointer";
|
|
40
|
+
allOf?: Draft06Schema[];
|
|
41
|
+
anyOf?: Draft06Schema[];
|
|
42
|
+
oneOf?: Draft06Schema[];
|
|
43
|
+
not?: Draft06Schema;
|
|
44
|
+
};
|
package/lib/draft-06.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
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 schemaVersion = "http://json-schema.org/draft-06/schema";
|
|
7
|
+
|
|
8
|
+
Schema.setConfig(schemaVersion, "baseToken", "$id");
|
|
9
|
+
Schema.setConfig(schemaVersion, "embeddedToken", "$id");
|
|
10
|
+
Schema.setConfig(schemaVersion, "anchorToken", "$id");
|
|
11
|
+
Schema.setConfig(schemaVersion, "jrefToken", "$ref");
|
|
12
|
+
|
|
13
|
+
Schema.add(JSON.parse(metaSchema));
|
|
14
|
+
Core.defineVocabulary(schemaVersion, {
|
|
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.maxLength6,
|
|
34
|
+
"maxProperties": keywords.maxProperties,
|
|
35
|
+
"maximum": keywords.maximum,
|
|
36
|
+
"minItems": keywords.minItems,
|
|
37
|
+
"minLength": keywords.minLength6,
|
|
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
|
+
});
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Json, JsonType } from "@hyperjump/json-schema-core";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
export type Draft07Schema = boolean | {
|
|
5
|
+
$ref: string;
|
|
6
|
+
} | {
|
|
7
|
+
$schema?: "http://json-schema.org/draft-07/schema#";
|
|
8
|
+
$id?: string;
|
|
9
|
+
$comment?: string;
|
|
10
|
+
title?: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
default?: Json;
|
|
13
|
+
readOnly?: boolean;
|
|
14
|
+
writeOnly?: boolean;
|
|
15
|
+
examples?: Json[];
|
|
16
|
+
multipleOf?: number;
|
|
17
|
+
maximum?: number;
|
|
18
|
+
exclusiveMaximum?: number;
|
|
19
|
+
minimum?: number;
|
|
20
|
+
exclusiveMinimum?: number;
|
|
21
|
+
maxLength?: number;
|
|
22
|
+
minLength?: number;
|
|
23
|
+
pattern?: string;
|
|
24
|
+
additionalItems?: Draft07Schema;
|
|
25
|
+
items?: Draft07Schema | Draft07Schema[];
|
|
26
|
+
maxItems?: number;
|
|
27
|
+
minItems?: number;
|
|
28
|
+
uniqueItems?: boolean;
|
|
29
|
+
contains?: Draft07Schema;
|
|
30
|
+
maxProperties?: number;
|
|
31
|
+
minProperties?: number;
|
|
32
|
+
required?: string[];
|
|
33
|
+
additionalProperties?: Draft07Schema;
|
|
34
|
+
definitions?: Record<string, Draft07Schema>;
|
|
35
|
+
properties?: Record<string, Draft07Schema>;
|
|
36
|
+
patternProperties?: Record<string, Draft07Schema>;
|
|
37
|
+
dependencies?: Record<string, Draft07Schema | string[]>;
|
|
38
|
+
propertyNames?: Draft07Schema;
|
|
39
|
+
const?: Draft07Schema;
|
|
40
|
+
enum?: Json[];
|
|
41
|
+
type?: JsonType | JsonType[];
|
|
42
|
+
format?: "date-time" | "date" | "time" | "email" | "idn-email" | "hostname" | "idn-hostname" | "ipv4" | "ipv6" | "uri" | "uri-reference" | "iri" | "iri-reference" | "uri-template" | "json-pointer" | "relative-json-pointer" | "regex";
|
|
43
|
+
contentMediaType?: string;
|
|
44
|
+
contentEncoding?: string;
|
|
45
|
+
if?: Draft07Schema;
|
|
46
|
+
then?: Draft07Schema;
|
|
47
|
+
else?: Draft07Schema;
|
|
48
|
+
allOf?: Draft07Schema[];
|
|
49
|
+
anyOf?: Draft07Schema[];
|
|
50
|
+
oneOf?: Draft07Schema[];
|
|
51
|
+
not?: Draft07Schema;
|
|
52
|
+
};
|
package/lib/draft-07.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
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 schemaVersion = "http://json-schema.org/draft-07/schema";
|
|
7
|
+
|
|
8
|
+
Schema.setConfig(schemaVersion, "baseToken", "$id");
|
|
9
|
+
Schema.setConfig(schemaVersion, "embeddedToken", "$id");
|
|
10
|
+
Schema.setConfig(schemaVersion, "anchorToken", "$id");
|
|
11
|
+
Schema.setConfig(schemaVersion, "jrefToken", "$ref");
|
|
12
|
+
|
|
13
|
+
Schema.add(JSON.parse(metaSchema));
|
|
14
|
+
Core.defineVocabulary(schemaVersion, {
|
|
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.maxLength6,
|
|
36
|
+
"maxProperties": keywords.maxProperties,
|
|
37
|
+
"maximum": keywords.maximum,
|
|
38
|
+
"minItems": keywords.minItems,
|
|
39
|
+
"minLength": keywords.minLength6,
|
|
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
|
+
});
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { Json, JsonType } from "@hyperjump/json-schema-core";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
export type Draft201909Schema = boolean | {
|
|
5
|
+
$schema?: "https://json-schema.org/draft/2019-09/schema";
|
|
6
|
+
$id?: string;
|
|
7
|
+
$anchor?: string;
|
|
8
|
+
$ref?: string;
|
|
9
|
+
$recursiveRef?: "#";
|
|
10
|
+
$recursiveAnchor?: boolean;
|
|
11
|
+
$vocabulary?: Record<string, boolean>;
|
|
12
|
+
$comment?: string;
|
|
13
|
+
$defs?: Record<string, Draft201909Schema>;
|
|
14
|
+
additionalItems?: Draft201909Schema;
|
|
15
|
+
unevaluatedItems?: Draft201909Schema;
|
|
16
|
+
items?: Draft201909Schema | Draft201909Schema[];
|
|
17
|
+
contains?: Draft201909Schema;
|
|
18
|
+
additionalProperties?: Draft201909Schema;
|
|
19
|
+
unevaluatedProperties?: Draft201909Schema;
|
|
20
|
+
properties?: Record<string, Draft201909Schema>;
|
|
21
|
+
patternProperties?: Record<string, Draft201909Schema>;
|
|
22
|
+
dependentSchema?: Record<string, Draft201909Schema>;
|
|
23
|
+
propertyNames?: Draft201909Schema;
|
|
24
|
+
if?: Draft201909Schema;
|
|
25
|
+
then?: Draft201909Schema;
|
|
26
|
+
else?: Draft201909Schema;
|
|
27
|
+
allOf?: Draft201909Schema[];
|
|
28
|
+
anyOf?: Draft201909Schema[];
|
|
29
|
+
oneOf?: Draft201909Schema[];
|
|
30
|
+
not?: Draft201909Schema;
|
|
31
|
+
multipleOf?: number;
|
|
32
|
+
maximum?: number;
|
|
33
|
+
exclusiveMaximum?: number;
|
|
34
|
+
minimum?: number;
|
|
35
|
+
exclusiveMinimum?: number;
|
|
36
|
+
maxLength?: number;
|
|
37
|
+
minLength?: number;
|
|
38
|
+
pattern?: string;
|
|
39
|
+
maxItems?: number;
|
|
40
|
+
minItems?: number;
|
|
41
|
+
uniqueItems?: boolean;
|
|
42
|
+
maxContains?: number;
|
|
43
|
+
minContains?: number;
|
|
44
|
+
maxProperties?: number;
|
|
45
|
+
minProperties?: number;
|
|
46
|
+
required?: string[];
|
|
47
|
+
dependentRequired?: Record<string, string[]>;
|
|
48
|
+
const?: Draft201909Schema;
|
|
49
|
+
enum?: Json[];
|
|
50
|
+
type?: JsonType | JsonType[];
|
|
51
|
+
title?: string;
|
|
52
|
+
description?: string;
|
|
53
|
+
default?: Json;
|
|
54
|
+
deprecated?: boolean;
|
|
55
|
+
readOnly?: boolean;
|
|
56
|
+
writeOnly?: boolean;
|
|
57
|
+
examples?: Json[];
|
|
58
|
+
format?: "date-time" | "date" | "time" | "duration" | "email" | "idn-email" | "hostname" | "idn-hostname" | "ipv4" | "ipv6" | "uri" | "uri-reference" | "iri" | "iri-reference" | "uuid" | "uri-template" | "json-pointer" | "relative-json-pointer" | "regex";
|
|
59
|
+
contentMediaType?: string;
|
|
60
|
+
contentEncoding?: string;
|
|
61
|
+
contentSchema?: Draft201909Schema;
|
|
62
|
+
};
|
|
@@ -0,0 +1,92 @@
|
|
|
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 schemaVersion = "https://json-schema.org/draft/2019-09/schema";
|
|
13
|
+
|
|
14
|
+
Schema.setConfig(schemaVersion, "baseToken", "$id");
|
|
15
|
+
Schema.setConfig(schemaVersion, "embeddedToken", "$id");
|
|
16
|
+
Schema.setConfig(schemaVersion, "anchorToken", "$anchor");
|
|
17
|
+
Schema.setConfig(schemaVersion, "recursiveAnchorToken", "$recursiveAnchor");
|
|
18
|
+
Schema.setConfig(schemaVersion, "vocabularyToken", "$vocabulary");
|
|
19
|
+
Schema.setConfig(schemaVersion, "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.maxLength6,
|
|
61
|
+
"maxProperties": keywords.maxProperties,
|
|
62
|
+
"maximum": keywords.maximum,
|
|
63
|
+
"minItems": keywords.minItems,
|
|
64
|
+
"minLength": keywords.minLength6,
|
|
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
|
+
});
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { Json, JsonType } from "@hyperjump/json-schema-core";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
export type Draft202012Schema = boolean | {
|
|
5
|
+
$schema?: "https://json-schema.org/draft/2020-12/schema";
|
|
6
|
+
$id?: string;
|
|
7
|
+
$anchor?: string;
|
|
8
|
+
$ref?: string;
|
|
9
|
+
$dynamicRef?: string;
|
|
10
|
+
$dynamicAnchor?: string;
|
|
11
|
+
$vocabulary?: Record<string, boolean>;
|
|
12
|
+
$comment?: string;
|
|
13
|
+
$defs?: Record<string, Draft202012Schema>;
|
|
14
|
+
additionalItems?: Draft202012Schema;
|
|
15
|
+
unevaluatedItems?: Draft202012Schema;
|
|
16
|
+
items?: Draft202012Schema | Draft202012Schema[];
|
|
17
|
+
contains?: Draft202012Schema;
|
|
18
|
+
additionalProperties?: Draft202012Schema;
|
|
19
|
+
unevaluatedProperties?: Draft202012Schema;
|
|
20
|
+
properties?: Record<string, Draft202012Schema>;
|
|
21
|
+
patternProperties?: Record<string, Draft202012Schema>;
|
|
22
|
+
dependentSchema?: Record<string, Draft202012Schema>;
|
|
23
|
+
propertyNames?: Draft202012Schema;
|
|
24
|
+
if?: Draft202012Schema;
|
|
25
|
+
then?: Draft202012Schema;
|
|
26
|
+
else?: Draft202012Schema;
|
|
27
|
+
allOf?: Draft202012Schema[];
|
|
28
|
+
anyOf?: Draft202012Schema[];
|
|
29
|
+
oneOf?: Draft202012Schema[];
|
|
30
|
+
not?: Draft202012Schema;
|
|
31
|
+
multipleOf?: number;
|
|
32
|
+
maximum?: number;
|
|
33
|
+
exclusiveMaximum?: number;
|
|
34
|
+
minimum?: number;
|
|
35
|
+
exclusiveMinimum?: number;
|
|
36
|
+
maxLength?: number;
|
|
37
|
+
minLength?: number;
|
|
38
|
+
pattern?: string;
|
|
39
|
+
maxItems?: number;
|
|
40
|
+
minItems?: number;
|
|
41
|
+
uniqueItems?: boolean;
|
|
42
|
+
maxContains?: number;
|
|
43
|
+
minContains?: number;
|
|
44
|
+
maxProperties?: number;
|
|
45
|
+
minProperties?: number;
|
|
46
|
+
required?: string[];
|
|
47
|
+
dependentRequired?: Record<string, string[]>;
|
|
48
|
+
const?: Draft202012Schema;
|
|
49
|
+
enum?: Json[];
|
|
50
|
+
type?: JsonType | JsonType[];
|
|
51
|
+
title?: string;
|
|
52
|
+
description?: string;
|
|
53
|
+
default?: Json;
|
|
54
|
+
deprecated?: boolean;
|
|
55
|
+
readOnly?: boolean;
|
|
56
|
+
writeOnly?: boolean;
|
|
57
|
+
examples?: Json[];
|
|
58
|
+
format?: "date-time" | "date" | "time" | "duration" | "email" | "idn-email" | "hostname" | "idn-hostname" | "ipv4" | "ipv6" | "uri" | "uri-reference" | "iri" | "iri-reference" | "uuid" | "uri-template" | "json-pointer" | "relative-json-pointer" | "regex";
|
|
59
|
+
contentMediaType?: string;
|
|
60
|
+
contentEncoding?: string;
|
|
61
|
+
contentSchema?: Draft202012Schema;
|
|
62
|
+
};
|
|
@@ -0,0 +1,103 @@
|
|
|
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 schemaVersion = "https://json-schema.org/draft/2020-12/schema";
|
|
15
|
+
|
|
16
|
+
Schema.setConfig(schemaVersion, "baseToken", "$id");
|
|
17
|
+
Schema.setConfig(schemaVersion, "embeddedToken", "$id");
|
|
18
|
+
Schema.setConfig(schemaVersion, "anchorToken", "$anchor");
|
|
19
|
+
Schema.setConfig(schemaVersion, "dynamicAnchorToken", "$dynamicAnchor");
|
|
20
|
+
Schema.setConfig(schemaVersion, "vocabularyToken", "$vocabulary");
|
|
21
|
+
Schema.setConfig(schemaVersion, "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.maxLength6,
|
|
61
|
+
"maxProperties": keywords.maxProperties,
|
|
62
|
+
"maximum": keywords.maximum,
|
|
63
|
+
"minItems": keywords.minItems,
|
|
64
|
+
"minLength": keywords.minLength6,
|
|
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
|
+
});
|