Skip to content

Commit 08ec990

Browse files
Adrian Wędzelbcherny
Adrian Wędzel
authored andcommitted
fix: generating allOf, anyOf, oneOf named enums (#271)
* fix: generating allOf, anyOf, oneOf named enums * fix: update snapshot - make allOfNamedEnum required
1 parent e93edd2 commit 08ec990

File tree

4 files changed

+85
-1
lines changed

4 files changed

+85
-1
lines changed

src/generator.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ function declareEnums(ast: AST, options: Options, processed = new Set<AST>()): s
4343
break
4444
case 'ARRAY':
4545
return declareEnums(ast.params, options, processed)
46+
case 'UNION':
47+
case 'INTERSECTION':
48+
return ast.params.reduce((prev, ast) => prev + declareEnums(ast, options, processed), '')
4649
case 'TUPLE':
4750
type = ast.params.reduce((prev, ast) => prev + declareEnums(ast, options, processed), '')
4851
if (ast.spreadParam) {

test/__snapshots__/test/test.ts.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1272,6 +1272,9 @@ Generated by [AVA](https://ava.li).
12721272
impliedHeterogeneousEnum?: -20.1 | null | "foo" | false;␊
12731273
namedIntegerEnumTitle: NamedInteger;␊
12741274
impliedNamedIntegerEnumTitle: ImpliedNamedInteger;␊
1275+
oneOfNamedEnum: IntegerOneOfNamedEnum | StringOneOfNamedEnum;␊
1276+
anyOfNamedEnum: IntegerAnyOfNamedEnum | StringAnyOfNamedEnum;␊
1277+
allOfNamedEnum: IntegerAllOfNamedEnum & StringAllOfNamedEnum;␊
12751278
}␊
12761279
12771280
export const enum NamedIntegerEnum {␊
@@ -1294,6 +1297,36 @@ Generated by [AVA](https://ava.li).
12941297
Five = 5,␊
12951298
Six = 6␊
12961299
}␊
1300+
export const enum IntegerOneOfNamedEnum {␊
1301+
One = 1,␊
1302+
Two = 2,␊
1303+
Three = 3␊
1304+
}␊
1305+
export const enum StringOneOfNamedEnum {␊
1306+
Four = "four",␊
1307+
Five = "five",␊
1308+
Six = "six"␊
1309+
}␊
1310+
export const enum IntegerAnyOfNamedEnum {␊
1311+
One = 1,␊
1312+
Two = 2,␊
1313+
Three = 3␊
1314+
}␊
1315+
export const enum StringAnyOfNamedEnum {␊
1316+
Four = "four",␊
1317+
Five = "five",␊
1318+
Six = "six"␊
1319+
}␊
1320+
export const enum IntegerAllOfNamedEnum {␊
1321+
One = 1,␊
1322+
Two = 2,␊
1323+
Three = 3␊
1324+
}␊
1325+
export const enum StringAllOfNamedEnum {␊
1326+
Four = "four",␊
1327+
Five = "five",␊
1328+
Six = "six"␊
1329+
}␊
12971330
`
12981331

12991332
## extends.1a.js

test/__snapshots__/test/test.ts.snap

104 Bytes
Binary file not shown.

test/e2e/enumConst.ts

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,58 @@ export const input = {
4949
enum: [4, 5, 6],
5050
title: "ImpliedNamedInteger",
5151
tsEnumNames: ['Four', 'Five', 'Six']
52+
},
53+
oneOfNamedEnum: {
54+
oneOf: [
55+
{
56+
type: "integer",
57+
enum: [1, 2, 3],
58+
title: "IntegerOneOfNamedEnum",
59+
tsEnumNames: ["One", "Two", "Three"]
60+
},
61+
{
62+
type: "string",
63+
enum: ["four", "five", "six"],
64+
title: "StringOneOfNamedEnum",
65+
tsEnumNames: ["Four", "Five", "Six"]
66+
}
67+
]
68+
},
69+
anyOfNamedEnum: {
70+
anyOf: [
71+
{
72+
type: "integer",
73+
enum: [1, 2, 3],
74+
title: "IntegerAnyOfNamedEnum",
75+
tsEnumNames: ["One", "Two", "Three"]
76+
},
77+
{
78+
type: "string",
79+
enum: ["four", "five", "six"],
80+
title: "StringAnyOfNamedEnum",
81+
tsEnumNames: ["Four", "Five", "Six"]
82+
}
83+
]
84+
},
85+
allOfNamedEnum: {
86+
allOf: [
87+
{
88+
type: "integer",
89+
enum: [1, 2, 3],
90+
title: "IntegerAllOfNamedEnum",
91+
tsEnumNames: ["One", "Two", "Three"]
92+
},
93+
{
94+
type: "string",
95+
enum: ["four", "five", "six"],
96+
title: "StringAllOfNamedEnum",
97+
tsEnumNames: ["Four", "Five", "Six"]
98+
}
99+
]
52100
}
53101
},
54102
required: ['stringEnum', 'impliedStringEnum', 'booleanEnum', 'impliedBooleanEnum', 'integerEnum', 'impliedIntegerEnum', 'impliedNamedIntegerEnum',
55-
'namedIntegerEnumTitle', 'impliedNamedIntegerEnumTitle'],
103+
'namedIntegerEnumTitle', 'impliedNamedIntegerEnumTitle', 'oneOfNamedEnum', 'anyOfNamedEnum', 'allOfNamedEnum'],
56104
additionalProperties: false
57105
}
58106

0 commit comments

Comments
 (0)