@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
@@ -0,0 +1,38 @@
1
+ import { CustomAttributeCollection } from "./custom-attributes.js";
2
+ import { LeafSchema } from "./node.js";
3
+ import { SchemaMetadata } from "./metadata.js";
4
+ export class RefSchema extends LeafSchema {
5
+ _ref;
6
+ nodeKind = "ref";
7
+ constructor(_ref, registry, metadata = new SchemaMetadata(), customAttributes) {
8
+ super(metadata, customAttributes ?? new CustomAttributeCollection(registry));
9
+ this._ref = _ref;
10
+ }
11
+ get ref() {
12
+ return this._ref;
13
+ }
14
+ set ref(value) {
15
+ this._ref = value;
16
+ }
17
+ static fromJSON(json, factory) {
18
+ const node = new RefSchema(json.$ref, factory.attributeRegistry);
19
+ node.applyMetadata(json);
20
+ return node;
21
+ }
22
+ accept(visitor) {
23
+ return visitor.visitRef(this);
24
+ }
25
+ deepClone() {
26
+ const { metadata, customAttributes, typeVariants } = this.cloneBase();
27
+ const copy = new RefSchema(this._ref, undefined, metadata, customAttributes);
28
+ copy.typeVariants = typeVariants;
29
+ return copy;
30
+ }
31
+ createDefaultValue() {
32
+ return null;
33
+ }
34
+ writeTypeDefinition(json) {
35
+ json.$ref = this._ref;
36
+ }
37
+ }
38
+ //# sourceMappingURL=ref-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ref-schema.js","sourceRoot":"","sources":["../../src/model/ref-schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,MAAM,OAAO,SAAU,SAAQ,UAAU;IAI7B;IAHD,QAAQ,GAAG,KAAc,CAAC;IAEnC,YACU,IAAY,EACpB,QAAsC,EACtC,WAA2B,IAAI,cAAc,EAAE,EAC/C,gBAA4C;QAE5C,KAAK,CAAC,QAAQ,EAAE,gBAAgB,IAAI,IAAI,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CAAC;QALrE,SAAI,GAAJ,IAAI,CAAQ;IAMtB,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,GAAG,CAAC,KAAa;QACnB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAsB,EAAE,OAAsB;QAC5D,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,IAAK,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAClE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAI,OAAyB;QACjC,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,SAAS;QACP,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACtE,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAC7E,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAES,mBAAmB,CAAC,IAAsB;QAClD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;CACF"}
@@ -0,0 +1,29 @@
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 StringSchema extends LeafSchema {
9
+ readonly nodeKind: "string";
10
+ private _minLength?;
11
+ private _maxLength?;
12
+ private _pattern?;
13
+ private _format?;
14
+ constructor(registry?: JsonSchemaAttributeRegistry, metadata?: SchemaMetadata, customAttributes?: CustomAttributeCollection);
15
+ get minLength(): number | undefined;
16
+ set minLength(value: number | undefined);
17
+ get maxLength(): number | undefined;
18
+ set maxLength(value: number | undefined);
19
+ get pattern(): string | undefined;
20
+ set pattern(value: string | undefined);
21
+ get format(): string | undefined;
22
+ set format(value: string | undefined);
23
+ static fromJSON(json: JsonSchemaObject, factory: SchemaFactory): StringSchema;
24
+ accept<T>(visitor: SchemaVisitor<T>): T;
25
+ deepClone(): StringSchema;
26
+ createDefaultValue(): string;
27
+ protected writeTypeDefinition(json: JsonSchemaObject): void;
28
+ }
29
+ //# sourceMappingURL=string-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-schema.d.ts","sourceRoot":"","sources":["../../src/model/string-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,YAAa,SAAQ,UAAU;IAC1C,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IAEtC,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAC,CAAS;gBAGvB,QAAQ,CAAC,EAAE,2BAA2B,EACtC,QAAQ,GAAE,cAAqC,EAC/C,gBAAgB,CAAC,EAAE,yBAAyB;IAK9C,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAEtC;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAEtC;IAED,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAEhC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAEpC;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAEnC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,GAAG,YAAY;IAW7E,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC;IAIvC,SAAS,IAAI,YAAY;IAWzB,kBAAkB,IAAI,MAAM;IAI5B,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;CAO5D"}
@@ -0,0 +1,75 @@
1
+ import { CustomAttributeCollection } from "./custom-attributes.js";
2
+ import { LeafSchema } from "./node.js";
3
+ import { SchemaMetadata } from "./metadata.js";
4
+ export class StringSchema extends LeafSchema {
5
+ nodeKind = "string";
6
+ _minLength;
7
+ _maxLength;
8
+ _pattern;
9
+ _format;
10
+ constructor(registry, metadata = new SchemaMetadata(), customAttributes) {
11
+ super(metadata, customAttributes ?? new CustomAttributeCollection(registry));
12
+ }
13
+ get minLength() {
14
+ return this._minLength;
15
+ }
16
+ set minLength(value) {
17
+ this._minLength = value;
18
+ }
19
+ get maxLength() {
20
+ return this._maxLength;
21
+ }
22
+ set maxLength(value) {
23
+ this._maxLength = value;
24
+ }
25
+ get pattern() {
26
+ return this._pattern;
27
+ }
28
+ set pattern(value) {
29
+ this._pattern = value;
30
+ }
31
+ get format() {
32
+ return this._format;
33
+ }
34
+ set format(value) {
35
+ this._format = value;
36
+ }
37
+ static fromJSON(json, factory) {
38
+ const node = new StringSchema(factory.attributeRegistry);
39
+ node.applyMetadata(json);
40
+ node.applyTypeFrom(json);
41
+ node._minLength = json.minLength;
42
+ node._maxLength = json.maxLength;
43
+ node._pattern = json.pattern;
44
+ node._format = json.format;
45
+ return node;
46
+ }
47
+ accept(visitor) {
48
+ return visitor.visitString(this);
49
+ }
50
+ deepClone() {
51
+ const { metadata, customAttributes, typeVariants } = this.cloneBase();
52
+ const copy = new StringSchema(undefined, metadata, customAttributes);
53
+ copy.typeVariants = typeVariants;
54
+ copy._minLength = this._minLength;
55
+ copy._maxLength = this._maxLength;
56
+ copy._pattern = this._pattern;
57
+ copy._format = this._format;
58
+ return copy;
59
+ }
60
+ createDefaultValue() {
61
+ return "";
62
+ }
63
+ writeTypeDefinition(json) {
64
+ this.writeTypeTo(json, "string");
65
+ if (this._minLength !== undefined)
66
+ json.minLength = this._minLength;
67
+ if (this._maxLength !== undefined)
68
+ json.maxLength = this._maxLength;
69
+ if (this._pattern !== undefined)
70
+ json.pattern = this._pattern;
71
+ if (this._format !== undefined)
72
+ json.format = this._format;
73
+ }
74
+ }
75
+ //# sourceMappingURL=string-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-schema.js","sourceRoot":"","sources":["../../src/model/string-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { JsonSchemaObject, JsonSchemaType } from "../types.js";
2
+ /** Hält `type` als Einzelwert oder Array für spezifikationskonforme Roundtrips. */
3
+ export declare class TypeVariants {
4
+ private variants;
5
+ applyFrom(json: JsonSchemaObject): void;
6
+ writeTo(json: JsonSchemaObject, fallback: JsonSchemaType): void;
7
+ clone(): TypeVariants;
8
+ }
9
+ //# sourceMappingURL=type-variants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-variants.d.ts","sourceRoot":"","sources":["../../src/model/type-variants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEpE,mFAAmF;AACnF,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAA+B;IAE/C,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAYvC,OAAO,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI;IAK/D,KAAK,IAAI,YAAY;CAKtB"}
@@ -0,0 +1,25 @@
1
+ /** Hält `type` als Einzelwert oder Array für spezifikationskonforme Roundtrips. */
2
+ export class TypeVariants {
3
+ variants;
4
+ applyFrom(json) {
5
+ if (json.type === undefined) {
6
+ this.variants = undefined;
7
+ return;
8
+ }
9
+ if (Array.isArray(json.type)) {
10
+ this.variants = [...json.type];
11
+ return;
12
+ }
13
+ this.variants = [json.type];
14
+ }
15
+ writeTo(json, fallback) {
16
+ const types = this.variants ?? [fallback];
17
+ json.type = types.length === 1 ? types[0] : types;
18
+ }
19
+ clone() {
20
+ const copy = new TypeVariants();
21
+ copy.variants = this.variants ? [...this.variants] : undefined;
22
+ return copy;
23
+ }
24
+ }
25
+ //# sourceMappingURL=type-variants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-variants.js","sourceRoot":"","sources":["../../src/model/type-variants.ts"],"names":[],"mappings":"AAEA,mFAAmF;AACnF,MAAM,OAAO,YAAY;IACf,QAAQ,CAA+B;IAE/C,SAAS,CAAC,IAAsB;QAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,IAAsB,EAAE,QAAwB;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,CAAC;IAED,KAAK;QACH,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,18 @@
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
+ /** Schema ohne expliziten `type` – validiert laut Spezifikation jede Instanz. */
9
+ export declare class UntypedSchema extends LeafSchema {
10
+ readonly nodeKind: "untyped";
11
+ constructor(registry?: JsonSchemaAttributeRegistry, metadata?: SchemaMetadata, customAttributes?: CustomAttributeCollection);
12
+ static fromJSON(json: JsonSchemaObject, factory: SchemaFactory): UntypedSchema;
13
+ accept<T>(visitor: SchemaVisitor<T>): T;
14
+ deepClone(): UntypedSchema;
15
+ createDefaultValue(): unknown;
16
+ protected writeTypeDefinition(_json: JsonSchemaObject): void;
17
+ }
18
+ //# sourceMappingURL=untyped-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"untyped-schema.d.ts","sourceRoot":"","sources":["../../src/model/untyped-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,iFAAiF;AACjF,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;IAM9E,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,KAAK,EAAE,gBAAgB,GAAG,IAAI;CAG7D"}
@@ -0,0 +1,31 @@
1
+ import { CustomAttributeCollection } from "./custom-attributes.js";
2
+ import { LeafSchema } from "./node.js";
3
+ import { SchemaMetadata } from "./metadata.js";
4
+ /** Schema ohne expliziten `type` – validiert laut Spezifikation jede Instanz. */
5
+ export class UntypedSchema extends LeafSchema {
6
+ nodeKind = "untyped";
7
+ constructor(registry, metadata = new SchemaMetadata(), customAttributes) {
8
+ super(metadata, customAttributes ?? new CustomAttributeCollection(registry));
9
+ }
10
+ static fromJSON(json, factory) {
11
+ const node = new UntypedSchema(factory.attributeRegistry);
12
+ node.applyMetadata(json);
13
+ return node;
14
+ }
15
+ accept(visitor) {
16
+ return visitor.visitUntyped(this);
17
+ }
18
+ deepClone() {
19
+ const { metadata, customAttributes, typeVariants } = this.cloneBase();
20
+ const copy = new UntypedSchema(undefined, metadata, customAttributes);
21
+ copy.typeVariants = typeVariants;
22
+ return copy;
23
+ }
24
+ createDefaultValue() {
25
+ return null;
26
+ }
27
+ writeTypeDefinition(_json) {
28
+ // Kein `type` – spezifikationskonform für untypisierte Schemas.
29
+ }
30
+ }
31
+ //# sourceMappingURL=untyped-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"untyped-schema.js","sourceRoot":"","sources":["../../src/model/untyped-schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,iFAAiF;AACjF,MAAM,OAAO,aAAc,SAAQ,UAAU;IAClC,QAAQ,GAAG,SAAkB,CAAC;IAEvC,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,MAAM,CAAC,QAAQ,CAAC,IAAsB,EAAE,OAAsB;QAC5D,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC1D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAI,OAAyB;QACjC,OAAO,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,SAAS;QACP,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACtE,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACtE,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAES,mBAAmB,CAAC,KAAuB;QACnD,gEAAgE;IAClE,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ import type { ArraySchema } from "./array-schema.js";
2
+ import type { BooleanSchema } from "./boolean-schema.js";
3
+ import type { CompositionSchema } from "./composition-schema.js";
4
+ import type { IntegerSchema } from "./integer-schema.js";
5
+ import type { NullSchema } from "./null-schema.js";
6
+ import type { NumberSchema } from "./number-schema.js";
7
+ import type { ObjectSchema } from "./object-schema.js";
8
+ import type { RefSchema } from "./ref-schema.js";
9
+ import type { StringSchema } from "./string-schema.js";
10
+ import type { UntypedSchema } from "./untyped-schema.js";
11
+ export interface SchemaVisitor<T> {
12
+ visitRef(node: RefSchema): T;
13
+ visitComposition(node: CompositionSchema): T;
14
+ visitObject(node: ObjectSchema): T;
15
+ visitArray(node: ArraySchema): T;
16
+ visitString(node: StringSchema): T;
17
+ visitNumber(node: NumberSchema): T;
18
+ visitInteger(node: IntegerSchema): T;
19
+ visitBoolean(node: BooleanSchema): T;
20
+ visitNull(node: NullSchema): T;
21
+ visitUntyped(node: UntypedSchema): T;
22
+ }
23
+ //# sourceMappingURL=visitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visitor.d.ts","sourceRoot":"","sources":["../../src/model/visitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,CAAC;IAC7B,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,CAAC,CAAC;IAC7C,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,CAAC,CAAC;IACnC,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,CAAC,CAAC;IACjC,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,CAAC,CAAC;IACnC,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,CAAC,CAAC;IACnC,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,CAAC,CAAC;IACrC,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,CAAC,CAAC;IACrC,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,CAAC,CAAC;IAC/B,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,CAAC,CAAC;CACtC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=visitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visitor.js","sourceRoot":"","sources":["../../src/model/visitor.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import type { JsonSchemaAttributeRegistry } from "./attribute-registry.js";
2
+ import type { JsonSchemaObject } from "./types.js";
3
+ import { defaultSchemaFactory, SchemaNode } from "./model/index.js";
4
+ export declare function schemaFromJSON(json: JsonSchemaObject, registry?: JsonSchemaAttributeRegistry): SchemaNode;
5
+ export { defaultSchemaFactory };
6
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAiB,oBAAoB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnF,wBAAgB,cAAc,CAC5B,IAAI,EAAE,gBAAgB,EACtB,QAAQ,CAAC,EAAE,2BAA2B,GACrC,UAAU,CAEZ;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
package/dist/parse.js ADDED
@@ -0,0 +1,6 @@
1
+ import { SchemaFactory, defaultSchemaFactory } from "./model/index.js";
2
+ export function schemaFromJSON(json, registry) {
3
+ return new SchemaFactory(registry).fromJSON(json);
4
+ }
5
+ export { defaultSchemaFactory };
6
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAc,MAAM,kBAAkB,CAAC;AAEnF,MAAM,UAAU,cAAc,CAC5B,IAAsB,EACtB,QAAsC;IAEtC,OAAO,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,39 @@
1
+ export type JsonSchemaType = "string" | "number" | "integer" | "boolean" | "null" | "object" | "array";
2
+ export interface JsonSchemaObject {
3
+ $schema?: string;
4
+ $id?: string;
5
+ $ref?: string;
6
+ title?: string;
7
+ description?: string;
8
+ type?: JsonSchemaType | JsonSchemaType[];
9
+ enum?: unknown[];
10
+ const?: unknown;
11
+ default?: unknown;
12
+ examples?: unknown[];
13
+ properties?: Record<string, JsonSchemaObject>;
14
+ required?: string[];
15
+ additionalProperties?: boolean | JsonSchemaObject;
16
+ items?: JsonSchemaObject | JsonSchemaObject[];
17
+ prefixItems?: JsonSchemaObject[];
18
+ minItems?: number;
19
+ maxItems?: number;
20
+ minLength?: number;
21
+ maxLength?: number;
22
+ minimum?: number;
23
+ maximum?: number;
24
+ pattern?: string;
25
+ format?: string;
26
+ allOf?: JsonSchemaObject[];
27
+ anyOf?: JsonSchemaObject[];
28
+ oneOf?: JsonSchemaObject[];
29
+ $defs?: Record<string, JsonSchemaObject>;
30
+ definitions?: Record<string, JsonSchemaObject>;
31
+ [key: string]: unknown;
32
+ }
33
+ export interface AttributeDefinition<T = unknown> {
34
+ name: string;
35
+ defaultValue?: T;
36
+ serialize?: (value: T) => unknown;
37
+ deserialize?: (raw: unknown) => T;
38
+ }
39
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,MAAM,GACN,QAAQ,GACR,OAAO,CAAC;AAEZ,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,cAAc,GAAG,cAAc,EAAE,CAAC;IACzC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC9C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAC;IAClD,KAAK,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IAC9C,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC/C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,OAAO;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;IAClC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,CAAC,CAAC;CACnC"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@jsonschema-editor/json-schema",
3
+ "version": "0.1.0",
4
+ "description": "Objektorientiertes JSON-Schema-Datenmodell",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "author": "JSON Schema Editor Contributors",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/eumicro/jsonschema-editor.git",
11
+ "directory": "jsonschema-editor-json-schema"
12
+ },
13
+ "homepage": "https://github.com/eumicro/jsonschema-editor/tree/main/jsonschema-editor-json-schema#readme",
14
+ "bugs": "https://github.com/eumicro/jsonschema-editor/issues",
15
+ "keywords": [
16
+ "json-schema",
17
+ "schema",
18
+ "oop",
19
+ "typescript"
20
+ ],
21
+ "publishConfig": {
22
+ "access": "public"
23
+ },
24
+ "engines": {
25
+ "node": ">=20"
26
+ },
27
+ "main": "./dist/index.js",
28
+ "types": "./dist/index.d.ts",
29
+ "exports": {
30
+ ".": {
31
+ "types": "./dist/index.d.ts",
32
+ "import": "./dist/index.js"
33
+ }
34
+ },
35
+ "files": [
36
+ "dist",
37
+ "README.md"
38
+ ],
39
+ "sideEffects": false,
40
+ "devDependencies": {
41
+ "typescript": "^5.8.3",
42
+ "vitest": "^3.2.4"
43
+ },
44
+ "scripts": {
45
+ "prebuild": "node --input-type=module -e \"import fs from 'node:fs'; fs.rmSync('dist',{recursive:true,force:true})\"",
46
+ "build": "tsc -p tsconfig.json",
47
+ "typecheck": "tsc -p tsconfig.json --noEmit",
48
+ "test": "vitest run"
49
+ }
50
+ }