json-schema-library 11.1.0 → 11.3.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 (82) hide show
  1. package/.mocharc.js +1 -0
  2. package/CHANGELOG.md +11 -0
  3. package/README.md +21 -13
  4. package/bowtie/.editorconfig +21 -0
  5. package/bowtie/.prettierrc +6 -0
  6. package/bowtie/BOWTIE.md +54 -0
  7. package/bowtie/Dockerfile +6 -0
  8. package/bowtie/bowtie-api.ts +101 -0
  9. package/bowtie/bowtie-jlib.ts +150 -0
  10. package/bowtie/bowtie.test.ts +267 -0
  11. package/bowtie/package.json +11 -0
  12. package/bowtie/tsconfig.json +12 -0
  13. package/dist/index.cjs +1 -1
  14. package/dist/index.d.cts +66 -503
  15. package/dist/index.d.mts +66 -503
  16. package/dist/index.mjs +1 -1
  17. package/dist/jlib.js +2 -13
  18. package/dist/remotes/index.cjs +1 -0
  19. package/dist/remotes/index.d.cts +7 -0
  20. package/dist/remotes/index.d.mts +7 -0
  21. package/dist/remotes/index.mjs +1 -0
  22. package/dist/types-B2wwNWyo.d.cts +513 -0
  23. package/dist/types-BhTU1l2h.d.mts +513 -0
  24. package/index.ts +0 -3
  25. package/package.json +14 -8
  26. package/src/Draft.ts +1 -1
  27. package/src/Keyword.ts +2 -3
  28. package/src/SchemaNode.ts +9 -0
  29. package/src/compileSchema.test.ts +52 -0
  30. package/src/compileSchema.ts +53 -3
  31. package/src/draft04/keywords/$ref.ts +22 -14
  32. package/src/draft04/keywords/exclusiveMaximum.ts +14 -0
  33. package/src/draft04/keywords/exclusiveMinimum.ts +14 -0
  34. package/src/draft04/validateSchema.test.ts +20 -0
  35. package/src/draft04.ts +2 -2
  36. package/src/draft06/keywords/$ref.ts +15 -5
  37. package/src/draft06.ts +2 -2
  38. package/src/draft07.ts +2 -2
  39. package/src/draft2019-09/keywords/$ref.test.ts +3 -1
  40. package/src/draft2019-09/keywords/$ref.ts +44 -30
  41. package/src/draft2019-09/keywords/additionalItems.ts +33 -10
  42. package/src/draft2019-09/keywords/items.ts +32 -10
  43. package/src/draft2019-09/keywords/unevaluatedItems.ts +19 -6
  44. package/src/draft2019-09/methods/getData.ts +1 -1
  45. package/src/draft2019-09/validateSchema.test.ts +28 -0
  46. package/src/draft2019.ts +1 -1
  47. package/src/draft2020.ts +1 -1
  48. package/src/errors/errors.ts +4 -0
  49. package/src/formats/formats.ts +35 -28
  50. package/src/formats/hyperjump.d.ts +172 -0
  51. package/src/keywords/$ref.ts +50 -17
  52. package/src/keywords/oneOf.test.ts +3 -3
  53. package/src/keywords/properties.ts +1 -1
  54. package/src/keywords/propertyDependencies.ts +1 -1
  55. package/src/methods/getData.ts +1 -1
  56. package/src/settings.ts +27 -1
  57. package/src/validateNode.ts +4 -1
  58. package/tsconfig.json +11 -4
  59. package/tsconfig.test.json +9 -2
  60. package/tsdown.config.ts +1 -1
  61. package/Dockerfile +0 -6
  62. package/bowtie_jlib.js +0 -140
  63. package/remotes/draft04.json +0 -150
  64. package/remotes/draft06.json +0 -155
  65. package/remotes/draft07.json +0 -155
  66. package/remotes/draft2019-09.json +0 -42
  67. package/remotes/draft2019-09_meta_applicator.json +0 -53
  68. package/remotes/draft2019-09_meta_content.json +0 -14
  69. package/remotes/draft2019-09_meta_core.json +0 -54
  70. package/remotes/draft2019-09_meta_format.json +0 -11
  71. package/remotes/draft2019-09_meta_meta-data.json +0 -34
  72. package/remotes/draft2019-09_meta_validation.json +0 -95
  73. package/remotes/draft2020-12.json +0 -55
  74. package/remotes/draft2020-12_meta_applicator.json +0 -45
  75. package/remotes/draft2020-12_meta_content.json +0 -14
  76. package/remotes/draft2020-12_meta_core.json +0 -48
  77. package/remotes/draft2020-12_meta_format_annotation.json +0 -11
  78. package/remotes/draft2020-12_meta_format_assertion.json +0 -11
  79. package/remotes/draft2020-12_meta_meta_data.json +0 -34
  80. package/remotes/draft2020-12_meta_unevaluated.json +0 -12
  81. package/remotes/draft2020-12_meta_validation.json +0 -87
  82. package/remotes/index.ts +0 -48
@@ -1,5 +1,5 @@
1
1
  import { getValue } from "../utils/getValue";
2
- import { JsonError, SchemaNode } from "../types";
2
+ import { SchemaNode } from "../types";
3
3
  import {
4
4
  Keyword,
5
5
  JsonSchemaResolverParams,
@@ -5,7 +5,7 @@ import {
5
5
  ValidationReturnType,
6
6
  ValidationAnnotation
7
7
  } from "../Keyword";
8
- import { isBooleanSchema, isJsonSchema, JsonSchema, SchemaNode } from "../types";
8
+ import { isBooleanSchema, isJsonSchema, SchemaNode } from "../types";
9
9
  import { hasProperty } from "../utils/hasProperty";
10
10
  import { isObject } from "../utils/isObject";
11
11
  import { mergeSchema } from "../utils/mergeSchema";
@@ -159,7 +159,7 @@ export function getData(node: SchemaNode, data?: unknown, opts?: TemplateOptions
159
159
  return defaultData;
160
160
  }
161
161
 
162
- if (resolvedNode && resolvedNode !== currentNode) {
162
+ if (isSchemaNode(resolvedNode)) {
163
163
  defaultData = resolvedNode.getData(defaultData, opts) ?? defaultData;
164
164
  currentNode = resolvedNode;
165
165
  }
package/src/settings.ts CHANGED
@@ -17,5 +17,31 @@ export default {
17
17
  "patternProperties",
18
18
  "propertyDependencies"
19
19
  ],
20
- REGEX_FLAGS: "u"
20
+ REGEX_FLAGS: "u",
21
+ /**
22
+ * properties to keep from a $ref-schema when resolving a $ref (recursively)
23
+ * this allows to overwrite specified properties locally on a $ref-definition
24
+ *
25
+ * - draft 2019-09
26
+ * - draft 2020-12
27
+ *
28
+ * @example
29
+ * {
30
+ * title: "custom component",
31
+ * $ref: "#/$defs/component",
32
+ *
33
+ * $defs: {
34
+ * component: {
35
+ * title: "component",
36
+ * type: "object"
37
+ * }
38
+ * }
39
+ * }
40
+ * // results in
41
+ * {
42
+ * title: "custom component"
43
+ * type: "object"
44
+ * }
45
+ */
46
+ PROPERTIES_TO_MERGE: ["title", "description", "options", "x-options", "readOnly", "writeOnly"]
21
47
  };
@@ -1,8 +1,11 @@
1
- import { BooleanSchema, JsonSchema, SchemaNode } from "./types";
1
+ import { BooleanSchema, isJsonError, JsonSchema, SchemaNode } from "./types";
2
2
  import { SchemaNodeWithRequired, ValidationPath, ValidationReturnType } from "./Keyword";
3
3
  import sanitizeErrors from "./utils/sanitizeErrors";
4
4
 
5
5
  export function validateNode(node: SchemaNode, data: unknown, pointer: string, path: ValidationPath) {
6
+ if (isJsonError(node)) {
7
+ return [node];
8
+ }
6
9
  path.push({ pointer, node });
7
10
  const schema = node.schema as BooleanSchema | JsonSchema;
8
11
  if (schema === true) {
package/tsconfig.json CHANGED
@@ -7,10 +7,17 @@
7
7
  "module": "ESNext",
8
8
  "resolveJsonModule": true,
9
9
  "allowSyntheticDefaultImports": true,
10
- "moduleResolution": "node",
10
+ "moduleResolution": "bundler",
11
11
  "lib": ["DOM", "ES2018"],
12
- "exactOptionalPropertyTypes": true
12
+ "exactOptionalPropertyTypes": true,
13
+ "baseUrl": ".",
14
+ "paths": {
15
+ "json-schema-library": ["./index.ts"],
16
+ "json-schema-library/remotes": ["./remotes/index.ts"],
17
+ "json-schema-library/package.json": ["./package.json"]
18
+ },
19
+ "types": ["node", "mocha"]
13
20
  },
14
- "exclude": ["src/**/*.test.ts"],
15
- "include": ["index.ts", "src/**/*"]
21
+ "exclude": ["src/**/*.test.ts", "src/**/*.spec.ts", "bowtie/**/*.test.ts"],
22
+ "include": ["index.ts", "src/**/*", "remotes/**/*", "bowtie/**/*"]
16
23
  }
@@ -5,11 +5,18 @@
5
5
  "incremental": false /* Enable incremental compilation */,
6
6
  "target": "ESNEXT" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */,
7
7
  "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */,
8
+ "moduleResolution": "node10",
8
9
  "sourceMap": false /* Generates corresponding '.map' file. */,
9
10
  "strict": false /* Enable all strict type-checking options. */,
10
11
  "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */,
11
- "types": ["mocha", "node"]
12
+ "types": ["mocha", "node"],
13
+ "baseUrl": ".",
14
+ "paths": {
15
+ "json-schema-library": ["./index.ts"],
16
+ "json-schema-library/remotes": ["./remotes/index.ts"],
17
+ "json-schema-library/package.json": ["./package.json"]
18
+ }
12
19
  },
13
20
  "exclude": [],
14
- "include": ["src/**/*.test.ts"]
21
+ "include": ["src/**/*.test.ts", "bowtie/**/*.test.ts"]
15
22
  }
package/tsdown.config.ts CHANGED
@@ -2,7 +2,7 @@ import { defineConfig } from "tsdown";
2
2
 
3
3
  export default defineConfig({
4
4
  dts: true,
5
- entry: ["./index.ts"],
5
+ entry: ["./index.ts", "./remotes/index.ts"],
6
6
  exports: true,
7
7
  globalName: "jlib"
8
8
  });
package/Dockerfile DELETED
@@ -1,6 +0,0 @@
1
- FROM node:23-alpine
2
- COPY . /usr/app
3
- WORKDIR /usr/app
4
- #ENV NODE_ENV=production
5
- #RUN npm install --omit=dev
6
- CMD ["node", "bowtie_jlib.js"]
package/bowtie_jlib.js DELETED
@@ -1,140 +0,0 @@
1
- /**
2
- * test file for bowtie integration
3
- *
4
- * - Tutorial: https://docs.bowtie.report/en/stable/implementers/
5
- *
6
- * Build Dockerfile:
7
- *
8
- * ```
9
- * docker build -t localhost/jlib .
10
- * ````
11
- *
12
- * Test setup:
13
- *
14
- * ```
15
- bowtie run -i localhost/jlib -V <<EOF
16
- {"description": "test case 1", "schema": {}, "tests": [{"description": "a test", "instance": {}}] }
17
- {"description": "test case 2", "schema": {"const": 37}, "tests": [{"description": "not 37", "instance": {}}, {"description": "is 37", "instance": 37}] }
18
- EOF
19
- *
20
- * Test draft
21
- *
22
- * ```
23
- * bowtie suite -i localhost/jlib draft7 | bowtie summary --show failures
24
- * ```
25
- *
26
- */
27
- const readline = require("readline/promises");
28
- const process = require("process");
29
- const os = require("os");
30
- const packageJson = require("./package.json");
31
- const jlib = require("./dist/jsonSchemaLibrary.js");
32
-
33
- const compileSchema = jlib.compileSchema;
34
-
35
- const stdio = readline.createInterface({
36
- input: process.stdin,
37
- output: process.stdout,
38
- terminal: false
39
- });
40
-
41
- // const schemaIds: { [id: string]: SchemaDraft } = {
42
- // "https://json-schema.org/draft/2020-12/schema": SchemaDraft.v2020_12,
43
- // "https://json-schema.org/draft/2019-09/schema": SchemaDraft.v2019_09,
44
- // "http://json-schema.org/draft-07/schema#": SchemaDraft.v7,
45
- // "http://json-schema.org/draft-06/schema#": SchemaDraft.v6,
46
- // "http://json-schema.org/draft-04/schema#": SchemaDraft.v4
47
- // };
48
-
49
- function send(data) {
50
- console.log(JSON.stringify(data));
51
- }
52
-
53
- let started = false;
54
- // let dialect;
55
-
56
- const cmds = {
57
- start: async (args) => {
58
- console.assert(args.version === 1, { args });
59
- started = true;
60
- return {
61
- version: 1,
62
- implementation: {
63
- language: "javascript",
64
- name: "json-schema-library",
65
- version: packageJson.version,
66
- homepage: "https://github.com/sagold/json-schema-library",
67
- issues: "https://github.com/sagold/json-schema-library/issues",
68
- source: "https://github.com/sagold/json-schema-library",
69
-
70
- dialects: [
71
- "https://json-schema.org/draft/2020-12/schema",
72
- "https://json-schema.org/draft/2019-09/schema",
73
- "http://json-schema.org/draft-07/schema#",
74
- "http://json-schema.org/draft-06/schema#",
75
- "http://json-schema.org/draft-04/schema#"
76
- ],
77
- os: os.platform(),
78
- os_version: os.release(),
79
- language_version: process.version
80
- }
81
- };
82
- },
83
-
84
- dialect: async (args) => {
85
- console.assert(started, "Not started!");
86
- // dialect = schemaIds[args.dialect];
87
- return { ok: true };
88
- },
89
-
90
- run: async (args) => {
91
- console.assert(started, "Not started!");
92
-
93
- // for (const id in testCase.registry) {
94
- // ajv.addSchema(testCase.registry[id], id);
95
- // }
96
-
97
- const testCase = args.case;
98
- // as {
99
- // registry: Recors<sring, string>;
100
- // schema: Record<string, any>;
101
- // tests: {
102
- // /** testdata */
103
- // instance: unknown;
104
- // }[];
105
- // };
106
-
107
- const node = compileSchema(testCase.schema);
108
- const results = testCase.tests.map((test) => {
109
- try {
110
- const errors = node.validate(test.instance);
111
- return { valid: errors.length === 0 };
112
- } catch (error) {
113
- return {
114
- errored: true,
115
- context: {
116
- traceback: error.stack,
117
- message: error.message
118
- }
119
- };
120
- }
121
- });
122
-
123
- return { seq: args.seq, results: results };
124
- },
125
-
126
- stop: async (_) => {
127
- console.assert(started, "Not started!");
128
- process.exit(0);
129
- }
130
- };
131
-
132
- async function main() {
133
- for await (const line of stdio) {
134
- const request = JSON.parse(line);
135
- const response = await cmds[request.cmd](request);
136
- send(response);
137
- }
138
- }
139
-
140
- main();
@@ -1,150 +0,0 @@
1
- {
2
- "id": "http://json-schema.org/draft-04/schema#",
3
- "$schema": "http://json-schema.org/draft-04/schema#",
4
- "description": "Core schema meta-schema",
5
- "definitions": {
6
- "schemaArray": {
7
- "type": "array",
8
- "minItems": 1,
9
- "items": { "$ref": "#" }
10
- },
11
- "positiveInteger": {
12
- "type": "integer",
13
- "minimum": 0
14
- },
15
- "positiveIntegerDefault0": {
16
- "allOf": [ { "$ref": "#/definitions/positiveInteger" }, { "default": 0 } ]
17
- },
18
- "simpleTypes": {
19
- "enum": [ "array", "boolean", "integer", "null", "number", "object", "string" ]
20
- },
21
- "stringArray": {
22
- "type": "array",
23
- "items": { "type": "string" },
24
- "minItems": 1,
25
- "uniqueItems": true
26
- }
27
- },
28
- "type": "object",
29
- "properties": {
30
- "id": {
31
- "type": "string",
32
- "format": "uri"
33
- },
34
- "$schema": {
35
- "type": "string",
36
- "format": "uri"
37
- },
38
- "title": {
39
- "type": "string"
40
- },
41
- "description": {
42
- "type": "string"
43
- },
44
- "default": {},
45
- "multipleOf": {
46
- "type": "number",
47
- "minimum": 0,
48
- "exclusiveMinimum": true
49
- },
50
- "maximum": {
51
- "type": "number"
52
- },
53
- "exclusiveMaximum": {
54
- "type": "boolean",
55
- "default": false
56
- },
57
- "minimum": {
58
- "type": "number"
59
- },
60
- "exclusiveMinimum": {
61
- "type": "boolean",
62
- "default": false
63
- },
64
- "maxLength": { "$ref": "#/definitions/positiveInteger" },
65
- "minLength": { "$ref": "#/definitions/positiveIntegerDefault0" },
66
- "pattern": {
67
- "type": "string",
68
- "format": "regex"
69
- },
70
- "additionalItems": {
71
- "anyOf": [
72
- { "type": "boolean" },
73
- { "$ref": "#" }
74
- ],
75
- "default": {}
76
- },
77
- "items": {
78
- "anyOf": [
79
- { "$ref": "#" },
80
- { "$ref": "#/definitions/schemaArray" }
81
- ],
82
- "default": {}
83
- },
84
- "maxItems": { "$ref": "#/definitions/positiveInteger" },
85
- "minItems": { "$ref": "#/definitions/positiveIntegerDefault0" },
86
- "uniqueItems": {
87
- "type": "boolean",
88
- "default": false
89
- },
90
- "maxProperties": { "$ref": "#/definitions/positiveInteger" },
91
- "minProperties": { "$ref": "#/definitions/positiveIntegerDefault0" },
92
- "required": { "$ref": "#/definitions/stringArray" },
93
- "additionalProperties": {
94
- "anyOf": [
95
- { "type": "boolean" },
96
- { "$ref": "#" }
97
- ],
98
- "default": {}
99
- },
100
- "definitions": {
101
- "type": "object",
102
- "additionalProperties": { "$ref": "#" },
103
- "default": {}
104
- },
105
- "properties": {
106
- "type": "object",
107
- "additionalProperties": { "$ref": "#" },
108
- "default": {}
109
- },
110
- "patternProperties": {
111
- "type": "object",
112
- "additionalProperties": { "$ref": "#" },
113
- "default": {}
114
- },
115
- "dependencies": {
116
- "type": "object",
117
- "additionalProperties": {
118
- "anyOf": [
119
- { "$ref": "#" },
120
- { "$ref": "#/definitions/stringArray" }
121
- ]
122
- }
123
- },
124
- "enum": {
125
- "type": "array",
126
- "minItems": 1,
127
- "uniqueItems": true
128
- },
129
- "type": {
130
- "anyOf": [
131
- { "$ref": "#/definitions/simpleTypes" },
132
- {
133
- "type": "array",
134
- "items": { "$ref": "#/definitions/simpleTypes" },
135
- "minItems": 1,
136
- "uniqueItems": true
137
- }
138
- ]
139
- },
140
- "allOf": { "$ref": "#/definitions/schemaArray" },
141
- "anyOf": { "$ref": "#/definitions/schemaArray" },
142
- "oneOf": { "$ref": "#/definitions/schemaArray" },
143
- "not": { "$ref": "#" }
144
- },
145
- "dependencies": {
146
- "exclusiveMaximum": [ "maximum" ],
147
- "exclusiveMinimum": [ "minimum" ]
148
- },
149
- "default": {}
150
- }
@@ -1,155 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-06/schema#",
3
- "$id": "http://json-schema.org/draft-06/schema#",
4
- "title": "Core schema meta-schema",
5
- "definitions": {
6
- "schemaArray": {
7
- "type": "array",
8
- "minItems": 1,
9
- "items": { "$ref": "#" }
10
- },
11
- "nonNegativeInteger": {
12
- "type": "integer",
13
- "minimum": 0
14
- },
15
- "nonNegativeIntegerDefault0": {
16
- "allOf": [
17
- { "$ref": "#/definitions/nonNegativeInteger" },
18
- { "default": 0 }
19
- ]
20
- },
21
- "simpleTypes": {
22
- "enum": [
23
- "array",
24
- "boolean",
25
- "integer",
26
- "null",
27
- "number",
28
- "object",
29
- "string"
30
- ]
31
- },
32
- "stringArray": {
33
- "type": "array",
34
- "items": { "type": "string" },
35
- "uniqueItems": true,
36
- "default": []
37
- }
38
- },
39
- "type": ["object", "boolean"],
40
- "properties": {
41
- "$id": {
42
- "type": "string",
43
- "format": "uri-reference"
44
- },
45
- "$schema": {
46
- "type": "string",
47
- "format": "uri"
48
- },
49
- "$ref": {
50
- "type": "string",
51
- "format": "uri-reference"
52
- },
53
- "title": {
54
- "type": "string"
55
- },
56
- "description": {
57
- "type": "string"
58
- },
59
- "default": {},
60
- "examples": {
61
- "type": "array",
62
- "items": {}
63
- },
64
- "multipleOf": {
65
- "type": "number",
66
- "exclusiveMinimum": 0
67
- },
68
- "maximum": {
69
- "type": "number"
70
- },
71
- "exclusiveMaximum": {
72
- "type": "number"
73
- },
74
- "minimum": {
75
- "type": "number"
76
- },
77
- "exclusiveMinimum": {
78
- "type": "number"
79
- },
80
- "maxLength": { "$ref": "#/definitions/nonNegativeInteger" },
81
- "minLength": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
82
- "pattern": {
83
- "type": "string",
84
- "format": "regex"
85
- },
86
- "additionalItems": { "$ref": "#" },
87
- "items": {
88
- "anyOf": [
89
- { "$ref": "#" },
90
- { "$ref": "#/definitions/schemaArray" }
91
- ],
92
- "default": {}
93
- },
94
- "maxItems": { "$ref": "#/definitions/nonNegativeInteger" },
95
- "minItems": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
96
- "uniqueItems": {
97
- "type": "boolean",
98
- "default": false
99
- },
100
- "contains": { "$ref": "#" },
101
- "maxProperties": { "$ref": "#/definitions/nonNegativeInteger" },
102
- "minProperties": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
103
- "required": { "$ref": "#/definitions/stringArray" },
104
- "additionalProperties": { "$ref": "#" },
105
- "definitions": {
106
- "type": "object",
107
- "additionalProperties": { "$ref": "#" },
108
- "default": {}
109
- },
110
- "properties": {
111
- "type": "object",
112
- "additionalProperties": { "$ref": "#" },
113
- "default": {}
114
- },
115
- "patternProperties": {
116
- "type": "object",
117
- "additionalProperties": { "$ref": "#" },
118
- "propertyNames": { "format": "regex" },
119
- "default": {}
120
- },
121
- "dependencies": {
122
- "type": "object",
123
- "additionalProperties": {
124
- "anyOf": [
125
- { "$ref": "#" },
126
- { "$ref": "#/definitions/stringArray" }
127
- ]
128
- }
129
- },
130
- "propertyNames": { "$ref": "#" },
131
- "const": {},
132
- "enum": {
133
- "type": "array",
134
- "minItems": 1,
135
- "uniqueItems": true
136
- },
137
- "type": {
138
- "anyOf": [
139
- { "$ref": "#/definitions/simpleTypes" },
140
- {
141
- "type": "array",
142
- "items": { "$ref": "#/definitions/simpleTypes" },
143
- "minItems": 1,
144
- "uniqueItems": true
145
- }
146
- ]
147
- },
148
- "format": { "type": "string" },
149
- "allOf": { "$ref": "#/definitions/schemaArray" },
150
- "anyOf": { "$ref": "#/definitions/schemaArray" },
151
- "oneOf": { "$ref": "#/definitions/schemaArray" },
152
- "not": { "$ref": "#" }
153
- },
154
- "default": {}
155
- }