Skip to content

Commit 3c18b24

Browse files
authored
Merge pull request Ciptex#70 from Ciptex/merge-upstream
Merge upstream
2 parents dfe3bd6 + 9246f77 commit 3c18b24

21 files changed

+1472
-1425
lines changed

package-lock.json

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

package.json

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -70,37 +70,37 @@
7070
"json-schema-ref-parser": "^9.0.9"
7171
},
7272
"devDependencies": {
73-
"@babel/cli": "7.17.10",
74-
"@babel/core": "7.18.5",
75-
"@babel/preset-env": "7.18.2",
76-
"@babel/preset-typescript": "7.17.12",
73+
"@babel/cli": "^7.18.6",
74+
"@babel/core": "^7.18.6",
75+
"@babel/preset-env": "^7.18.6",
76+
"@babel/preset-typescript": "^7.18.6",
7777
"@rollup/plugin-commonjs": "^22.0.1",
7878
"@rollup/plugin-node-resolve": "13.3.0",
7979
"@rollup/plugin-typescript": "8.3.3",
8080
"@types/express": "4.17.13",
8181
"@types/glob": "7.2.0",
82-
"@types/jest": "^28.1.3",
83-
"@types/node": "^18.0.0",
82+
"@types/jest": "^28.1.4",
83+
"@types/node": "^18.0.3",
8484
"@types/qs": "6.9.7",
85-
"@typescript-eslint/eslint-plugin": "^5.29.0",
86-
"@typescript-eslint/parser": "^5.29.0",
85+
"@typescript-eslint/eslint-plugin": "^5.30.6",
86+
"@typescript-eslint/parser": "^5.30.6",
8787
"codecov": "3.8.3",
88-
"eslint": "^8.18.0",
88+
"eslint": "^8.19.0",
8989
"eslint-config-prettier": "8.5.0",
90-
"eslint-plugin-prettier": "4.0.0",
90+
"eslint-plugin-prettier": "^4.2.1",
9191
"eslint-plugin-simple-import-sort": "7.0.0",
9292
"express": "4.18.1",
9393
"glob": "8.0.3",
94-
"jest": "28.1.1",
95-
"jest-cli": "28.1.1",
94+
"jest": "^28.1.2",
95+
"jest-cli": "^28.1.2",
9696
"prettier": "^2.7.1",
97-
"puppeteer": "^15.1.1",
97+
"puppeteer": "^15.3.2",
9898
"qs": "^6.11.0",
9999
"rimraf": "^3.0.2",
100-
"rollup": "^2.75.7",
101-
"rollup-plugin-node-externals": "^4.1.0",
100+
"rollup": "^2.76.0",
101+
"rollup-plugin-node-externals": "^4.1.1",
102102
"rollup-plugin-terser": "7.0.2",
103-
"ts-node": "10.8.1",
103+
"ts-node": "^10.8.2",
104104
"tslib": "2.4.0",
105105
"typescript": "^4.7.4"
106106
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { escapeName } from './escapeName';
22

33
describe('escapeName', () => {
44
it('should escape', () => {
5-
expect(escapeName('')).toEqual('');
5+
expect(escapeName('')).toEqual("''");
66
expect(escapeName('fooBar')).toEqual('fooBar');
77
expect(escapeName('Foo Bar')).toEqual(`'Foo Bar'`);
88
expect(escapeName('foo bar')).toEqual(`'foo bar'`);

src/openApi/v3/parser/escapeName.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
export function escapeName(value: string): string {
2-
if (value) {
1+
export const escapeName = (value: string): string => {
2+
if (value || value === '') {
33
const validName = /^[a-zA-Z_$][\w$]+$/g.test(value);
44
if (!validName) {
55
return `'${value}'`;

src/openApi/v3/parser/extendEnum.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { Enum } from '../../../client/interfaces/Enum';
2+
import { isString } from '../../../utils/isString';
23
import type { WithEnumExtension } from '../interfaces/Extensions/WithEnumExtension';
34

45
/**
@@ -7,9 +8,9 @@ import type { WithEnumExtension } from '../interfaces/Extensions/WithEnumExtensi
78
* @param enumerators
89
* @param definition
910
*/
10-
export function extendEnum(enumerators: Enum[], definition: WithEnumExtension): Enum[] {
11-
const names = definition['x-enum-varnames'];
12-
const descriptions = definition['x-enum-descriptions'];
11+
export const extendEnum = (enumerators: Enum[], definition: WithEnumExtension): Enum[] => {
12+
const names = definition['x-enum-varnames']?.filter(isString);
13+
const descriptions = definition['x-enum-descriptions']?.filter(isString);
1314

1415
return enumerators.map((enumerator, index) => ({
1516
name: names?.[index] || enumerator.name,

src/openApi/v3/parser/getEnum.ts

Lines changed: 4 additions & 3 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 function 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 {
@@ -23,7 +24,7 @@ export function getEnum(values?: (string | number)[]): Enum[] {
2324
.replace(/^(\d+)/g, '_$1')
2425
.replace(/([a-z])([A-Z]+)/g, '$1_$2')
2526
.toUpperCase(),
26-
value: `'${value}'`,
27+
value: `'${value.replace(/'/g, "\\'")}'`,
2728
type: 'string',
2829
description: null,
2930
};

src/openApi/v3/parser/getModel.ts

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import type { OpenApiSchema } from '../interfaces/OpenApiSchema';
55
import { extendEnum } from './extendEnum';
66
import { getComment } from './getComment';
77
import { getEnum } from './getEnum';
8-
import { getEnumFromDescription } from './getEnumFromDescription';
98
import { getModelComposition } from './getModelComposition';
109
import { getModelDefault } from './getModelDefault';
1110
import { getModelProperties } from './getModelProperties';
@@ -73,18 +72,6 @@ export function getModel(
7372
}
7473
}
7574

76-
if ((definition.type === 'int' || definition.type === 'integer') && definition.description) {
77-
const enumerators = getEnumFromDescription(definition.description);
78-
if (enumerators.length) {
79-
model.export = 'enum';
80-
model.type = 'number';
81-
model.base = 'number';
82-
model.enum.push(...enumerators);
83-
model.default = getModelDefault(definition, model);
84-
return model;
85-
}
86-
}
87-
8875
if (definition.type === 'array' && definition.items) {
8976
if (definition.items.$ref) {
9077
const arrayItems = getType(definition.items.$ref);

src/openApi/v3/parser/getModelDefault.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import type { OpenApiSchema } from '../interfaces/OpenApiSchema';
33

44
export function getModelDefault(definition: OpenApiSchema, model?: Model): string | undefined {
55
if (definition.default === undefined) {
6-
return;
6+
return undefined;
77
}
88

99
if (definition.default === null) {
@@ -35,5 +35,5 @@ export function getModelDefault(definition: OpenApiSchema, model?: Model): strin
3535
}
3636
}
3737

38-
return;
38+
return undefined;
3939
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { getServices } from './getServices';
2+
3+
describe('getServices', () => {
4+
it('should create a unnamed service if tags are empty', () => {
5+
const services = getServices({
6+
openapi: '3',
7+
info: { title: 'x', version: '1' },
8+
paths: {
9+
'/api/trips': {
10+
get: { tags: [], responses: { 200: { description: 'X' }, default: { description: 'default' } } },
11+
},
12+
},
13+
});
14+
15+
expect(services).toHaveLength(1);
16+
expect(services[0].name).toEqual('Unnamed');
17+
});
18+
});

src/openApi/v3/parser/getServices.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ export function getServices(openApi: OpenApi): Service[] {
3030
case 'patch':
3131
// Each method contains an OpenAPI operation, we parse the operation
3232
const op = path[method]!;
33-
34-
let tags = op.tags?.filter(unique) || ['Service'];
33+
const uniqueTags = op.tags?.filter(unique);
34+
let tags = uniqueTags?.length ? uniqueTags : ['Unnamed'];
3535

3636
//Remove Tags that are not in the x-tagGroups Extension
3737
if (tagGroups) {

0 commit comments

Comments
 (0)