Skip to content

Commit 90f6c62

Browse files
Merge branch 'ferdikoomen:master' into master
2 parents cf0f601 + 59254d9 commit 90f6c62

36 files changed

+4034
-3551
lines changed

CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,22 @@
11
# Changelog
22
All notable changes to this project will be documented in this file.
33

4+
## [0.22.0] - 2022-04-26
5+
### Fixed
6+
- Upgraded dependencies
7+
- Fixed issue with `null` value inside comments for OpenAPI v2 enums
8+
- Fixed issue with compatibility for latest version of Axios (0.27.x)
9+
### Removed
10+
- Removed deprecated enum model generation
11+
12+
## [0.21.0] - 2022-04-06
13+
### Fixed
14+
- Return `undefined` to match `noImplicitReturns` rule
15+
- Made `BaseHttpRequest` class abstract
16+
- Removed private fields using `#` inside `CancelablePromise`
17+
- Removed unneeded import `AbortController` from `node-fetch` client
18+
- Filter out wrong enum values
19+
420
## [0.20.1] - 2022-02-25
521
### Fixed
622
- Support enums with single quotes in names for V2

docs/axios-support.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,13 @@ npm install axios --save-dev
1414
npm install [email protected] --save-dev
1515
```
1616

17-
In order to compile the project and resolve the imports, you will need to enable the `allowSyntheticDefaultImports`
18-
in your `tsconfig.json` file.
17+
In order to compile the project and resolve the imports, you will need to add the following properties
18+
in your `tsconfig.json` file:
19+
```json
20+
{
21+
"compilerOptions": {
22+
"lib": ["...", "dom"],
23+
"allowSyntheticDefaultImports": true
24+
}
25+
}
26+
```

docs/client-instances.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ The generated client uses an instance of the server configuration and not the gl
77
To generate a client instance, set a custom name to the client class, use `--name` option.
88

99
```
10-
openapi --input ./spec.json --output ./generated ---name AppClient
10+
openapi --input ./spec.json --output ./generated --name AppClient
1111
```
1212

1313
The generated client will be exported from the `index` file and can be used as shown below:

package-lock.json

Lines changed: 3806 additions & 3150 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "openapi-typescript-codegen",
3-
"version": "0.20.1",
3+
"version": "0.22.0",
44
"description": "Library that generates Typescript clients based on the OpenAPI specification.",
55
"author": "Ferdi Koomen",
66
"homepage": "https://github.com/ferdikoomen/openapi-typescript-codegen",
@@ -60,63 +60,63 @@
6060
},
6161
"dependencies": {
6262
"camelcase": "^6.3.0",
63-
"commander": "^9.0.0",
63+
"commander": "^9.2.0",
6464
"handlebars": "^4.7.7",
6565
"json-schema-ref-parser": "^9.0.9"
6666
},
6767
"devDependencies": {
68-
"@angular-devkit/build-angular": "13.2.5",
69-
"@angular/animations": "13.2.4",
70-
"@angular/cli": "13.2.5",
71-
"@angular/common": "13.2.4",
72-
"@angular/compiler": "13.2.4",
73-
"@angular/compiler-cli": "13.2.4",
74-
"@angular/core": "13.2.4",
75-
"@angular/forms": "13.2.4",
76-
"@angular/platform-browser": "13.2.4",
77-
"@angular/platform-browser-dynamic": "13.2.4",
78-
"@angular/router": "13.2.4",
68+
"@angular-devkit/build-angular": "13.3.3",
69+
"@angular/animations": "13.3.4",
70+
"@angular/cli": "13.3.3",
71+
"@angular/common": "13.3.4",
72+
"@angular/compiler": "13.3.4",
73+
"@angular/compiler-cli": "13.3.4",
74+
"@angular/core": "13.3.4",
75+
"@angular/forms": "13.3.4",
76+
"@angular/platform-browser": "13.3.4",
77+
"@angular/platform-browser-dynamic": "13.3.4",
78+
"@angular/router": "13.3.4",
7979
"@babel/cli": "7.17.6",
80-
"@babel/core": "7.17.5",
80+
"@babel/core": "7.17.9",
8181
"@babel/preset-env": "7.16.11",
8282
"@babel/preset-typescript": "7.16.7",
83-
"@rollup/plugin-commonjs": "21.0.2",
84-
"@rollup/plugin-node-resolve": "13.1.3",
85-
"@rollup/plugin-typescript": "8.3.1",
83+
"@rollup/plugin-commonjs": "22.0.0",
84+
"@rollup/plugin-node-resolve": "13.2.1",
85+
"@rollup/plugin-typescript": "8.3.2",
8686
"@types/cross-spawn": "6.0.2",
8787
"@types/express": "4.17.13",
8888
"@types/glob": "7.2.0",
8989
"@types/jest": "27.4.1",
90-
"@types/node": "17.0.21",
90+
"@types/node": "17.0.27",
9191
"@types/node-fetch": "2.6.1",
9292
"@types/qs": "6.9.7",
93-
"@typescript-eslint/eslint-plugin": "5.13.0",
94-
"@typescript-eslint/parser": "5.13.0",
93+
"@typescript-eslint/eslint-plugin": "5.21.0",
94+
"@typescript-eslint/parser": "5.21.0",
9595
"abort-controller": "3.0.0",
96-
"axios": "0.26.0",
96+
"axios": "0.27.1",
9797
"codecov": "3.8.3",
9898
"cross-spawn": "7.0.3",
99-
"eslint": "8.10.0",
100-
"eslint-config-prettier": "8.4.0",
99+
"eslint": "8.14.0",
100+
"eslint-config-prettier": "8.5.0",
101101
"eslint-plugin-prettier": "4.0.0",
102102
"eslint-plugin-simple-import-sort": "7.0.0",
103-
"express": "4.17.3",
103+
"express": "4.18.0",
104104
"form-data": "4.0.0",
105-
"glob": "7.2.0",
106-
"jest": "27.5.1",
107-
"jest-cli": "27.5.1",
105+
"glob": "8.0.1",
106+
"jest": "28.0.1",
107+
"jest-cli": "28.0.1",
108108
"node-fetch": "2.6.7",
109-
"prettier": "2.5.1",
110-
"puppeteer": "13.4.0",
109+
"prettier": "2.6.2",
110+
"puppeteer": "13.6.0",
111111
"qs": "6.10.3",
112112
"rimraf": "3.0.2",
113-
"rollup": "2.68.0",
113+
"rollup": "2.70.2",
114114
"rollup-plugin-node-externals": "4.0.0",
115115
"rollup-plugin-terser": "7.0.2",
116-
"rxjs": "7.5.4",
117-
"ts-node": "10.5.0",
118-
"tslib": "2.3.1",
119-
"typescript": "4.5.5",
120-
"zone.js": "0.11.4"
116+
"rxjs": "7.5.5",
117+
"ts-node": "10.7.0",
118+
"tslib": "2.4.0",
119+
"typescript": "4.6.3",
120+
"zone.js": "0.11.5"
121121
}
122122
}

src/openApi/v2/parser/extendEnum.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export const extendEnum = (enumerators: Enum[], definition: WithEnumExtension):
1414

1515
return enumerators.map((enumerator, index) => ({
1616
name: names?.[index] || enumerator.name,
17-
description: JSON.stringify(descriptions?.[index] || enumerator.description),
17+
description: descriptions?.[index] || enumerator.description,
1818
value: enumerator.value,
1919
type: enumerator.type,
2020
}));

src/openApi/v2/parser/getEnum.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import type { Enum } from '../../../client/interfaces/Enum';
2-
import { isDefined } from '../../../utils/isDefined';
32

43
export const getEnum = (values?: (string | number)[]): Enum[] => {
54
if (Array.isArray(values)) {
65
return values
76
.filter((value, index, arr) => {
87
return arr.indexOf(value) === index;
98
})
10-
.filter(isDefined)
9+
.filter((value: any) => {
10+
return typeof value === 'number' || typeof value === 'string';
11+
})
1112
.map(value => {
1213
if (typeof value === 'number') {
1314
return {

src/openApi/v2/parser/getEnumFromDescription.ts

Lines changed: 0 additions & 39 deletions
This file was deleted.

src/openApi/v2/parser/getModel.ts

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import type { OpenApi } from '../interfaces/OpenApi';
44
import type { OpenApiSchema } from '../interfaces/OpenApiSchema';
55
import { extendEnum } from './extendEnum';
66
import { getEnum } from './getEnum';
7-
import { getEnumFromDescription } from './getEnumFromDescription';
87
import { getModelComposition } from './getModelComposition';
98
import { getModelProperties } from './getModelProperties';
109
import { getType } from './getType';
@@ -69,17 +68,6 @@ export const getModel = (
6968
}
7069
}
7170

72-
if ((definition.type === 'int' || definition.type === 'integer') && definition.description) {
73-
const enumerators = getEnumFromDescription(definition.description);
74-
if (enumerators.length) {
75-
model.export = 'enum';
76-
model.type = 'number';
77-
model.base = 'number';
78-
model.enum.push(...enumerators);
79-
return model;
80-
}
81-
}
82-
8371
if (definition.type === 'array' && definition.items) {
8472
if (definition.items.$ref) {
8573
const arrayItems = getType(definition.items.$ref);

src/openApi/v2/parser/getOperationParameter.ts

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import type { OpenApiParameter } from '../interfaces/OpenApiParameter';
55
import type { OpenApiSchema } from '../interfaces/OpenApiSchema';
66
import { extendEnum } from './extendEnum';
77
import { getEnum } from './getEnum';
8-
import { getEnumFromDescription } from './getEnumFromDescription';
98
import { getModel } from './getModel';
109
import { getOperationParameterDefault } from './getOperationParameterDefault';
1110
import { getOperationParameterName } from './getOperationParameterName';
@@ -70,18 +69,6 @@ export const getOperationParameter = (openApi: OpenApi, parameter: OpenApiParame
7069
}
7170
}
7271

73-
if ((parameter.type === 'int' || parameter.type === 'integer') && parameter.description) {
74-
const enumerators = getEnumFromDescription(parameter.description);
75-
if (enumerators.length) {
76-
operationParameter.export = 'enum';
77-
operationParameter.type = 'number';
78-
operationParameter.base = 'number';
79-
operationParameter.enum.push(...enumerators);
80-
operationParameter.default = getOperationParameterDefault(parameter, operationParameter);
81-
return operationParameter;
82-
}
83-
}
84-
8572
if (parameter.type === 'array' && parameter.items) {
8673
const items = getType(parameter.items.type, parameter.items.format);
8774
operationParameter.export = 'array';

0 commit comments

Comments
 (0)