ajsc 5.1.0 → 5.2.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypescriptConverter.composites.advanced.test.js","sourceRoot":"","sources":["../src/TypescriptConverter.composites.advanced.test.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,5 @@
1
1
  import { describe, it, expect } from "vitest";
2
2
  import { TypescriptConverter } from "./TypescriptConverter.js";
3
- describe("TypescriptConverter - unions and intersections", () => {
4
- it("should convert unions", () => {
5
- expect(new TypescriptConverter({ type: ["string", "number"] }).code).toMatch(`string | number`);
6
- });
7
- it("should convert intersections", () => {
8
- expect(new TypescriptConverter({
9
- allOf: [{ type: "string" }, { type: "number" }],
10
- }).code).toMatch(`string & number`);
11
- });
12
- });
13
3
  describe("TypescriptConverter - unions and intersections with shared ancestor type merging", () => {
14
4
  it("should merge enum unions with same name under shared ancestor", () => {
15
5
  expect(new TypescriptConverter({
@@ -207,8 +197,12 @@ describe("TypescriptConverter - unions and intersections with shared ancestor ty
207
197
  },
208
198
  }, { enumStyle: "enum" }).code;
209
199
  // Discriminated union: "kind" has distinct const per option with
210
- // option-specific properties — should NOT be merged
211
- expect(code).toMatch(/Shape \| ShapeType/);
200
+ // option-specific properties — should NOT be merged, but enhanced with
201
+ // discriminator-derived names and consolidated enum
202
+ expect(code).toContain('export enum Kind { Circle = "circle", Square = "square" }');
203
+ expect(code).toMatch(/CircleShape \| SquareShape/);
204
+ expect(code).toContain('kind?: Kind.Circle');
205
+ expect(code).toContain('kind?: Kind.Square');
212
206
  });
213
207
  it("should merge with union-style enums (default enumStyle)", () => {
214
208
  const code = new TypescriptConverter({
@@ -243,6 +237,42 @@ describe("TypescriptConverter - unions and intersections with shared ancestor ty
243
237
  // With default enumStyle ("union"), merged enums appear as string literal unions
244
238
  expect(code).toMatch(`"click" | "hover" | "scroll" | "resize"`);
245
239
  });
240
+ it("should not suffix enum name when identical enum appears in tuple and array-of-tuples anyOf branches", () => {
241
+ const code = new TypescriptConverter({
242
+ type: "object",
243
+ properties: {
244
+ sort: {
245
+ description: '[\"key\", \"asc|desc\"] or [[\"key1\", \"asc\"], [\"key2\", \"desc\"]]',
246
+ anyOf: [
247
+ {
248
+ type: "array",
249
+ items: [
250
+ { type: "string" },
251
+ { type: "string", enum: ["asc", "desc"] },
252
+ ],
253
+ additionalItems: false,
254
+ minItems: 2,
255
+ },
256
+ {
257
+ type: "array",
258
+ items: {
259
+ type: "array",
260
+ items: [
261
+ { type: "string" },
262
+ { type: "string", enum: ["asc", "desc"] },
263
+ ],
264
+ additionalItems: false,
265
+ minItems: 2,
266
+ },
267
+ },
268
+ ],
269
+ },
270
+ },
271
+ }, { enumStyle: "enum" }).code;
272
+ // The enum is identical in both branches — should be "Sort", not "Sort1"
273
+ expect(code).toContain('export enum Sort { Asc = "asc", Desc = "desc" }');
274
+ expect(code).not.toContain("Sort1");
275
+ });
246
276
  it("should handle nested anyOf merging (bottom-up)", () => {
247
277
  const code = new TypescriptConverter({
248
278
  type: "object",
@@ -1 +1 @@
1
- {"version":3,"file":"TypescriptConverter.composites.test.js","sourceRoot":"","sources":["../src/TypescriptConverter.composites.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TypescriptConverter.composites.test.js","sourceRoot":"","sources":["../src/TypescriptConverter.composites.test.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,16 @@ export declare class TypescriptConverter extends TypescriptBaseConverter impleme
53
53
  private enumDeclarations;
54
54
  readonly code: string;
55
55
  private mergeCounter;
56
+ /**
57
+ * Maps discriminator literal IR nodes to their consolidated enum info.
58
+ * Used by generateLiteralType and preRegisterEnumNames to emit a single
59
+ * consolidated enum and member references instead of single-value enums.
60
+ */
61
+ private discriminatorInfo;
62
+ /** Maps variant IR nodes to their enhancement-assigned names. */
63
+ private variantNames;
64
+ /** Signatures eligible for cross-variant deduplication. */
65
+ private dedupSignatures;
56
66
  constructor(schema: JSONSchema7Definition, opts?: TypescriptConverterOpts);
57
67
  protected getRefTypeNamingConfig(): RefTypeNamingConfig;
58
68
  /**
@@ -119,4 +129,35 @@ export declare class TypescriptConverter extends TypescriptBaseConverter impleme
119
129
  * the same field that should be merged (past/current/future → Timeframe).
120
130
  */
121
131
  private isDiscriminatedUnion;
132
+ /**
133
+ * Walks the IR tree and applies discriminated union enhancements
134
+ * to anyOf unions that survived merging.
135
+ */
136
+ private enhanceDiscriminatedUnions;
137
+ /**
138
+ * Enhances an unmerged anyOf union that has a discriminator property.
139
+ * Sets `ir.name` on each variant to a discriminator-derived name and
140
+ * populates `discriminatorInfo` for consolidated enum emission.
141
+ */
142
+ private applyDiscriminatedUnionEnhancements;
143
+ /**
144
+ * Collects all property names (in first-seen order) and shared property names
145
+ * across union options.
146
+ */
147
+ private collectUnionPropertyNames;
148
+ /**
149
+ * Finds the discriminator property among shared properties: a property where
150
+ * each option has a distinct const or single-value-enum string value.
151
+ */
152
+ private findDiscriminatorProperty;
153
+ /**
154
+ * Extracts a single const string value from an IR node (literal with string
155
+ * value or single-value string enum).
156
+ */
157
+ private getConstStringValue;
158
+ protected shouldReuseExistingSignature(signature: string): boolean;
159
+ /**
160
+ * Override to use `ir.name` for discriminator-derived variant naming.
161
+ */
162
+ protected resolveRefTypeName(ir: IRNode, signature: string): string;
122
163
  }
@@ -2,6 +2,45 @@ import { TypescriptBaseConverter, } from "./TypescriptBaseConverter.js";
2
2
  import { JSONSchemaConverter } from "./JSONSchemaConverter.js";
3
3
  import { toPascalCase } from "./utils/to-pascal-case.js";
4
4
  import { PathUtils } from "./utils/path-utils.js";
5
+ /**
6
+ * Recursively walks an IR tree, visiting each node and optionally replacing it.
7
+ * Returns the (potentially replaced) root node.
8
+ *
9
+ * @param visitor Return an IRNode to replace the current node, or void/null to keep it.
10
+ * @param order 'pre' visits before children; 'post' (default) visits after children.
11
+ */
12
+ function walkIR(ir, visitor, order = "post") {
13
+ let node = ir;
14
+ if (order === "pre") {
15
+ const result = visitor(node);
16
+ if (result != null)
17
+ node = result;
18
+ }
19
+ if (node.properties) {
20
+ for (const key of Object.keys(node.properties)) {
21
+ node.properties[key] = walkIR(node.properties[key], visitor, order);
22
+ }
23
+ }
24
+ if (node.items) {
25
+ node.items = walkIR(node.items, visitor, order);
26
+ }
27
+ if (node.tupleItems) {
28
+ node.tupleItems = node.tupleItems.map((t) => walkIR(t, visitor, order));
29
+ }
30
+ if (node.options) {
31
+ node.options = node.options.map((o) => walkIR(o, visitor, order));
32
+ }
33
+ if (node.additionalProperties &&
34
+ typeof node.additionalProperties !== "boolean") {
35
+ node.additionalProperties = walkIR(node.additionalProperties, visitor, order);
36
+ }
37
+ if (order === "post") {
38
+ const result = visitor(node);
39
+ if (result != null)
40
+ return result;
41
+ }
42
+ return node;
43
+ }
5
44
  /**
6
45
  * A TypeScript language converter plugin.
7
46
  */
@@ -15,6 +54,16 @@ export class TypescriptConverter extends TypescriptBaseConverter {
15
54
  */
16
55
  this.enumDeclarations = new Map();
17
56
  this.mergeCounter = 0;
57
+ /**
58
+ * Maps discriminator literal IR nodes to their consolidated enum info.
59
+ * Used by generateLiteralType and preRegisterEnumNames to emit a single
60
+ * consolidated enum and member references instead of single-value enums.
61
+ */
62
+ this.discriminatorInfo = new Map();
63
+ /** Maps variant IR nodes to their enhancement-assigned names. */
64
+ this.variantNames = new Map();
65
+ /** Signatures eligible for cross-variant deduplication. */
66
+ this.dedupSignatures = new Set();
18
67
  this.opts = opts;
19
68
  this.inlineTypes = opts?.inlineTypes ?? false;
20
69
  this.enumStyle = opts?.enumStyle ?? "union";
@@ -24,6 +73,7 @@ export class TypescriptConverter extends TypescriptBaseConverter {
24
73
  // enum pre-registration and type generation, so the downstream
25
74
  // pipeline sees merged enums and objects rather than separate variants.
26
75
  const irNode = this.mergeCompatibleUnions(this.schemaConverter.irNode);
76
+ this.enhanceDiscriminatedUnions(irNode);
27
77
  if (!irNode.name) {
28
78
  irNode.name = "Root";
29
79
  }
@@ -45,7 +95,9 @@ export class TypescriptConverter extends TypescriptBaseConverter {
45
95
  if (!this.inlineTypes) {
46
96
  const enumCode = [...this.enumDeclarations.values()]
47
97
  .map(({ name, members, description }) => {
48
- const jsdoc = this.emitJSDoc && description ? `${this.formatJSDoc(description)}\n` : "";
98
+ const jsdoc = this.emitJSDoc && description
99
+ ? `${this.formatJSDoc(description)}\n`
100
+ : "";
49
101
  const body = members
50
102
  .map(({ key, value }) => `${key} = ${JSON.stringify(value)}`)
51
103
  .join(", ");
@@ -54,12 +106,16 @@ export class TypescriptConverter extends TypescriptBaseConverter {
54
106
  .join("\n");
55
107
  const typeCode = this.refTypes
56
108
  .map(([_sig, name, { code, description }]) => {
57
- const jsdoc = this.emitJSDoc && description ? `${this.formatJSDoc(description)}\n` : "";
109
+ const jsdoc = this.emitJSDoc && description
110
+ ? `${this.formatJSDoc(description)}\n`
111
+ : "";
58
112
  return `${jsdoc}export type ${name} = ${code};`;
59
113
  })
60
114
  .join("\n");
61
115
  const allDecls = [enumCode, typeCode].filter(Boolean).join("\n");
62
- const rootJsdoc = this.emitJSDoc && irNode.description ? `${this.formatJSDoc(irNode.description)}\n` : "";
116
+ const rootJsdoc = this.emitJSDoc && irNode.description
117
+ ? `${this.formatJSDoc(irNode.description)}\n`
118
+ : "";
63
119
  this.code = `${allDecls}\n\n${rootJsdoc}export type ${rootName} = ${code};\n`;
64
120
  }
65
121
  else {
@@ -88,34 +144,22 @@ export class TypescriptConverter extends TypescriptBaseConverter {
88
144
  * path that runtime generation would encounter.
89
145
  */
90
146
  preRegisterEnumNames(ir) {
91
- if (ir.type === "enum" &&
92
- ir.values?.every((v) => typeof v === "string")) {
93
- this.getOrCreateEnumDeclaration(ir.values, ir.path, ir.description, ir.title);
94
- }
95
- else if (ir.type === "literal" &&
96
- typeof ir.constraints?.value === "string") {
97
- this.getOrCreateEnumDeclaration([ir.constraints.value], ir.path, ir.description, ir.title);
98
- }
99
- // Recurse in the same order as generateType
100
- if (ir.properties) {
101
- for (const prop of Object.values(ir.properties)) {
102
- this.preRegisterEnumNames(prop);
147
+ walkIR(ir, (node) => {
148
+ if (node.type === "enum" &&
149
+ node.values?.every((v) => typeof v === "string")) {
150
+ this.getOrCreateEnumDeclaration(node.values, node.path, node.description, node.title);
103
151
  }
104
- }
105
- if (ir.items)
106
- this.preRegisterEnumNames(ir.items);
107
- if (ir.tupleItems) {
108
- for (const item of ir.tupleItems)
109
- this.preRegisterEnumNames(item);
110
- }
111
- if (ir.options) {
112
- for (const opt of ir.options)
113
- this.preRegisterEnumNames(opt);
114
- }
115
- if (ir.additionalProperties &&
116
- typeof ir.additionalProperties !== "boolean") {
117
- this.preRegisterEnumNames(ir.additionalProperties);
118
- }
152
+ else if (node.type === "literal" &&
153
+ typeof node.constraints?.value === "string") {
154
+ const discInfo = this.discriminatorInfo.get(node);
155
+ if (discInfo) {
156
+ this.getOrCreateEnumDeclaration(discInfo.allValues, node.path, node.description, node.title);
157
+ }
158
+ else {
159
+ this.getOrCreateEnumDeclaration([node.constraints.value], node.path, node.description, node.title);
160
+ }
161
+ }
162
+ }, "pre");
119
163
  }
120
164
  generateEnumType(ir) {
121
165
  if (this.enumStyle === "enum" &&
@@ -129,6 +173,11 @@ export class TypescriptConverter extends TypescriptBaseConverter {
129
173
  if (this.enumStyle === "enum" &&
130
174
  !this.inlineTypes &&
131
175
  typeof ir.constraints?.value === "string") {
176
+ const discInfo = this.discriminatorInfo.get(ir);
177
+ if (discInfo) {
178
+ const enumName = this.getOrCreateEnumDeclaration(discInfo.allValues, ir.path, ir.description, ir.title);
179
+ return `${enumName}.${this.toEnumMemberName(discInfo.thisValue)}`;
180
+ }
132
181
  return this.getOrCreateEnumDeclaration([ir.constraints.value], ir.path, ir.description, ir.title);
133
182
  }
134
183
  return super.generateLiteralType(ir);
@@ -168,7 +217,12 @@ export class TypescriptConverter extends TypescriptBaseConverter {
168
217
  usedMemberNames.add(memberName);
169
218
  return { key: memberName, value };
170
219
  });
171
- this.enumDeclarations.set(canonicalKey, { name: enumName, members, title, description });
220
+ this.enumDeclarations.set(canonicalKey, {
221
+ name: enumName,
222
+ members,
223
+ title,
224
+ description,
225
+ });
172
226
  return enumName;
173
227
  }
174
228
  /**
@@ -178,16 +232,13 @@ export class TypescriptConverter extends TypescriptBaseConverter {
178
232
  * and falls back to a numeric suffix as a last resort.
179
233
  */
180
234
  deriveEnumName(path) {
181
- const segments = PathUtils.parsePath(path);
235
+ const segments = PathUtils.parsePath(path).filter((x) => !/^\d+$/.test(x));
182
236
  if (segments.length === 0) {
183
237
  return this.findAvailableName("Value");
184
238
  }
185
239
  // Try progressively more parent path segments
186
240
  for (let count = 1; count <= segments.length; count++) {
187
- const proposed = segments
188
- .slice(-count)
189
- .map(toPascalCase)
190
- .join("");
241
+ const proposed = segments.slice(-count).map(toPascalCase).join("");
191
242
  if (proposed &&
192
243
  this.isValidIdentifier(proposed) &&
193
244
  !this.usedDeclarationNames.has(proposed)) {
@@ -230,35 +281,15 @@ export class TypescriptConverter extends TypescriptBaseConverter {
230
281
  * from some options become optional in the merged type.
231
282
  */
232
283
  mergeCompatibleUnions(ir) {
233
- // Recurse into children first (bottom-up)
234
- if (ir.properties) {
235
- for (const key of Object.keys(ir.properties)) {
236
- ir.properties[key] = this.mergeCompatibleUnions(ir.properties[key]);
284
+ return walkIR(ir, (node) => {
285
+ if (node.type === "union" &&
286
+ node.constraints?.combinator === "anyOf" &&
287
+ node.options &&
288
+ node.options.length > 1) {
289
+ return this.tryMergeObjectUnion(node);
237
290
  }
238
- }
239
- if (ir.items) {
240
- ir.items = this.mergeCompatibleUnions(ir.items);
241
- }
242
- if (ir.tupleItems) {
243
- ir.tupleItems = ir.tupleItems.map((t) => this.mergeCompatibleUnions(t));
244
- }
245
- if (ir.options) {
246
- ir.options = ir.options.map((o) => this.mergeCompatibleUnions(o));
247
- }
248
- if (ir.additionalProperties &&
249
- typeof ir.additionalProperties !== "boolean") {
250
- ir.additionalProperties = this.mergeCompatibleUnions(ir.additionalProperties);
251
- }
252
- // Check if this node is a mergeable anyOf union
253
- if (ir.type === "union" &&
254
- ir.constraints?.combinator === "anyOf" &&
255
- ir.options &&
256
- ir.options.length > 1) {
257
- const merged = this.tryMergeObjectUnion(ir);
258
- if (merged)
259
- return merged;
260
- }
261
- return ir;
291
+ return undefined;
292
+ });
262
293
  }
263
294
  /**
264
295
  * Attempts to merge all options of an anyOf union into a single object type.
@@ -285,24 +316,12 @@ export class TypescriptConverter extends TypescriptBaseConverter {
285
316
  }
286
317
  }
287
318
  // Collect all property names in first-seen order across options
288
- const allPropNames = [];
289
- const seenProps = new Set();
290
- for (const opt of options) {
291
- if (opt.properties) {
292
- for (const key of Object.keys(opt.properties)) {
293
- if (!seenProps.has(key)) {
294
- seenProps.add(key);
295
- allPropNames.push(key);
296
- }
297
- }
298
- }
299
- }
319
+ const { allPropNames, sharedPropNames } = this.collectUnionPropertyNames(options);
300
320
  if (allPropNames.length === 0) {
301
321
  return null;
302
322
  }
303
323
  // Only merge when options share at least one property name —
304
324
  // disjoint objects should remain as a union to preserve semantics.
305
- const sharedPropNames = allPropNames.filter((propName) => options.every((opt) => opt.properties?.[propName] !== undefined));
306
325
  if (sharedPropNames.length === 0) {
307
326
  return null;
308
327
  }
@@ -334,9 +353,7 @@ export class TypescriptConverter extends TypescriptBaseConverter {
334
353
  mergedProperties[propName] = merged;
335
354
  }
336
355
  // Derive a name from the union's path
337
- const pathSegments = ir.path
338
- .split(".")
339
- .filter((x) => !/^\d+$/.test(x));
356
+ const pathSegments = ir.path.split(".").filter((x) => !/^\d+$/.test(x));
340
357
  const name = pathSegments[pathSegments.length - 1] || "Merged";
341
358
  const merged = {
342
359
  type: "object",
@@ -416,34 +433,9 @@ export class TypescriptConverter extends TypescriptBaseConverter {
416
433
  if (!hasOptionSpecificProps) {
417
434
  return false;
418
435
  }
419
- // Check if any shared property acts as a discriminator:
420
- // each option has a distinct const or single-value enum for that property
421
- let hasDiscriminator = false;
422
- for (const propName of sharedPropNames) {
423
- const perOptionValues = options.map((opt) => {
424
- const prop = opt.properties?.[propName];
425
- if (!prop)
426
- return undefined;
427
- if (prop.type === "literal" &&
428
- typeof prop.constraints?.value === "string") {
429
- return prop.constraints.value;
430
- }
431
- if (prop.type === "enum" &&
432
- prop.values?.length === 1 &&
433
- typeof prop.values[0] === "string") {
434
- return prop.values[0];
435
- }
436
- return undefined;
437
- });
438
- if (perOptionValues.every((v) => v !== undefined)) {
439
- const uniqueValues = new Set(perOptionValues);
440
- if (uniqueValues.size === options.length) {
441
- hasDiscriminator = true;
442
- break;
443
- }
444
- }
445
- }
446
- if (!hasDiscriminator) {
436
+ // Reuse findDiscriminatorProperty instead of inline loop
437
+ const discriminator = this.findDiscriminatorProperty(options, sharedPropNames);
438
+ if (!discriminator) {
447
439
  return false;
448
440
  }
449
441
  // For a true discriminated union, every option must have at least one
@@ -457,10 +449,147 @@ export class TypescriptConverter extends TypescriptBaseConverter {
457
449
  if (sharedSet.has(propName))
458
450
  return false;
459
451
  // Check if this prop appears in any other option
460
- return !options.some((other) => other !== opt &&
461
- other.properties?.[propName] !== undefined);
452
+ return !options.some((other) => other !== opt && other.properties?.[propName] !== undefined);
462
453
  });
463
454
  });
464
455
  }
456
+ /**
457
+ * Walks the IR tree and applies discriminated union enhancements
458
+ * to anyOf unions that survived merging.
459
+ */
460
+ enhanceDiscriminatedUnions(ir) {
461
+ walkIR(ir, (node) => {
462
+ if (node.type === "union" &&
463
+ node.constraints?.combinator === "anyOf" &&
464
+ node.options &&
465
+ node.options.length > 1) {
466
+ this.applyDiscriminatedUnionEnhancements(node);
467
+ }
468
+ });
469
+ }
470
+ /**
471
+ * Enhances an unmerged anyOf union that has a discriminator property.
472
+ * Sets `ir.name` on each variant to a discriminator-derived name and
473
+ * populates `discriminatorInfo` for consolidated enum emission.
474
+ */
475
+ applyDiscriminatedUnionEnhancements(ir) {
476
+ const options = ir.options;
477
+ if (!options || !options.every((opt) => opt.type === "object"))
478
+ return;
479
+ // Compute shared property names
480
+ const { sharedPropNames } = this.collectUnionPropertyNames(options);
481
+ const discriminator = this.findDiscriminatorProperty(options, sharedPropNames);
482
+ if (!discriminator)
483
+ return;
484
+ // Derive parent context name from the union's path
485
+ const pathSegments = ir.path.split(".").filter((x) => !/^\d+$/.test(x));
486
+ const parentName = pathSegments[pathSegments.length - 1] || "";
487
+ // Collect all discriminator values in order
488
+ const allValues = [];
489
+ for (const opt of options) {
490
+ const val = this.getConstStringValue(opt.properties[discriminator]);
491
+ if (val)
492
+ allValues.push(val);
493
+ }
494
+ // Collect signatures of object/array properties across all variants
495
+ // for cross-variant deduplication. If the same signature appears at
496
+ // different property names across variants, it should be deduplicated.
497
+ const signatureCounts = new Map();
498
+ for (const opt of options) {
499
+ if (!opt.properties)
500
+ continue;
501
+ for (const prop of Object.values(opt.properties)) {
502
+ if (prop.signature) {
503
+ signatureCounts.set(prop.signature, (signatureCounts.get(prop.signature) ?? 0) + 1);
504
+ }
505
+ }
506
+ }
507
+ for (const [sig, count] of signatureCounts) {
508
+ if (count > 1)
509
+ this.dedupSignatures.add(sig);
510
+ }
511
+ for (const opt of options) {
512
+ const val = this.getConstStringValue(opt.properties[discriminator]);
513
+ if (!val)
514
+ continue;
515
+ // Set discriminator-derived variant name
516
+ const variantName = toPascalCase(val) + toPascalCase(parentName);
517
+ opt.name = variantName;
518
+ this.variantNames.set(opt, variantName);
519
+ // Populate discriminator info for consolidated enum emission
520
+ if (this.enumStyle === "enum" && !this.inlineTypes) {
521
+ const discProp = opt.properties[discriminator];
522
+ this.discriminatorInfo.set(discProp, { allValues, thisValue: val });
523
+ }
524
+ }
525
+ }
526
+ /**
527
+ * Collects all property names (in first-seen order) and shared property names
528
+ * across union options.
529
+ */
530
+ collectUnionPropertyNames(options) {
531
+ const allPropNames = [];
532
+ const seenProps = new Set();
533
+ for (const opt of options) {
534
+ if (opt.properties) {
535
+ for (const key of Object.keys(opt.properties)) {
536
+ if (!seenProps.has(key)) {
537
+ seenProps.add(key);
538
+ allPropNames.push(key);
539
+ }
540
+ }
541
+ }
542
+ }
543
+ const sharedPropNames = allPropNames.filter((propName) => options.every((opt) => opt.properties?.[propName] !== undefined));
544
+ return { allPropNames, sharedPropNames };
545
+ }
546
+ /**
547
+ * Finds the discriminator property among shared properties: a property where
548
+ * each option has a distinct const or single-value-enum string value.
549
+ */
550
+ findDiscriminatorProperty(options, sharedPropNames) {
551
+ for (const propName of sharedPropNames) {
552
+ const values = options.map((opt) => this.getConstStringValue(opt.properties?.[propName]));
553
+ if (values.every((v) => v !== undefined)) {
554
+ const uniqueValues = new Set(values);
555
+ if (uniqueValues.size === options.length) {
556
+ return propName;
557
+ }
558
+ }
559
+ }
560
+ return null;
561
+ }
562
+ /**
563
+ * Extracts a single const string value from an IR node (literal with string
564
+ * value or single-value string enum).
565
+ */
566
+ getConstStringValue(ir) {
567
+ if (!ir)
568
+ return undefined;
569
+ if (ir.type === "literal" && typeof ir.constraints?.value === "string") {
570
+ return ir.constraints.value;
571
+ }
572
+ if (ir.type === "enum" &&
573
+ ir.values?.length === 1 &&
574
+ typeof ir.values[0] === "string") {
575
+ return ir.values[0];
576
+ }
577
+ return undefined;
578
+ }
579
+ shouldReuseExistingSignature(signature) {
580
+ return this.dedupSignatures.has(signature);
581
+ }
582
+ /**
583
+ * Override to use `ir.name` for discriminator-derived variant naming.
584
+ */
585
+ resolveRefTypeName(ir, signature) {
586
+ const variantName = this.variantNames.get(ir);
587
+ if (variantName) {
588
+ const name = this.findAvailableName(variantName);
589
+ this.usedDeclarationNames.add(name);
590
+ return name;
591
+ }
592
+ return super.resolveRefTypeName(ir, signature);
593
+ }
465
594
  }
466
595
  //# sourceMappingURL=TypescriptConverter.js.map