@jsonschema-editor/json-schema 0.1.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 (99) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +45 -0
  3. package/dist/attribute-registry.d.ts +14 -0
  4. package/dist/attribute-registry.d.ts.map +1 -0
  5. package/dist/attribute-registry.js +77 -0
  6. package/dist/attribute-registry.js.map +1 -0
  7. package/dist/document.d.ts +38 -0
  8. package/dist/document.d.ts.map +1 -0
  9. package/dist/document.js +132 -0
  10. package/dist/document.js.map +1 -0
  11. package/dist/index.d.ts +7 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +6 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/model/array-schema.d.ts +41 -0
  16. package/dist/model/array-schema.d.ts.map +1 -0
  17. package/dist/model/array-schema.js +160 -0
  18. package/dist/model/array-schema.js.map +1 -0
  19. package/dist/model/boolean-schema.d.ts +17 -0
  20. package/dist/model/boolean-schema.d.ts.map +1 -0
  21. package/dist/model/boolean-schema.js +31 -0
  22. package/dist/model/boolean-schema.js.map +1 -0
  23. package/dist/model/composition-schema.d.ts +36 -0
  24. package/dist/model/composition-schema.d.ts.map +1 -0
  25. package/dist/model/composition-schema.js +128 -0
  26. package/dist/model/composition-schema.js.map +1 -0
  27. package/dist/model/custom-attributes.d.ts +16 -0
  28. package/dist/model/custom-attributes.d.ts.map +1 -0
  29. package/dist/model/custom-attributes.js +41 -0
  30. package/dist/model/custom-attributes.js.map +1 -0
  31. package/dist/model/factory.d.ts +30 -0
  32. package/dist/model/factory.d.ts.map +1 -0
  33. package/dist/model/factory.js +88 -0
  34. package/dist/model/factory.js.map +1 -0
  35. package/dist/model/index.d.ts +19 -0
  36. package/dist/model/index.d.ts.map +1 -0
  37. package/dist/model/index.js +19 -0
  38. package/dist/model/index.js.map +1 -0
  39. package/dist/model/integer-schema.d.ts +2 -0
  40. package/dist/model/integer-schema.d.ts.map +1 -0
  41. package/dist/model/integer-schema.js +2 -0
  42. package/dist/model/integer-schema.js.map +1 -0
  43. package/dist/model/metadata.d.ts +25 -0
  44. package/dist/model/metadata.d.ts.map +1 -0
  45. package/dist/model/metadata.js +77 -0
  46. package/dist/model/metadata.js.map +1 -0
  47. package/dist/model/node.d.ts +54 -0
  48. package/dist/model/node.d.ts.map +1 -0
  49. package/dist/model/node.js +108 -0
  50. package/dist/model/node.js.map +1 -0
  51. package/dist/model/null-schema.d.ts +17 -0
  52. package/dist/model/null-schema.d.ts.map +1 -0
  53. package/dist/model/null-schema.js +31 -0
  54. package/dist/model/null-schema.js.map +1 -0
  55. package/dist/model/number-schema.d.ts +2 -0
  56. package/dist/model/number-schema.d.ts.map +1 -0
  57. package/dist/model/number-schema.js +2 -0
  58. package/dist/model/number-schema.js.map +1 -0
  59. package/dist/model/numeric-schema.d.ts +37 -0
  60. package/dist/model/numeric-schema.d.ts.map +1 -0
  61. package/dist/model/numeric-schema.js +95 -0
  62. package/dist/model/numeric-schema.js.map +1 -0
  63. package/dist/model/object-schema.d.ts +31 -0
  64. package/dist/model/object-schema.d.ts.map +1 -0
  65. package/dist/model/object-schema.js +119 -0
  66. package/dist/model/object-schema.js.map +1 -0
  67. package/dist/model/property-collection.d.ts +20 -0
  68. package/dist/model/property-collection.d.ts.map +1 -0
  69. package/dist/model/property-collection.js +61 -0
  70. package/dist/model/property-collection.js.map +1 -0
  71. package/dist/model/ref-schema.d.ts +20 -0
  72. package/dist/model/ref-schema.d.ts.map +1 -0
  73. package/dist/model/ref-schema.js +38 -0
  74. package/dist/model/ref-schema.js.map +1 -0
  75. package/dist/model/string-schema.d.ts +29 -0
  76. package/dist/model/string-schema.d.ts.map +1 -0
  77. package/dist/model/string-schema.js +75 -0
  78. package/dist/model/string-schema.js.map +1 -0
  79. package/dist/model/type-variants.d.ts +9 -0
  80. package/dist/model/type-variants.d.ts.map +1 -0
  81. package/dist/model/type-variants.js +25 -0
  82. package/dist/model/type-variants.js.map +1 -0
  83. package/dist/model/untyped-schema.d.ts +18 -0
  84. package/dist/model/untyped-schema.d.ts.map +1 -0
  85. package/dist/model/untyped-schema.js +31 -0
  86. package/dist/model/untyped-schema.js.map +1 -0
  87. package/dist/model/visitor.d.ts +23 -0
  88. package/dist/model/visitor.d.ts.map +1 -0
  89. package/dist/model/visitor.js +2 -0
  90. package/dist/model/visitor.js.map +1 -0
  91. package/dist/parse.d.ts +6 -0
  92. package/dist/parse.d.ts.map +1 -0
  93. package/dist/parse.js +6 -0
  94. package/dist/parse.js.map +1 -0
  95. package/dist/types.d.ts +39 -0
  96. package/dist/types.d.ts.map +1 -0
  97. package/dist/types.js +2 -0
  98. package/dist/types.js.map +1 -0
  99. package/package.json +50 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 JSON Schema Editor Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,45 @@
1
+ # @jsonschema-editor/json-schema
2
+
3
+ Eigenständiges, **streng objektorientiertes** JSON-Schema-Datenmodell.
4
+
5
+ ## Prinzipien
6
+
7
+ - **Vererbung**: `SchemaNode` → `LeafSchema` / `CompositeSchema` → konkrete Typen
8
+ - **Kapselung**: `SchemaMetadata`, `CustomAttributeCollection`, `PropertyCollection`
9
+ - **Polymorphie**: `accept(visitor)`, `deepClone()`, `resolveAtScope()`, `createDefaultValue()`
10
+ - **Fabrik**: `SchemaFactory.fromJSON()` / `createObject()` …
11
+ - **Template Method**: `toJSON()` ruft `writeTypeDefinition()` auf
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ npm install @jsonschema-editor/json-schema
17
+ ```
18
+
19
+ Entwicklung im Monorepo:
20
+
21
+ ```bash
22
+ pnpm install
23
+ pnpm run build
24
+ pnpm test
25
+ ```
26
+
27
+ ## Custom Attributes
28
+
29
+ ```ts
30
+ import {
31
+ JsonSchemaAttributeRegistry,
32
+ StringSchema,
33
+ schemaFromJSON,
34
+ } from "@jsonschema-editor/json-schema";
35
+
36
+ const registry = new JsonSchemaAttributeRegistry();
37
+ registry.register({ name: "x-priority", defaultValue: "normal" });
38
+
39
+ const field = new StringSchema(registry);
40
+ field.setCustomAttribute("x-priority", "high");
41
+ ```
42
+
43
+ ## Kein UI-Schema
44
+
45
+ Dieses Paket kennt **kein** UI-Schema. Siehe `@jsonschema-editor/ui-schema`.
@@ -0,0 +1,14 @@
1
+ import type { AttributeDefinition, JsonSchemaObject } from "./types.js";
2
+ export declare class JsonSchemaAttributeRegistry {
3
+ private definitions;
4
+ register<T>(definition: AttributeDefinition<T>): this;
5
+ unregister(name: string): boolean;
6
+ get(name: string): AttributeDefinition | undefined;
7
+ list(): AttributeDefinition[];
8
+ isRegistered(name: string): boolean;
9
+ isReservedKey(key: string): boolean;
10
+ readCustomAttributes(json: JsonSchemaObject): Map<string, unknown>;
11
+ writeCustomAttributes(json: JsonSchemaObject, values: Map<string, unknown>): void;
12
+ }
13
+ export declare const globalJsonSchemaAttributeRegistry: JsonSchemaAttributeRegistry;
14
+ //# sourceMappingURL=attribute-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attribute-registry.d.ts","sourceRoot":"","sources":["../src/attribute-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA+BxE,qBAAa,2BAA2B;IACtC,OAAO,CAAC,WAAW,CAA0C;IAE7D,QAAQ,CAAC,CAAC,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI;IAKrD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAIlD,IAAI,IAAI,mBAAmB,EAAE;IAI7B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAInC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAInC,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAqBlE,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAOlF;AAED,eAAO,MAAM,iCAAiC,6BAAoC,CAAC"}
@@ -0,0 +1,77 @@
1
+ const RESERVED_KEYS = new Set([
2
+ "$schema",
3
+ "$id",
4
+ "$ref",
5
+ "title",
6
+ "description",
7
+ "type",
8
+ "enum",
9
+ "const",
10
+ "default",
11
+ "examples",
12
+ "properties",
13
+ "required",
14
+ "additionalProperties",
15
+ "items",
16
+ "prefixItems",
17
+ "minItems",
18
+ "maxItems",
19
+ "minLength",
20
+ "maxLength",
21
+ "minimum",
22
+ "maximum",
23
+ "pattern",
24
+ "format",
25
+ "allOf",
26
+ "anyOf",
27
+ "oneOf",
28
+ ]);
29
+ export class JsonSchemaAttributeRegistry {
30
+ definitions = new Map();
31
+ register(definition) {
32
+ this.definitions.set(definition.name, definition);
33
+ return this;
34
+ }
35
+ unregister(name) {
36
+ return this.definitions.delete(name);
37
+ }
38
+ get(name) {
39
+ return this.definitions.get(name);
40
+ }
41
+ list() {
42
+ return [...this.definitions.values()];
43
+ }
44
+ isRegistered(name) {
45
+ return this.definitions.has(name);
46
+ }
47
+ isReservedKey(key) {
48
+ return RESERVED_KEYS.has(key);
49
+ }
50
+ readCustomAttributes(json) {
51
+ const result = new Map();
52
+ for (const [key, raw] of Object.entries(json)) {
53
+ if (this.isReservedKey(key))
54
+ continue;
55
+ const definition = this.definitions.get(key);
56
+ if (!definition)
57
+ continue;
58
+ const value = definition.deserialize
59
+ ? definition.deserialize(raw)
60
+ : raw ?? definition.defaultValue;
61
+ if (value !== undefined) {
62
+ result.set(key, value);
63
+ }
64
+ }
65
+ return result;
66
+ }
67
+ writeCustomAttributes(json, values) {
68
+ for (const [name, value] of values) {
69
+ const definition = this.definitions.get(name);
70
+ if (!definition)
71
+ continue;
72
+ json[name] = definition.serialize ? definition.serialize(value) : value;
73
+ }
74
+ }
75
+ }
76
+ export const globalJsonSchemaAttributeRegistry = new JsonSchemaAttributeRegistry();
77
+ //# sourceMappingURL=attribute-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attribute-registry.js","sourceRoot":"","sources":["../src/attribute-registry.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,SAAS;IACT,KAAK;IACL,MAAM;IACN,OAAO;IACP,aAAa;IACb,MAAM;IACN,MAAM;IACN,OAAO;IACP,SAAS;IACT,UAAU;IACV,YAAY;IACZ,UAAU;IACV,sBAAsB;IACtB,OAAO;IACP,aAAa;IACb,UAAU;IACV,UAAU;IACV,WAAW;IACX,WAAW;IACX,SAAS;IACT,SAAS;IACT,SAAS;IACT,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,OAAO,2BAA2B;IAC9B,WAAW,GAAG,IAAI,GAAG,EAA+B,CAAC;IAE7D,QAAQ,CAAI,UAAkC;QAC5C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAiC,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,aAAa,CAAC,GAAW;QACvB,OAAO,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,oBAAoB,CAAC,IAAsB;QACzC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmB,CAAC;QAE1C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;gBAAE,SAAS;YAEtC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,CAAC,UAAU;gBAAE,SAAS;YAE1B,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW;gBAClC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC;gBAC7B,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC;YAEnC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,qBAAqB,CAAC,IAAsB,EAAE,MAA4B;QACxE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,UAAU;gBAAE,SAAS;YAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1E,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,iCAAiC,GAAG,IAAI,2BAA2B,EAAE,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { JsonSchemaAttributeRegistry } from "./attribute-registry.js";
2
+ import type { JsonSchemaObject } from "./types.js";
3
+ import type { SchemaNode } from "./model/node.js";
4
+ export type DefsKey = "$defs" | "definitions";
5
+ declare const DEFS_SEGMENT = "$defs";
6
+ export declare function buildDefRef(defName: string, defsKey?: DefsKey): string;
7
+ export declare function parseDefRef(ref: string): {
8
+ name: string;
9
+ defsKey: DefsKey;
10
+ } | null;
11
+ export declare class SchemaDocument {
12
+ root: SchemaNode;
13
+ private readonly _defs;
14
+ private _defsKey;
15
+ constructor(root: SchemaNode);
16
+ get defs(): ReadonlyMap<string, SchemaNode>;
17
+ get defsKey(): DefsKey;
18
+ listDefNames(): string[];
19
+ getDef(name: string): SchemaNode | undefined;
20
+ setDef(name: string, schema: SchemaNode): void;
21
+ removeDef(name: string): boolean;
22
+ renameDef(oldName: string, newName: string): boolean;
23
+ hasDef(name: string): boolean;
24
+ resolveRef(ref: string): SchemaNode | undefined;
25
+ /** Folgt $ref-Ketten bis zu einer konkreten Definition. */
26
+ resolveNode(node: SchemaNode, depth?: number): SchemaNode;
27
+ static fromRoot(root: SchemaNode): SchemaDocument;
28
+ static fromJSON(json: JsonSchemaObject, registry?: JsonSchemaAttributeRegistry): SchemaDocument;
29
+ $schema?: string;
30
+ $id?: string;
31
+ toJSON(): JsonSchemaObject;
32
+ clone(): SchemaDocument;
33
+ }
34
+ export declare function documentFromJSON(json: JsonSchemaObject, registry?: JsonSchemaAttributeRegistry): SchemaDocument;
35
+ export declare function isSchemaDocument(value: SchemaNode | SchemaDocument): value is SchemaDocument;
36
+ export declare function ensureSchemaDocument(value: SchemaNode | SchemaDocument): SchemaDocument;
37
+ export { DEFS_SEGMENT };
38
+ //# sourceMappingURL=document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,aAAa,CAAC;AAE9C,QAAA,MAAM,YAAY,UAAU,CAAC;AAE7B,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,OAAiB,GAAG,MAAM,CAE/E;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAIlF;AAED,qBAAa,cAAc;IAIN,IAAI,EAAE,UAAU;IAHnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD,OAAO,CAAC,QAAQ,CAAoB;gBAEjB,IAAI,EAAE,UAAU;IAEnC,IAAI,IAAI,IAAI,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAE1C;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,YAAY,IAAI,MAAM,EAAE;IAIxB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAI5C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IAI9C,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIhC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAUpD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI7B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAM/C,2DAA2D;IAC3D,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,SAAI,GAAG,UAAU;IAOpD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc;IAIjD,MAAM,CAAC,QAAQ,CACb,IAAI,EAAE,gBAAgB,EACtB,QAAQ,CAAC,EAAE,2BAA2B,GACrC,cAAc;IAsBjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,MAAM,IAAI,gBAAgB;IAqB1B,KAAK,IAAI,cAAc;CAUxB;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,gBAAgB,EACtB,QAAQ,CAAC,EAAE,2BAA2B,GACrC,cAAc,CAEhB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,GAAG,KAAK,IAAI,cAAc,CAE5F;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,GAAG,cAAc,CAEvF;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,132 @@
1
+ import { SchemaFactory } from "./model/factory.js";
2
+ import { RefSchema } from "./model/ref-schema.js";
3
+ const DEFS_SEGMENT = "$defs";
4
+ export function buildDefRef(defName, defsKey = "$defs") {
5
+ return `#/${defsKey}/${defName}`;
6
+ }
7
+ export function parseDefRef(ref) {
8
+ const match = ref.match(/^#\/(\$defs|definitions)\/([^/]+)$/);
9
+ if (!match)
10
+ return null;
11
+ return { defsKey: match[1], name: decodeURIComponent(match[2]) };
12
+ }
13
+ export class SchemaDocument {
14
+ root;
15
+ _defs = new Map();
16
+ _defsKey = "$defs";
17
+ constructor(root) {
18
+ this.root = root;
19
+ }
20
+ get defs() {
21
+ return this._defs;
22
+ }
23
+ get defsKey() {
24
+ return this._defsKey;
25
+ }
26
+ listDefNames() {
27
+ return [...this._defs.keys()];
28
+ }
29
+ getDef(name) {
30
+ return this._defs.get(name);
31
+ }
32
+ setDef(name, schema) {
33
+ this._defs.set(name, schema);
34
+ }
35
+ removeDef(name) {
36
+ return this._defs.delete(name);
37
+ }
38
+ renameDef(oldName, newName) {
39
+ const trimmed = newName.trim();
40
+ if (!trimmed || trimmed === oldName || this._defs.has(trimmed))
41
+ return false;
42
+ const schema = this._defs.get(oldName);
43
+ if (!schema)
44
+ return false;
45
+ this._defs.delete(oldName);
46
+ this._defs.set(trimmed, schema);
47
+ return true;
48
+ }
49
+ hasDef(name) {
50
+ return this._defs.has(name);
51
+ }
52
+ resolveRef(ref) {
53
+ const parsed = parseDefRef(ref);
54
+ if (!parsed)
55
+ return undefined;
56
+ return this._defs.get(parsed.name);
57
+ }
58
+ /** Folgt $ref-Ketten bis zu einer konkreten Definition. */
59
+ resolveNode(node, depth = 8) {
60
+ if (!(node instanceof RefSchema) || depth <= 0)
61
+ return node;
62
+ const target = this.resolveRef(node.ref);
63
+ if (!target)
64
+ return node;
65
+ return this.resolveNode(target, depth - 1);
66
+ }
67
+ static fromRoot(root) {
68
+ return new SchemaDocument(root);
69
+ }
70
+ static fromJSON(json, registry) {
71
+ const factory = new SchemaFactory(registry);
72
+ const defsKey = json.$defs ? "$defs" : json.definitions ? "definitions" : "$defs";
73
+ const defsRaw = (json.$defs ?? json.definitions ?? {});
74
+ const rootJson = { ...json };
75
+ delete rootJson.$defs;
76
+ delete rootJson.definitions;
77
+ const doc = new SchemaDocument(factory.fromJSON(rootJson));
78
+ doc._defsKey = Object.keys(defsRaw).length > 0 || json.$defs || json.definitions ? defsKey : "$defs";
79
+ if (json.$schema !== undefined)
80
+ doc.$schema = json.$schema;
81
+ if (json.$id !== undefined)
82
+ doc.$id = json.$id;
83
+ for (const [name, defJson] of Object.entries(defsRaw)) {
84
+ doc.setDef(name, factory.fromJSON(defJson));
85
+ }
86
+ return doc;
87
+ }
88
+ $schema;
89
+ $id;
90
+ toJSON() {
91
+ const json = this.root.toJSON();
92
+ if (this.$schema !== undefined)
93
+ json.$schema = this.$schema;
94
+ if (this.$id !== undefined)
95
+ json.$id = this.$id;
96
+ if (this._defs.size > 0) {
97
+ const defsObj = {};
98
+ for (const [name, node] of this._defs) {
99
+ defsObj[name] = node.toJSON();
100
+ }
101
+ json[this._defsKey] = defsObj;
102
+ if (this._defsKey === "$defs") {
103
+ delete json.definitions;
104
+ }
105
+ else {
106
+ delete json.$defs;
107
+ }
108
+ }
109
+ return json;
110
+ }
111
+ clone() {
112
+ const copy = new SchemaDocument(this.root.clone());
113
+ copy._defsKey = this._defsKey;
114
+ copy.$schema = this.$schema;
115
+ copy.$id = this.$id;
116
+ for (const [name, node] of this._defs) {
117
+ copy.setDef(name, node.clone());
118
+ }
119
+ return copy;
120
+ }
121
+ }
122
+ export function documentFromJSON(json, registry) {
123
+ return SchemaDocument.fromJSON(json, registry);
124
+ }
125
+ export function isSchemaDocument(value) {
126
+ return value instanceof SchemaDocument;
127
+ }
128
+ export function ensureSchemaDocument(value) {
129
+ return isSchemaDocument(value) ? value : SchemaDocument.fromRoot(value);
130
+ }
131
+ export { DEFS_SEGMENT };
132
+ //# sourceMappingURL=document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAKlD,MAAM,YAAY,GAAG,OAAO,CAAC;AAE7B,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,UAAmB,OAAO;IACrE,OAAO,KAAK,OAAO,IAAI,OAAO,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAC9D,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAY,EAAE,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED,MAAM,OAAO,cAAc;IAIN;IAHF,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC/C,QAAQ,GAAY,OAAO,CAAC;IAEpC,YAAmB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEvC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,YAAY;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,IAAY,EAAE,MAAkB;QACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,SAAS,CAAC,OAAe,EAAE,OAAe;QACxC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,UAAU,CAAC,GAAW;QACpB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,2DAA2D;IAC3D,WAAW,CAAC,IAAgB,EAAE,KAAK,GAAG,CAAC;QACrC,IAAI,CAAC,CAAC,IAAI,YAAY,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAgB;QAC9B,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,QAAQ,CACb,IAAsB,EACtB,QAAsC;QAEtC,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAY,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3F,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,CAAqC,CAAC;QAE3F,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;QAC7B,OAAO,QAAQ,CAAC,KAAK,CAAC;QACtB,OAAO,QAAQ,CAAC,WAAW,CAAC;QAE5B,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3D,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAErG,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3D,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;YAAE,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAE/C,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACtD,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,CAAU;IACjB,GAAG,CAAU;IAEb,MAAM;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5D,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;YAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAEhD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,OAAO,GAAqC,EAAE,CAAC;YACrD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACtC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;YAC9B,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC,WAAW,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC,KAAK,CAAC;YACpB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAAsB,EACtB,QAAsC;IAEtC,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAkC;IACjE,OAAO,KAAK,YAAY,cAAc,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAkC;IACrE,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1E,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from "./types.js";
2
+ export * from "./attribute-registry.js";
3
+ export type { SchemaNode } from "./model/node.js";
4
+ export { SchemaMetadata, CustomAttributeCollection, PropertyCollection, SchemaFactory, defaultSchemaFactory, RefSchema, CompositionSchema, ObjectSchema, ArraySchema, StringSchema, NumberSchema, IntegerSchema, BooleanSchema, NullSchema, UntypedSchema, TypeVariants, NumericSchema, LeafSchema, CompositeSchema, parseScope, type SchemaNodeKind, type SchemaVisitor, } from "./model/index.js";
5
+ export { schemaFromJSON } from "./parse.js";
6
+ export { SchemaDocument, documentFromJSON, ensureSchemaDocument, isSchemaDocument, buildDefRef, parseDefRef, DEFS_SEGMENT, type DefsKey, } from "./document.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC;AACxC,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,cAAc,EACd,yBAAyB,EACzB,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,UAAU,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,UAAU,EACV,eAAe,EACf,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,KAAK,OAAO,GACb,MAAM,eAAe,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export * from "./types.js";
2
+ export * from "./attribute-registry.js";
3
+ export { SchemaMetadata, CustomAttributeCollection, PropertyCollection, SchemaFactory, defaultSchemaFactory, RefSchema, CompositionSchema, ObjectSchema, ArraySchema, StringSchema, NumberSchema, IntegerSchema, BooleanSchema, NullSchema, UntypedSchema, TypeVariants, NumericSchema, LeafSchema, CompositeSchema, parseScope, } from "./model/index.js";
4
+ export { schemaFromJSON } from "./parse.js";
5
+ export { SchemaDocument, documentFromJSON, ensureSchemaDocument, isSchemaDocument, buildDefRef, parseDefRef, DEFS_SEGMENT, } from "./document.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC;AAExC,OAAO,EACL,cAAc,EACd,yBAAyB,EACzB,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,UAAU,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,UAAU,EACV,eAAe,EACf,UAAU,GAGX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,YAAY,GAEb,MAAM,eAAe,CAAC"}
@@ -0,0 +1,41 @@
1
+ import type { JsonSchemaAttributeRegistry } from "../attribute-registry.js";
2
+ import type { JsonSchemaObject } from "../types.js";
3
+ import { CustomAttributeCollection } from "./custom-attributes.js";
4
+ import type { SchemaFactory } from "./factory.js";
5
+ import { CompositeSchema, SchemaNode } from "./node.js";
6
+ import { SchemaMetadata } from "./metadata.js";
7
+ import type { SchemaVisitor } from "./visitor.js";
8
+ export type ArrayTupleKeyword = "prefixItems" | "items";
9
+ export type ArrayItemsMode = "none" | "homogeneous" | "tuple";
10
+ export declare class ArraySchema extends CompositeSchema {
11
+ readonly nodeKind: "array";
12
+ private _items?;
13
+ private _prefixItems;
14
+ private _tupleKeyword;
15
+ private _minItems?;
16
+ private _maxItems?;
17
+ constructor(registry?: JsonSchemaAttributeRegistry, metadata?: SchemaMetadata, customAttributes?: CustomAttributeCollection);
18
+ get items(): SchemaNode | undefined;
19
+ get prefixItems(): readonly SchemaNode[];
20
+ get tupleKeyword(): ArrayTupleKeyword;
21
+ get itemsMode(): ArrayItemsMode;
22
+ setItems(schema: SchemaNode): this;
23
+ setPrefixItems(schemas: readonly SchemaNode[], keyword?: ArrayTupleKeyword): this;
24
+ clearItems(): this;
25
+ getPrefixItem(index: number): SchemaNode | undefined;
26
+ setPrefixItem(index: number, schema: SchemaNode): this;
27
+ addPrefixItem(schema: SchemaNode): this;
28
+ removePrefixItem(index: number): this;
29
+ get minItems(): number | undefined;
30
+ set minItems(value: number | undefined);
31
+ get maxItems(): number | undefined;
32
+ set maxItems(value: number | undefined);
33
+ getChildren(): readonly SchemaNode[];
34
+ static fromJSON(json: JsonSchemaObject, factory: SchemaFactory): ArraySchema;
35
+ accept<T>(visitor: SchemaVisitor<T>): T;
36
+ deepClone(): ArraySchema;
37
+ createDefaultValue(): unknown[];
38
+ protected writeTypeDefinition(json: JsonSchemaObject): void;
39
+ protected resolvePathImpl(_segments: readonly string[]): SchemaNode | undefined;
40
+ }
41
+ //# sourceMappingURL=array-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-schema.d.ts","sourceRoot":"","sources":["../../src/model/array-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG,OAAO,CAAC;AACxD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC;AAE9D,qBAAa,WAAY,SAAQ,eAAe;IAC9C,QAAQ,CAAC,QAAQ,EAAG,OAAO,CAAU;IAErC,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,aAAa,CAAoC;IACzD,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAC,CAAS;gBAGzB,QAAQ,CAAC,EAAE,2BAA2B,EACtC,QAAQ,GAAE,cAAqC,EAC/C,gBAAgB,CAAC,EAAE,yBAAyB;IAK9C,IAAI,KAAK,IAAI,UAAU,GAAG,SAAS,CAElC;IAED,IAAI,WAAW,IAAI,SAAS,UAAU,EAAE,CAEvC;IAED,IAAI,YAAY,IAAI,iBAAiB,CAEpC;IAED,IAAI,SAAS,IAAI,cAAc,CAI9B;IAED,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAMlC,cAAc,CACZ,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,OAAO,GAAE,iBAAiC,GACzC,IAAI;IASP,UAAU,IAAI,IAAI;IAMlB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIpD,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IAQtD,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAKvC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQrC,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAEjC;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAErC;IAED,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAEjC;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAErC;IAED,WAAW,IAAI,SAAS,UAAU,EAAE;IAKpC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,GAAG,WAAW;IAwB5E,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC;IAIvC,SAAS,IAAI,WAAW;IAYxB,kBAAkB,IAAI,OAAO,EAAE;IAI/B,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IA2B3D,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,GAAG,SAAS;CAGhF"}
@@ -0,0 +1,160 @@
1
+ import { CustomAttributeCollection } from "./custom-attributes.js";
2
+ import { CompositeSchema } from "./node.js";
3
+ import { SchemaMetadata } from "./metadata.js";
4
+ export class ArraySchema extends CompositeSchema {
5
+ nodeKind = "array";
6
+ _items;
7
+ _prefixItems = [];
8
+ _tupleKeyword = "prefixItems";
9
+ _minItems;
10
+ _maxItems;
11
+ constructor(registry, metadata = new SchemaMetadata(), customAttributes) {
12
+ super(metadata, customAttributes ?? new CustomAttributeCollection(registry));
13
+ }
14
+ get items() {
15
+ return this._items;
16
+ }
17
+ get prefixItems() {
18
+ return this._prefixItems;
19
+ }
20
+ get tupleKeyword() {
21
+ return this._tupleKeyword;
22
+ }
23
+ get itemsMode() {
24
+ if (this._prefixItems.length > 0)
25
+ return "tuple";
26
+ if (this._items)
27
+ return "homogeneous";
28
+ return "none";
29
+ }
30
+ setItems(schema) {
31
+ this._prefixItems = [];
32
+ this._items = schema;
33
+ return this;
34
+ }
35
+ setPrefixItems(schemas, keyword = "prefixItems") {
36
+ this._prefixItems = [...schemas];
37
+ this._tupleKeyword = keyword;
38
+ if (keyword === "items") {
39
+ this._items = undefined;
40
+ }
41
+ return this;
42
+ }
43
+ clearItems() {
44
+ this._items = undefined;
45
+ this._prefixItems = [];
46
+ return this;
47
+ }
48
+ getPrefixItem(index) {
49
+ return this._prefixItems[index];
50
+ }
51
+ setPrefixItem(index, schema) {
52
+ if (index < 0 || index >= this._prefixItems.length) {
53
+ throw new Error(`Tuple index ${index} out of range.`);
54
+ }
55
+ this._prefixItems[index] = schema;
56
+ return this;
57
+ }
58
+ addPrefixItem(schema) {
59
+ this._prefixItems.push(schema);
60
+ return this;
61
+ }
62
+ removePrefixItem(index) {
63
+ if (index < 0 || index >= this._prefixItems.length) {
64
+ throw new Error(`Tuple index ${index} out of range.`);
65
+ }
66
+ this._prefixItems.splice(index, 1);
67
+ return this;
68
+ }
69
+ get minItems() {
70
+ return this._minItems;
71
+ }
72
+ set minItems(value) {
73
+ this._minItems = value;
74
+ }
75
+ get maxItems() {
76
+ return this._maxItems;
77
+ }
78
+ set maxItems(value) {
79
+ this._maxItems = value;
80
+ }
81
+ getChildren() {
82
+ if (this._prefixItems.length)
83
+ return this._prefixItems;
84
+ return this._items ? [this._items] : [];
85
+ }
86
+ static fromJSON(json, factory) {
87
+ const node = new ArraySchema(factory.attributeRegistry);
88
+ node.applyMetadata(json);
89
+ node.applyTypeFrom(json);
90
+ node._minItems = json.minItems;
91
+ node._maxItems = json.maxItems;
92
+ const prefixItems = json.prefixItems;
93
+ if (prefixItems?.length) {
94
+ node._prefixItems = prefixItems.map((item) => factory.fromJSON(item));
95
+ node._tupleKeyword = "prefixItems";
96
+ if (json.items && !Array.isArray(json.items)) {
97
+ node._items = factory.fromJSON(json.items);
98
+ }
99
+ }
100
+ else if (Array.isArray(json.items)) {
101
+ node._prefixItems = json.items.map((item) => factory.fromJSON(item));
102
+ node._tupleKeyword = "items";
103
+ }
104
+ else if (json.items) {
105
+ node._items = factory.fromJSON(json.items);
106
+ }
107
+ return node;
108
+ }
109
+ accept(visitor) {
110
+ return visitor.visitArray(this);
111
+ }
112
+ deepClone() {
113
+ const { metadata, customAttributes, typeVariants } = this.cloneBase();
114
+ const copy = new ArraySchema(undefined, metadata, customAttributes);
115
+ copy.typeVariants = typeVariants;
116
+ copy._items = this._items?.deepClone();
117
+ copy._prefixItems = this._prefixItems.map((item) => item.deepClone());
118
+ copy._tupleKeyword = this._tupleKeyword;
119
+ copy._minItems = this._minItems;
120
+ copy._maxItems = this._maxItems;
121
+ return copy;
122
+ }
123
+ createDefaultValue() {
124
+ return [];
125
+ }
126
+ writeTypeDefinition(json) {
127
+ this.writeTypeTo(json, "array");
128
+ if (this._prefixItems.length) {
129
+ const tupleJson = this._prefixItems.map((item) => item.toJSON());
130
+ if (this._tupleKeyword === "items") {
131
+ json.items = tupleJson;
132
+ }
133
+ else {
134
+ json.prefixItems = tupleJson;
135
+ if (this._items) {
136
+ json.items = this._items.toJSON();
137
+ }
138
+ else {
139
+ delete json.items;
140
+ }
141
+ }
142
+ }
143
+ else if (this._items) {
144
+ json.items = this._items.toJSON();
145
+ delete json.prefixItems;
146
+ }
147
+ else {
148
+ delete json.items;
149
+ delete json.prefixItems;
150
+ }
151
+ if (this._minItems !== undefined)
152
+ json.minItems = this._minItems;
153
+ if (this._maxItems !== undefined)
154
+ json.maxItems = this._maxItems;
155
+ }
156
+ resolvePathImpl(_segments) {
157
+ return undefined;
158
+ }
159
+ }
160
+ //# sourceMappingURL=array-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array-schema.js","sourceRoot":"","sources":["../../src/model/array-schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAc,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAM/C,MAAM,OAAO,WAAY,SAAQ,eAAe;IACrC,QAAQ,GAAG,OAAgB,CAAC;IAE7B,MAAM,CAAc;IACpB,YAAY,GAAiB,EAAE,CAAC;IAChC,aAAa,GAAsB,aAAa,CAAC;IACjD,SAAS,CAAU;IACnB,SAAS,CAAU;IAE3B,YACE,QAAsC,EACtC,WAA2B,IAAI,cAAc,EAAE,EAC/C,gBAA4C;QAE5C,KAAK,CAAC,QAAQ,EAAE,gBAAgB,IAAI,IAAI,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,IAAI,SAAS;QACX,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,OAAO,CAAC;QACjD,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,aAAa,CAAC;QACtC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,QAAQ,CAAC,MAAkB;QACzB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc,CACZ,OAA8B,EAC9B,UAA6B,aAAa;QAE1C,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAC7B,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU;QACR,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,KAAa;QACzB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,aAAa,CAAC,KAAa,EAAE,MAAkB;QAC7C,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,eAAe,KAAK,gBAAgB,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,MAAkB;QAC9B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,CAAC,KAAa;QAC5B,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,eAAe,KAAK,gBAAgB,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,QAAQ,CAAC,KAAyB;QACpC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,QAAQ,CAAC,KAAyB;QACpC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QACvD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAsB,EAAE,OAAsB;QAC5D,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE/B,MAAM,WAAW,GAAG,IAAI,CAAC,WAA6C,CAAC;QACvE,IAAI,WAAW,EAAE,MAAM,EAAE,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACtE,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;YACnC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACrE,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAC/B,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAI,OAAyB;QACjC,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,SAAS;QACP,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACtE,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACpE,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,mBAAmB,CAAC,IAAsB;QAClD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEhC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACjE,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;gBACnC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;gBAC7B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACN,OAAO,IAAI,CAAC,KAAK,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,KAAK,CAAC;YAClB,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QACjE,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;IACnE,CAAC;IAES,eAAe,CAAC,SAA4B;QACpD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import type { JsonSchemaAttributeRegistry } from "../attribute-registry.js";
2
+ import type { JsonSchemaObject } from "../types.js";
3
+ import { CustomAttributeCollection } from "./custom-attributes.js";
4
+ import type { SchemaFactory } from "./factory.js";
5
+ import { LeafSchema } from "./node.js";
6
+ import { SchemaMetadata } from "./metadata.js";
7
+ import type { SchemaVisitor } from "./visitor.js";
8
+ export declare class BooleanSchema extends LeafSchema {
9
+ readonly nodeKind: "boolean";
10
+ constructor(registry?: JsonSchemaAttributeRegistry, metadata?: SchemaMetadata, customAttributes?: CustomAttributeCollection);
11
+ static fromJSON(json: JsonSchemaObject, factory: SchemaFactory): BooleanSchema;
12
+ accept<T>(visitor: SchemaVisitor<T>): T;
13
+ deepClone(): BooleanSchema;
14
+ createDefaultValue(): boolean;
15
+ protected writeTypeDefinition(json: JsonSchemaObject): void;
16
+ }
17
+ //# sourceMappingURL=boolean-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boolean-schema.d.ts","sourceRoot":"","sources":["../../src/model/boolean-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,qBAAa,aAAc,SAAQ,UAAU;IAC3C,QAAQ,CAAC,QAAQ,EAAG,SAAS,CAAU;gBAGrC,QAAQ,CAAC,EAAE,2BAA2B,EACtC,QAAQ,GAAE,cAAqC,EAC/C,gBAAgB,CAAC,EAAE,yBAAyB;IAK9C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,GAAG,aAAa;IAO9E,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC;IAIvC,SAAS,IAAI,aAAa;IAO1B,kBAAkB,IAAI,OAAO;IAI7B,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;CAG5D"}
@@ -0,0 +1,31 @@
1
+ import { CustomAttributeCollection } from "./custom-attributes.js";
2
+ import { LeafSchema } from "./node.js";
3
+ import { SchemaMetadata } from "./metadata.js";
4
+ export class BooleanSchema extends LeafSchema {
5
+ nodeKind = "boolean";
6
+ constructor(registry, metadata = new SchemaMetadata(), customAttributes) {
7
+ super(metadata, customAttributes ?? new CustomAttributeCollection(registry));
8
+ }
9
+ static fromJSON(json, factory) {
10
+ const node = new BooleanSchema(factory.attributeRegistry);
11
+ node.applyMetadata(json);
12
+ node.applyTypeFrom(json);
13
+ return node;
14
+ }
15
+ accept(visitor) {
16
+ return visitor.visitBoolean(this);
17
+ }
18
+ deepClone() {
19
+ const { metadata, customAttributes, typeVariants } = this.cloneBase();
20
+ const copy = new BooleanSchema(undefined, metadata, customAttributes);
21
+ copy.typeVariants = typeVariants;
22
+ return copy;
23
+ }
24
+ createDefaultValue() {
25
+ return false;
26
+ }
27
+ writeTypeDefinition(json) {
28
+ this.writeTypeTo(json, "boolean");
29
+ }
30
+ }
31
+ //# sourceMappingURL=boolean-schema.js.map