Skip to content

Commit f69b156

Browse files
committed
feature: (nodejs) ability to add prefix\suffix for type names and enum keys
```ts typePrefix?: string; typeSuffix?: string; enumKeyPrefix?: string; enumKeySuffix?: string; ```
1 parent 1ef9b61 commit f69b156

File tree

10 files changed

+185
-164
lines changed

10 files changed

+185
-164
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,13 @@ BREAKING_CHANGE: add ability to custom prefix for autofix invalid enum keys, inv
1515
BREAKING_CHANGE: by default all component enum schemas (even numeric) extracting as `enum` TS constructions (#344)
1616
feature: ability to extract all enums from nested types\interfaces to `enum` TS construction using `--extract-enums` option (#344)
1717
feature: ability to modify route path params before insert them into string (request url, #446, with using hook `onInsertPathParam`)
18+
feature: (nodejs) ability to add prefix\suffix for type names and enum keys
19+
```ts
20+
typePrefix?: string;
21+
typeSuffix?: string;
22+
enumKeyPrefix?: string;
23+
enumKeySuffix?: string;
24+
```
1825
docs: update docs for `extraTemplates` option
1926

2027
# 11.1.3

index.d.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,14 @@ interface GenerateApiParamsBase {
143143
fixInvalidTypeNamePrefix?: string;
144144
/** prefix string value needed to fix invalid enum keys (default: 'Value') */
145145
fixInvalidEnumKeyPrefix?: string;
146+
/** prefix string value for enum keys */
147+
enumKeyPrefix?: string;
148+
/** suffix string value for enum keys */
149+
enumKeySuffix?: string;
150+
/** prefix string value for type names */
151+
typePrefix?: string;
152+
/** suffix string value for type names */
153+
typeSuffix?: string;
146154
}
147155

148156
type CodeGenConstruct = {
@@ -448,6 +456,8 @@ export interface GenerateApiConfiguration {
448456
singleHttpClient: boolean;
449457
typePrefix: string;
450458
typeSuffix: string;
459+
enumKeyPrefix: string;
460+
enumKeySuffix: string;
451461
patch: boolean;
452462
cleanOutput: boolean;
453463
debug: boolean;

src/configuration.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ class CodeGenConfig {
131131
silent = false;
132132
typePrefix = "";
133133
typeSuffix = "";
134+
enumKeyPrefix = "";
135+
enumKeySuffix = "";
134136
patch = false;
135137
componentTypeNameResolver = new ComponentTypeNameResolver([]);
136138
/** name of the main exported class */

src/schema-parser/schema-parser.js

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -123,13 +123,9 @@ class SchemaParser {
123123
const formattedKey =
124124
(enumName &&
125125
this.typeName.format(enumName, {
126-
ignorePrefix: true,
127-
ignoreSuffix: true,
128126
type: "enum-key",
129127
})) ||
130128
this.typeName.format(`${enumValue}`, {
131-
ignorePrefix: true,
132-
ignoreSuffix: true,
133129
type: "enum-key",
134130
});
135131

@@ -151,8 +147,6 @@ class SchemaParser {
151147
content = _.map(schema.enum, (key) => {
152148
return {
153149
key: this.typeName.format(`${key}`, {
154-
ignorePrefix: true,
155-
ignoreSuffix: true,
156150
type: "enum-key",
157151
}),
158152
type: keyType,

src/type-name.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,21 @@ class TypeName {
2121

2222
/**
2323
* @param name
24-
* @param options {{ ignorePrefix?: boolean, ignoreSuffix?: boolean, fixPrefix?: string; type?: FormattingSchemaType }}
24+
* @param options {{ type?: FormattingSchemaType }}
2525
* @return {string}
2626
*/
2727
format = (name, options) => {
28-
const typePrefix = options && options.ignorePrefix ? "" : this.config.typePrefix;
29-
const typeSuffix = options && options.ignoreSuffix ? "" : this.config.typeSuffix;
30-
const hashKey = `${typePrefix}_${name}_${typeSuffix}`;
28+
options = options || {};
29+
3130
/**
3231
* @type {FormattingSchemaType}
3332
*/
34-
const schemaType = (options && options.type) || "type-name";
33+
const schemaType = options.type || "type-name";
34+
35+
const typePrefix = schemaType === "enum-key" ? this.config.enumKeyPrefix : this.config.typePrefix;
36+
const typeSuffix = schemaType === "enum-key" ? this.config.enumKeySuffix : this.config.typeSuffix;
37+
38+
const hashKey = `${typePrefix}_${name}_${typeSuffix}`;
3539

3640
if (typeof name !== "string") {
3741
this.logger.warn("wrong name of the model name", name);

tests/generated/v3.0/wrong-schema-names.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* Not found response
1414
* @example "Not found"
1515
*/
16-
export type FF = string;
16+
export type DF = string;
1717

1818
/**
1919
* Not found response

tests/schemas/v3.0/wrong-schema-names.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ components:
184184
description: Not found response
185185
type: string
186186
example: Not found
187-
$FF:
187+
$DF:
188188
description: Not found response
189189
type: string
190190
example: Not found

tests/spec/extract-enums/expected.ts

Lines changed: 75 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -9,108 +9,108 @@
99
* ---------------------------------------------------------------
1010
*/
1111

12-
export enum EnumRoot {
13-
Key100644 = "100644",
14-
Key100755 = "100755",
15-
Key040000 = "040000",
16-
Key160000 = "160000",
17-
Key120000 = "120000",
18-
Test1 = "test1",
19-
Test2 = "test2",
12+
export enum TypeNamePrefixEnumRootTypeNameSuffix {
13+
EnumKeyPrefixInvalidKey100644EnumKeySuffix = "100644",
14+
EnumKeyPrefixInvalidKey100755EnumKeySuffix = "100755",
15+
EnumKeyPrefixInvalidKey040000EnumKeySuffix = "040000",
16+
EnumKeyPrefixInvalidKey160000EnumKeySuffix = "160000",
17+
EnumKeyPrefixInvalidKey120000EnumKeySuffix = "120000",
18+
EnumKeyPrefixTest1EnumKeySuffix = "test1",
19+
EnumKeyPrefixTest2EnumKeySuffix = "test2",
2020
}
2121

22-
export interface Tree {
22+
export interface TypeNamePrefixTreeTypeNameSuffix {
2323
tree?: {
24-
mode?: TreeMode;
25-
"mode-num"?: TreeModeNum;
26-
type?: TreeType;
27-
bereke?: TreeBereke;
24+
mode?: TypeNamePrefixTreeModeTypeNameSuffix;
25+
"mode-num"?: TypeNamePrefixTreeModeNumTypeNameSuffix;
26+
type?: TypeNamePrefixTreeTypeTypeNameSuffix;
27+
bereke?: TypeNamePrefixTreeBerekeTypeNameSuffix;
2828
}[];
2929
}
3030

31-
export enum OnlyEnumNames {
32-
Bla = "Bla",
33-
Blabla = "Blabla",
34-
Boiler = "Boiler",
31+
export enum TypeNamePrefixOnlyEnumNamesTypeNameSuffix {
32+
EnumKeyPrefixBlaEnumKeySuffix = "Bla",
33+
EnumKeyPrefixBlablaEnumKeySuffix = "Blabla",
34+
EnumKeyPrefixBoilerEnumKeySuffix = "Boiler",
3535
}
3636

37-
export enum StringOnlyEnumNames {
38-
Bla = "Bla",
39-
Blabla = "Blabla",
40-
Boiler = "Boiler",
37+
export enum TypeNamePrefixStringOnlyEnumNamesTypeNameSuffix {
38+
EnumKeyPrefixBlaEnumKeySuffix = "Bla",
39+
EnumKeyPrefixBlablaEnumKeySuffix = "Blabla",
40+
EnumKeyPrefixBoilerEnumKeySuffix = "Boiler",
4141
}
4242

43-
export enum StringEnums {
44-
Bla = "foo",
45-
Blabla = "bar",
46-
Boiler = "Boiler",
43+
export enum TypeNamePrefixStringEnumsTypeNameSuffix {
44+
EnumKeyPrefixBlaEnumKeySuffix = "foo",
45+
EnumKeyPrefixBlablaEnumKeySuffix = "bar",
46+
EnumKeyPrefixBoilerEnumKeySuffix = "Boiler",
4747
}
4848

49-
export enum StringCompleteEnums {
50-
Bla = "foo",
51-
Blabla = "bar",
52-
Boiler = "baz",
49+
export enum TypeNamePrefixStringCompleteEnumsTypeNameSuffix {
50+
EnumKeyPrefixBlaEnumKeySuffix = "foo",
51+
EnumKeyPrefixBlablaEnumKeySuffix = "bar",
52+
EnumKeyPrefixBoilerEnumKeySuffix = "baz",
5353
}
5454

5555
/** @format int32 */
56-
export enum EmptyEnum {
57-
Bla = "Bla",
58-
Blabla = "Blabla",
59-
Boiler = "Boiler",
56+
export enum TypeNamePrefixEmptyEnumTypeNameSuffix {
57+
EnumKeyPrefixBlaEnumKeySuffix = "Bla",
58+
EnumKeyPrefixBlablaEnumKeySuffix = "Blabla",
59+
EnumKeyPrefixBoilerEnumKeySuffix = "Boiler",
6060
}
6161

6262
/** @format int32 */
63-
export enum EnumWithMoreNames {
64-
Bla = 1,
65-
Blabla = "Blabla",
66-
Boiler = "Boiler",
63+
export enum TypeNamePrefixEnumWithMoreNamesTypeNameSuffix {
64+
EnumKeyPrefixBlaEnumKeySuffix = 1,
65+
EnumKeyPrefixBlablaEnumKeySuffix = "Blabla",
66+
EnumKeyPrefixBoilerEnumKeySuffix = "Boiler",
6767
}
6868

6969
/** @format int32 */
70-
export enum SomeInterestEnum {
71-
Bla = 6,
72-
Blabla = 2,
73-
Boiler = 1,
74-
Bbabab = 67,
75-
Nowadays = 88,
76-
FAIL = 122,
77-
Vvvvv = 88,
78-
ASdasAS = 0,
79-
ASDsacZX = 213,
80-
Zook = 12378,
81-
EnumMm = 123125,
82-
VCsa = 32452,
83-
Yuuu = 1111,
84-
ASddd = 66666,
85-
ASdsdsa = "ASdsdsa",
86-
ASDds = "ASDds",
87-
HSDFDS = "HSDFDS",
70+
export enum TypeNamePrefixSomeInterestEnumTypeNameSuffix {
71+
EnumKeyPrefixBlaEnumKeySuffix = 6,
72+
EnumKeyPrefixBlablaEnumKeySuffix = 2,
73+
EnumKeyPrefixBoilerEnumKeySuffix = 1,
74+
EnumKeyPrefixBbababEnumKeySuffix = 67,
75+
EnumKeyPrefixNowadaysEnumKeySuffix = 88,
76+
EnumKeyPrefix_FAIL_EnumKeySuffix = 122,
77+
EnumKeyPrefixVvvvvEnumKeySuffix = 88,
78+
EnumKeyPrefixASdasASEnumKeySuffix = 0,
79+
EnumKeyPrefixASDsacZXEnumKeySuffix = 213,
80+
EnumKeyPrefixZookEnumKeySuffix = 12378,
81+
EnumKeyPrefixEnumMmEnumKeySuffix = 123125,
82+
EnumKeyPrefixVCsaEnumKeySuffix = 32452,
83+
EnumKeyPrefixYuuuEnumKeySuffix = 1111,
84+
EnumKeyPrefixASdddEnumKeySuffix = 66666,
85+
EnumKeyPrefixASdsdsaEnumKeySuffix = "ASdsdsa",
86+
EnumKeyPrefixASDdsEnumKeySuffix = "ASDds",
87+
EnumKeyPrefix_HSDFDS_EnumKeySuffix = "HSDFDS",
8888
}
8989

90-
export enum TreeMode {
91-
Key100644 = "100644",
92-
Key100755 = "100755",
93-
Key040000 = "040000",
94-
Key160000 = "160000",
95-
Key120000 = "120000",
90+
export enum TypeNamePrefixTreeModeTypeNameSuffix {
91+
EnumKeyPrefixInvalidKey100644EnumKeySuffix = "100644",
92+
EnumKeyPrefixInvalidKey100755EnumKeySuffix = "100755",
93+
EnumKeyPrefixInvalidKey040000EnumKeySuffix = "040000",
94+
EnumKeyPrefixInvalidKey160000EnumKeySuffix = "160000",
95+
EnumKeyPrefixInvalidKey120000EnumKeySuffix = "120000",
9696
}
9797

98-
export enum TreeModeNum {
99-
Key100644 = 100644,
100-
Key100755 = 100755,
101-
Key40000 = 40000,
102-
Key160000 = 160000,
103-
Key120000 = 120000,
98+
export enum TypeNamePrefixTreeModeNumTypeNameSuffix {
99+
EnumKeyPrefixInvalidKey100644EnumKeySuffix = 100644,
100+
EnumKeyPrefixInvalidKey100755EnumKeySuffix = 100755,
101+
EnumKeyPrefixInvalidKey40000EnumKeySuffix = 40000,
102+
EnumKeyPrefixInvalidKey160000EnumKeySuffix = 160000,
103+
EnumKeyPrefixInvalidKey120000EnumKeySuffix = 120000,
104104
}
105105

106-
export enum TreeType {
107-
Blob = "blob",
108-
Tree = "tree",
109-
Commit = "commit",
106+
export enum TypeNamePrefixTreeTypeTypeNameSuffix {
107+
EnumKeyPrefixBlobEnumKeySuffix = "blob",
108+
EnumKeyPrefixTreeEnumKeySuffix = "tree",
109+
EnumKeyPrefixCommitEnumKeySuffix = "commit",
110110
}
111111

112-
export enum TreeBereke {
113-
Bla = "Bla",
114-
Blabla = "Blabla",
115-
Boiler = "Boiler",
112+
export enum TypeNamePrefixTreeBerekeTypeNameSuffix {
113+
EnumKeyPrefixBlaEnumKeySuffix = "Bla",
114+
EnumKeyPrefixBlablaEnumKeySuffix = "Blabla",
115+
EnumKeyPrefixBoilerEnumKeySuffix = "Boiler",
116116
}

0 commit comments

Comments
 (0)