ajsc 2.0.0 → 3.0.1
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 +135 -100
- package/dist/JSONSchemaConverter.js.map +1 -1
- package/dist/JSONSchemaConverter.test.js +195 -0
- package/dist/JSONSchemaConverter.test.js.map +1 -1
- package/dist/TypescriptBaseConverter.d.ts +29 -38
- package/dist/TypescriptBaseConverter.js +156 -85
- package/dist/TypescriptBaseConverter.js.map +1 -1
- package/dist/TypescriptConverter.d.ts +3 -6
- package/dist/TypescriptConverter.js +7 -107
- package/dist/TypescriptConverter.js.map +1 -1
- package/dist/TypescriptConverter.test.js +24 -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 +46 -6
- package/dist/utils/path-utils.test.js.map +1 -1
- package/package.json +6 -5
- package/dist/TypescriptProceduresConverter.test.js.map +0 -1
- package/src/JSONSchemaConverter.test.ts +0 -342
- package/src/JSONSchemaConverter.ts +0 -546
- package/src/Typebox.test.ts +0 -127
- package/src/TypescriptBaseConverter.ts +0 -190
- package/src/TypescriptConverter.test.ts +0 -399
- package/src/TypescriptConverter.ts +0 -189
- package/src/TypescriptProcedureConverter.ts +0 -180
- package/src/TypescriptProceduresConverter.test.ts +0 -1013
- package/src/index.ts +0 -4
- package/src/types.ts +0 -108
- 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
|
@@ -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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JSONSchemaConverter.test.js","sourceRoot":"","sources":["../src/JSONSchemaConverter.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"JSONSchemaConverter.test.js","sourceRoot":"","sources":["../src/JSONSchemaConverter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAI/D,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,MAAM,cAAc,GAAW;YAC7B,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,EAAE;SACT,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE9D,MAAM,cAAc,GAAW;YAC7B,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,EAAE;SACT,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAE/D,MAAM,cAAc,GAAW;YAC7B,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,EAAE;SACT,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAE5D,MAAM,cAAc,GAAW,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAE3E,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAEnE,MAAM,cAAc,GAAW;YAC7B,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;YACpC,IAAI,EAAE,EAAE;SACT,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;SACrC,CAAC,CAAC;QAEH,MAAM,cAAc,GAAW;YAC7B,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YACtC,IAAI,EAAE,EAAE;SACT,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QAE1E,MAAM,cAAc,GAAW;YAC7B,IAAI,EAAE,OAAO;YACb,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;gBAC7C,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;aAC9C;YACD,IAAI,EAAE,EAAE;SACT,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SAChD,CAAC,CAAC;QACH,MAAM,cAAc,GAAW;YAC7B,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;gBAC7C,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;aAC9C;YACD,IAAI,EAAE,EAAE;SACT,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC1B,CAAC,CAAC;QACH,MAAM,cAAc,GAAW;YAC7B,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;SACtD,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aACzB;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB,CAAC,CAAC;QAEH,MAAM,cAAc,GAAW;YAC7B,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,EAAE;oBACf,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,IAAI;iBACf;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,EAAE;oBACf,IAAI,EAAE,MAAM;oBACZ,QAAQ,EAAE,KAAK;iBAChB;aACF;YACD,IAAI,EAAE,EAAE;SACT,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,KAAK,EAAE;gBACL,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACxB,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qBACxB;oBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;iBACnB;aACF;YACD,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;aACnC;SACF,CAAC,CAAC;QAEH,MAAM,cAAc,GAAW;YAC7B,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,IAAI,EAAE;4BACJ,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,EAAE;4BACf,IAAI,EAAE,aAAa;4BACnB,QAAQ,EAAE,IAAI;yBACf;wBACD,GAAG,EAAE;4BACH,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,EAAE;4BACf,IAAI,EAAE,YAAY;4BAClB,QAAQ,EAAE,KAAK;yBAChB;qBACF;oBACD,QAAQ,EAAE,KAAK;oBACf,IAAI,EAAE,QAAQ;iBACf;aACF;YACD,IAAI,EAAE,EAAE;SACT,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxB,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACvB,QAAQ,EAAE;oBACR,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBAC1B;wBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;qBACpB;iBACF;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qBAC1B;oBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;iBACpB;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;SAC1B,CAAC,CAAC;QAEH,MAAM,cAAc,GAAW;YAC7B,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,EAAE;oBACf,IAAI,EAAE,MAAM;oBACZ,QAAQ,EAAE,IAAI;iBACf;gBACD,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,EAAE;oBACf,IAAI,EAAE,KAAK;oBACX,QAAQ,EAAE,IAAI;iBACf;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,EAAE;gCACf,IAAI,EAAE,kBAAkB;gCACxB,QAAQ,EAAE,IAAI;6BACf;yBACF;wBACD,IAAI,EAAE,YAAY;qBACnB;oBACD,QAAQ,EAAE,KAAK;oBACf,IAAI,EAAE,UAAU;iBACjB;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,EAAE;4BACf,IAAI,EAAE,eAAe;4BACrB,QAAQ,EAAE,IAAI;yBACf;qBACF;oBACD,QAAQ,EAAE,KAAK;oBACf,IAAI,EAAE,SAAS;iBAChB;aACF;YACD,IAAI,EAAE,EAAE;SACT,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,aAAa,EAAE;4BACb,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACzB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;6BAC1B;4BACD,QAAQ,EAAE,CAAC,OAAO,CAAC;yBACpB;qBACF;iBACF;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,aAAa,EAAE;4BACb,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACzB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;6BAC1B;4BACD,QAAQ,EAAE,CAAC,OAAO,CAAC;yBACpB;qBACF;iBACF;gBACD,cAAc,EAAE;oBACd,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBAC1B;wBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;qBACpB;iBACF;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBAC1B;wBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;qBACpB;iBACF;aACF;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CACzD,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,SAAS,CAChD,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC,IAAI,CAChE,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,SAAS,CACvD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,sCAAsC;IACtC,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAA0B;YACpC,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;SACzC,CAAC;QACF,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,CAAE,MAAc,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,4DAA4D;IAC5D,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;aACpB;SACF,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,+CAA+C;QAC/C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9D,mCAAmC;QACnC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,KAAK,EAAE;gBACL,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACzB,QAAQ,EAAE;4BACR,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;yBACpC;qBACF;oBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;iBACpB;aACF;YACD,IAAI,EAAE,kBAAkB;SACzB,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,KAAK,EAAE;gBACL,CAAC,EAAE;oBACD,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE;iBACzC;gBACD,CAAC,EAAE;oBACD,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE;iBACzC;aACF;YACD,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,8CAA8C;IAChD,CAAC,CAAC,CAAC;IAEH,wCAAwC;IACxC,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YACxC,oBAAoB,EAAE,KAAK;SAC5B,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YACxC,oBAAoB,EAAE,IAAI;SAC3B,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,iCAAiC;IACjC,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE,KAAY;aACxB;SACF,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,wBAAwB;IACxB,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;SACrE,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,EAAE;YACZ,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,mCAAmC;IACnC,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,IAAI,EAAE,QAAQ;YACd,iBAAiB,EAAE;gBACjB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;aAC3B;SACF,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,EAAE,CAAC;QACzD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAkB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAkB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxE,kDAAkD;QAClD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,qCAAqC;IACrC,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,kBAAkB;YAC/B,OAAO,EAAE,kBAAkB;SAC5B,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC9D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,OAAO;SAChB,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,IAAI,EAAE,QAAQ;YACd,gBAAgB,EAAE,CAAC;YACnB,gBAAgB,EAAE,GAAG;SACtB,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,IAAI,EAAE,QAAQ;YACd,aAAa,EAAE,CAAC;YAChB,aAAa,EAAE,CAAC;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,kCAAkC;IAClC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACxB,CAAC,CAAC;QACH,uFAAuF;QACvF,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,GAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;SAC3B,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,SAAS,GAAG,IAAI,mBAAmB,CAAC;YACxC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE;YAC5D,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC/D,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;SAChE,CAAC,CAAC;QACH,6FAA6F;QAC7F,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACzD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,WAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -7,50 +7,41 @@ export type RefTypes = [
|
|
|
7
7
|
code: string;
|
|
8
8
|
}
|
|
9
9
|
][];
|
|
10
|
-
export
|
|
10
|
+
export interface RefTypeNamingConfig {
|
|
11
|
+
/** Base postfixes to try for name collision resolution */
|
|
12
|
+
postfixes: string[];
|
|
13
|
+
/** If true, strip trailing "s" from array item path segments */
|
|
14
|
+
depluralize?: boolean;
|
|
15
|
+
/** If true, handle "*" path endings with AnyKey/AnyProperty postfixes */
|
|
16
|
+
handleAnySymbol?: boolean;
|
|
17
|
+
/** If true, strip leading "*" from proposed names */
|
|
18
|
+
stripLeadingAnySymbol?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export type GenerateTypeUtils = {
|
|
21
|
+
getReferencedType(ir: IRNode): string | undefined;
|
|
22
|
+
};
|
|
23
|
+
export declare abstract class TypescriptBaseConverter {
|
|
24
|
+
abstract readonly code: string;
|
|
25
|
+
protected refTypes: RefTypes;
|
|
26
|
+
private fallbackCounter;
|
|
27
|
+
protected getRefTypeNamingConfig(): RefTypeNamingConfig;
|
|
11
28
|
/**
|
|
12
29
|
* Recursively generates a TypeScript type string for the given IR node.
|
|
13
|
-
*
|
|
14
|
-
* @param ir - The IR node to convert.
|
|
15
|
-
* @returns A string representing the TypeScript type.
|
|
16
30
|
*/
|
|
17
|
-
protected generateType(ir: IRNode, utils:
|
|
18
|
-
|
|
19
|
-
|
|
31
|
+
protected generateType(ir: IRNode, utils: GenerateTypeUtils): string;
|
|
32
|
+
protected generateArrayType(ir: IRNode, utils: GenerateTypeUtils): string;
|
|
33
|
+
protected generateTupleType(ir: IRNode, utils: GenerateTypeUtils): string;
|
|
34
|
+
protected generateUnionType(ir: IRNode, utils: GenerateTypeUtils): string;
|
|
35
|
+
protected generateIntersectionType(ir: IRNode, utils: GenerateTypeUtils): string;
|
|
36
|
+
protected generateEnumType(ir: IRNode): string;
|
|
37
|
+
protected generateLiteralType(ir: IRNode): string;
|
|
38
|
+
protected getPrimitiveTypeMap(): Record<string, string>;
|
|
20
39
|
/**
|
|
21
40
|
* Generates a TypeScript object type (as an inline type literal) from the given IR node.
|
|
22
|
-
*
|
|
23
|
-
* @param ir - The IR node of type "object".
|
|
24
|
-
* @returns A string representing the object type.
|
|
25
41
|
*/
|
|
26
|
-
protected generateObjectType(ir: IRNode, utils:
|
|
27
|
-
getReferencedType(ir: IRNode): string | undefined;
|
|
28
|
-
}): string;
|
|
42
|
+
protected generateObjectType(ir: IRNode, utils: GenerateTypeUtils): string;
|
|
29
43
|
protected isValidIdentifier(name: string): boolean;
|
|
30
|
-
/**
|
|
31
|
-
* Parses a list of dot-separated paths into an array of string arrays.
|
|
32
|
-
* Removes any "0" character segments.
|
|
33
|
-
*
|
|
34
|
-
* @param list
|
|
35
|
-
* @protected
|
|
36
|
-
*/
|
|
37
|
-
protected parsePaths(list: string[]): string[][];
|
|
38
|
-
/**
|
|
39
|
-
* Returns the longest common prefix (sequence) among an array of string arrays.
|
|
40
|
-
* @param paths - An array of string arrays.
|
|
41
|
-
* @returns An array representing the common sequence.
|
|
42
|
-
*
|
|
43
|
-
* @example
|
|
44
|
-
* const arrays = [
|
|
45
|
-
* ["organizations", "migration", "step", "create_regions"],
|
|
46
|
-
* ["organizations", "migration", "step", "create_location_groups"],
|
|
47
|
-
* ["organizations", "migration", "step", "create_locations"],
|
|
48
|
-
* ["organizations", "migration", "step", "create_locations_bolos"],
|
|
49
|
-
* ];
|
|
50
|
-
*
|
|
51
|
-
* console.log(commonSequence(arrays)); // Output: ["organizations", "migration", "step"]
|
|
52
|
-
*
|
|
53
|
-
*/
|
|
54
|
-
protected commonSequence(paths: string[][]): string[];
|
|
55
44
|
protected makeTypeReferenceName(signatureOccurrences: SignatureOccurrenceValue["occurrences"]): string;
|
|
45
|
+
protected getUniqueRefTypeName(signature: string, nodePath: string): RefTypeName;
|
|
46
|
+
protected getReferencedType(ir: IRNode): string | undefined;
|
|
56
47
|
}
|
|
@@ -1,71 +1,111 @@
|
|
|
1
|
+
import { PathUtils } from "./utils/path-utils.js";
|
|
1
2
|
import { toPascalCase } from "./utils/to-pascal-case.js";
|
|
2
3
|
export class TypescriptBaseConverter {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.refTypes = [];
|
|
6
|
+
this.fallbackCounter = 0;
|
|
7
|
+
}
|
|
8
|
+
getRefTypeNamingConfig() {
|
|
9
|
+
return {
|
|
10
|
+
postfixes: [
|
|
11
|
+
"Type", "Element", "Schema", "Object", "Shape", "Definition",
|
|
12
|
+
"Item", "Entry", "One", "Two", "Three", "Four", "Five",
|
|
13
|
+
"Six", "Seven", "Eight", "Nine", "Ten",
|
|
14
|
+
],
|
|
15
|
+
handleAnySymbol: true,
|
|
16
|
+
stripLeadingAnySymbol: true,
|
|
17
|
+
depluralize: false,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
3
20
|
/**
|
|
4
21
|
* Recursively generates a TypeScript type string for the given IR node.
|
|
5
|
-
*
|
|
6
|
-
* @param ir - The IR node to convert.
|
|
7
|
-
* @returns A string representing the TypeScript type.
|
|
8
22
|
*/
|
|
9
23
|
generateType(ir, utils) {
|
|
10
24
|
switch (ir.type) {
|
|
11
|
-
case "object":
|
|
25
|
+
case "object": {
|
|
12
26
|
const referencedType = utils.getReferencedType(ir);
|
|
13
|
-
if (referencedType)
|
|
27
|
+
if (referencedType)
|
|
14
28
|
return referencedType;
|
|
15
|
-
}
|
|
16
29
|
return this.generateObjectType(ir, utils);
|
|
30
|
+
}
|
|
17
31
|
case "array":
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
return "any[]";
|
|
22
|
-
case "string":
|
|
23
|
-
return "string";
|
|
24
|
-
case "number":
|
|
25
|
-
case "integer":
|
|
26
|
-
return "number";
|
|
27
|
-
case "boolean":
|
|
28
|
-
return "boolean";
|
|
29
|
-
case "null":
|
|
30
|
-
return "null";
|
|
31
|
-
case "literal":
|
|
32
|
-
// For literal types, output a literal value (string, number, etc.)
|
|
33
|
-
return typeof ir.constraints?.value === "string"
|
|
34
|
-
? JSON.stringify(ir.constraints.value)
|
|
35
|
-
: String(ir.constraints?.value);
|
|
36
|
-
case "enum":
|
|
37
|
-
// Create a union of literal types from the enum values.
|
|
38
|
-
if (ir.values && ir.values.length > 0) {
|
|
39
|
-
return ir.values.map((v) => JSON.stringify(v)).join(" | ");
|
|
40
|
-
}
|
|
41
|
-
return "never";
|
|
32
|
+
return this.generateArrayType(ir, utils);
|
|
33
|
+
case "tuple":
|
|
34
|
+
return this.generateTupleType(ir, utils);
|
|
42
35
|
case "union":
|
|
43
|
-
|
|
44
|
-
return ir.options
|
|
45
|
-
.map((opt) => this.generateType(opt, utils))
|
|
46
|
-
.join(" | ");
|
|
47
|
-
}
|
|
48
|
-
return "never";
|
|
36
|
+
return this.generateUnionType(ir, utils);
|
|
49
37
|
case "intersection":
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
38
|
+
return this.generateIntersectionType(ir, utils);
|
|
39
|
+
case "enum":
|
|
40
|
+
return this.generateEnumType(ir);
|
|
41
|
+
case "literal":
|
|
42
|
+
return this.generateLiteralType(ir);
|
|
43
|
+
case "never":
|
|
55
44
|
return "never";
|
|
56
|
-
default:
|
|
45
|
+
default: {
|
|
46
|
+
const primitiveMap = this.getPrimitiveTypeMap();
|
|
47
|
+
if (ir.type in primitiveMap) {
|
|
48
|
+
return primitiveMap[ir.type];
|
|
49
|
+
}
|
|
57
50
|
return "any";
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
generateArrayType(ir, utils) {
|
|
55
|
+
if (ir.items) {
|
|
56
|
+
return `Array<${this.generateType(ir.items, utils)}>`;
|
|
57
|
+
}
|
|
58
|
+
return "any[]";
|
|
59
|
+
}
|
|
60
|
+
generateTupleType(ir, utils) {
|
|
61
|
+
if (ir.tupleItems && ir.tupleItems.length > 0) {
|
|
62
|
+
const elements = ir.tupleItems.map((item) => this.generateType(item, utils));
|
|
63
|
+
return `[${elements.join(", ")}]`;
|
|
64
|
+
}
|
|
65
|
+
return "[]";
|
|
66
|
+
}
|
|
67
|
+
generateUnionType(ir, utils) {
|
|
68
|
+
if (ir.options && ir.options.length > 0) {
|
|
69
|
+
return ir.options
|
|
70
|
+
.map((opt) => this.generateType(opt, utils))
|
|
71
|
+
.join(" | ");
|
|
72
|
+
}
|
|
73
|
+
return "never";
|
|
74
|
+
}
|
|
75
|
+
generateIntersectionType(ir, utils) {
|
|
76
|
+
if (ir.options && ir.options.length > 0) {
|
|
77
|
+
return ir.options
|
|
78
|
+
.map((opt) => this.generateType(opt, utils))
|
|
79
|
+
.join(" & ");
|
|
80
|
+
}
|
|
81
|
+
return "never";
|
|
82
|
+
}
|
|
83
|
+
generateEnumType(ir) {
|
|
84
|
+
if (ir.values && ir.values.length > 0) {
|
|
85
|
+
return ir.values.map((v) => JSON.stringify(v)).join(" | ");
|
|
58
86
|
}
|
|
87
|
+
return "never";
|
|
88
|
+
}
|
|
89
|
+
generateLiteralType(ir) {
|
|
90
|
+
return typeof ir.constraints?.value === "string"
|
|
91
|
+
? JSON.stringify(ir.constraints.value)
|
|
92
|
+
: String(ir.constraints?.value);
|
|
93
|
+
}
|
|
94
|
+
getPrimitiveTypeMap() {
|
|
95
|
+
return {
|
|
96
|
+
string: "string",
|
|
97
|
+
number: "number",
|
|
98
|
+
integer: "number",
|
|
99
|
+
boolean: "boolean",
|
|
100
|
+
null: "null",
|
|
101
|
+
};
|
|
59
102
|
}
|
|
60
103
|
/**
|
|
61
104
|
* Generates a TypeScript object type (as an inline type literal) from the given IR node.
|
|
62
|
-
*
|
|
63
|
-
* @param ir - The IR node of type "object".
|
|
64
|
-
* @returns A string representing the object type.
|
|
65
105
|
*/
|
|
66
106
|
generateObjectType(ir, utils) {
|
|
67
107
|
let generated = ``;
|
|
68
|
-
|
|
108
|
+
const generatedAdditionalValues = new Set();
|
|
69
109
|
if (ir.additionalProperties === true) {
|
|
70
110
|
generatedAdditionalValues.add("unknown");
|
|
71
111
|
}
|
|
@@ -108,51 +148,82 @@ export class TypescriptBaseConverter {
|
|
|
108
148
|
isValidIdentifier(name) {
|
|
109
149
|
return /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name);
|
|
110
150
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
* @param list
|
|
116
|
-
* @protected
|
|
117
|
-
*/
|
|
118
|
-
parsePaths(list) {
|
|
119
|
-
return list.map((item) => item.split(".").filter((segment) => segment !== "0"));
|
|
151
|
+
makeTypeReferenceName(signatureOccurrences) {
|
|
152
|
+
const paths = PathUtils.parsePaths(signatureOccurrences.map((occurrence) => occurrence.nodePath));
|
|
153
|
+
const common = PathUtils.commonSequence(paths);
|
|
154
|
+
return common.map((str) => toPascalCase(str)).join("");
|
|
120
155
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
156
|
+
getUniqueRefTypeName(signature, nodePath) {
|
|
157
|
+
const config = this.getRefTypeNamingConfig();
|
|
158
|
+
const path = PathUtils.parsePath(nodePath);
|
|
159
|
+
const lastPathItem = nodePath.split(".").slice(-1)[0];
|
|
160
|
+
const isArrayItem = lastPathItem === "0";
|
|
161
|
+
const isAnySymbol = lastPathItem === "*";
|
|
162
|
+
const postFixes = [...config.postfixes];
|
|
163
|
+
if (isArrayItem) {
|
|
164
|
+
postFixes.unshift("Item");
|
|
165
|
+
if (config.depluralize && path.length > 0 && path[path.length - 1]) {
|
|
166
|
+
path[path.length - 1] = path[path.length - 1].replace(/s$/, "");
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
else if (config.handleAnySymbol && isAnySymbol) {
|
|
170
|
+
postFixes.unshift("AnyKey", "AnyProperty", "AnyField", "AnyIdentifier");
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
postFixes.unshift("");
|
|
174
|
+
}
|
|
175
|
+
let pathsSegmentsToInclude = 1;
|
|
176
|
+
let name = "";
|
|
177
|
+
let postFixIndexToTry = 0;
|
|
178
|
+
while (!name) {
|
|
179
|
+
let proposedName = path.slice(-pathsSegmentsToInclude).map(toPascalCase).join("") +
|
|
180
|
+
postFixes[postFixIndexToTry];
|
|
181
|
+
if (config.stripLeadingAnySymbol && proposedName[0] === "*") {
|
|
182
|
+
proposedName = proposedName.slice(1);
|
|
183
|
+
}
|
|
184
|
+
const foundSignatureMatch = this.refTypes.find(([sig, n]) => sig === signature && n === proposedName);
|
|
185
|
+
if (foundSignatureMatch) {
|
|
186
|
+
return foundSignatureMatch[1];
|
|
187
|
+
}
|
|
188
|
+
const nameAlreadyUsed = this.refTypes.find(([_sig, n]) => n === proposedName);
|
|
189
|
+
if (nameAlreadyUsed) {
|
|
190
|
+
pathsSegmentsToInclude++;
|
|
191
|
+
if (pathsSegmentsToInclude >= path.length) {
|
|
192
|
+
postFixIndexToTry++;
|
|
193
|
+
pathsSegmentsToInclude = 1;
|
|
194
|
+
if (postFixIndexToTry === postFixes.length) {
|
|
195
|
+
// Deterministic instance-scoped fallback
|
|
196
|
+
this.fallbackCounter++;
|
|
197
|
+
name = proposedName + this.fallbackCounter;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
145
200
|
}
|
|
146
201
|
else {
|
|
147
|
-
|
|
202
|
+
name = proposedName;
|
|
148
203
|
}
|
|
149
204
|
}
|
|
150
|
-
return
|
|
205
|
+
return name;
|
|
151
206
|
}
|
|
152
|
-
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
|
|
207
|
+
getReferencedType(ir) {
|
|
208
|
+
const signature = ir.signature;
|
|
209
|
+
if (!signature) {
|
|
210
|
+
return undefined;
|
|
211
|
+
}
|
|
212
|
+
const name = this.getUniqueRefTypeName(signature, ir.path);
|
|
213
|
+
// Account for recursion: the ref type could have already been created
|
|
214
|
+
const existing = this.refTypes.find(([sig, _name]) => sig === signature && _name === name);
|
|
215
|
+
if (existing) {
|
|
216
|
+
return name;
|
|
217
|
+
}
|
|
218
|
+
// Push entry with empty code placeholder - hold reference for safe assignment
|
|
219
|
+
const entry = [signature, name, { code: "" }];
|
|
220
|
+
this.refTypes.push(entry);
|
|
221
|
+
const code = this.generateObjectType(ir, {
|
|
222
|
+
getReferencedType: this.getReferencedType.bind(this),
|
|
223
|
+
});
|
|
224
|
+
// Safe assignment via direct reference
|
|
225
|
+
entry[2].code = code;
|
|
226
|
+
return name;
|
|
156
227
|
}
|
|
157
228
|
}
|
|
158
229
|
//# sourceMappingURL=TypescriptBaseConverter.js.map
|