Escape reserved keywords in schema names for v3, closes #1186

This commit is contained in:
Mauro Bieg 2022-08-10 11:10:18 +02:00
parent f26bf12455
commit 05db3b97f8
4 changed files with 39 additions and 2 deletions

View File

@ -1,6 +1,7 @@
import type { Model } from '../../../client/interfaces/Model';
import type { OpenApi } from '../interfaces/OpenApi';
import { getModel } from './getModel';
import { reservedWords } from './getOperationParameterName';
import { getType } from './getType';
export const getModels = (openApi: OpenApi): Model[] => {
@ -10,7 +11,7 @@ export const getModels = (openApi: OpenApi): Model[] => {
if (openApi.components.schemas.hasOwnProperty(definitionName)) {
const definition = openApi.components.schemas[definitionName];
const definitionType = getType(definitionName);
const model = getModel(openApi, definition, true, definitionType.base);
const model = getModel(openApi, definition, true, definitionType.base.replace(reservedWords, '_$1'));
models.push(model);
}
}

View File

@ -1,6 +1,6 @@
import camelCase from 'camelcase';
const reservedWords =
export const reservedWords =
/^(arguments|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|eval|export|extends|false|finally|for|function|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)$/g;
/**

View File

@ -3607,6 +3607,7 @@ export { CancelablePromise, CancelError } from './core/CancelablePromise';
export { OpenAPI } from './core/OpenAPI';
export type { OpenAPIConfig } from './core/OpenAPI';
export type { _default } from './models/_default';
export type { ArrayWithArray } from './models/ArrayWithArray';
export type { ArrayWithBooleans } from './models/ArrayWithBooleans';
export type { ArrayWithNumbers } from './models/ArrayWithNumbers';
@ -3672,6 +3673,7 @@ export type { SimpleReference } from './models/SimpleReference';
export type { SimpleString } from './models/SimpleString';
export type { SimpleStringWithPattern } from './models/SimpleStringWithPattern';
export { $_default } from './schemas/$_default';
export { $ArrayWithArray } from './schemas/$ArrayWithArray';
export { $ArrayWithBooleans } from './schemas/$ArrayWithBooleans';
export { $ArrayWithNumbers } from './schemas/$ArrayWithNumbers';
@ -3761,6 +3763,18 @@ export { UploadService } from './services/UploadService';
"
`;
exports[`v3 should generate: ./test/generated/v3/models/_default.ts 1`] = `
"/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export type _default = {
name?: string;
};
"
`;
exports[`v3 should generate: ./test/generated/v3/models/ArrayWithArray.ts 1`] = `
"/* istanbul ignore file */
/* tslint:disable */
@ -4849,6 +4863,20 @@ export type SimpleStringWithPattern = string | null;
"
`;
exports[`v3 should generate: ./test/generated/v3/schemas/$_default.ts 1`] = `
"/* istanbul ignore file */
/* tslint:disable */
/* eslint-disable */
export const $_default = {
properties: {
name: {
type: 'string',
},
},
} as const;
"
`;
exports[`v3 should generate: ./test/generated/v3/schemas/$ArrayWithArray.ts 1`] = `
"/* istanbul ignore file */
/* tslint:disable */

View File

@ -2507,6 +2507,14 @@
}
}
},
"default": {
"type": "object",
"properties": {
"name": {
"type": "string"
}
}
},
"Pageable": {
"type": "object",
"properties": {