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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy