@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,108 @@
1
+ import { TypeVariants } from "./type-variants.js";
2
+ export class SchemaNode {
3
+ metadata;
4
+ customAttributes;
5
+ typeVariants = new TypeVariants();
6
+ constructor(metadata, customAttributes) {
7
+ this.metadata = metadata;
8
+ this.customAttributes = customAttributes;
9
+ }
10
+ resolvePath(segments) {
11
+ return this.resolvePathImpl(segments);
12
+ }
13
+ toJSON() {
14
+ const json = {};
15
+ this.writeTypeDefinition(json);
16
+ this.metadata.writeTo(json);
17
+ this.customAttributes.writeTo(json);
18
+ return json;
19
+ }
20
+ resolveAtScope(scope) {
21
+ return this.resolvePath(parseScope(scope));
22
+ }
23
+ clone() {
24
+ return this.deepClone();
25
+ }
26
+ get kind() {
27
+ return this.nodeKind;
28
+ }
29
+ get title() {
30
+ return this.metadata.title;
31
+ }
32
+ set title(value) {
33
+ this.metadata.title = value;
34
+ }
35
+ get description() {
36
+ return this.metadata.description;
37
+ }
38
+ set description(value) {
39
+ this.metadata.description = value;
40
+ }
41
+ get defaultValue() {
42
+ return this.metadata.defaultValue;
43
+ }
44
+ set defaultValue(value) {
45
+ this.metadata.defaultValue = value;
46
+ }
47
+ get examples() {
48
+ return this.metadata.examples;
49
+ }
50
+ set examples(value) {
51
+ this.metadata.examples = value;
52
+ }
53
+ get enumValues() {
54
+ return this.metadata.enumValues;
55
+ }
56
+ set enumValues(value) {
57
+ this.metadata.enumValues = value;
58
+ }
59
+ get constValue() {
60
+ return this.metadata.constValue;
61
+ }
62
+ set constValue(value) {
63
+ this.metadata.constValue = value;
64
+ }
65
+ getCustomAttribute(name) {
66
+ return this.customAttributes.get(name);
67
+ }
68
+ setCustomAttribute(name, value) {
69
+ this.customAttributes.set(name, value);
70
+ }
71
+ deleteCustomAttribute(name) {
72
+ return this.customAttributes.delete(name);
73
+ }
74
+ applyTypeFrom(json) {
75
+ this.typeVariants.applyFrom(json);
76
+ }
77
+ writeTypeTo(json, fallback) {
78
+ this.typeVariants.writeTo(json, fallback);
79
+ }
80
+ cloneBase() {
81
+ return {
82
+ metadata: this.metadata.clone(),
83
+ customAttributes: this.customAttributes.clone(),
84
+ typeVariants: this.typeVariants.clone(),
85
+ };
86
+ }
87
+ applyMetadata(json) {
88
+ this.metadata.applyFrom(json);
89
+ this.customAttributes.applyFrom(json);
90
+ }
91
+ }
92
+ export class LeafSchema extends SchemaNode {
93
+ resolvePathImpl(_segments) {
94
+ return undefined;
95
+ }
96
+ }
97
+ export class CompositeSchema extends SchemaNode {
98
+ }
99
+ export function parseScope(scope) {
100
+ const segments = [];
101
+ const regex = /\/properties\/([^/]+)/g;
102
+ let match;
103
+ while ((match = regex.exec(scope)) !== null) {
104
+ segments.push(match[1]);
105
+ }
106
+ return segments;
107
+ }
108
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/model/node.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAelD,MAAM,OAAgB,UAAU;IAIT;IACA;IAJX,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IAE5C,YACqB,QAAwB,EACxB,gBAA2C;QAD3C,aAAQ,GAAR,QAAQ,CAAgB;QACxB,qBAAgB,GAAhB,gBAAgB,CAA2B;IAC7D,CAAC;IAWJ,WAAW,CAAC,QAA2B;QACrC,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,MAAM;QACJ,MAAM,IAAI,GAAqB,EAAE,CAAC;QAClC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED,IAAI,KAAK,CAAC,KAAyB;QACjC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IACnC,CAAC;IAED,IAAI,WAAW,CAAC,KAAyB;QACvC,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC;IACpC,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;IACpC,CAAC;IAED,IAAI,YAAY,CAAC,KAAc;QAC7B,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,KAAK,CAAC;IACrC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,IAAI,QAAQ,CAAC,KAA4B;QACvC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;IACjC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;IAClC,CAAC;IAED,IAAI,UAAU,CAAC,KAA4B;QACzC,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC;IACnC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;IAClC,CAAC;IAED,IAAI,UAAU,CAAC,KAAc;QAC3B,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC;IACnC,CAAC;IAED,kBAAkB,CAAc,IAAY;QAC1C,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAkB,CAAC;IAC1D,CAAC;IAED,kBAAkB,CAAC,IAAY,EAAE,KAAc;QAC7C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,qBAAqB,CAAC,IAAY;QAChC,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAES,aAAa,CAAC,IAAsB;QAC5C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAES,WAAW,CAAC,IAAsB,EAAE,QAAwB;QACpE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAES,SAAS;QAKjB,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;YAC/B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;YAC/C,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;SACxC,CAAC;IACJ,CAAC;IAES,aAAa,CAAC,IAAsB;QAC5C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;CACF;AAED,MAAM,OAAgB,UAAW,SAAQ,UAAU;IACvC,eAAe,CAAC,SAA4B;QACpD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAED,MAAM,OAAgB,eAAgB,SAAQ,UAAU;CAEvD;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,wBAAwB,CAAC;IACvC,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -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 NullSchema extends LeafSchema {
9
+ readonly nodeKind: "null";
10
+ constructor(registry?: JsonSchemaAttributeRegistry, metadata?: SchemaMetadata, customAttributes?: CustomAttributeCollection);
11
+ static fromJSON(json: JsonSchemaObject, factory: SchemaFactory): NullSchema;
12
+ accept<T>(visitor: SchemaVisitor<T>): T;
13
+ deepClone(): NullSchema;
14
+ createDefaultValue(): null;
15
+ protected writeTypeDefinition(json: JsonSchemaObject): void;
16
+ }
17
+ //# sourceMappingURL=null-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"null-schema.d.ts","sourceRoot":"","sources":["../../src/model/null-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,UAAW,SAAQ,UAAU;IACxC,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAU;gBAGlC,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,UAAU;IAO3E,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC;IAIvC,SAAS,IAAI,UAAU;IAOvB,kBAAkB,IAAI,IAAI;IAI1B,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 NullSchema extends LeafSchema {
5
+ nodeKind = "null";
6
+ constructor(registry, metadata = new SchemaMetadata(), customAttributes) {
7
+ super(metadata, customAttributes ?? new CustomAttributeCollection(registry));
8
+ }
9
+ static fromJSON(json, factory) {
10
+ const node = new NullSchema(factory.attributeRegistry);
11
+ node.applyMetadata(json);
12
+ node.applyTypeFrom(json);
13
+ return node;
14
+ }
15
+ accept(visitor) {
16
+ return visitor.visitNull(this);
17
+ }
18
+ deepClone() {
19
+ const { metadata, customAttributes, typeVariants } = this.cloneBase();
20
+ const copy = new NullSchema(undefined, metadata, customAttributes);
21
+ copy.typeVariants = typeVariants;
22
+ return copy;
23
+ }
24
+ createDefaultValue() {
25
+ return null;
26
+ }
27
+ writeTypeDefinition(json) {
28
+ this.writeTypeTo(json, "null");
29
+ }
30
+ }
31
+ //# sourceMappingURL=null-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"null-schema.js","sourceRoot":"","sources":["../../src/model/null-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,UAAW,SAAQ,UAAU;IAC/B,QAAQ,GAAG,MAAe,CAAC;IAEpC,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,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACvD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAI,OAAyB;QACjC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,SAAS;QACP,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACtE,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,SAAS,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACnE,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,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export { NumberSchema, IntegerSchema, NumericSchema } from "./numeric-schema.js";
2
+ //# sourceMappingURL=number-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number-schema.d.ts","sourceRoot":"","sources":["../../src/model/number-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { NumberSchema, IntegerSchema, NumericSchema } from "./numeric-schema.js";
2
+ //# sourceMappingURL=number-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number-schema.js","sourceRoot":"","sources":["../../src/model/number-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,37 @@
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 abstract class NumericSchema extends LeafSchema {
9
+ protected _minimum?: number;
10
+ protected _maximum?: number;
11
+ protected constructor(registry?: JsonSchemaAttributeRegistry, metadata?: SchemaMetadata, customAttributes?: CustomAttributeCollection);
12
+ get minimum(): number | undefined;
13
+ set minimum(value: number | undefined);
14
+ get maximum(): number | undefined;
15
+ set maximum(value: number | undefined);
16
+ protected applyNumericConstraints(json: JsonSchemaObject): void;
17
+ protected writeNumericConstraints(json: JsonSchemaObject): void;
18
+ }
19
+ export declare class NumberSchema extends NumericSchema {
20
+ readonly nodeKind: "number";
21
+ constructor(registry?: JsonSchemaAttributeRegistry, metadata?: SchemaMetadata, customAttributes?: CustomAttributeCollection);
22
+ static fromJSON(json: JsonSchemaObject, factory: SchemaFactory): NumberSchema;
23
+ accept<T>(visitor: SchemaVisitor<T>): T;
24
+ deepClone(): NumberSchema;
25
+ createDefaultValue(): number;
26
+ protected writeTypeDefinition(json: JsonSchemaObject): void;
27
+ }
28
+ export declare class IntegerSchema extends NumericSchema {
29
+ readonly nodeKind: "integer";
30
+ constructor(registry?: JsonSchemaAttributeRegistry, metadata?: SchemaMetadata, customAttributes?: CustomAttributeCollection);
31
+ static fromJSON(json: JsonSchemaObject, factory: SchemaFactory): IntegerSchema;
32
+ accept<T>(visitor: SchemaVisitor<T>): T;
33
+ deepClone(): IntegerSchema;
34
+ createDefaultValue(): number;
35
+ protected writeTypeDefinition(json: JsonSchemaObject): void;
36
+ }
37
+ //# sourceMappingURL=numeric-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numeric-schema.d.ts","sourceRoot":"","sources":["../../src/model/numeric-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,8BAAsB,aAAc,SAAQ,UAAU;IACpD,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAE5B,SAAS,aACP,QAAQ,CAAC,EAAE,2BAA2B,EACtC,QAAQ,GAAE,cAAqC,EAC/C,gBAAgB,CAAC,EAAE,yBAAyB;IAK9C,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAEhC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAEpC;IAED,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAEhC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAEpC;IAED,SAAS,CAAC,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAK/D,SAAS,CAAC,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;CAIhE;AAED,qBAAa,YAAa,SAAQ,aAAa;IAC7C,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;gBAGpC,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,YAAY;IAQ7E,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC;IAIvC,SAAS,IAAI,YAAY;IASzB,kBAAkB,IAAI,MAAM;IAI5B,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;CAI5D;AAED,qBAAa,aAAc,SAAQ,aAAa;IAC9C,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;IAQ9E,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC;IAIvC,SAAS,IAAI,aAAa;IAS1B,kBAAkB,IAAI,MAAM;IAI5B,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;CAI5D"}
@@ -0,0 +1,95 @@
1
+ import { CustomAttributeCollection } from "./custom-attributes.js";
2
+ import { LeafSchema } from "./node.js";
3
+ import { SchemaMetadata } from "./metadata.js";
4
+ export class NumericSchema extends LeafSchema {
5
+ _minimum;
6
+ _maximum;
7
+ constructor(registry, metadata = new SchemaMetadata(), customAttributes) {
8
+ super(metadata, customAttributes ?? new CustomAttributeCollection(registry));
9
+ }
10
+ get minimum() {
11
+ return this._minimum;
12
+ }
13
+ set minimum(value) {
14
+ this._minimum = value;
15
+ }
16
+ get maximum() {
17
+ return this._maximum;
18
+ }
19
+ set maximum(value) {
20
+ this._maximum = value;
21
+ }
22
+ applyNumericConstraints(json) {
23
+ this._minimum = json.minimum;
24
+ this._maximum = json.maximum;
25
+ }
26
+ writeNumericConstraints(json) {
27
+ if (this._minimum !== undefined)
28
+ json.minimum = this._minimum;
29
+ if (this._maximum !== undefined)
30
+ json.maximum = this._maximum;
31
+ }
32
+ }
33
+ export class NumberSchema extends NumericSchema {
34
+ nodeKind = "number";
35
+ constructor(registry, metadata = new SchemaMetadata(), customAttributes) {
36
+ super(registry, metadata, customAttributes);
37
+ }
38
+ static fromJSON(json, factory) {
39
+ const node = new NumberSchema(factory.attributeRegistry);
40
+ node.applyMetadata(json);
41
+ node.applyTypeFrom(json);
42
+ node.applyNumericConstraints(json);
43
+ return node;
44
+ }
45
+ accept(visitor) {
46
+ return visitor.visitNumber(this);
47
+ }
48
+ deepClone() {
49
+ const { metadata, customAttributes, typeVariants } = this.cloneBase();
50
+ const copy = new NumberSchema(undefined, metadata, customAttributes);
51
+ copy.typeVariants = typeVariants;
52
+ copy._minimum = this._minimum;
53
+ copy._maximum = this._maximum;
54
+ return copy;
55
+ }
56
+ createDefaultValue() {
57
+ return 0;
58
+ }
59
+ writeTypeDefinition(json) {
60
+ this.writeTypeTo(json, "number");
61
+ this.writeNumericConstraints(json);
62
+ }
63
+ }
64
+ export class IntegerSchema extends NumericSchema {
65
+ nodeKind = "integer";
66
+ constructor(registry, metadata = new SchemaMetadata(), customAttributes) {
67
+ super(registry, metadata, customAttributes);
68
+ }
69
+ static fromJSON(json, factory) {
70
+ const node = new IntegerSchema(factory.attributeRegistry);
71
+ node.applyMetadata(json);
72
+ node.applyTypeFrom(json);
73
+ node.applyNumericConstraints(json);
74
+ return node;
75
+ }
76
+ accept(visitor) {
77
+ return visitor.visitInteger(this);
78
+ }
79
+ deepClone() {
80
+ const { metadata, customAttributes, typeVariants } = this.cloneBase();
81
+ const copy = new IntegerSchema(undefined, metadata, customAttributes);
82
+ copy.typeVariants = typeVariants;
83
+ copy._minimum = this._minimum;
84
+ copy._maximum = this._maximum;
85
+ return copy;
86
+ }
87
+ createDefaultValue() {
88
+ return 0;
89
+ }
90
+ writeTypeDefinition(json) {
91
+ this.writeTypeTo(json, "integer");
92
+ this.writeNumericConstraints(json);
93
+ }
94
+ }
95
+ //# sourceMappingURL=numeric-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numeric-schema.js","sourceRoot":"","sources":["../../src/model/numeric-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
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 declare class ObjectSchema extends CompositeSchema {
9
+ readonly nodeKind: "object";
10
+ private readonly propertyCollection;
11
+ private _additionalProperties;
12
+ constructor(registry?: JsonSchemaAttributeRegistry, metadata?: SchemaMetadata, customAttributes?: CustomAttributeCollection);
13
+ get properties(): ReadonlyMap<string, SchemaNode>;
14
+ get required(): readonly string[];
15
+ get propertyCount(): number;
16
+ get additionalProperties(): boolean | SchemaNode;
17
+ set additionalProperties(value: boolean | SchemaNode);
18
+ getProperty(name: string): SchemaNode | undefined;
19
+ setProperty(name: string, schema: SchemaNode, isRequired?: boolean): this;
20
+ removeProperty(name: string): boolean;
21
+ isPropertyRequired(name: string): boolean;
22
+ setPropertyRequired(name: string, isRequired: boolean): this;
23
+ getChildren(): readonly SchemaNode[];
24
+ static fromJSON(json: JsonSchemaObject, factory: SchemaFactory): ObjectSchema;
25
+ accept<T>(visitor: SchemaVisitor<T>): T;
26
+ deepClone(): ObjectSchema;
27
+ createDefaultValue(): Record<string, unknown>;
28
+ protected writeTypeDefinition(json: JsonSchemaObject): void;
29
+ protected resolvePathImpl(segments: readonly string[]): SchemaNode | undefined;
30
+ }
31
+ //# sourceMappingURL=object-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-schema.d.ts","sourceRoot":"","sources":["../../src/model/object-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;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,qBAAa,YAAa,SAAQ,eAAe;IAC/C,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IAEtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA4B;IAC/D,OAAO,CAAC,qBAAqB,CAA8B;gBAGzD,QAAQ,CAAC,EAAE,2BAA2B,EACtC,QAAQ,GAAE,cAAqC,EAC/C,gBAAgB,CAAC,EAAE,yBAAyB;IAK9C,IAAI,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAEhD;IAED,IAAI,QAAQ,IAAI,SAAS,MAAM,EAAE,CAEhC;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,oBAAoB,IAAI,OAAO,GAAG,UAAU,CAE/C;IAED,IAAI,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,EAEnD;IAED,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIjD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,UAAQ,GAAG,IAAI;IAKvE,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIzC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;IAK5D,WAAW,IAAI,SAAS,UAAU,EAAE;IAQpC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,GAAG,YAAY;IAuB7E,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC;IAIvC,SAAS,IAAI,YAAY;IAgBzB,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAQ7C,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAmB3D,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,GAAG,SAAS;CAO/E"}
@@ -0,0 +1,119 @@
1
+ import { CustomAttributeCollection } from "./custom-attributes.js";
2
+ import { CompositeSchema } from "./node.js";
3
+ import { SchemaMetadata } from "./metadata.js";
4
+ import { PropertyCollection } from "./property-collection.js";
5
+ export class ObjectSchema extends CompositeSchema {
6
+ nodeKind = "object";
7
+ propertyCollection = new PropertyCollection();
8
+ _additionalProperties = true;
9
+ constructor(registry, metadata = new SchemaMetadata(), customAttributes) {
10
+ super(metadata, customAttributes ?? new CustomAttributeCollection(registry));
11
+ }
12
+ get properties() {
13
+ return this.propertyCollection.asMap();
14
+ }
15
+ get required() {
16
+ return this.propertyCollection.requiredNames;
17
+ }
18
+ get propertyCount() {
19
+ return this.propertyCollection.size;
20
+ }
21
+ get additionalProperties() {
22
+ return this._additionalProperties;
23
+ }
24
+ set additionalProperties(value) {
25
+ this._additionalProperties = value;
26
+ }
27
+ getProperty(name) {
28
+ return this.propertyCollection.get(name);
29
+ }
30
+ setProperty(name, schema, isRequired = false) {
31
+ this.propertyCollection.add(name, schema, { required: isRequired });
32
+ return this;
33
+ }
34
+ removeProperty(name) {
35
+ return this.propertyCollection.remove(name);
36
+ }
37
+ isPropertyRequired(name) {
38
+ return this.propertyCollection.isRequired(name);
39
+ }
40
+ setPropertyRequired(name, isRequired) {
41
+ this.propertyCollection.setRequired(name, isRequired);
42
+ return this;
43
+ }
44
+ getChildren() {
45
+ const children = [...this.propertyCollection.entries()].map(([, schema]) => schema);
46
+ if (this._additionalProperties !== true && this._additionalProperties !== false) {
47
+ children.push(this._additionalProperties);
48
+ }
49
+ return children;
50
+ }
51
+ static fromJSON(json, factory) {
52
+ const node = new ObjectSchema(factory.attributeRegistry);
53
+ node.applyMetadata(json);
54
+ node.applyTypeFrom(json);
55
+ for (const [name, propJson] of Object.entries(json.properties ?? {})) {
56
+ const prop = factory.fromJSON(propJson);
57
+ const isRequired = (json.required ?? []).includes(name);
58
+ node.propertyCollection.add(name, prop, { required: isRequired });
59
+ }
60
+ if (json.additionalProperties === false) {
61
+ node._additionalProperties = false;
62
+ }
63
+ else if (json.additionalProperties &&
64
+ typeof json.additionalProperties === "object") {
65
+ node._additionalProperties = factory.fromJSON(json.additionalProperties);
66
+ }
67
+ return node;
68
+ }
69
+ accept(visitor) {
70
+ return visitor.visitObject(this);
71
+ }
72
+ deepClone() {
73
+ const { metadata, customAttributes, typeVariants } = this.cloneBase();
74
+ const copy = new ObjectSchema(undefined, metadata, customAttributes);
75
+ copy.typeVariants = typeVariants;
76
+ for (const [name, schema] of this.propertyCollection.entries()) {
77
+ copy.setProperty(name, schema.deepClone(), this.propertyCollection.isRequired(name));
78
+ }
79
+ copy._additionalProperties =
80
+ this._additionalProperties === true || this._additionalProperties === false
81
+ ? this._additionalProperties
82
+ : this._additionalProperties.deepClone();
83
+ return copy;
84
+ }
85
+ createDefaultValue() {
86
+ const data = {};
87
+ for (const [name, schema] of this.propertyCollection) {
88
+ data[name] = schema.createDefaultValue();
89
+ }
90
+ return data;
91
+ }
92
+ writeTypeDefinition(json) {
93
+ const properties = {};
94
+ for (const [name, schema] of this.propertyCollection) {
95
+ properties[name] = schema.toJSON();
96
+ }
97
+ this.writeTypeTo(json, "object");
98
+ json.properties = properties;
99
+ const required = this.propertyCollection.requiredNames;
100
+ if (required.length)
101
+ json.required = [...required];
102
+ if (this._additionalProperties === false) {
103
+ json.additionalProperties = false;
104
+ }
105
+ else if (this._additionalProperties !== true) {
106
+ json.additionalProperties = this._additionalProperties.toJSON();
107
+ }
108
+ }
109
+ resolvePathImpl(segments) {
110
+ if (segments.length === 0)
111
+ return this;
112
+ const [head, ...tail] = segments;
113
+ const child = this.propertyCollection.get(head);
114
+ if (!child)
115
+ return undefined;
116
+ return tail.length ? child.resolvePath(tail) : child;
117
+ }
118
+ }
119
+ //# sourceMappingURL=object-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-schema.js","sourceRoot":"","sources":["../../src/model/object-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { SchemaNode } from "./node.js";
2
+ export declare class PropertyCollection {
3
+ private readonly properties;
4
+ private readonly required;
5
+ add(name: string, schema: SchemaNode, options?: {
6
+ required?: boolean;
7
+ }): this;
8
+ remove(name: string): boolean;
9
+ get(name: string): SchemaNode | undefined;
10
+ has(name: string): boolean;
11
+ setRequired(name: string, isRequired: boolean): void;
12
+ isRequired(name: string): boolean;
13
+ get requiredNames(): readonly string[];
14
+ get size(): number;
15
+ entries(): IterableIterator<[string, SchemaNode]>;
16
+ [Symbol.iterator](): IterableIterator<[string, SchemaNode]>;
17
+ asMap(): ReadonlyMap<string, SchemaNode>;
18
+ clone(): PropertyCollection;
19
+ }
20
+ //# sourceMappingURL=property-collection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property-collection.d.ts","sourceRoot":"","sources":["../../src/model/property-collection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiC;IAC5D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAE9C,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAQ7E,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAK7B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIzC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;IAWpD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,IAAI,aAAa,IAAI,SAAS,MAAM,EAAE,CAErC;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,OAAO,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAIjD,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAI3D,KAAK,IAAI,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC;IAIxC,KAAK,IAAI,kBAAkB;CAU5B"}
@@ -0,0 +1,61 @@
1
+ export class PropertyCollection {
2
+ properties = new Map();
3
+ required = new Set();
4
+ add(name, schema, options) {
5
+ this.properties.set(name, schema);
6
+ if (options?.required) {
7
+ this.required.add(name);
8
+ }
9
+ return this;
10
+ }
11
+ remove(name) {
12
+ this.required.delete(name);
13
+ return this.properties.delete(name);
14
+ }
15
+ get(name) {
16
+ return this.properties.get(name);
17
+ }
18
+ has(name) {
19
+ return this.properties.has(name);
20
+ }
21
+ setRequired(name, isRequired) {
22
+ if (!this.properties.has(name)) {
23
+ throw new Error(`Property "${name}" does not exist.`);
24
+ }
25
+ if (isRequired) {
26
+ this.required.add(name);
27
+ }
28
+ else {
29
+ this.required.delete(name);
30
+ }
31
+ }
32
+ isRequired(name) {
33
+ return this.required.has(name);
34
+ }
35
+ get requiredNames() {
36
+ return [...this.required];
37
+ }
38
+ get size() {
39
+ return this.properties.size;
40
+ }
41
+ entries() {
42
+ return this.properties.entries();
43
+ }
44
+ [Symbol.iterator]() {
45
+ return this.entries();
46
+ }
47
+ asMap() {
48
+ return this.properties;
49
+ }
50
+ clone() {
51
+ const copy = new PropertyCollection();
52
+ for (const [name, schema] of this.properties) {
53
+ copy.properties.set(name, schema.deepClone());
54
+ }
55
+ for (const name of this.required) {
56
+ copy.required.add(name);
57
+ }
58
+ return copy;
59
+ }
60
+ }
61
+ //# sourceMappingURL=property-collection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property-collection.js","sourceRoot":"","sources":["../../src/model/property-collection.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,kBAAkB;IACZ,UAAU,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC3C,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAE9C,GAAG,CAAC,IAAY,EAAE,MAAkB,EAAE,OAAgC;QACpE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClC,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,WAAW,CAAC,IAAY,EAAE,UAAmB;QAC3C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,mBAAmB,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,aAAa;QACf,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,KAAK;QACH,MAAM,IAAI,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACtC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,20 @@
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 RefSchema extends LeafSchema {
9
+ private _ref;
10
+ readonly nodeKind: "ref";
11
+ constructor(_ref: string, registry?: JsonSchemaAttributeRegistry, metadata?: SchemaMetadata, customAttributes?: CustomAttributeCollection);
12
+ get ref(): string;
13
+ set ref(value: string);
14
+ static fromJSON(json: JsonSchemaObject, factory: SchemaFactory): RefSchema;
15
+ accept<T>(visitor: SchemaVisitor<T>): T;
16
+ deepClone(): RefSchema;
17
+ createDefaultValue(): unknown;
18
+ protected writeTypeDefinition(json: JsonSchemaObject): void;
19
+ }
20
+ //# sourceMappingURL=ref-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ref-schema.d.ts","sourceRoot":"","sources":["../../src/model/ref-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,SAAU,SAAQ,UAAU;IAIrC,OAAO,CAAC,IAAI;IAHd,QAAQ,CAAC,QAAQ,EAAG,KAAK,CAAU;gBAGzB,IAAI,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,2BAA2B,EACtC,QAAQ,GAAE,cAAqC,EAC/C,gBAAgB,CAAC,EAAE,yBAAyB;IAK9C,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,EAEpB;IAED,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,GAAG,SAAS;IAM1E,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC;IAIvC,SAAS,IAAI,SAAS;IAOtB,kBAAkB,IAAI,OAAO;IAI7B,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;CAG5D"}