ajsc 5.0.1 → 5.0.3
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/TypescriptBaseConverter.d.ts +4 -0
- package/dist/TypescriptBaseConverter.js +16 -5
- package/dist/TypescriptBaseConverter.js.map +1 -1
- package/dist/TypescriptConverter.arrays.test.js +6 -6
- package/dist/TypescriptConverter.arrays.test.js.map +1 -1
- package/dist/TypescriptConverter.composites.test.js +292 -0
- package/dist/TypescriptConverter.composites.test.js.map +1 -1
- package/dist/TypescriptConverter.d.ts +54 -2
- package/dist/TypescriptConverter.js +339 -17
- package/dist/TypescriptConverter.js.map +1 -1
- package/dist/TypescriptConverter.options.test.js +72 -1
- package/dist/TypescriptConverter.options.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -35,6 +35,10 @@ export type GenerateTypeUtils = {
|
|
|
35
35
|
export declare abstract class TypescriptBaseConverter {
|
|
36
36
|
abstract readonly code: string;
|
|
37
37
|
protected refTypes: RefTypes;
|
|
38
|
+
/** Shared registry of all top-level declaration names (types + enums) for cross-namespace collision detection. */
|
|
39
|
+
protected usedDeclarationNames: Set<string>;
|
|
40
|
+
/** Root schema name, used as fallback context for root-level array item naming. */
|
|
41
|
+
protected rootName?: string;
|
|
38
42
|
private fallbackCounter;
|
|
39
43
|
protected getRefTypeNamingConfig(): RefTypeNamingConfig;
|
|
40
44
|
/**
|
|
@@ -6,6 +6,8 @@ const DEFAULT_UNCOUNTABLE_WORDS = ["data", "metadata"];
|
|
|
6
6
|
export class TypescriptBaseConverter {
|
|
7
7
|
constructor() {
|
|
8
8
|
this.refTypes = [];
|
|
9
|
+
/** Shared registry of all top-level declaration names (types + enums) for cross-namespace collision detection. */
|
|
10
|
+
this.usedDeclarationNames = new Set();
|
|
9
11
|
this.fallbackCounter = 0;
|
|
10
12
|
}
|
|
11
13
|
getRefTypeNamingConfig() {
|
|
@@ -182,6 +184,10 @@ export class TypescriptBaseConverter {
|
|
|
182
184
|
else {
|
|
183
185
|
postFixes.unshift("");
|
|
184
186
|
}
|
|
187
|
+
// When path is empty (root-level array), use the root schema name as context
|
|
188
|
+
if (path.length === 0 && this.rootName) {
|
|
189
|
+
path.push(this.rootName);
|
|
190
|
+
}
|
|
185
191
|
if (config.depluralize && path.length > 0 && path[path.length - 1]) {
|
|
186
192
|
path[path.length - 1] = this.singularize(path[path.length - 1], config.uncountableWords);
|
|
187
193
|
}
|
|
@@ -209,12 +215,14 @@ export class TypescriptBaseConverter {
|
|
|
209
215
|
if (!proposedName) {
|
|
210
216
|
postFixIndexToTry++;
|
|
211
217
|
if (postFixIndexToTry >= postFixes.length) {
|
|
212
|
-
|
|
213
|
-
|
|
218
|
+
do {
|
|
219
|
+
this.fallbackCounter++;
|
|
220
|
+
name = "Type" + this.fallbackCounter;
|
|
221
|
+
} while (this.usedDeclarationNames.has(name));
|
|
214
222
|
}
|
|
215
223
|
continue;
|
|
216
224
|
}
|
|
217
|
-
const nameAlreadyUsed = this.
|
|
225
|
+
const nameAlreadyUsed = this.usedDeclarationNames.has(proposedName);
|
|
218
226
|
if (nameAlreadyUsed) {
|
|
219
227
|
pathsSegmentsToInclude++;
|
|
220
228
|
if (pathsSegmentsToInclude >= path.length) {
|
|
@@ -222,8 +230,10 @@ export class TypescriptBaseConverter {
|
|
|
222
230
|
pathsSegmentsToInclude = 1;
|
|
223
231
|
if (postFixIndexToTry === postFixes.length) {
|
|
224
232
|
// Deterministic instance-scoped fallback
|
|
225
|
-
|
|
226
|
-
|
|
233
|
+
do {
|
|
234
|
+
this.fallbackCounter++;
|
|
235
|
+
name = proposedName + this.fallbackCounter;
|
|
236
|
+
} while (this.usedDeclarationNames.has(name));
|
|
227
237
|
}
|
|
228
238
|
}
|
|
229
239
|
}
|
|
@@ -231,6 +241,7 @@ export class TypescriptBaseConverter {
|
|
|
231
241
|
name = proposedName;
|
|
232
242
|
}
|
|
233
243
|
}
|
|
244
|
+
this.usedDeclarationNames.add(name);
|
|
234
245
|
return name;
|
|
235
246
|
}
|
|
236
247
|
getReferencedType(ir) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypescriptBaseConverter.js","sourceRoot":"","sources":["../src/TypescriptBaseConverter.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,oFAAoF;AACpF,MAAM,yBAAyB,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAqCvD,MAAM,OAAgB,uBAAuB;IAA7C;QAGY,aAAQ,GAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"TypescriptBaseConverter.js","sourceRoot":"","sources":["../src/TypescriptBaseConverter.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,oFAAoF;AACpF,MAAM,yBAAyB,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAqCvD,MAAM,OAAgB,uBAAuB;IAA7C;QAGY,aAAQ,GAAa,EAAE,CAAC;QAClC,kHAAkH;QACxG,yBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;QAG3C,oBAAe,GAAG,CAAC,CAAC;IA4S9B,CAAC;IA1SW,sBAAsB;QAC9B,OAAO;YACL,SAAS,EAAE;gBACT,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY;gBAC5D,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;gBACtD,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK;aACvC;YACD,eAAe,EAAE,IAAI;YACrB,qBAAqB,EAAE,IAAI;YAC3B,WAAW,EAAE,IAAI;YACjB,eAAe,EAAE,KAAK;SACvB,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,YAAY,CAAC,EAAU,EAAE,KAAwB;QACzD,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,cAAc,GAAG,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;gBACnD,IAAI,cAAc;oBAAE,OAAO,cAAc,CAAC;gBAC1C,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC5C,CAAC;YACD,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC3C,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC3C,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC3C,KAAK,cAAc;gBACjB,OAAO,IAAI,CAAC,wBAAwB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAClD,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACnC,KAAK,SAAS;gBACZ,OAAO,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YACtC,KAAK,KAAK;gBACR,OAAO,KAAK,CAAC;YACf,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAC;YACnB,KAAK,OAAO;gBACV,OAAO,OAAO,CAAC;YACjB,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAChD,IAAI,EAAE,CAAC,IAAI,IAAI,YAAY,EAAE,CAAC;oBAC5B,OAAO,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC/B,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAES,iBAAiB,CAAC,EAAU,EAAE,KAAwB;QAC9D,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,OAAO,SAAS,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;QACxD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAES,iBAAiB,CAAC,EAAU,EAAE,KAAwB;QAC9D,IAAI,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YAC7E,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAES,iBAAiB,CAAC,EAAU,EAAE,KAAwB;QAC9D,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,OAAO,EAAE,CAAC,OAAO;iBACd,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;iBAC3C,IAAI,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAES,wBAAwB,CAAC,EAAU,EAAE,KAAwB;QACrE,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,OAAO,EAAE,CAAC,OAAO;iBACd,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;iBAC3C,IAAI,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAES,gBAAgB,CAAC,EAAU;QACnC,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAES,mBAAmB,CAAC,EAAU;QACtC,OAAO,OAAO,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,QAAQ;YAC9C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;YACtC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAES,mBAAmB;QAC3B,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,MAAM;SACb,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,kBAAkB,CAAC,EAAU,EAAE,KAAwB;QAC/D,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAU,CAAC;QAEpD,IAAI,EAAE,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;YACrC,yBAAyB,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACvD,CAAC;aAAM,IAAI,EAAE,CAAC,oBAAoB,EAAE,CAAC;YACnC,yBAAyB,CAAC,GAAG,CAC3B,kBAAkB,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,oBAAoB,EAAE;gBAC3D,4DAA4D;gBAC5D,iBAAiB;oBACf,OAAO,SAAS,CAAC;gBACnB,CAAC;aACF,CAAC,GAAG,CACN,CAAC;QACJ,CAAC;QAED,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACnD,MAAM,IAAI,GAAG,EAAE,CAAC,UAAW,CAAC,GAAG,CAAC,CAAC;gBACjC,8CAA8C;gBAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC1C,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,QAAQ,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;YAC5G,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,yBAAyB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC1D,yBAAyB,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YAC7D,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACxB,SAAS,GAAG,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YACvC,CAAC;QACH,CAAC;QAED,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,IAAI,yBAAyB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACvC,IAAI,SAAS,EAAE,CAAC;gBACd,WAAW,GAAG,IAAI,SAAS,OAAO,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAC1F,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,SAAS,IAAI,2BAA2B,CAAC;QACzD,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAES,iBAAiB,CAAC,IAAY;QACtC,OAAO,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAEO,WAAW,CAAC,IAAY,EAAE,gBAA2B;QAC3D,MAAM,WAAW,GAAG,CAAC,GAAG,yBAAyB,EAAE,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,CAAC;QAChF,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC;YAC1E,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAES,qBAAqB,CAC7B,oBAA6D;QAE7D,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAChC,oBAAoB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAC9D,CAAC;QACF,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IAES,oBAAoB,CAC5B,SAAiB,EACjB,QAAgB;QAEhB,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,YAAY,KAAK,GAAG,CAAC;QACzC,MAAM,WAAW,GAAG,YAAY,KAAK,GAAG,CAAC;QAEzC,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAExC,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,MAAM,CAAC,eAAe,KAAK,KAAK,EAAE,CAAC;gBACrC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACxB,CAAC;YACD,6EAA6E;YAC7E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACvC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC;YACD,IAAI,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,eAAe,IAAI,WAAW,EAAE,CAAC;YACjD,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;QAED,IAAI,sBAAsB,GAAG,CAAC,CAAC;QAC/B,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAE1B,OAAO,CAAC,IAAI,EAAE,CAAC;YACb,IAAI,YAAY,GACd,IAAI,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9D,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAE/B,IAAI,MAAM,CAAC,qBAAqB,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC5D,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACvC,CAAC;YAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAC5C,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,KAAK,YAAY,CACtD,CAAC;YACF,IAAI,mBAAmB,EAAE,CAAC;gBACxB,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAChC,CAAC;YAED,8DAA8D;YAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,iBAAiB,EAAE,CAAC;gBACpB,IAAI,iBAAiB,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;oBAC1C,GAAG,CAAC;wBACF,IAAI,CAAC,eAAe,EAAE,CAAC;wBACvB,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;oBACvC,CAAC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAChD,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAEpE,IAAI,eAAe,EAAE,CAAC;gBACpB,sBAAsB,EAAE,CAAC;gBACzB,IAAI,sBAAsB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC1C,iBAAiB,EAAE,CAAC;oBACpB,sBAAsB,GAAG,CAAC,CAAC;oBAE3B,IAAI,iBAAiB,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;wBAC3C,yCAAyC;wBACzC,GAAG,CAAC;4BACF,IAAI,CAAC,eAAe,EAAE,CAAC;4BACvB,IAAI,GAAG,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC;wBAC7C,CAAC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBAChD,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,YAAY,CAAC;YACtB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAES,iBAAiB,CAAC,EAAU;QACpC,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC;QAE/B,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAE3D,sEAAsE;QACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CACjC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CACtD,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QAED,8EAA8E;QAC9E,MAAM,KAAK,GAAqB,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE1B,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE;YACvC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;SACrD,CAAC,CAAC;QAEH,uCAAuC;QACvC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QAErB,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -72,7 +72,7 @@ describe("TypescriptConverter - arrays (full type defs)", () => {
|
|
|
72
72
|
properties: { name: { type: "string" } },
|
|
73
73
|
required: ["name"],
|
|
74
74
|
},
|
|
75
|
-
}, {}).code.replace(/\s/g, "")).toEqual("export type
|
|
75
|
+
}, {}).code.replace(/\s/g, "")).toEqual("export type MyArrayType={name:string;}; export type MyArray=Array<MyArrayType>;".replace(/\s/g, ""));
|
|
76
76
|
});
|
|
77
77
|
it("should convert an array of objects", () => {
|
|
78
78
|
expect(new TypescriptConverter({
|
|
@@ -95,11 +95,11 @@ describe("TypescriptConverter - arrays (full type defs)", () => {
|
|
|
95
95
|
],
|
|
96
96
|
},
|
|
97
97
|
}, {}).code.replace(/\s/g, "")).toMatch(`
|
|
98
|
-
export type
|
|
98
|
+
export type RootType = { year: number; };
|
|
99
99
|
|
|
100
|
-
export type
|
|
100
|
+
export type RootElement = { title?: string; };
|
|
101
101
|
|
|
102
|
-
export type Root = Array<
|
|
102
|
+
export type Root = Array<RootType | RootElement>;
|
|
103
103
|
`.replace(/\s/g, ""));
|
|
104
104
|
});
|
|
105
105
|
it("should convert a named JSON schema top-level array to Typescript", () => {
|
|
@@ -116,9 +116,9 @@ export type Root = Array<Type | Element>;
|
|
|
116
116
|
required: ["name", "age"],
|
|
117
117
|
},
|
|
118
118
|
}, {}).code.replace(/\s/g, "")).toEqual(`
|
|
119
|
-
export type
|
|
119
|
+
export type Person = {name:string;age:number;};
|
|
120
120
|
|
|
121
|
-
export type People = Array<
|
|
121
|
+
export type People = Array<Person>;`.replace(/\s/g, ""));
|
|
122
122
|
});
|
|
123
123
|
it("should render tuple types as [T1, T2, ...]", () => {
|
|
124
124
|
expect(new TypescriptConverter({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypescriptConverter.arrays.test.js","sourceRoot":"","sources":["../src/TypescriptConverter.arrays.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TypescriptConverter.arrays.test.js","sourceRoot":"","sources":["../src/TypescriptConverter.arrays.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,4 +10,296 @@ describe("TypescriptConverter - unions and intersections", () => {
|
|
|
10
10
|
}).code).toMatch(`string & number`);
|
|
11
11
|
});
|
|
12
12
|
});
|
|
13
|
+
describe("TypescriptConverter - unions and intersections with shared ancestor type merging", () => {
|
|
14
|
+
it("should merge enum unions with same name under shared ancestor", () => {
|
|
15
|
+
expect(new TypescriptConverter({
|
|
16
|
+
type: "object",
|
|
17
|
+
properties: {
|
|
18
|
+
timeLog: {
|
|
19
|
+
type: "array",
|
|
20
|
+
items: {
|
|
21
|
+
anyOf: [
|
|
22
|
+
{
|
|
23
|
+
type: "object",
|
|
24
|
+
properties: {
|
|
25
|
+
action: {
|
|
26
|
+
type: "string",
|
|
27
|
+
enum: ["startshift", "endshift"],
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
type: "object",
|
|
33
|
+
properties: {
|
|
34
|
+
action: {
|
|
35
|
+
type: "string",
|
|
36
|
+
enum: ["startbreak", "endbreak"],
|
|
37
|
+
},
|
|
38
|
+
break: {
|
|
39
|
+
type: "object",
|
|
40
|
+
properties: {
|
|
41
|
+
durationMin: {
|
|
42
|
+
type: "number",
|
|
43
|
+
},
|
|
44
|
+
mandatory: {
|
|
45
|
+
type: "boolean",
|
|
46
|
+
},
|
|
47
|
+
paid: {
|
|
48
|
+
type: "boolean",
|
|
49
|
+
},
|
|
50
|
+
startsAfterShiftHrs: {
|
|
51
|
+
type: "number",
|
|
52
|
+
},
|
|
53
|
+
type: {
|
|
54
|
+
type: "string",
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
}, { enumStyle: "enum" }).code).toMatch(`export enum Action { Startshift = "startshift", Endshift = "endshift", Startbreak = "startbreak", Endbreak = "endbreak" }`);
|
|
65
|
+
});
|
|
66
|
+
it("should merge type unions with shared ancestor", () => {
|
|
67
|
+
expect(new TypescriptConverter({
|
|
68
|
+
type: "object",
|
|
69
|
+
properties: {
|
|
70
|
+
status: {
|
|
71
|
+
anyOf: [
|
|
72
|
+
{
|
|
73
|
+
type: "object",
|
|
74
|
+
properties: {
|
|
75
|
+
color: {
|
|
76
|
+
type: "string",
|
|
77
|
+
},
|
|
78
|
+
timeframe: {
|
|
79
|
+
type: "string",
|
|
80
|
+
enum: ["past"],
|
|
81
|
+
},
|
|
82
|
+
title: {
|
|
83
|
+
type: "string",
|
|
84
|
+
enum: ["completed", "missed"],
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
required: ["timeframe", "title"],
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
type: "object",
|
|
91
|
+
properties: {
|
|
92
|
+
color: {
|
|
93
|
+
type: "string",
|
|
94
|
+
},
|
|
95
|
+
timeframe: {
|
|
96
|
+
type: "string",
|
|
97
|
+
enum: ["current"],
|
|
98
|
+
},
|
|
99
|
+
title: {
|
|
100
|
+
type: "string",
|
|
101
|
+
enum: [
|
|
102
|
+
"ended",
|
|
103
|
+
"inprogress",
|
|
104
|
+
"notended",
|
|
105
|
+
"notstarted",
|
|
106
|
+
"onbreak",
|
|
107
|
+
],
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
required: ["timeframe", "title"],
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: "object",
|
|
114
|
+
properties: {
|
|
115
|
+
color: {
|
|
116
|
+
type: "string",
|
|
117
|
+
},
|
|
118
|
+
timeframe: {
|
|
119
|
+
type: "string",
|
|
120
|
+
enum: ["future"],
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
required: ["timeframe"],
|
|
124
|
+
},
|
|
125
|
+
],
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
}, { enumStyle: "enum" }).code).toContain(`export enum Timeframe { Past = "past", Current = "current", Future = "future" }\nexport enum Title { Completed = "completed", Missed = "missed", Ended = "ended", Inprogress = "inprogress", Notended = "notended", Notstarted = "notstarted", Onbreak = "onbreak" }\nexport type Status = { color?: string; timeframe: Timeframe; title?: Title; };\n\nexport type Root = { status?: Status; };\n`);
|
|
129
|
+
});
|
|
130
|
+
it("should merge enum + literal properties across union options", () => {
|
|
131
|
+
expect(new TypescriptConverter({
|
|
132
|
+
type: "object",
|
|
133
|
+
properties: {
|
|
134
|
+
item: {
|
|
135
|
+
anyOf: [
|
|
136
|
+
{
|
|
137
|
+
type: "object",
|
|
138
|
+
properties: {
|
|
139
|
+
kind: { const: "book" },
|
|
140
|
+
shared: { type: "string" },
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
type: "object",
|
|
145
|
+
properties: {
|
|
146
|
+
kind: {
|
|
147
|
+
type: "string",
|
|
148
|
+
enum: ["dvd", "cd"],
|
|
149
|
+
},
|
|
150
|
+
shared: { type: "string" },
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
],
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
}, { enumStyle: "enum" }).code).toMatch(`export enum Kind { Book = "book", Dvd = "dvd", Cd = "cd" }`);
|
|
157
|
+
});
|
|
158
|
+
it("should preserve union when options have incompatible property types", () => {
|
|
159
|
+
const code = new TypescriptConverter({
|
|
160
|
+
type: "object",
|
|
161
|
+
properties: {
|
|
162
|
+
field: {
|
|
163
|
+
anyOf: [
|
|
164
|
+
{
|
|
165
|
+
type: "object",
|
|
166
|
+
properties: {
|
|
167
|
+
value: { type: "string" },
|
|
168
|
+
name: { type: "string" },
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: "object",
|
|
173
|
+
properties: {
|
|
174
|
+
value: { type: "number" },
|
|
175
|
+
name: { type: "string" },
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
}, { enumStyle: "enum" }).code;
|
|
182
|
+
// Should remain as a union because "value" has incompatible types
|
|
183
|
+
expect(code).toMatch(/Field \| FieldType/);
|
|
184
|
+
});
|
|
185
|
+
it("should preserve discriminated unions as separate types", () => {
|
|
186
|
+
const code = new TypescriptConverter({
|
|
187
|
+
type: "object",
|
|
188
|
+
properties: {
|
|
189
|
+
shape: {
|
|
190
|
+
anyOf: [
|
|
191
|
+
{
|
|
192
|
+
type: "object",
|
|
193
|
+
properties: {
|
|
194
|
+
kind: { const: "circle" },
|
|
195
|
+
radius: { type: "number" },
|
|
196
|
+
},
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
type: "object",
|
|
200
|
+
properties: {
|
|
201
|
+
kind: { const: "square" },
|
|
202
|
+
side: { type: "number" },
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
],
|
|
206
|
+
},
|
|
207
|
+
},
|
|
208
|
+
}, { enumStyle: "enum" }).code;
|
|
209
|
+
// Discriminated union: "kind" has distinct const per option with
|
|
210
|
+
// option-specific properties — should NOT be merged
|
|
211
|
+
expect(code).toMatch(/Shape \| ShapeType/);
|
|
212
|
+
});
|
|
213
|
+
it("should merge with union-style enums (default enumStyle)", () => {
|
|
214
|
+
const code = new TypescriptConverter({
|
|
215
|
+
type: "object",
|
|
216
|
+
properties: {
|
|
217
|
+
event: {
|
|
218
|
+
anyOf: [
|
|
219
|
+
{
|
|
220
|
+
type: "object",
|
|
221
|
+
properties: {
|
|
222
|
+
type: {
|
|
223
|
+
type: "string",
|
|
224
|
+
enum: ["click", "hover"],
|
|
225
|
+
},
|
|
226
|
+
x: { type: "number" },
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
type: "object",
|
|
231
|
+
properties: {
|
|
232
|
+
type: {
|
|
233
|
+
type: "string",
|
|
234
|
+
enum: ["scroll", "resize"],
|
|
235
|
+
},
|
|
236
|
+
x: { type: "number" },
|
|
237
|
+
},
|
|
238
|
+
},
|
|
239
|
+
],
|
|
240
|
+
},
|
|
241
|
+
},
|
|
242
|
+
}).code;
|
|
243
|
+
// With default enumStyle ("union"), merged enums appear as string literal unions
|
|
244
|
+
expect(code).toMatch(`"click" | "hover" | "scroll" | "resize"`);
|
|
245
|
+
});
|
|
246
|
+
it("should handle nested anyOf merging (bottom-up)", () => {
|
|
247
|
+
const code = new TypescriptConverter({
|
|
248
|
+
type: "object",
|
|
249
|
+
properties: {
|
|
250
|
+
outer: {
|
|
251
|
+
type: "array",
|
|
252
|
+
items: {
|
|
253
|
+
anyOf: [
|
|
254
|
+
{
|
|
255
|
+
type: "object",
|
|
256
|
+
properties: {
|
|
257
|
+
tag: {
|
|
258
|
+
type: "string",
|
|
259
|
+
enum: ["a"],
|
|
260
|
+
},
|
|
261
|
+
inner: {
|
|
262
|
+
anyOf: [
|
|
263
|
+
{
|
|
264
|
+
type: "object",
|
|
265
|
+
properties: {
|
|
266
|
+
level: {
|
|
267
|
+
type: "string",
|
|
268
|
+
enum: ["low"],
|
|
269
|
+
},
|
|
270
|
+
},
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
type: "object",
|
|
274
|
+
properties: {
|
|
275
|
+
level: {
|
|
276
|
+
type: "string",
|
|
277
|
+
enum: ["high"],
|
|
278
|
+
},
|
|
279
|
+
},
|
|
280
|
+
},
|
|
281
|
+
],
|
|
282
|
+
},
|
|
283
|
+
},
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
type: "object",
|
|
287
|
+
properties: {
|
|
288
|
+
tag: {
|
|
289
|
+
type: "string",
|
|
290
|
+
enum: ["b"],
|
|
291
|
+
},
|
|
292
|
+
},
|
|
293
|
+
},
|
|
294
|
+
],
|
|
295
|
+
},
|
|
296
|
+
},
|
|
297
|
+
},
|
|
298
|
+
}, { enumStyle: "enum" }).code;
|
|
299
|
+
// Inner anyOf should be merged first (bottom-up), producing a merged Level enum
|
|
300
|
+
expect(code).toMatch(`export enum Level { Low = "low", High = "high" }`);
|
|
301
|
+
// Outer anyOf should also be merged (tag is shared)
|
|
302
|
+
expect(code).toMatch(`export enum Tag { A = "a", B = "b" }`);
|
|
303
|
+
});
|
|
304
|
+
});
|
|
13
305
|
//# sourceMappingURL=TypescriptConverter.composites.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypescriptConverter.composites.test.js","sourceRoot":"","sources":["../src/TypescriptConverter.composites.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,QAAQ,CAAC,gDAAgD,EAAE,GAAG,EAAE;IAC9D,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,CACJ,IAAI,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAC7D,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CACJ,IAAI,mBAAmB,CAAC;YACtB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SAChD,CAAC,CAAC,IAAI,CACR,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"TypescriptConverter.composites.test.js","sourceRoot":"","sources":["../src/TypescriptConverter.composites.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,20 +46,72 @@ export declare class TypescriptConverter extends TypescriptBaseConverter impleme
|
|
|
46
46
|
* for deduplication across the schema.
|
|
47
47
|
*/
|
|
48
48
|
private enumDeclarations;
|
|
49
|
-
/** Tracks all enum declaration names for collision resolution */
|
|
50
|
-
private usedEnumNames;
|
|
51
49
|
readonly code: string;
|
|
50
|
+
private mergeCounter;
|
|
52
51
|
constructor(schema: JSONSchema7Definition, opts?: TypescriptConverterOpts);
|
|
53
52
|
protected getRefTypeNamingConfig(): RefTypeNamingConfig;
|
|
53
|
+
/**
|
|
54
|
+
* Pre-scans the IR tree to discover and register all enum declarations
|
|
55
|
+
* before type generation begins. Traversal order mirrors generateType's
|
|
56
|
+
* DFS order so that canonical-key deduplication picks the same "first"
|
|
57
|
+
* path that runtime generation would encounter.
|
|
58
|
+
*/
|
|
59
|
+
private preRegisterEnumNames;
|
|
54
60
|
protected generateEnumType(ir: IRNode): string;
|
|
55
61
|
protected generateLiteralType(ir: IRNode): string;
|
|
56
62
|
/**
|
|
57
63
|
* Returns (or creates) a deduplicated enum declaration for the given string values.
|
|
58
64
|
* Same set of values at different paths reuses the same enum.
|
|
65
|
+
*
|
|
66
|
+
* Name derivation uses PathUtils to strip array indices, then progressively
|
|
67
|
+
* includes parent path segments for collision resolution (e.g. "Type" →
|
|
68
|
+
* "ArgsType" → "DataArgsType") before falling back to a numeric suffix.
|
|
59
69
|
*/
|
|
60
70
|
private getOrCreateEnumDeclaration;
|
|
71
|
+
/**
|
|
72
|
+
* Derives a unique, valid TypeScript enum name from a dot-notation path.
|
|
73
|
+
* Strips array indices via PathUtils, then tries the last segment ("Type"),
|
|
74
|
+
* escalates to include parent segments on collision ("ArgsType", "DataArgsType"),
|
|
75
|
+
* and falls back to a numeric suffix as a last resort.
|
|
76
|
+
*/
|
|
77
|
+
private deriveEnumName;
|
|
78
|
+
/**
|
|
79
|
+
* Returns the given name if available, otherwise appends incrementing
|
|
80
|
+
* counters (e.g. "Value2", "Value3") until a unique name is found.
|
|
81
|
+
*/
|
|
82
|
+
private findAvailableName;
|
|
61
83
|
/**
|
|
62
84
|
* Converts a string value to a valid PascalCase enum member name.
|
|
63
85
|
*/
|
|
64
86
|
private toEnumMemberName;
|
|
87
|
+
/**
|
|
88
|
+
* Recursively walks the IR tree (bottom-up) and merges anyOf unions
|
|
89
|
+
* whose options are all objects with compatible property types.
|
|
90
|
+
* Merged enums collect values from all options; properties missing
|
|
91
|
+
* from some options become optional in the merged type.
|
|
92
|
+
*/
|
|
93
|
+
private mergeCompatibleUnions;
|
|
94
|
+
/**
|
|
95
|
+
* Attempts to merge all options of an anyOf union into a single object type.
|
|
96
|
+
* Returns the merged IRNode, or null if the options are not compatible.
|
|
97
|
+
*/
|
|
98
|
+
private tryMergeObjectUnion;
|
|
99
|
+
/**
|
|
100
|
+
* Tries to merge multiple instances of the same property across union options.
|
|
101
|
+
* Returns the merged IRNode, or null if incompatible.
|
|
102
|
+
*/
|
|
103
|
+
private tryMergeProperty;
|
|
104
|
+
/**
|
|
105
|
+
* Detects discriminated union patterns where merging would lose
|
|
106
|
+
* semantic precision. A discriminated union requires:
|
|
107
|
+
* 1. A shared property with distinct const/single-value-enum per option
|
|
108
|
+
* (the "discriminator")
|
|
109
|
+
* 2. Every option has at least one property exclusive to only that option
|
|
110
|
+
* (variant-specific fields tied to the discriminator value)
|
|
111
|
+
*
|
|
112
|
+
* This distinguishes true tagged unions (circle+radius vs square+side)
|
|
113
|
+
* from schemas where single-value enums represent different values of
|
|
114
|
+
* the same field that should be merged (past/current/future → Timeframe).
|
|
115
|
+
*/
|
|
116
|
+
private isDiscriminatedUnion;
|
|
65
117
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { TypescriptBaseConverter, } from "./TypescriptBaseConverter.js";
|
|
2
2
|
import { JSONSchemaConverter } from "./JSONSchemaConverter.js";
|
|
3
3
|
import { toPascalCase } from "./utils/to-pascal-case.js";
|
|
4
|
+
import { PathUtils } from "./utils/path-utils.js";
|
|
4
5
|
/**
|
|
5
6
|
* A TypeScript language converter plugin.
|
|
6
7
|
*/
|
|
@@ -13,21 +14,33 @@ export class TypescriptConverter extends TypescriptBaseConverter {
|
|
|
13
14
|
* for deduplication across the schema.
|
|
14
15
|
*/
|
|
15
16
|
this.enumDeclarations = new Map();
|
|
16
|
-
|
|
17
|
-
this.usedEnumNames = new Set();
|
|
17
|
+
this.mergeCounter = 0;
|
|
18
18
|
this.opts = opts;
|
|
19
19
|
this.inlineTypes = opts?.inlineTypes ?? false;
|
|
20
20
|
this.enumStyle = opts?.enumStyle ?? "union";
|
|
21
21
|
this.schemaConverter = new JSONSchemaConverter(schema);
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
// Merge compatible anyOf unions into single object types before
|
|
23
|
+
// enum pre-registration and type generation, so the downstream
|
|
24
|
+
// pipeline sees merged enums and objects rather than separate variants.
|
|
25
|
+
const irNode = this.mergeCompatibleUnions(this.schemaConverter.irNode);
|
|
26
|
+
if (!irNode.name) {
|
|
27
|
+
irNode.name = "Root";
|
|
24
28
|
}
|
|
25
|
-
|
|
29
|
+
// Reserve the root type name so enums/ref types don't collide with it
|
|
30
|
+
this.rootName = irNode.name;
|
|
31
|
+
this.usedDeclarationNames.add(this.rootName);
|
|
32
|
+
// Pre-register enum names before type generation so that enum names
|
|
33
|
+
// (derived from meaningful property names) take precedence over
|
|
34
|
+
// synthetic ref type names (derived from postfix fallbacks).
|
|
35
|
+
if (this.enumStyle === "enum" && !this.inlineTypes) {
|
|
36
|
+
this.preRegisterEnumNames(irNode);
|
|
37
|
+
}
|
|
38
|
+
const code = this.generateType(irNode, {
|
|
26
39
|
getReferencedType: this.inlineTypes
|
|
27
40
|
? () => undefined
|
|
28
41
|
: this.getReferencedType.bind(this),
|
|
29
42
|
});
|
|
30
|
-
const rootName =
|
|
43
|
+
const rootName = irNode.name;
|
|
31
44
|
if (!this.inlineTypes) {
|
|
32
45
|
const enumCode = [...this.enumDeclarations.values()]
|
|
33
46
|
.map(({ name, members }) => {
|
|
@@ -62,6 +75,42 @@ export class TypescriptConverter extends TypescriptBaseConverter {
|
|
|
62
75
|
}),
|
|
63
76
|
};
|
|
64
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Pre-scans the IR tree to discover and register all enum declarations
|
|
80
|
+
* before type generation begins. Traversal order mirrors generateType's
|
|
81
|
+
* DFS order so that canonical-key deduplication picks the same "first"
|
|
82
|
+
* path that runtime generation would encounter.
|
|
83
|
+
*/
|
|
84
|
+
preRegisterEnumNames(ir) {
|
|
85
|
+
if (ir.type === "enum" &&
|
|
86
|
+
ir.values?.every((v) => typeof v === "string")) {
|
|
87
|
+
this.getOrCreateEnumDeclaration(ir.values, ir.path);
|
|
88
|
+
}
|
|
89
|
+
else if (ir.type === "literal" &&
|
|
90
|
+
typeof ir.constraints?.value === "string") {
|
|
91
|
+
this.getOrCreateEnumDeclaration([ir.constraints.value], ir.path);
|
|
92
|
+
}
|
|
93
|
+
// Recurse in the same order as generateType
|
|
94
|
+
if (ir.properties) {
|
|
95
|
+
for (const prop of Object.values(ir.properties)) {
|
|
96
|
+
this.preRegisterEnumNames(prop);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (ir.items)
|
|
100
|
+
this.preRegisterEnumNames(ir.items);
|
|
101
|
+
if (ir.tupleItems) {
|
|
102
|
+
for (const item of ir.tupleItems)
|
|
103
|
+
this.preRegisterEnumNames(item);
|
|
104
|
+
}
|
|
105
|
+
if (ir.options) {
|
|
106
|
+
for (const opt of ir.options)
|
|
107
|
+
this.preRegisterEnumNames(opt);
|
|
108
|
+
}
|
|
109
|
+
if (ir.additionalProperties &&
|
|
110
|
+
typeof ir.additionalProperties !== "boolean") {
|
|
111
|
+
this.preRegisterEnumNames(ir.additionalProperties);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
65
114
|
generateEnumType(ir) {
|
|
66
115
|
if (this.enumStyle === "enum" &&
|
|
67
116
|
!this.inlineTypes &&
|
|
@@ -81,6 +130,10 @@ export class TypescriptConverter extends TypescriptBaseConverter {
|
|
|
81
130
|
/**
|
|
82
131
|
* Returns (or creates) a deduplicated enum declaration for the given string values.
|
|
83
132
|
* Same set of values at different paths reuses the same enum.
|
|
133
|
+
*
|
|
134
|
+
* Name derivation uses PathUtils to strip array indices, then progressively
|
|
135
|
+
* includes parent path segments for collision resolution (e.g. "Type" →
|
|
136
|
+
* "ArgsType" → "DataArgsType") before falling back to a numeric suffix.
|
|
84
137
|
*/
|
|
85
138
|
getOrCreateEnumDeclaration(values, path) {
|
|
86
139
|
const canonicalKey = JSON.stringify([...values].sort());
|
|
@@ -88,17 +141,8 @@ export class TypescriptConverter extends TypescriptBaseConverter {
|
|
|
88
141
|
if (existing) {
|
|
89
142
|
return existing.name;
|
|
90
143
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
let baseName = toPascalCase(lastSegment);
|
|
94
|
-
// Resolve naming collisions with counter suffix
|
|
95
|
-
let enumName = baseName;
|
|
96
|
-
let counter = 2;
|
|
97
|
-
while (this.usedEnumNames.has(enumName)) {
|
|
98
|
-
enumName = baseName + counter;
|
|
99
|
-
counter++;
|
|
100
|
-
}
|
|
101
|
-
this.usedEnumNames.add(enumName);
|
|
144
|
+
const enumName = this.deriveEnumName(path);
|
|
145
|
+
this.usedDeclarationNames.add(enumName);
|
|
102
146
|
// Build members with collision resolution
|
|
103
147
|
const usedMemberNames = new Set();
|
|
104
148
|
const members = values.map((value) => {
|
|
@@ -115,6 +159,46 @@ export class TypescriptConverter extends TypescriptBaseConverter {
|
|
|
115
159
|
this.enumDeclarations.set(canonicalKey, { name: enumName, members });
|
|
116
160
|
return enumName;
|
|
117
161
|
}
|
|
162
|
+
/**
|
|
163
|
+
* Derives a unique, valid TypeScript enum name from a dot-notation path.
|
|
164
|
+
* Strips array indices via PathUtils, then tries the last segment ("Type"),
|
|
165
|
+
* escalates to include parent segments on collision ("ArgsType", "DataArgsType"),
|
|
166
|
+
* and falls back to a numeric suffix as a last resort.
|
|
167
|
+
*/
|
|
168
|
+
deriveEnumName(path) {
|
|
169
|
+
const segments = PathUtils.parsePath(path);
|
|
170
|
+
if (segments.length === 0) {
|
|
171
|
+
return this.findAvailableName("Value");
|
|
172
|
+
}
|
|
173
|
+
// Try progressively more parent path segments
|
|
174
|
+
for (let count = 1; count <= segments.length; count++) {
|
|
175
|
+
const proposed = segments
|
|
176
|
+
.slice(-count)
|
|
177
|
+
.map(toPascalCase)
|
|
178
|
+
.join("");
|
|
179
|
+
if (proposed &&
|
|
180
|
+
this.isValidIdentifier(proposed) &&
|
|
181
|
+
!this.usedDeclarationNames.has(proposed)) {
|
|
182
|
+
return proposed;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// All segment combinations exhausted or collided — use counter fallback
|
|
186
|
+
const fullName = segments.map(toPascalCase).join("") || "Value";
|
|
187
|
+
return this.findAvailableName(this.isValidIdentifier(fullName) ? fullName : "Value");
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Returns the given name if available, otherwise appends incrementing
|
|
191
|
+
* counters (e.g. "Value2", "Value3") until a unique name is found.
|
|
192
|
+
*/
|
|
193
|
+
findAvailableName(baseName) {
|
|
194
|
+
if (!this.usedDeclarationNames.has(baseName))
|
|
195
|
+
return baseName;
|
|
196
|
+
let counter = 2;
|
|
197
|
+
while (this.usedDeclarationNames.has(baseName + counter)) {
|
|
198
|
+
counter++;
|
|
199
|
+
}
|
|
200
|
+
return baseName + counter;
|
|
201
|
+
}
|
|
118
202
|
/**
|
|
119
203
|
* Converts a string value to a valid PascalCase enum member name.
|
|
120
204
|
*/
|
|
@@ -127,5 +211,243 @@ export class TypescriptConverter extends TypescriptBaseConverter {
|
|
|
127
211
|
name = "Value";
|
|
128
212
|
return name;
|
|
129
213
|
}
|
|
214
|
+
/**
|
|
215
|
+
* Recursively walks the IR tree (bottom-up) and merges anyOf unions
|
|
216
|
+
* whose options are all objects with compatible property types.
|
|
217
|
+
* Merged enums collect values from all options; properties missing
|
|
218
|
+
* from some options become optional in the merged type.
|
|
219
|
+
*/
|
|
220
|
+
mergeCompatibleUnions(ir) {
|
|
221
|
+
// Recurse into children first (bottom-up)
|
|
222
|
+
if (ir.properties) {
|
|
223
|
+
for (const key of Object.keys(ir.properties)) {
|
|
224
|
+
ir.properties[key] = this.mergeCompatibleUnions(ir.properties[key]);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
if (ir.items) {
|
|
228
|
+
ir.items = this.mergeCompatibleUnions(ir.items);
|
|
229
|
+
}
|
|
230
|
+
if (ir.tupleItems) {
|
|
231
|
+
ir.tupleItems = ir.tupleItems.map((t) => this.mergeCompatibleUnions(t));
|
|
232
|
+
}
|
|
233
|
+
if (ir.options) {
|
|
234
|
+
ir.options = ir.options.map((o) => this.mergeCompatibleUnions(o));
|
|
235
|
+
}
|
|
236
|
+
if (ir.additionalProperties &&
|
|
237
|
+
typeof ir.additionalProperties !== "boolean") {
|
|
238
|
+
ir.additionalProperties = this.mergeCompatibleUnions(ir.additionalProperties);
|
|
239
|
+
}
|
|
240
|
+
// Check if this node is a mergeable anyOf union
|
|
241
|
+
if (ir.type === "union" &&
|
|
242
|
+
ir.constraints?.combinator === "anyOf" &&
|
|
243
|
+
ir.options &&
|
|
244
|
+
ir.options.length > 1) {
|
|
245
|
+
const merged = this.tryMergeObjectUnion(ir);
|
|
246
|
+
if (merged)
|
|
247
|
+
return merged;
|
|
248
|
+
}
|
|
249
|
+
return ir;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Attempts to merge all options of an anyOf union into a single object type.
|
|
253
|
+
* Returns the merged IRNode, or null if the options are not compatible.
|
|
254
|
+
*/
|
|
255
|
+
tryMergeObjectUnion(ir) {
|
|
256
|
+
const options = ir.options;
|
|
257
|
+
// All options must be objects
|
|
258
|
+
if (!options.every((opt) => opt.type === "object")) {
|
|
259
|
+
return null;
|
|
260
|
+
}
|
|
261
|
+
// Bail if any option has patternProperties
|
|
262
|
+
if (options.some((opt) => opt.patternProperties)) {
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
// Bail if options have conflicting additionalProperties values.
|
|
266
|
+
// Identical values (all false, all true, all same schema) are fine.
|
|
267
|
+
const apValues = options.map((opt) => opt.additionalProperties);
|
|
268
|
+
const hasAp = apValues.some((v) => v !== undefined);
|
|
269
|
+
if (hasAp) {
|
|
270
|
+
const serialized = apValues.map((v) => JSON.stringify(v ?? null));
|
|
271
|
+
if (!serialized.every((s) => s === serialized[0])) {
|
|
272
|
+
return null;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
// Collect all property names in first-seen order across options
|
|
276
|
+
const allPropNames = [];
|
|
277
|
+
const seenProps = new Set();
|
|
278
|
+
for (const opt of options) {
|
|
279
|
+
if (opt.properties) {
|
|
280
|
+
for (const key of Object.keys(opt.properties)) {
|
|
281
|
+
if (!seenProps.has(key)) {
|
|
282
|
+
seenProps.add(key);
|
|
283
|
+
allPropNames.push(key);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
if (allPropNames.length === 0) {
|
|
289
|
+
return null;
|
|
290
|
+
}
|
|
291
|
+
// Only merge when options share at least one property name —
|
|
292
|
+
// disjoint objects should remain as a union to preserve semantics.
|
|
293
|
+
const sharedPropNames = allPropNames.filter((propName) => options.every((opt) => opt.properties?.[propName] !== undefined));
|
|
294
|
+
if (sharedPropNames.length === 0) {
|
|
295
|
+
return null;
|
|
296
|
+
}
|
|
297
|
+
// Detect discriminated unions: if a shared property has different
|
|
298
|
+
// const/single-value-enum values across options AND there are
|
|
299
|
+
// option-specific (non-shared) properties, this is a tagged union
|
|
300
|
+
// where merging would lose the correlation between discriminator
|
|
301
|
+
// and variant-specific fields.
|
|
302
|
+
if (this.isDiscriminatedUnion(options, sharedPropNames, allPropNames)) {
|
|
303
|
+
return null;
|
|
304
|
+
}
|
|
305
|
+
// Try to merge each property across all options
|
|
306
|
+
const mergedProperties = {};
|
|
307
|
+
for (const propName of allPropNames) {
|
|
308
|
+
const instances = [];
|
|
309
|
+
for (const opt of options) {
|
|
310
|
+
if (opt.properties?.[propName]) {
|
|
311
|
+
instances.push(opt.properties[propName]);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
const merged = this.tryMergeProperty(instances);
|
|
315
|
+
if (!merged) {
|
|
316
|
+
return null; // Incompatible — bail out, keep as union
|
|
317
|
+
}
|
|
318
|
+
// Required only if property exists in ALL options AND required in all
|
|
319
|
+
const existsInAll = options.every((opt) => opt.properties?.[propName] !== undefined);
|
|
320
|
+
const requiredInAll = instances.every((inst) => inst.required === true);
|
|
321
|
+
merged.required = existsInAll && requiredInAll;
|
|
322
|
+
mergedProperties[propName] = merged;
|
|
323
|
+
}
|
|
324
|
+
// Derive a name from the union's path
|
|
325
|
+
const pathSegments = ir.path
|
|
326
|
+
.split(".")
|
|
327
|
+
.filter((x) => !/^\d+$/.test(x));
|
|
328
|
+
const name = pathSegments[pathSegments.length - 1] || "Merged";
|
|
329
|
+
const merged = {
|
|
330
|
+
type: "object",
|
|
331
|
+
properties: mergedProperties,
|
|
332
|
+
path: ir.path,
|
|
333
|
+
name,
|
|
334
|
+
signature: `merged:${++this.mergeCounter}`,
|
|
335
|
+
};
|
|
336
|
+
// Propagate additionalProperties when all options agree on the same value
|
|
337
|
+
if (hasAp) {
|
|
338
|
+
merged.additionalProperties = options[0].additionalProperties;
|
|
339
|
+
}
|
|
340
|
+
return merged;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Tries to merge multiple instances of the same property across union options.
|
|
344
|
+
* Returns the merged IRNode, or null if incompatible.
|
|
345
|
+
*/
|
|
346
|
+
tryMergeProperty(instances) {
|
|
347
|
+
if (instances.length === 0)
|
|
348
|
+
return null;
|
|
349
|
+
if (instances.length === 1)
|
|
350
|
+
return { ...instances[0] };
|
|
351
|
+
const isStringEnum = (ir) => ir.type === "enum" &&
|
|
352
|
+
ir.values?.every((v) => typeof v === "string");
|
|
353
|
+
const isStringLiteral = (ir) => ir.type === "literal" && typeof ir.constraints?.value === "string";
|
|
354
|
+
// Merge string enums and/or string literals into a single enum
|
|
355
|
+
if (instances.every((inst) => isStringEnum(inst) || isStringLiteral(inst))) {
|
|
356
|
+
const seen = new Set();
|
|
357
|
+
const mergedValues = [];
|
|
358
|
+
for (const inst of instances) {
|
|
359
|
+
const values = isStringEnum(inst)
|
|
360
|
+
? inst.values
|
|
361
|
+
: [inst.constraints.value];
|
|
362
|
+
for (const v of values) {
|
|
363
|
+
if (!seen.has(v)) {
|
|
364
|
+
seen.add(v);
|
|
365
|
+
mergedValues.push(v);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
return {
|
|
370
|
+
type: "enum",
|
|
371
|
+
values: mergedValues,
|
|
372
|
+
path: instances[0].path,
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
// Same primitive type across all instances
|
|
376
|
+
const firstType = instances[0].type;
|
|
377
|
+
if (instances.every((inst) => inst.type === firstType) &&
|
|
378
|
+
["string", "number", "integer", "boolean", "null"].includes(firstType)) {
|
|
379
|
+
return { ...instances[0] };
|
|
380
|
+
}
|
|
381
|
+
// Same object signature across all instances
|
|
382
|
+
if (instances.every((inst) => inst.type === "object" && inst.signature) &&
|
|
383
|
+
instances.every((inst) => inst.signature === instances[0].signature)) {
|
|
384
|
+
return { ...instances[0] };
|
|
385
|
+
}
|
|
386
|
+
// Incompatible types
|
|
387
|
+
return null;
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Detects discriminated union patterns where merging would lose
|
|
391
|
+
* semantic precision. A discriminated union requires:
|
|
392
|
+
* 1. A shared property with distinct const/single-value-enum per option
|
|
393
|
+
* (the "discriminator")
|
|
394
|
+
* 2. Every option has at least one property exclusive to only that option
|
|
395
|
+
* (variant-specific fields tied to the discriminator value)
|
|
396
|
+
*
|
|
397
|
+
* This distinguishes true tagged unions (circle+radius vs square+side)
|
|
398
|
+
* from schemas where single-value enums represent different values of
|
|
399
|
+
* the same field that should be merged (past/current/future → Timeframe).
|
|
400
|
+
*/
|
|
401
|
+
isDiscriminatedUnion(options, sharedPropNames, allPropNames) {
|
|
402
|
+
const hasOptionSpecificProps = allPropNames.length > sharedPropNames.length;
|
|
403
|
+
if (!hasOptionSpecificProps) {
|
|
404
|
+
return false;
|
|
405
|
+
}
|
|
406
|
+
// Check if any shared property acts as a discriminator:
|
|
407
|
+
// each option has a distinct const or single-value enum for that property
|
|
408
|
+
let hasDiscriminator = false;
|
|
409
|
+
for (const propName of sharedPropNames) {
|
|
410
|
+
const perOptionValues = options.map((opt) => {
|
|
411
|
+
const prop = opt.properties?.[propName];
|
|
412
|
+
if (!prop)
|
|
413
|
+
return undefined;
|
|
414
|
+
if (prop.type === "literal" &&
|
|
415
|
+
typeof prop.constraints?.value === "string") {
|
|
416
|
+
return prop.constraints.value;
|
|
417
|
+
}
|
|
418
|
+
if (prop.type === "enum" &&
|
|
419
|
+
prop.values?.length === 1 &&
|
|
420
|
+
typeof prop.values[0] === "string") {
|
|
421
|
+
return prop.values[0];
|
|
422
|
+
}
|
|
423
|
+
return undefined;
|
|
424
|
+
});
|
|
425
|
+
if (perOptionValues.every((v) => v !== undefined)) {
|
|
426
|
+
const uniqueValues = new Set(perOptionValues);
|
|
427
|
+
if (uniqueValues.size === options.length) {
|
|
428
|
+
hasDiscriminator = true;
|
|
429
|
+
break;
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
if (!hasDiscriminator) {
|
|
434
|
+
return false;
|
|
435
|
+
}
|
|
436
|
+
// For a true discriminated union, every option must have at least one
|
|
437
|
+
// property that is exclusive to ONLY that option (no other option has it).
|
|
438
|
+
// This distinguishes { kind:"circle", radius } | { kind:"square", side }
|
|
439
|
+
// from { timeframe:"past", title } | { timeframe:"current", title } | { timeframe:"future" }
|
|
440
|
+
const sharedSet = new Set(sharedPropNames);
|
|
441
|
+
return options.every((opt) => {
|
|
442
|
+
const optProps = Object.keys(opt.properties ?? {});
|
|
443
|
+
return optProps.some((propName) => {
|
|
444
|
+
if (sharedSet.has(propName))
|
|
445
|
+
return false;
|
|
446
|
+
// Check if this prop appears in any other option
|
|
447
|
+
return !options.some((other) => other !== opt &&
|
|
448
|
+
other.properties?.[propName] !== undefined);
|
|
449
|
+
});
|
|
450
|
+
});
|
|
451
|
+
}
|
|
130
452
|
}
|
|
131
453
|
//# sourceMappingURL=TypescriptConverter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypescriptConverter.js","sourceRoot":"","sources":["../src/TypescriptConverter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TypescriptConverter.js","sourceRoot":"","sources":["../src/TypescriptConverter.ts"],"names":[],"mappings":"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"}
|
|
@@ -283,6 +283,77 @@ describe("enumStyle", () => {
|
|
|
283
283
|
},
|
|
284
284
|
required: ["status"],
|
|
285
285
|
};
|
|
286
|
+
it('should not do anything funny with array value enums', () => {
|
|
287
|
+
const result = new TypescriptConverter({
|
|
288
|
+
title: "Order",
|
|
289
|
+
type: "array",
|
|
290
|
+
items: {
|
|
291
|
+
type: "object",
|
|
292
|
+
properties: {
|
|
293
|
+
data: {
|
|
294
|
+
type: "object",
|
|
295
|
+
properties: {
|
|
296
|
+
typeFilter: {
|
|
297
|
+
type: "array",
|
|
298
|
+
items: {
|
|
299
|
+
type: "string",
|
|
300
|
+
enum: ["item", "person", "vehicle"],
|
|
301
|
+
},
|
|
302
|
+
},
|
|
303
|
+
},
|
|
304
|
+
},
|
|
305
|
+
},
|
|
306
|
+
},
|
|
307
|
+
}, { enumStyle: "enum" }).code;
|
|
308
|
+
expect(norm(result)).toMatch(norm(`
|
|
309
|
+
export enum TypeFilter { Item = "item", Person = "person", Vehicle = "vehicle" }
|
|
310
|
+
export type OrderType = { data?: Data; };
|
|
311
|
+
export type Data = { typeFilter?: Array<TypeFilter>; };
|
|
312
|
+
|
|
313
|
+
export type Order = Array<OrderType>;
|
|
314
|
+
|
|
315
|
+
`));
|
|
316
|
+
});
|
|
317
|
+
it('should be aware of conflicting names with array value enums', () => {
|
|
318
|
+
const result = new TypescriptConverter({
|
|
319
|
+
title: "Order",
|
|
320
|
+
type: "array",
|
|
321
|
+
items: {
|
|
322
|
+
type: "object",
|
|
323
|
+
properties: {
|
|
324
|
+
args: {
|
|
325
|
+
type: "object",
|
|
326
|
+
properties: {
|
|
327
|
+
type: {
|
|
328
|
+
type: "string",
|
|
329
|
+
enum: ["item", "person", "vehicle"],
|
|
330
|
+
},
|
|
331
|
+
},
|
|
332
|
+
},
|
|
333
|
+
data: {
|
|
334
|
+
type: "object",
|
|
335
|
+
properties: {
|
|
336
|
+
typeFilter: {
|
|
337
|
+
type: "array",
|
|
338
|
+
items: {
|
|
339
|
+
type: "string",
|
|
340
|
+
enum: ["item", "person", "vehicle"],
|
|
341
|
+
},
|
|
342
|
+
},
|
|
343
|
+
},
|
|
344
|
+
},
|
|
345
|
+
},
|
|
346
|
+
},
|
|
347
|
+
}, { enumStyle: "enum" }).code;
|
|
348
|
+
expect(norm(result)).toMatch(norm(`
|
|
349
|
+
export enum Type { Item = "item", Person = "person", Vehicle = "vehicle" }
|
|
350
|
+
export type OrderType = { args?: Args; data?: Data; };
|
|
351
|
+
export type Args = { type?: Type; };
|
|
352
|
+
export type Data = { typeFilter?: Array<Type>; };
|
|
353
|
+
|
|
354
|
+
export type Order = Array<OrderType>;
|
|
355
|
+
`));
|
|
356
|
+
});
|
|
286
357
|
it("default ('union') → union type", () => {
|
|
287
358
|
const result = new TypescriptConverter(schemaWithEnum).code;
|
|
288
359
|
expect(result).toContain('"active" | "inactive" | "pending"');
|
|
@@ -387,7 +458,7 @@ describe("enumStyle", () => {
|
|
|
387
458
|
enumStyle: "enum",
|
|
388
459
|
}).code;
|
|
389
460
|
expect(result).toContain("export enum Status");
|
|
390
|
-
expect(result).toContain("export enum
|
|
461
|
+
expect(result).toContain("export enum SecondStatus");
|
|
391
462
|
});
|
|
392
463
|
});
|
|
393
464
|
describe("combined options", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypescriptConverter.options.test.js","sourceRoot":"","sources":["../src/TypescriptConverter.options.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TypescriptConverter.options.test.js","sourceRoot":"","sources":["../src/TypescriptConverter.options.test.ts"],"names":[],"mappings":"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"}
|