ajsc 1.0.11 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/JSONSchemaConverter.d.ts +4 -12
- package/dist/JSONSchemaConverter.js +146 -35
- package/dist/JSONSchemaConverter.js.map +1 -1
- package/dist/JSONSchemaConverter.test.js +195 -0
- package/dist/JSONSchemaConverter.test.js.map +1 -1
- package/dist/Typebox.test.js +28 -2
- package/dist/Typebox.test.js.map +1 -1
- package/dist/TypescriptBaseConverter.d.ts +29 -38
- package/dist/TypescriptBaseConverter.js +186 -88
- package/dist/TypescriptBaseConverter.js.map +1 -1
- package/dist/TypescriptConverter.d.ts +3 -6
- package/dist/TypescriptConverter.js +14 -88
- package/dist/TypescriptConverter.js.map +1 -1
- package/dist/TypescriptConverter.test.js +114 -0
- package/dist/TypescriptConverter.test.js.map +1 -1
- package/dist/TypescriptProcedureConverter.d.ts +6 -7
- package/dist/TypescriptProcedureConverter.js +19 -94
- package/dist/TypescriptProcedureConverter.js.map +1 -1
- package/dist/{TypescriptProceduresConverter.test.js → TypescriptProcedureConverter.test.js} +1 -2
- package/dist/TypescriptProcedureConverter.test.js.map +1 -0
- package/dist/types.d.ts +51 -6
- package/dist/utils/path-utils.test.js.map +1 -1
- package/package.json +6 -6
- package/dist/TypescriptProceduresConverter.test.js.map +0 -1
- package/src/JSONSchemaConverter.test.ts +0 -342
- package/src/JSONSchemaConverter.ts +0 -459
- package/src/Typebox.test.ts +0 -93
- package/src/TypescriptBaseConverter.ts +0 -161
- package/src/TypescriptConverter.test.ts +0 -275
- package/src/TypescriptConverter.ts +0 -161
- package/src/TypescriptProcedureConverter.ts +0 -180
- package/src/TypescriptProceduresConverter.test.ts +0 -1013
- package/src/index.ts +0 -4
- package/src/types.ts +0 -101
- package/src/utils/path-utils.test.ts +0 -102
- package/src/utils/path-utils.ts +0 -89
- package/src/utils/to-pascal-case.ts +0 -10
- /package/dist/{TypescriptProceduresConverter.test.d.ts → TypescriptProcedureConverter.test.d.ts} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { JSONSchema7Definition } from "json-schema";
|
|
2
2
|
import { ConverterOptions, IRNode, SignatureOccurrences } from "./types.js";
|
|
3
3
|
/**
|
|
4
|
-
* JSONSchemaConverter converts a JSON Schema (Draft
|
|
4
|
+
* JSONSchemaConverter converts a JSON Schema (Draft-07) into an
|
|
5
5
|
* intermediate representation (IR) that can later be transformed
|
|
6
6
|
* into target language code via a language plugin.
|
|
7
7
|
*
|
|
@@ -13,16 +13,13 @@ export declare class JSONSchemaConverter {
|
|
|
13
13
|
private ir;
|
|
14
14
|
private rootSchema;
|
|
15
15
|
private signatureOccurrences;
|
|
16
|
+
private resolving;
|
|
16
17
|
get irNode(): IRNode;
|
|
17
18
|
get signatureOccurrencesMap(): SignatureOccurrences;
|
|
18
19
|
constructor(schema: JSONSchema7Definition, opts?: ConverterOptions | undefined);
|
|
19
20
|
private calcObjSignatureOccurrences;
|
|
20
21
|
/**
|
|
21
22
|
* Recursively converts a JSON Schema definition into an IRNode.
|
|
22
|
-
*
|
|
23
|
-
* This method now handles $ref resolution (using the root schema),
|
|
24
|
-
* combinators (oneOf, anyOf, allOf), as well as enums, const, objects,
|
|
25
|
-
* arrays, and primitives.
|
|
26
23
|
*/
|
|
27
24
|
private convertSchema;
|
|
28
25
|
/**
|
|
@@ -39,7 +36,6 @@ export declare class JSONSchemaConverter {
|
|
|
39
36
|
private convertToIR;
|
|
40
37
|
private getNameFromPath;
|
|
41
38
|
private getNextObjectSequence;
|
|
42
|
-
private getParentNameFromPath;
|
|
43
39
|
/**
|
|
44
40
|
* Generates a unique signature for a schema.
|
|
45
41
|
* Uses a stable JSON.stringify that sorts keys to ensure that
|
|
@@ -49,17 +45,13 @@ export declare class JSONSchemaConverter {
|
|
|
49
45
|
private getTypeName;
|
|
50
46
|
/**
|
|
51
47
|
* Resolves a local $ref using the stored root schema.
|
|
52
|
-
*
|
|
53
|
-
* This method expects local references (starting with "#/") and uses a simple
|
|
54
|
-
* JSON Pointer resolution algorithm.
|
|
55
48
|
*/
|
|
56
49
|
private resolveRef;
|
|
57
50
|
/**
|
|
58
51
|
* Resolves a JSON Pointer (RFC 6901) within the given document.
|
|
59
|
-
*
|
|
60
|
-
* @param pointer A JSON Pointer string (e.g., "#/definitions/Foo" or "#/$defs/Bar")
|
|
61
|
-
* @param document The root document object.
|
|
62
52
|
*/
|
|
63
53
|
private resolvePointer;
|
|
64
54
|
private simpleHash;
|
|
55
|
+
private applyMetadata;
|
|
56
|
+
private augmentWithApplicators;
|
|
65
57
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* JSONSchemaConverter converts a JSON Schema (Draft
|
|
2
|
+
* JSONSchemaConverter converts a JSON Schema (Draft-07) into an
|
|
3
3
|
* intermediate representation (IR) that can later be transformed
|
|
4
4
|
* into target language code via a language plugin.
|
|
5
5
|
*
|
|
@@ -20,8 +20,10 @@ export class JSONSchemaConverter {
|
|
|
20
20
|
// Keep track of the occurrences of each schema signature and the schema/property names
|
|
21
21
|
// used to reference the signature.
|
|
22
22
|
this.signatureOccurrences = new Map();
|
|
23
|
+
this.resolving = new Set();
|
|
24
|
+
// Step 1.2: shallow copy to avoid mutating caller's object
|
|
23
25
|
if (typeof schema === "object") {
|
|
24
|
-
schema
|
|
26
|
+
schema = { ...schema, title: schema.title || "Root" };
|
|
25
27
|
}
|
|
26
28
|
// Optionally validate the schema.
|
|
27
29
|
if (this.opts?.validateSchema) {
|
|
@@ -33,9 +35,10 @@ export class JSONSchemaConverter {
|
|
|
33
35
|
if (typeof resolvedSchema === "object") {
|
|
34
36
|
this.rootSchema = resolvedSchema;
|
|
35
37
|
}
|
|
38
|
+
// Reset cycle detection before conversion
|
|
39
|
+
this.resolving = new Set();
|
|
36
40
|
// Convert the resolved schema to our intermediate representation.
|
|
37
41
|
let ir = this.convertToIR(resolvedSchema);
|
|
38
|
-
// add calculated signature occurrences by traversing the IR for all object types
|
|
39
42
|
// Apply any custom IR transformation.
|
|
40
43
|
if (this.opts?.transform) {
|
|
41
44
|
ir = this.opts.transform(ir);
|
|
@@ -75,13 +78,9 @@ export class JSONSchemaConverter {
|
|
|
75
78
|
}
|
|
76
79
|
/**
|
|
77
80
|
* Recursively converts a JSON Schema definition into an IRNode.
|
|
78
|
-
*
|
|
79
|
-
* This method now handles $ref resolution (using the root schema),
|
|
80
|
-
* combinators (oneOf, anyOf, allOf), as well as enums, const, objects,
|
|
81
|
-
* arrays, and primitives.
|
|
82
81
|
*/
|
|
83
82
|
convertSchema(schema, ctx) {
|
|
84
|
-
if (
|
|
83
|
+
if (schema === undefined || schema === null) {
|
|
85
84
|
// Return an unknown
|
|
86
85
|
return {
|
|
87
86
|
type: "null",
|
|
@@ -99,13 +98,29 @@ export class JSONSchemaConverter {
|
|
|
99
98
|
};
|
|
100
99
|
}
|
|
101
100
|
else {
|
|
102
|
-
|
|
101
|
+
// Step 1.6: A schema of 'false' rejects all values.
|
|
102
|
+
return {
|
|
103
|
+
type: "never",
|
|
104
|
+
path: ctx.path,
|
|
105
|
+
};
|
|
103
106
|
}
|
|
104
107
|
}
|
|
105
|
-
// If the schema contains a $ref, resolve it.
|
|
108
|
+
// Step 1.4: If the schema contains a $ref, resolve it with cycle detection.
|
|
106
109
|
if (schema.$ref) {
|
|
110
|
+
const ref = schema.$ref;
|
|
111
|
+
if (this.resolving.has(ref)) {
|
|
112
|
+
// Circular reference detected - return a placeholder
|
|
113
|
+
return {
|
|
114
|
+
type: "any",
|
|
115
|
+
path: ctx.path,
|
|
116
|
+
constraints: { circular: ref },
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
this.resolving.add(ref);
|
|
107
120
|
const resolved = this.resolveRef(schema);
|
|
108
|
-
|
|
121
|
+
const result = this.convertSchema(resolved, ctx);
|
|
122
|
+
this.resolving.delete(ref);
|
|
123
|
+
return result;
|
|
109
124
|
}
|
|
110
125
|
// Handle combinators.
|
|
111
126
|
if (schema.oneOf) {
|
|
@@ -174,7 +189,7 @@ export class JSONSchemaConverter {
|
|
|
174
189
|
if (schema.properties) {
|
|
175
190
|
for (const key in schema.properties) {
|
|
176
191
|
const propSchema = schema.properties[key];
|
|
177
|
-
|
|
192
|
+
const child = this.convertSchema(propSchema, {
|
|
178
193
|
path: ctx.path ? `${ctx.path}.${key}` : key,
|
|
179
194
|
});
|
|
180
195
|
// Mark the property as required if listed in the "required" array.
|
|
@@ -184,28 +199,97 @@ export class JSONSchemaConverter {
|
|
|
184
199
|
node.properties[key] = child;
|
|
185
200
|
}
|
|
186
201
|
}
|
|
202
|
+
// Step 1.5: Fix additionalProperties: false silently ignored
|
|
203
|
+
if (schema.additionalProperties !== undefined) {
|
|
204
|
+
if (schema.additionalProperties === false) {
|
|
205
|
+
node.additionalProperties = false;
|
|
206
|
+
}
|
|
207
|
+
else if (schema.additionalProperties === true) {
|
|
208
|
+
node.additionalProperties = true;
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
node.additionalProperties = this.convertSchema(schema.additionalProperties, {
|
|
212
|
+
path: ctx.path ? `${ctx.path}.*` : "*",
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// Step 1.8: Preserve pattern keys in patternProperties
|
|
217
|
+
if (schema.patternProperties) {
|
|
218
|
+
const patternEntries = Object.entries(schema.patternProperties);
|
|
219
|
+
// Preserve pattern-to-schema mapping in new field
|
|
220
|
+
node.patternProperties = {};
|
|
221
|
+
for (const [pattern, patternSchema] of patternEntries) {
|
|
222
|
+
node.patternProperties[pattern] = this.convertSchema(patternSchema, {
|
|
223
|
+
path: ctx.path ? `${ctx.path}.*` : "*",
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
// Also set additionalProperties for backward compatibility
|
|
227
|
+
if (patternEntries.length > 1) {
|
|
228
|
+
node.additionalProperties = this.convertSchema({
|
|
229
|
+
anyOf: patternEntries.map(([_, schema]) => schema),
|
|
230
|
+
}, {
|
|
231
|
+
path: ctx.path ? `${ctx.path}.*` : "*",
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
else if (patternEntries.length === 1) {
|
|
235
|
+
node.additionalProperties = this.convertSchema(patternEntries[0][1], {
|
|
236
|
+
path: ctx.path ? `${ctx.path}.*` : "*",
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
}
|
|
187
240
|
node.signature = this.calcObjSignatureOccurrences(schema, node);
|
|
241
|
+
// Step 1.9d: object constraints
|
|
242
|
+
if (schema.minProperties !== undefined || schema.maxProperties !== undefined) {
|
|
243
|
+
node.constraints = node.constraints || {};
|
|
244
|
+
if (schema.minProperties !== undefined)
|
|
245
|
+
node.constraints.minProperties = schema.minProperties;
|
|
246
|
+
if (schema.maxProperties !== undefined)
|
|
247
|
+
node.constraints.maxProperties = schema.maxProperties;
|
|
248
|
+
}
|
|
249
|
+
this.applyMetadata(node, schema);
|
|
250
|
+
this.augmentWithApplicators(node, schema, ctx);
|
|
188
251
|
return node;
|
|
189
252
|
}
|
|
190
253
|
case "array": {
|
|
191
254
|
const name = this.getTypeName(schema, ctx);
|
|
255
|
+
// Step 1.7: Tuple validation: items is an array of positional schemas
|
|
256
|
+
if (schema.items && Array.isArray(schema.items)) {
|
|
257
|
+
const tupleItems = schema.items.map((item, i) => this.convertSchema(item, {
|
|
258
|
+
path: ctx.path ? `${ctx.path}.${i}` : `${i}`,
|
|
259
|
+
}));
|
|
260
|
+
const tupleNode = {
|
|
261
|
+
type: "tuple",
|
|
262
|
+
tupleItems,
|
|
263
|
+
path: ctx.path,
|
|
264
|
+
name,
|
|
265
|
+
};
|
|
266
|
+
this.applyMetadata(tupleNode, schema);
|
|
267
|
+
this.augmentWithApplicators(tupleNode, schema, ctx);
|
|
268
|
+
return tupleNode;
|
|
269
|
+
}
|
|
270
|
+
// Regular array
|
|
192
271
|
const node = {
|
|
193
272
|
type: "array",
|
|
194
273
|
path: ctx.path,
|
|
195
274
|
name,
|
|
196
275
|
};
|
|
197
276
|
if (schema.items) {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
277
|
+
node.items = this.convertSchema(schema.items, {
|
|
278
|
+
path: ctx.path ? `${ctx.path}.0` : "0",
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
// Capture array constraints
|
|
282
|
+
if (schema.minItems !== undefined || schema.maxItems !== undefined || schema.uniqueItems !== undefined) {
|
|
283
|
+
node.constraints = node.constraints || {};
|
|
284
|
+
if (schema.minItems !== undefined)
|
|
285
|
+
node.constraints.minItems = schema.minItems;
|
|
286
|
+
if (schema.maxItems !== undefined)
|
|
287
|
+
node.constraints.maxItems = schema.maxItems;
|
|
288
|
+
if (schema.uniqueItems !== undefined)
|
|
289
|
+
node.constraints.uniqueItems = schema.uniqueItems;
|
|
208
290
|
}
|
|
291
|
+
this.applyMetadata(node, schema);
|
|
292
|
+
this.augmentWithApplicators(node, schema, ctx);
|
|
209
293
|
return node;
|
|
210
294
|
}
|
|
211
295
|
case "string":
|
|
@@ -225,6 +309,15 @@ export class JSONSchemaConverter {
|
|
|
225
309
|
node.constraints.minimum = schema.minimum;
|
|
226
310
|
if (schema.maximum !== undefined)
|
|
227
311
|
node.constraints.maximum = schema.maximum;
|
|
312
|
+
// Step 1.9c: extended constraints
|
|
313
|
+
if (schema.exclusiveMinimum !== undefined)
|
|
314
|
+
node.constraints.exclusiveMinimum = schema.exclusiveMinimum;
|
|
315
|
+
if (schema.exclusiveMaximum !== undefined)
|
|
316
|
+
node.constraints.exclusiveMaximum = schema.exclusiveMaximum;
|
|
317
|
+
if (schema.format)
|
|
318
|
+
node.constraints.format = schema.format;
|
|
319
|
+
this.applyMetadata(node, schema);
|
|
320
|
+
this.augmentWithApplicators(node, schema, ctx);
|
|
228
321
|
return node;
|
|
229
322
|
}
|
|
230
323
|
default:
|
|
@@ -233,7 +326,9 @@ export class JSONSchemaConverter {
|
|
|
233
326
|
}
|
|
234
327
|
}
|
|
235
328
|
// Fallback: if no type is provided, assume an object.
|
|
236
|
-
|
|
329
|
+
const fallbackNode = { type: "object", properties: {}, path: ctx.path };
|
|
330
|
+
this.augmentWithApplicators(fallbackNode, schema, ctx);
|
|
331
|
+
return fallbackNode;
|
|
237
332
|
}
|
|
238
333
|
/**
|
|
239
334
|
* Converts a JSON Schema definition to an IRNode.
|
|
@@ -241,6 +336,7 @@ export class JSONSchemaConverter {
|
|
|
241
336
|
convertToIRSchema(schema) {
|
|
242
337
|
// reset the root schema
|
|
243
338
|
this.rootSchema = null;
|
|
339
|
+
this.resolving = new Set();
|
|
244
340
|
// Optionally validate the schema.
|
|
245
341
|
if (this.opts?.validateSchema) {
|
|
246
342
|
this.validateSchema(schema);
|
|
@@ -259,7 +355,7 @@ export class JSONSchemaConverter {
|
|
|
259
355
|
}
|
|
260
356
|
return ir;
|
|
261
357
|
}
|
|
262
|
-
validateSchema(
|
|
358
|
+
validateSchema(_schema) {
|
|
263
359
|
// Implement or integrate with a JSON Schema validator if desired.
|
|
264
360
|
// For now, we assume the schema is valid.
|
|
265
361
|
}
|
|
@@ -283,11 +379,6 @@ export class JSONSchemaConverter {
|
|
|
283
379
|
getNextObjectSequence() {
|
|
284
380
|
return this.signatureOccurrences.size;
|
|
285
381
|
}
|
|
286
|
-
getParentNameFromPath(path) {
|
|
287
|
-
const split = path.split(".").filter((x) => !x.match(/^\d+$/));
|
|
288
|
-
// ignore numbers
|
|
289
|
-
return split[split.length - 2] || undefined;
|
|
290
|
-
}
|
|
291
382
|
/**
|
|
292
383
|
* Generates a unique signature for a schema.
|
|
293
384
|
* Uses a stable JSON.stringify that sorts keys to ensure that
|
|
@@ -316,9 +407,6 @@ export class JSONSchemaConverter {
|
|
|
316
407
|
}
|
|
317
408
|
/**
|
|
318
409
|
* Resolves a local $ref using the stored root schema.
|
|
319
|
-
*
|
|
320
|
-
* This method expects local references (starting with "#/") and uses a simple
|
|
321
|
-
* JSON Pointer resolution algorithm.
|
|
322
410
|
*/
|
|
323
411
|
resolveRef(schema) {
|
|
324
412
|
if (!schema.$ref)
|
|
@@ -327,6 +415,10 @@ export class JSONSchemaConverter {
|
|
|
327
415
|
throw new Error("Root schema not available for reference resolution.");
|
|
328
416
|
}
|
|
329
417
|
const ref = schema.$ref;
|
|
418
|
+
// Step 1.3: Handle $ref: "#" (root reference)
|
|
419
|
+
if (ref === "#") {
|
|
420
|
+
return this.rootSchema;
|
|
421
|
+
}
|
|
330
422
|
if (!ref.startsWith("#/")) {
|
|
331
423
|
throw new Error(`Only local references are supported. Encountered: ${ref}`);
|
|
332
424
|
}
|
|
@@ -334,9 +426,6 @@ export class JSONSchemaConverter {
|
|
|
334
426
|
}
|
|
335
427
|
/**
|
|
336
428
|
* Resolves a JSON Pointer (RFC 6901) within the given document.
|
|
337
|
-
*
|
|
338
|
-
* @param pointer A JSON Pointer string (e.g., "#/definitions/Foo" or "#/$defs/Bar")
|
|
339
|
-
* @param document The root document object.
|
|
340
429
|
*/
|
|
341
430
|
resolvePointer(pointer, document) {
|
|
342
431
|
// Remove the leading '#' character.
|
|
@@ -366,5 +455,27 @@ export class JSONSchemaConverter {
|
|
|
366
455
|
}
|
|
367
456
|
return hash;
|
|
368
457
|
}
|
|
458
|
+
// Step 1.9a: Apply description and default metadata
|
|
459
|
+
applyMetadata(node, schema) {
|
|
460
|
+
if (schema.description) {
|
|
461
|
+
node.description = schema.description;
|
|
462
|
+
}
|
|
463
|
+
if (schema.default !== undefined) {
|
|
464
|
+
node.defaultValue = schema.default;
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
// Step 1.10b: Augment with not/if-then-else when coexisting with type
|
|
468
|
+
augmentWithApplicators(node, schema, ctx) {
|
|
469
|
+
if (schema.not) {
|
|
470
|
+
node.not = this.convertSchema(schema.not, ctx);
|
|
471
|
+
}
|
|
472
|
+
if (schema.if) {
|
|
473
|
+
node.conditional = {
|
|
474
|
+
if: this.convertSchema(schema.if, ctx),
|
|
475
|
+
then: schema.then ? this.convertSchema(schema.then, ctx) : undefined,
|
|
476
|
+
else: schema.else ? this.convertSchema(schema.else, ctx) : undefined,
|
|
477
|
+
};
|
|
478
|
+
}
|
|
479
|
+
}
|
|
369
480
|
}
|
|
370
481
|
//# sourceMappingURL=JSONSchemaConverter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JSONSchemaConverter.js","sourceRoot":"","sources":["../src/JSONSchemaConverter.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,MAAM,OAAO,mBAAmB;IAQ9B,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,IAAI,uBAAuB;QACzB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IAED,YACE,MAA6B,EACrB,IAAuB;QAAvB,SAAI,GAAJ,IAAI,CAAmB;QAhBjC,6DAA6D;QACrD,eAAU,GAAiC,IAAI,CAAC;QACxD,uFAAuF;QACvF,mCAAmC;QAC3B,yBAAoB,GAAyB,IAAI,GAAG,EAAE,CAAC;QAc7D,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC;QACxC,CAAC;QAED,kCAAkC;QAClC,IAAI,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC;YAC9B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QAED,uDAAuD;QACvD,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAEtD,+EAA+E;QAC/E,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;YACvC,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC;QACnC,CAAC;QAED,kEAAkE;QAClE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAE1C,iFAAiF;QAEjF,sCAAsC;QACtC,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;YACzB,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAEO,2BAA2B,CACjC,MAGC,EACD,IAA+B;QAE/B,uCAAuC;QACvC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAElD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpD,uEAAuE;YACvE,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAC9D,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC;YAEvB,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,CAChC,CAAC;YACF,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACxE,CAAC;YAED,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,EAAE;gBACvC,KAAK,EAAE,CAAC;gBACR,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;gBACtD,SAAS;aACV,CAAC,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACK,aAAa,CACnB,MAA6B,EAC7B,GAEC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,oBAAoB;YACpB,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC;QACJ,CAAC;QACD,0BAA0B;QAC1B,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,wCAAwC;gBACxC,OAAO;oBACL,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,EAAE;oBACd,IAAI,EAAE,GAAG,CAAC,IAAI;iBACf,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAC;YACJ,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC;QAED,sBAAsB;QACtB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAC7C,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,CACnC,CAAC;YACF,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,OAAO;gBACP,WAAW,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE;gBACpC,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAC7C,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,CACnC,CAAC;YACF,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,OAAO;gBACP,WAAW,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE;gBACpC,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAC7C,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,CACnC,CAAC;YACF,OAAO;gBACL,IAAI,EAAE,cAAc;gBACpB,OAAO;gBACP,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC;QACJ,CAAC;QAED,iBAAiB;QACjB,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC;QACJ,CAAC;QAED,kBAAkB;QAClB,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;gBACpC,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC;QACJ,CAAC;QAED,uCAAuC;QACvC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,oDAAoD;YACpD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACpC,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAChD,CAAC;gBACF,OAAO;oBACL,IAAI,EAAE,OAAO;oBACb,OAAO;oBACP,IAAI,EAAE,GAAG,CAAC,IAAI;iBACf,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;oBACpB,KAAK,QAAQ,CAAC,CAAC,CAAC;wBACd,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;wBAE3C,MAAM,IAAI,GAIN;4BACF,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE,EAAE;4BACd,IAAI,EAAE,GAAG,CAAC,IAAI;4BACd,IAAI;yBACL,CAAC;wBAEF,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;4BACtB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gCACpC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gCAE1C,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE;oCACzC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG;iCAC5C,CAAC,CAAC;gCAEH,mEAAmE;gCACnE,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;oCAC9B,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;oCAC/B,CAAC,CAAC,KAAK,CAAC;gCACV,IAAI,CAAC,UAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;4BAChC,CAAC;wBACH,CAAC;wBAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,2BAA2B,CAC/C,MAGC,EACD,IAAI,CACL,CAAC;wBAEF,OAAO,IAAI,CAAC;oBACd,CAAC;oBACD,KAAK,OAAO,CAAC,CAAC,CAAC;wBACb,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;wBAE3C,MAAM,IAAI,GAA8B;4BACtC,IAAI,EAAE,OAAO;4BACb,IAAI,EAAE,GAAG,CAAC,IAAI;4BACd,IAAI;yBACL,CAAC;wBAEF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;4BACjB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gCAChC,4DAA4D;gCAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAC3C,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,CAC9B,CAAC;gCACF,IAAI,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;4BAC1D,CAAC;iCAAM,CAAC;gCACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE;oCAC5C,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG;iCACvC,CAAC,CAAC;4BACL,CAAC;wBACH,CAAC;wBACD,OAAO,IAAI,CAAC;oBACd,CAAC;oBACD,KAAK,QAAQ,CAAC;oBACd,KAAK,QAAQ,CAAC;oBACd,KAAK,SAAS,CAAC;oBACf,KAAK,SAAS,CAAC;oBACf,KAAK,MAAM,CAAC,CAAC,CAAC;wBACZ,MAAM,IAAI,GAAW,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;wBAC3D,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;wBACtB,IAAI,MAAM,CAAC,OAAO;4BAAE,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;wBAC9D,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;4BAChC,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;wBAChD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;4BAChC,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;wBAChD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;4BAC9B,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;wBAC5C,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;4BAC9B,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;wBAC5C,OAAO,IAAI,CAAC;oBACd,CAAC;oBACD;wBACE,MAAM,IAAI,KAAK,CACb,4BAA4B,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CACtE,CAAC;gBACN,CAAC;YACH,CAAC;QACH,CAAC;QAED,sDAAsD;QACtD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IAC5D,CAAC;IAED;;OAEG;IACI,iBAAiB,CAAC,MAA6B;QACpD,wBAAwB;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,kCAAkC;QAClC,IAAI,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC;YAC9B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QAED,uDAAuD;QACvD,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAEtD,+EAA+E;QAC/E,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;YACvC,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC;QACnC,CAAC;QAED,kEAAkE;QAClE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAE1C,sCAAsC;QACtC,IAAI,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;YACzB,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,cAAc,CAAC,MAA6B;QAClD,kEAAkE;QAClE,0CAA0C;IAC5C,CAAC;IAED;;;;OAIG;IACK,iBAAiB,CACvB,MAA6B;QAE7B,+DAA+D;QAC/D,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,WAAW,CAAC,MAA6B;QAC/C,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;IAEO,eAAe,CAAC,IAAY;QAClC,iBAAiB;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAE/D,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;IAC9C,CAAC;IAEO,qBAAqB;QAC3B,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;IACxC,CAAC;IAEO,qBAAqB,CAAC,IAAY;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/D,iBAAiB;QACjB,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACK,kBAAkB,CAAC,MAA6B;QACtD,SAAS,QAAQ,CAAC,GAAQ;YACxB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO,GAAG,CAAC;YACxD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;gBAAE,OAAO,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACjD,MAAM,MAAM,GAAQ,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;iBACb,IAAI,EAAE;iBACN,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACf,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;YACL,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACtE,CAAC;IAEO,WAAW,CAAC,MAAmB,EAAE,GAAqB;QAC5D,OAAO,CACL,MAAM,CAAC,KAAK;YACZ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;YAC9B,SAAS,IAAI,CAAC,qBAAqB,EAAE,EAAE,CACxC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,UAAU,CAAC,MAAmB;QACpC,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,OAAO,MAA0C,CAAC;QACpE,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,qDAAqD,GAAG,EAAE,CAC3D,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACK,cAAc,CAAC,OAAe,EAAE,QAAa;QACnD,oCAAoC;QACpC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACvB,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,OAAO;YAAE,OAAO,QAAQ,CAAC;QAC9B,uDAAuD;QACvD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,OAAO,GAAG,QAAQ,CAAC;QACvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,4CAA4C;YAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC/D,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YAC7B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,cAAc,OAAO,0BAA0B,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,UAAU,CAAC,GAAW;QAC5B,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,CAAC,CAAC,2BAA2B;QACxC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"JSONSchemaConverter.js","sourceRoot":"","sources":["../src/JSONSchemaConverter.ts"],"names":[],"mappings":"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"}
|
|
@@ -298,5 +298,200 @@ describe("JSONSchemaConverter", () => {
|
|
|
298
298
|
expect(converter.irNode.properties?.profile.signature).toBe(converter.irNode.properties?.profile2.signature);
|
|
299
299
|
expect(converter.irNode.properties?.contactMethods.signature).toBe(converter.irNode.properties?.contactMethods2.signature);
|
|
300
300
|
});
|
|
301
|
+
// Step 1.2: Fix input schema mutation
|
|
302
|
+
it("should not mutate the input schema object", () => {
|
|
303
|
+
const schema = {
|
|
304
|
+
type: "object",
|
|
305
|
+
properties: { name: { type: "string" } },
|
|
306
|
+
};
|
|
307
|
+
new JSONSchemaConverter(schema);
|
|
308
|
+
expect(schema.title).toBeUndefined();
|
|
309
|
+
});
|
|
310
|
+
// Step 1.3 + 1.4: $ref "#" and circular reference detection
|
|
311
|
+
it("should handle $ref to root (#) without error", () => {
|
|
312
|
+
const converter = new JSONSchemaConverter({
|
|
313
|
+
type: "object",
|
|
314
|
+
properties: {
|
|
315
|
+
self: { $ref: "#" },
|
|
316
|
+
},
|
|
317
|
+
});
|
|
318
|
+
expect(converter.irNode.type).toBe("object");
|
|
319
|
+
// self resolves to the root schema (an object)
|
|
320
|
+
expect(converter.irNode.properties?.self.type).toBe("object");
|
|
321
|
+
// nested self hits cycle detection
|
|
322
|
+
expect(converter.irNode.properties?.self.properties?.self.type).toBe("any");
|
|
323
|
+
expect(converter.irNode.properties?.self.properties?.self.constraints?.circular).toBe("#");
|
|
324
|
+
});
|
|
325
|
+
it("should handle circular $ref without stack overflow", () => {
|
|
326
|
+
const converter = new JSONSchemaConverter({
|
|
327
|
+
$defs: {
|
|
328
|
+
TreeNode: {
|
|
329
|
+
type: "object",
|
|
330
|
+
properties: {
|
|
331
|
+
value: { type: "string" },
|
|
332
|
+
children: {
|
|
333
|
+
type: "array",
|
|
334
|
+
items: { $ref: "#/$defs/TreeNode" },
|
|
335
|
+
},
|
|
336
|
+
},
|
|
337
|
+
required: ["value"],
|
|
338
|
+
},
|
|
339
|
+
},
|
|
340
|
+
$ref: "#/$defs/TreeNode",
|
|
341
|
+
});
|
|
342
|
+
expect(converter.irNode.type).toBe("object");
|
|
343
|
+
expect(converter.irNode.properties?.value.type).toBe("string");
|
|
344
|
+
expect(converter.irNode.properties?.children.type).toBe("array");
|
|
345
|
+
});
|
|
346
|
+
it("should handle mutually recursive $refs", () => {
|
|
347
|
+
const converter = new JSONSchemaConverter({
|
|
348
|
+
$defs: {
|
|
349
|
+
A: {
|
|
350
|
+
type: "object",
|
|
351
|
+
properties: { b: { $ref: "#/$defs/B" } },
|
|
352
|
+
},
|
|
353
|
+
B: {
|
|
354
|
+
type: "object",
|
|
355
|
+
properties: { a: { $ref: "#/$defs/A" } },
|
|
356
|
+
},
|
|
357
|
+
},
|
|
358
|
+
$ref: "#/$defs/A",
|
|
359
|
+
});
|
|
360
|
+
expect(converter.irNode.type).toBe("object");
|
|
361
|
+
// Should not throw - mutual recursion handled
|
|
362
|
+
});
|
|
363
|
+
// Step 1.5: additionalProperties: false
|
|
364
|
+
it("should handle additionalProperties: false", () => {
|
|
365
|
+
const converter = new JSONSchemaConverter({
|
|
366
|
+
type: "object",
|
|
367
|
+
properties: { name: { type: "string" } },
|
|
368
|
+
additionalProperties: false,
|
|
369
|
+
});
|
|
370
|
+
expect(converter.irNode.additionalProperties).toBe(false);
|
|
371
|
+
});
|
|
372
|
+
it("should handle additionalProperties: true", () => {
|
|
373
|
+
const converter = new JSONSchemaConverter({
|
|
374
|
+
type: "object",
|
|
375
|
+
properties: { name: { type: "string" } },
|
|
376
|
+
additionalProperties: true,
|
|
377
|
+
});
|
|
378
|
+
expect(converter.irNode.additionalProperties).toBe(true);
|
|
379
|
+
});
|
|
380
|
+
// Step 1.6: boolean schema false
|
|
381
|
+
it("should handle boolean schema false as never type", () => {
|
|
382
|
+
const converter = new JSONSchemaConverter({
|
|
383
|
+
type: "object",
|
|
384
|
+
properties: {
|
|
385
|
+
forbidden: false,
|
|
386
|
+
},
|
|
387
|
+
});
|
|
388
|
+
expect(converter.irNode.properties?.forbidden.type).toBe("never");
|
|
389
|
+
});
|
|
390
|
+
// Step 1.7: Tuple items
|
|
391
|
+
it("should convert tuple items to tuple type with positional types", () => {
|
|
392
|
+
const converter = new JSONSchemaConverter({
|
|
393
|
+
type: "array",
|
|
394
|
+
items: [{ type: "string" }, { type: "number" }, { type: "boolean" }],
|
|
395
|
+
});
|
|
396
|
+
expect(converter.irNode.type).toBe("tuple");
|
|
397
|
+
expect(converter.irNode.tupleItems).toHaveLength(3);
|
|
398
|
+
expect(converter.irNode.tupleItems[0].type).toBe("string");
|
|
399
|
+
expect(converter.irNode.tupleItems[1].type).toBe("number");
|
|
400
|
+
expect(converter.irNode.tupleItems[2].type).toBe("boolean");
|
|
401
|
+
});
|
|
402
|
+
it("should capture array constraints (minItems, maxItems, uniqueItems)", () => {
|
|
403
|
+
const converter = new JSONSchemaConverter({
|
|
404
|
+
type: "array",
|
|
405
|
+
items: { type: "string" },
|
|
406
|
+
minItems: 1,
|
|
407
|
+
maxItems: 10,
|
|
408
|
+
uniqueItems: true,
|
|
409
|
+
});
|
|
410
|
+
expect(converter.irNode.type).toBe("array");
|
|
411
|
+
expect(converter.irNode.constraints?.minItems).toBe(1);
|
|
412
|
+
expect(converter.irNode.constraints?.maxItems).toBe(10);
|
|
413
|
+
expect(converter.irNode.constraints?.uniqueItems).toBe(true);
|
|
414
|
+
});
|
|
415
|
+
// Step 1.8: patternProperties keys
|
|
416
|
+
it("should preserve pattern keys in patternProperties", () => {
|
|
417
|
+
const converter = new JSONSchemaConverter({
|
|
418
|
+
type: "object",
|
|
419
|
+
patternProperties: {
|
|
420
|
+
"^S_": { type: "string" },
|
|
421
|
+
"^I_": { type: "integer" },
|
|
422
|
+
},
|
|
423
|
+
});
|
|
424
|
+
expect(converter.irNode.patternProperties).toBeDefined();
|
|
425
|
+
expect(converter.irNode.patternProperties["^S_"].type).toBe("string");
|
|
426
|
+
expect(converter.irNode.patternProperties["^I_"].type).toBe("integer");
|
|
427
|
+
// backward compat: additionalProperties still set
|
|
428
|
+
expect(converter.irNode.additionalProperties).toBeDefined();
|
|
429
|
+
});
|
|
430
|
+
// Step 1.9: Metadata and constraints
|
|
431
|
+
it("should capture description and defaultValue", () => {
|
|
432
|
+
const converter = new JSONSchemaConverter({
|
|
433
|
+
type: "string",
|
|
434
|
+
description: "The user's email",
|
|
435
|
+
default: "user@example.com",
|
|
436
|
+
});
|
|
437
|
+
expect(converter.irNode.description).toBe("The user's email");
|
|
438
|
+
expect(converter.irNode.defaultValue).toBe("user@example.com");
|
|
439
|
+
});
|
|
440
|
+
it("should capture format constraint", () => {
|
|
441
|
+
const converter = new JSONSchemaConverter({
|
|
442
|
+
type: "string",
|
|
443
|
+
format: "email",
|
|
444
|
+
});
|
|
445
|
+
expect(converter.irNode.constraints?.format).toBe("email");
|
|
446
|
+
});
|
|
447
|
+
it("should capture exclusiveMinimum and exclusiveMaximum", () => {
|
|
448
|
+
const converter = new JSONSchemaConverter({
|
|
449
|
+
type: "number",
|
|
450
|
+
exclusiveMinimum: 0,
|
|
451
|
+
exclusiveMaximum: 100,
|
|
452
|
+
});
|
|
453
|
+
expect(converter.irNode.constraints?.exclusiveMinimum).toBe(0);
|
|
454
|
+
expect(converter.irNode.constraints?.exclusiveMaximum).toBe(100);
|
|
455
|
+
});
|
|
456
|
+
it("should capture object constraints (minProperties, maxProperties)", () => {
|
|
457
|
+
const converter = new JSONSchemaConverter({
|
|
458
|
+
type: "object",
|
|
459
|
+
minProperties: 1,
|
|
460
|
+
maxProperties: 5,
|
|
461
|
+
});
|
|
462
|
+
expect(converter.irNode.constraints?.minProperties).toBe(1);
|
|
463
|
+
expect(converter.irNode.constraints?.maxProperties).toBe(5);
|
|
464
|
+
});
|
|
465
|
+
// Step 1.10: not and if/then/else
|
|
466
|
+
it("should handle standalone 'not' keyword", () => {
|
|
467
|
+
const converter = new JSONSchemaConverter({
|
|
468
|
+
not: { type: "string" },
|
|
469
|
+
});
|
|
470
|
+
// Falls through to the object fallback, with 'not' attached via augmentWithApplicators
|
|
471
|
+
expect(converter.irNode.type).toBe("object");
|
|
472
|
+
expect(converter.irNode.not).toBeDefined();
|
|
473
|
+
expect(converter.irNode.not.type).toBe("string");
|
|
474
|
+
});
|
|
475
|
+
it("should handle 'not' alongside 'type'", () => {
|
|
476
|
+
const converter = new JSONSchemaConverter({
|
|
477
|
+
type: "string",
|
|
478
|
+
not: { pattern: "^[0-9]" },
|
|
479
|
+
});
|
|
480
|
+
expect(converter.irNode.type).toBe("string");
|
|
481
|
+
expect(converter.irNode.not).toBeDefined();
|
|
482
|
+
});
|
|
483
|
+
it("should handle if/then/else", () => {
|
|
484
|
+
const converter = new JSONSchemaConverter({
|
|
485
|
+
if: { type: "object", properties: { kind: { const: "a" } } },
|
|
486
|
+
then: { type: "object", properties: { a: { type: "string" } } },
|
|
487
|
+
else: { type: "object", properties: { b: { type: "number" } } },
|
|
488
|
+
});
|
|
489
|
+
// Falls through to the object fallback, with conditional attached via augmentWithApplicators
|
|
490
|
+
expect(converter.irNode.type).toBe("object");
|
|
491
|
+
expect(converter.irNode.conditional).toBeDefined();
|
|
492
|
+
expect(converter.irNode.conditional.if.type).toBe("object");
|
|
493
|
+
expect(converter.irNode.conditional.then).toBeDefined();
|
|
494
|
+
expect(converter.irNode.conditional.else).toBeDefined();
|
|
495
|
+
});
|
|
301
496
|
});
|
|
302
497
|
//# sourceMappingURL=JSONSchemaConverter.test.js.map
|