ajsc 5.2.4 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/CHANGELOG.md +103 -0
  2. package/README.md +303 -144
  3. package/dist/converter/BaseConverter.d.ts +315 -0
  4. package/dist/converter/BaseConverter.js +131 -0
  5. package/dist/converter/BaseConverter.js.map +1 -0
  6. package/dist/converter/Emitter.d.ts +35 -0
  7. package/dist/converter/Emitter.js +50 -0
  8. package/dist/converter/Emitter.js.map +1 -0
  9. package/dist/converter/discriminatedUnions.d.ts +47 -0
  10. package/dist/converter/discriminatedUnions.js +168 -0
  11. package/dist/converter/discriminatedUnions.js.map +1 -0
  12. package/dist/converter/formatDefault.d.ts +20 -0
  13. package/dist/converter/formatDefault.js +31 -0
  14. package/dist/converter/formatDefault.js.map +1 -0
  15. package/dist/converter/index.d.ts +24 -0
  16. package/dist/converter/index.js +24 -0
  17. package/dist/converter/index.js.map +1 -0
  18. package/dist/converter/mergeUnions.d.ts +36 -0
  19. package/dist/converter/mergeUnions.js +189 -0
  20. package/dist/converter/mergeUnions.js.map +1 -0
  21. package/dist/converter/naming.d.ts +29 -0
  22. package/dist/converter/naming.js +137 -0
  23. package/dist/converter/naming.js.map +1 -0
  24. package/dist/converter/registry.d.ts +18 -0
  25. package/dist/converter/registry.js +50 -0
  26. package/dist/converter/registry.js.map +1 -0
  27. package/dist/converter/walk.d.ts +9 -0
  28. package/dist/converter/walk.js +40 -0
  29. package/dist/converter/walk.js.map +1 -0
  30. package/dist/index.d.ts +71 -3
  31. package/dist/index.js +63 -3
  32. package/dist/index.js.map +1 -1
  33. package/dist/{JSONSchemaConverter.d.ts → ir/JSONSchemaConverter.d.ts} +1 -1
  34. package/dist/{JSONSchemaConverter.js → ir/JSONSchemaConverter.js} +9 -3
  35. package/dist/ir/JSONSchemaConverter.js.map +1 -0
  36. package/dist/ir/index.d.ts +1 -0
  37. package/dist/ir/index.js +2 -0
  38. package/dist/ir/index.js.map +1 -0
  39. package/dist/kotlin/KotlinBaseConverter.d.ts +18 -0
  40. package/dist/kotlin/KotlinBaseConverter.js +36 -0
  41. package/dist/kotlin/KotlinBaseConverter.js.map +1 -0
  42. package/dist/kotlin/KotlinConverter.d.ts +67 -0
  43. package/dist/kotlin/KotlinConverter.js +142 -0
  44. package/dist/kotlin/KotlinConverter.js.map +1 -0
  45. package/dist/kotlin/annotations.d.ts +26 -0
  46. package/dist/kotlin/annotations.js +35 -0
  47. package/dist/kotlin/annotations.js.map +1 -0
  48. package/dist/kotlin/enums.d.ts +15 -0
  49. package/dist/kotlin/enums.js +58 -0
  50. package/dist/kotlin/enums.js.map +1 -0
  51. package/dist/kotlin/index.d.ts +13 -0
  52. package/dist/kotlin/index.js +14 -0
  53. package/dist/kotlin/index.js.map +1 -0
  54. package/dist/kotlin/objectEmitter.d.ts +12 -0
  55. package/dist/kotlin/objectEmitter.js +74 -0
  56. package/dist/kotlin/objectEmitter.js.map +1 -0
  57. package/dist/kotlin/sealedUnion.d.ts +17 -0
  58. package/dist/kotlin/sealedUnion.js +74 -0
  59. package/dist/kotlin/sealedUnion.js.map +1 -0
  60. package/dist/kotlin/typeMapper.d.ts +17 -0
  61. package/dist/kotlin/typeMapper.js +107 -0
  62. package/dist/kotlin/typeMapper.js.map +1 -0
  63. package/dist/kotlin/unsupported.d.ts +13 -0
  64. package/dist/kotlin/unsupported.js +53 -0
  65. package/dist/kotlin/unsupported.js.map +1 -0
  66. package/dist/swift/SwiftBaseConverter.d.ts +18 -0
  67. package/dist/swift/SwiftBaseConverter.js +38 -0
  68. package/dist/swift/SwiftBaseConverter.js.map +1 -0
  69. package/dist/swift/SwiftConverter.d.ts +60 -0
  70. package/dist/swift/SwiftConverter.js +113 -0
  71. package/dist/swift/SwiftConverter.js.map +1 -0
  72. package/dist/swift/discriminatedEnum.d.ts +18 -0
  73. package/dist/swift/discriminatedEnum.js +99 -0
  74. package/dist/swift/discriminatedEnum.js.map +1 -0
  75. package/dist/swift/enums.d.ts +15 -0
  76. package/dist/swift/enums.js +62 -0
  77. package/dist/swift/enums.js.map +1 -0
  78. package/dist/swift/index.d.ts +13 -0
  79. package/dist/swift/index.js +14 -0
  80. package/dist/swift/index.js.map +1 -0
  81. package/dist/swift/structEmitter.d.ts +12 -0
  82. package/dist/swift/structEmitter.js +70 -0
  83. package/dist/swift/structEmitter.js.map +1 -0
  84. package/dist/swift/typeMapper.d.ts +18 -0
  85. package/dist/swift/typeMapper.js +106 -0
  86. package/dist/swift/typeMapper.js.map +1 -0
  87. package/dist/swift/unsupported.d.ts +19 -0
  88. package/dist/swift/unsupported.js +88 -0
  89. package/dist/swift/unsupported.js.map +1 -0
  90. package/dist/typescript/TypescriptBaseConverter.d.ts +25 -0
  91. package/dist/typescript/TypescriptBaseConverter.js +178 -0
  92. package/dist/typescript/TypescriptBaseConverter.js.map +1 -0
  93. package/dist/typescript/TypescriptConverter.d.ts +74 -0
  94. package/dist/typescript/TypescriptConverter.js +254 -0
  95. package/dist/typescript/TypescriptConverter.js.map +1 -0
  96. package/dist/typescript/index.d.ts +12 -0
  97. package/dist/typescript/index.js +13 -0
  98. package/dist/typescript/index.js.map +1 -0
  99. package/dist/utils/index.d.ts +2 -0
  100. package/dist/utils/index.js +3 -0
  101. package/dist/utils/index.js.map +1 -0
  102. package/package.json +39 -6
  103. package/dist/JSONSchemaConverter.js.map +0 -1
  104. package/dist/JSONSchemaConverter.test.d.ts +0 -1
  105. package/dist/JSONSchemaConverter.test.js +0 -585
  106. package/dist/JSONSchemaConverter.test.js.map +0 -1
  107. package/dist/Typebox.test.d.ts +0 -1
  108. package/dist/Typebox.test.js +0 -88
  109. package/dist/Typebox.test.js.map +0 -1
  110. package/dist/TypescriptBaseConverter.d.ts +0 -75
  111. package/dist/TypescriptBaseConverter.js +0 -321
  112. package/dist/TypescriptBaseConverter.js.map +0 -1
  113. package/dist/TypescriptConverter.additionalProperties.test.d.ts +0 -1
  114. package/dist/TypescriptConverter.additionalProperties.test.js +0 -110
  115. package/dist/TypescriptConverter.additionalProperties.test.js.map +0 -1
  116. package/dist/TypescriptConverter.arrays.test.d.ts +0 -1
  117. package/dist/TypescriptConverter.arrays.test.js +0 -130
  118. package/dist/TypescriptConverter.arrays.test.js.map +0 -1
  119. package/dist/TypescriptConverter.composites.advanced.test.d.ts +0 -1
  120. package/dist/TypescriptConverter.composites.advanced.test.js +0 -1070
  121. package/dist/TypescriptConverter.composites.advanced.test.js.map +0 -1
  122. package/dist/TypescriptConverter.composites.test.d.ts +0 -1
  123. package/dist/TypescriptConverter.composites.test.js +0 -335
  124. package/dist/TypescriptConverter.composites.test.js.map +0 -1
  125. package/dist/TypescriptConverter.d.ts +0 -163
  126. package/dist/TypescriptConverter.js +0 -606
  127. package/dist/TypescriptConverter.js.map +0 -1
  128. package/dist/TypescriptConverter.jsdoc.test.d.ts +0 -1
  129. package/dist/TypescriptConverter.jsdoc.test.js +0 -194
  130. package/dist/TypescriptConverter.jsdoc.test.js.map +0 -1
  131. package/dist/TypescriptConverter.objects.test.d.ts +0 -1
  132. package/dist/TypescriptConverter.objects.test.js +0 -258
  133. package/dist/TypescriptConverter.objects.test.js.map +0 -1
  134. package/dist/TypescriptConverter.options.test.d.ts +0 -1
  135. package/dist/TypescriptConverter.options.test.js +0 -501
  136. package/dist/TypescriptConverter.options.test.js.map +0 -1
  137. package/dist/TypescriptConverter.primitives.test.d.ts +0 -1
  138. package/dist/TypescriptConverter.primitives.test.js +0 -26
  139. package/dist/TypescriptConverter.primitives.test.js.map +0 -1
  140. package/dist/utils/path-utils.test.d.ts +0 -1
  141. package/dist/utils/path-utils.test.js +0 -92
  142. package/dist/utils/path-utils.test.js.map +0 -1
@@ -1,585 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { JSONSchemaConverter } from "./JSONSchemaConverter.js";
3
- describe("JSONSchemaConverter", () => {
4
- it("should convert strings", () => {
5
- const converter = new JSONSchemaConverter({ type: "string" });
6
- const expectedOutput = {
7
- type: "string",
8
- constraints: {},
9
- path: "",
10
- };
11
- expect(converter.irNode).toMatchObject(expectedOutput);
12
- });
13
- it("should convert numbers", () => {
14
- const converter = new JSONSchemaConverter({ type: "number" });
15
- const expectedOutput = {
16
- type: "number",
17
- constraints: {},
18
- path: "",
19
- };
20
- expect(converter.irNode).toMatchObject(expectedOutput);
21
- });
22
- it("should convert booleans", () => {
23
- const converter = new JSONSchemaConverter({ type: "boolean" });
24
- const expectedOutput = {
25
- type: "boolean",
26
- constraints: {},
27
- path: "",
28
- };
29
- expect(converter.irNode).toMatchObject(expectedOutput);
30
- });
31
- it("should convert null", () => {
32
- const converter = new JSONSchemaConverter({ type: "null" });
33
- const expectedOutput = { type: "null", constraints: {}, path: "" };
34
- expect(converter.irNode).toMatchObject(expectedOutput);
35
- });
36
- it("should convert literals", () => {
37
- const converter = new JSONSchemaConverter({ const: "fixedValue" });
38
- const expectedOutput = {
39
- type: "literal",
40
- constraints: { value: "fixedValue" },
41
- path: "",
42
- };
43
- expect(converter.irNode).toMatchObject(expectedOutput);
44
- });
45
- it("should convert enums", () => {
46
- const converter = new JSONSchemaConverter({
47
- type: "string",
48
- enum: ["value1", "value2", "value3"],
49
- });
50
- const expectedOutput = {
51
- type: "enum",
52
- values: ["value1", "value2", "value3"],
53
- path: "",
54
- };
55
- expect(converter.irNode).toMatchObject(expectedOutput);
56
- });
57
- it("should convert unions", () => {
58
- const converter = new JSONSchemaConverter({ type: ["string", "number"] });
59
- const expectedOutput = {
60
- type: "union",
61
- options: [
62
- { type: "string", constraints: {}, path: "" },
63
- { type: "number", constraints: {}, path: "" },
64
- ],
65
- path: "",
66
- };
67
- expect(converter.irNode).toMatchObject(expectedOutput);
68
- });
69
- it("should convert intersections", () => {
70
- const converter = new JSONSchemaConverter({
71
- allOf: [{ type: "string" }, { type: "number" }],
72
- });
73
- const expectedOutput = {
74
- type: "intersection",
75
- options: [
76
- { type: "string", constraints: {}, path: "" },
77
- { type: "number", constraints: {}, path: "" },
78
- ],
79
- path: "",
80
- };
81
- expect(converter.irNode).toMatchObject(expectedOutput);
82
- });
83
- it("should convert arrays", () => {
84
- const converter = new JSONSchemaConverter({
85
- type: "array",
86
- items: { type: "string" },
87
- });
88
- const expectedOutput = {
89
- path: "",
90
- type: "array",
91
- items: { type: "string", constraints: {}, path: "0" },
92
- };
93
- expect(converter.irNode).toMatchObject(expectedOutput);
94
- });
95
- it("should convert objects", () => {
96
- const converter = new JSONSchemaConverter({
97
- type: "object",
98
- properties: {
99
- title: { type: "string" },
100
- year: { type: "number" },
101
- },
102
- required: ["title"],
103
- });
104
- const expectedOutput = {
105
- type: "object",
106
- properties: {
107
- title: {
108
- type: "string",
109
- constraints: {},
110
- path: "title",
111
- required: true,
112
- },
113
- year: {
114
- type: "number",
115
- constraints: {},
116
- path: "year",
117
- required: false,
118
- },
119
- },
120
- path: "",
121
- };
122
- expect(converter.irNode).toMatchObject(expectedOutput);
123
- });
124
- it("should handle $defs", () => {
125
- const converter = new JSONSchemaConverter({
126
- $defs: {
127
- Person: {
128
- type: "object",
129
- properties: {
130
- name: { type: "string" },
131
- age: { type: "number" },
132
- },
133
- required: ["name"],
134
- },
135
- },
136
- type: "object",
137
- properties: {
138
- person: { $ref: "#/$defs/Person" },
139
- },
140
- });
141
- const expectedOutput = {
142
- type: "object",
143
- properties: {
144
- person: {
145
- type: "object",
146
- properties: {
147
- name: {
148
- type: "string",
149
- constraints: {},
150
- path: "person.name",
151
- required: true,
152
- },
153
- age: {
154
- type: "number",
155
- constraints: {},
156
- path: "person.age",
157
- required: false,
158
- },
159
- },
160
- required: false,
161
- path: "person",
162
- },
163
- },
164
- path: "",
165
- };
166
- expect(converter.irNode).toMatchObject(expectedOutput);
167
- });
168
- it("should convert a simple JSON schema to IRNode", () => {
169
- const converter = new JSONSchemaConverter({
170
- type: "object",
171
- properties: {
172
- name: { type: "string" },
173
- age: { type: "number" },
174
- contacts: {
175
- type: "array",
176
- items: {
177
- type: "object",
178
- properties: {
179
- email: { type: "string" },
180
- },
181
- required: ["email"],
182
- },
183
- },
184
- profile: {
185
- type: "object",
186
- properties: {
187
- email: { type: "string" },
188
- },
189
- required: ["email"],
190
- },
191
- },
192
- required: ["name", "age"],
193
- });
194
- const expectedOutput = {
195
- type: "object",
196
- properties: {
197
- name: {
198
- type: "string",
199
- constraints: {},
200
- path: "name",
201
- required: true,
202
- },
203
- age: {
204
- type: "number",
205
- constraints: {},
206
- path: "age",
207
- required: true,
208
- },
209
- contacts: {
210
- type: "array",
211
- items: {
212
- type: "object",
213
- properties: {
214
- email: {
215
- type: "string",
216
- constraints: {},
217
- path: "contacts.0.email",
218
- required: true,
219
- },
220
- },
221
- path: "contacts.0",
222
- },
223
- required: false,
224
- path: "contacts",
225
- },
226
- profile: {
227
- type: "object",
228
- properties: {
229
- email: {
230
- type: "string",
231
- constraints: {},
232
- path: "profile.email",
233
- required: true,
234
- },
235
- },
236
- required: false,
237
- path: "profile",
238
- },
239
- },
240
- path: "",
241
- };
242
- expect(converter.irNode).toMatchObject(expectedOutput);
243
- });
244
- it("should track and assign unique signatures of arrays and objects", () => {
245
- const converter = new JSONSchemaConverter({
246
- type: "object",
247
- properties: {
248
- profile: {
249
- type: "object",
250
- properties: {
251
- contactMethod: {
252
- type: "object",
253
- properties: {
254
- email: { type: "string" },
255
- phone: { type: "string" },
256
- },
257
- required: ["email"],
258
- },
259
- },
260
- },
261
- profile2: {
262
- type: "object",
263
- properties: {
264
- contactMethod: {
265
- type: "object",
266
- properties: {
267
- email: { type: "string" },
268
- phone: { type: "string" },
269
- },
270
- required: ["email"],
271
- },
272
- },
273
- },
274
- contactMethods: {
275
- type: "array",
276
- items: {
277
- type: "object",
278
- properties: {
279
- email: { type: "string" },
280
- phone: { type: "string" },
281
- },
282
- required: ["email"],
283
- },
284
- },
285
- contactMethods2: {
286
- type: "array",
287
- items: {
288
- type: "object",
289
- properties: {
290
- email: { type: "string" },
291
- phone: { type: "string" },
292
- },
293
- required: ["email"],
294
- },
295
- },
296
- },
297
- });
298
- expect(converter.irNode.properties?.profile.signature).toBe(converter.irNode.properties?.profile2.signature);
299
- expect(converter.irNode.properties?.contactMethods.signature).toBe(converter.irNode.properties?.contactMethods2.signature);
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 title annotation", () => {
441
- const converter = new JSONSchemaConverter({
442
- type: "string",
443
- title: "Email Address",
444
- });
445
- expect(converter.irNode.title).toBe("Email Address");
446
- });
447
- it("should capture title on object properties", () => {
448
- const converter = new JSONSchemaConverter({
449
- type: "object",
450
- properties: {
451
- email: { type: "string", title: "Email Address", description: "The email" },
452
- },
453
- });
454
- expect(converter.irNode.properties?.email.title).toBe("Email Address");
455
- expect(converter.irNode.properties?.email.description).toBe("The email");
456
- });
457
- it("should capture title on enum", () => {
458
- const converter = new JSONSchemaConverter({
459
- enum: ["a", "b"],
460
- title: "Letter Choice",
461
- });
462
- expect(converter.irNode.title).toBe("Letter Choice");
463
- });
464
- it("should capture format constraint", () => {
465
- const converter = new JSONSchemaConverter({
466
- type: "string",
467
- format: "email",
468
- });
469
- expect(converter.irNode.constraints?.format).toBe("email");
470
- });
471
- it("should capture exclusiveMinimum and exclusiveMaximum", () => {
472
- const converter = new JSONSchemaConverter({
473
- type: "number",
474
- exclusiveMinimum: 0,
475
- exclusiveMaximum: 100,
476
- });
477
- expect(converter.irNode.constraints?.exclusiveMinimum).toBe(0);
478
- expect(converter.irNode.constraints?.exclusiveMaximum).toBe(100);
479
- });
480
- it("should capture object constraints (minProperties, maxProperties)", () => {
481
- const converter = new JSONSchemaConverter({
482
- type: "object",
483
- minProperties: 1,
484
- maxProperties: 5,
485
- });
486
- expect(converter.irNode.constraints?.minProperties).toBe(1);
487
- expect(converter.irNode.constraints?.maxProperties).toBe(5);
488
- });
489
- // untypedFallback option
490
- it("should use 'any' by default for schemas with no type", () => {
491
- const converter = new JSONSchemaConverter({
492
- type: "object",
493
- properties: {
494
- data: { description: "untyped field" },
495
- },
496
- });
497
- expect(converter.irNode.properties?.data.type).toBe("any");
498
- });
499
- it("should use 'unknown' when untypedFallback is 'unknown'", () => {
500
- const converter = new JSONSchemaConverter({
501
- type: "object",
502
- properties: {
503
- data: { description: "untyped field" },
504
- },
505
- }, { untypedFallback: "unknown" });
506
- expect(converter.irNode.properties?.data.type).toBe("unknown");
507
- });
508
- it("should use 'object' when untypedFallback is 'object'", () => {
509
- const converter = new JSONSchemaConverter({
510
- type: "object",
511
- properties: {
512
- data: { description: "untyped field" },
513
- },
514
- }, { untypedFallback: "object" });
515
- expect(converter.irNode.properties?.data.type).toBe("object");
516
- });
517
- // Description propagation to combinators, enum, const
518
- it("should capture description on enum", () => {
519
- const converter = new JSONSchemaConverter({
520
- enum: ["a", "b"],
521
- description: "Pick a letter",
522
- });
523
- expect(converter.irNode.description).toBe("Pick a letter");
524
- });
525
- it("should capture description on const", () => {
526
- const converter = new JSONSchemaConverter({
527
- const: "fixed",
528
- description: "A fixed value",
529
- });
530
- expect(converter.irNode.description).toBe("A fixed value");
531
- });
532
- it("should capture description on oneOf", () => {
533
- const converter = new JSONSchemaConverter({
534
- oneOf: [{ type: "string" }, { type: "number" }],
535
- description: "Either a string or number",
536
- });
537
- expect(converter.irNode.description).toBe("Either a string or number");
538
- });
539
- it("should capture description on anyOf", () => {
540
- const converter = new JSONSchemaConverter({
541
- anyOf: [{ type: "string" }, { type: "number" }],
542
- description: "Any of these",
543
- });
544
- expect(converter.irNode.description).toBe("Any of these");
545
- });
546
- it("should capture description on allOf", () => {
547
- const converter = new JSONSchemaConverter({
548
- allOf: [{ type: "object" }, { type: "object" }],
549
- description: "Combined type",
550
- });
551
- expect(converter.irNode.description).toBe("Combined type");
552
- });
553
- // Step 1.10: not and if/then/else
554
- it("should handle standalone 'not' keyword", () => {
555
- const converter = new JSONSchemaConverter({
556
- not: { type: "string" },
557
- });
558
- // No type keyword present, so falls through to 'any' with 'not' attached via augmentWithApplicators
559
- expect(converter.irNode.type).toBe("any");
560
- expect(converter.irNode.not).toBeDefined();
561
- expect(converter.irNode.not.type).toBe("string");
562
- });
563
- it("should handle 'not' alongside 'type'", () => {
564
- const converter = new JSONSchemaConverter({
565
- type: "string",
566
- not: { pattern: "^[0-9]" },
567
- });
568
- expect(converter.irNode.type).toBe("string");
569
- expect(converter.irNode.not).toBeDefined();
570
- });
571
- it("should handle if/then/else", () => {
572
- const converter = new JSONSchemaConverter({
573
- if: { type: "object", properties: { kind: { const: "a" } } },
574
- then: { type: "object", properties: { a: { type: "string" } } },
575
- else: { type: "object", properties: { b: { type: "number" } } },
576
- });
577
- // No type keyword present, so falls through to 'any' with conditional attached via augmentWithApplicators
578
- expect(converter.irNode.type).toBe("any");
579
- expect(converter.irNode.conditional).toBeDefined();
580
- expect(converter.irNode.conditional.if.type).toBe("object");
581
- expect(converter.irNode.conditional.then).toBeDefined();
582
- expect(converter.irNode.conditional.else).toBeDefined();
583
- });
584
- });
585
- //# sourceMappingURL=JSONSchemaConverter.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"JSONSchemaConverter.test.js","sourceRoot":"","sources":["../src/JSONSchemaConverter.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};