Skip to content

Commit bd05e3c

Browse files
committed
Merge commit 'ecc65e3da08a8c9041089f751d27b9e405a02c99' into custom-templates
2 parents 6f273cd + ecc65e3 commit bd05e3c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+207
-91
lines changed

Dockerfile

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
FROM node:alpine
2+
WORKDIR /usr/src/openapi
3+
COPY . /usr/src/openapi
4+
RUN npm install
5+
RUN npm run release
6+
ENTRYPOINT [ "node", "/usr/src/openapi/bin/index.js" ]
7+
CMD "--help"

README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ To release a new version, run `npm run release` and push everything, including t
1717
[![NPM][npm-image]][npm-url]
1818
[![License][license-image]][license-url]
1919
[![Coverage][coverage-image]][coverage-url]
20+
[![Coverage][coverage-image]][coverage-url]
2021
[![Downloads][downloads-image]][downloads-url]
2122
[![Build][build-image]][build-url]
2223

@@ -71,6 +72,21 @@ $ openapi --help
7172
$ openapi --input ./spec.json --output ./generated --client xhr
7273
```
7374

75+
## Docker usage
76+
77+
To build the Docker container, execute the following command:
78+
79+
```
80+
docker build . --tag openapi-typescript-codegen
81+
```
82+
83+
After this is done, you can execute the CLI commands:
84+
85+
```
86+
docker run openapi-typescript-codegen --help
87+
docker run openapi-typescript-codegen --input sample.yaml --output client
88+
```
89+
7490
Documentation
7591
===
7692
- [Basic usage](docs/basic-usage.md)

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@
5656
"eslint": "eslint .",
5757
"eslint:fix": "eslint . --fix",
5858
"prepublishOnly": "npm run clean && npm run release",
59-
"codecov": "codecov --token=66c30c23-8954-4892-bef9-fbaed0a2e42b"
59+
"codecov": "codecov --token=66c30c23-8954-4892-bef9-fbaed0a2e42b",
60+
"docker": "docker build -t eeelenbaas/openapi-typescript-codegen ."
6061
},
6162
"dependencies": {
6263
"camelcase": "^6.3.0",

src/openApi/v3/parser/getModels.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,19 @@ export const getModels = (openApi: OpenApi): Model[] => {
1515
models.push(model);
1616
}
1717
}
18+
for (const definitionName in openApi.components.parameters) {
19+
if (openApi.components.parameters.hasOwnProperty(definitionName)) {
20+
const definition = openApi.components.parameters[definitionName];
21+
const definitionType = getType(definitionName);
22+
const schema = definition.schema;
23+
if (schema) {
24+
const model = getModel(openApi, schema, true, definitionType.base.replace(reservedWords, '_$1'));
25+
model.description = definition.description || null;
26+
model.deprecated = definition.deprecated;
27+
models.push(model);
28+
}
29+
}
30+
}
1831
}
1932
return models;
2033
};

src/openApi/v3/parser/getOperationParameterName.spec.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,7 @@ describe('getOperationParameterName', () => {
1313
expect(getOperationParameterName('123.foo.bar')).toEqual('fooBar');
1414
expect(getOperationParameterName('Foo-Bar')).toEqual('fooBar');
1515
expect(getOperationParameterName('FOO-BAR')).toEqual('fooBar');
16+
expect(getOperationParameterName('foo[bar]')).toEqual('fooBar');
17+
expect(getOperationParameterName('foo.bar[]')).toEqual('fooBarArray');
1618
});
1719
});

src/openApi/v3/parser/getOperationParameterName.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { reservedWords } from '../../../utils/reservedWords';
99
export const getOperationParameterName = (value: string): string => {
1010
const clean = value
1111
.replace(/^[^a-zA-Z]+/g, '')
12+
.replace('[]', 'Array')
1213
.replace(/[^\w\-]+/g, '-')
1314
.trim();
1415
return camelCase(clean).replace(reservedWords, '_$1');

src/templates/core/OpenAPI.hbs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ export type OpenAPIConfig = {
1010
VERSION: string;
1111
WITH_CREDENTIALS: boolean;
1212
CREDENTIALS: 'include' | 'omit' | 'same-origin';
13-
TOKEN?: string | Resolver<string>;
14-
USERNAME?: string | Resolver<string>;
15-
PASSWORD?: string | Resolver<string>;
16-
HEADERS?: Headers | Resolver<Headers>;
17-
ENCODE_PATH?: (path: string) => string;
13+
TOKEN?: string | Resolver<string> | undefined;
14+
USERNAME?: string | Resolver<string> | undefined;
15+
PASSWORD?: string | Resolver<string> | undefined;
16+
HEADERS?: Headers | Resolver<Headers> | undefined;
17+
ENCODE_PATH?: ((path: string) => string) | undefined;
1818
};
1919

2020
export const OpenAPI: OpenAPIConfig = {

src/templates/core/angular/getHeaders.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const getHeaders = (config: OpenAPIConfig, options: ApiRequestOptions): Observable<HttpHeaders> => {
1+
export const getHeaders = (config: OpenAPIConfig, options: ApiRequestOptions): Observable<HttpHeaders> => {
22
return forkJoin({
33
token: resolve(options, config.TOKEN),
44
username: resolve(options, config.USERNAME),

src/templates/core/angular/getRequestBody.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const getRequestBody = (options: ApiRequestOptions): any => {
1+
export const getRequestBody = (options: ApiRequestOptions): any => {
22
if (options.body) {
33
if (options.mediaType?.includes('/json')) {
44
return JSON.stringify(options.body)

src/templates/core/angular/getResponseBody.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const getResponseBody = <T>(response: HttpResponse<T>): T | undefined => {
1+
export const getResponseBody = <T>(response: HttpResponse<T>): T | undefined => {
22
if (response.status !== 204 && response.body !== null) {
33
return response.body;
44
}

0 commit comments

Comments
 (0)