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.
Files changed (36) hide show
  1. package/dist/JSONSchemaConverter.d.ts +4 -12
  2. package/dist/JSONSchemaConverter.js +135 -100
  3. package/dist/JSONSchemaConverter.js.map +1 -1
  4. package/dist/JSONSchemaConverter.test.js +195 -0
  5. package/dist/JSONSchemaConverter.test.js.map +1 -1
  6. package/dist/TypescriptBaseConverter.d.ts +29 -38
  7. package/dist/TypescriptBaseConverter.js +156 -85
  8. package/dist/TypescriptBaseConverter.js.map +1 -1
  9. package/dist/TypescriptConverter.d.ts +3 -6
  10. package/dist/TypescriptConverter.js +7 -107
  11. package/dist/TypescriptConverter.js.map +1 -1
  12. package/dist/TypescriptConverter.test.js +24 -0
  13. package/dist/TypescriptConverter.test.js.map +1 -1
  14. package/dist/TypescriptProcedureConverter.d.ts +6 -7
  15. package/dist/TypescriptProcedureConverter.js +19 -94
  16. package/dist/TypescriptProcedureConverter.js.map +1 -1
  17. package/dist/{TypescriptProceduresConverter.test.js → TypescriptProcedureConverter.test.js} +1 -2
  18. package/dist/TypescriptProcedureConverter.test.js.map +1 -0
  19. package/dist/types.d.ts +46 -6
  20. package/dist/utils/path-utils.test.js.map +1 -1
  21. package/package.json +6 -5
  22. package/dist/TypescriptProceduresConverter.test.js.map +0 -1
  23. package/src/JSONSchemaConverter.test.ts +0 -342
  24. package/src/JSONSchemaConverter.ts +0 -546
  25. package/src/Typebox.test.ts +0 -127
  26. package/src/TypescriptBaseConverter.ts +0 -190
  27. package/src/TypescriptConverter.test.ts +0 -399
  28. package/src/TypescriptConverter.ts +0 -189
  29. package/src/TypescriptProcedureConverter.ts +0 -180
  30. package/src/TypescriptProceduresConverter.test.ts +0 -1013
  31. package/src/index.ts +0 -4
  32. package/src/types.ts +0 -108
  33. package/src/utils/path-utils.test.ts +0 -102
  34. package/src/utils/path-utils.ts +0 -89
  35. package/src/utils/to-pascal-case.ts +0 -10
  36. /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":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/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;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"JSONSchemaConverter.test.js","sourceRoot":"","sources":["../src/JSONSchemaConverter.test.ts"],"names":[],"mappings":"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"}
@@ -7,50 +7,41 @@ export type RefTypes = [
7
7
  code: string;
8
8
  }
9
9
  ][];
10
- export declare class TypescriptBaseConverter {
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
- getReferencedType(ir: IRNode): string | undefined;
19
- }): string;
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
- if (ir.items) {
19
- return `Array<${this.generateType(ir.items, utils)}>`;
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
- if (ir.options && ir.options.length > 0) {
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
- if (ir.options && ir.options.length > 0) {
51
- return ir.options
52
- .map((opt) => this.generateType(opt, utils))
53
- .join(" & ");
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
- let generatedAdditionalValues = new Set();
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
- * Parses a list of dot-separated paths into an array of string arrays.
113
- * Removes any "0" character segments.
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
- * Returns the longest common prefix (sequence) among an array of string arrays.
123
- * @param paths - An array of string arrays.
124
- * @returns An array representing the common sequence.
125
- *
126
- * @example
127
- * const arrays = [
128
- * ["organizations", "migration", "step", "create_regions"],
129
- * ["organizations", "migration", "step", "create_location_groups"],
130
- * ["organizations", "migration", "step", "create_locations"],
131
- * ["organizations", "migration", "step", "create_locations_bolos"],
132
- * ];
133
- *
134
- * console.log(commonSequence(arrays)); // Output: ["organizations", "migration", "step"]
135
- *
136
- */
137
- commonSequence(paths) {
138
- if (paths.length === 0)
139
- return [];
140
- const common = [];
141
- for (let i = 0; i < paths[0].length; i++) {
142
- const segment = paths[0][i];
143
- if (paths.every((path) => path[i] === segment)) {
144
- common.push(segment);
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
- break;
202
+ name = proposedName;
148
203
  }
149
204
  }
150
- return common;
205
+ return name;
151
206
  }
152
- makeTypeReferenceName(signatureOccurrences) {
153
- const paths = this.parsePaths(signatureOccurrences.map((occurrence) => occurrence.nodePath));
154
- const common = this.commonSequence(paths);
155
- return common.map((str) => toPascalCase(str)).join("");
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