mirror of
https://github.com/ferdikoomen/openapi-typescript-codegen.git
synced 2025-12-08 20:16:21 +00:00
- Cleanup
This commit is contained in:
parent
5a8c40b8ee
commit
e3ff6277d1
@ -1,5 +1,5 @@
|
||||
import type { Enum } from '../../../client/interfaces/Enum';
|
||||
import { isDefined } from './isDefined';
|
||||
import { isDefined } from '../../../utils/isDefined';
|
||||
|
||||
export function getEnum(values?: (string | number)[]): Enum[] {
|
||||
if (Array.isArray(values)) {
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import type { Model } from '../../../client/interfaces/Model';
|
||||
import { getPattern } from '../../../utils/getPattern';
|
||||
import type { OpenApi } from '../interfaces/OpenApi';
|
||||
import type { OpenApiSchema } from '../interfaces/OpenApiSchema';
|
||||
import { extendEnum } from './extendEnum';
|
||||
@ -7,7 +8,6 @@ import { getEnum } from './getEnum';
|
||||
import { getEnumFromDescription } from './getEnumFromDescription';
|
||||
import { getModelComposition } from './getModelComposition';
|
||||
import { getModelProperties } from './getModelProperties';
|
||||
import { getPattern } from './getPattern';
|
||||
import { getType } from './getType';
|
||||
|
||||
export function getModel(openApi: OpenApi, definition: OpenApiSchema, isDefinition: boolean = false, name: string = ''): Model {
|
||||
|
||||
@ -14,8 +14,8 @@ export function getModelComposition(openApi: OpenApi, definitions: OpenApiSchema
|
||||
properties: [],
|
||||
};
|
||||
|
||||
const modes = definitions.map(definition => getModel(openApi, definition));
|
||||
modes
|
||||
const models = definitions.map(definition => getModel(openApi, definition));
|
||||
models
|
||||
.filter(model => {
|
||||
const hasProperties = model.properties.length;
|
||||
const hasEnums = model.enums.length;
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
import type { Model } from '../../../client/interfaces/Model';
|
||||
import { getPattern } from '../../../utils/getPattern';
|
||||
import type { OpenApi } from '../interfaces/OpenApi';
|
||||
import type { OpenApiSchema } from '../interfaces/OpenApiSchema';
|
||||
import { escapeName } from './escapeName';
|
||||
import { getComment } from './getComment';
|
||||
import type { getModel } from './getModel';
|
||||
import { getPattern } from './getPattern';
|
||||
import { getType } from './getType';
|
||||
|
||||
// Fix for circular dependency
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import type { OperationParameter } from '../../../client/interfaces/OperationParameter';
|
||||
import { getPattern } from '../../../utils/getPattern';
|
||||
import type { OpenApi } from '../interfaces/OpenApi';
|
||||
import type { OpenApiParameter } from '../interfaces/OpenApiParameter';
|
||||
import { extendEnum } from './extendEnum';
|
||||
@ -8,7 +9,6 @@ import { getEnumFromDescription } from './getEnumFromDescription';
|
||||
import { getModel } from './getModel';
|
||||
import { getOperationParameterDefault } from './getOperationParameterDefault';
|
||||
import { getOperationParameterName } from './getOperationParameterName';
|
||||
import { getPattern } from './getPattern';
|
||||
import { getType } from './getType';
|
||||
|
||||
export function getOperationParameter(openApi: OpenApi, parameter: OpenApiParameter): OperationParameter {
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
import type { OperationResponse } from '../../../client/interfaces/OperationResponse';
|
||||
import { getPattern } from '../../../utils/getPattern';
|
||||
import type { OpenApi } from '../interfaces/OpenApi';
|
||||
import type { OpenApiResponse } from '../interfaces/OpenApiResponse';
|
||||
import { getComment } from './getComment';
|
||||
import { getModel } from './getModel';
|
||||
import { getPattern } from './getPattern';
|
||||
import { getType } from './getType';
|
||||
|
||||
export function getOperationResponse(openApi: OpenApi, response: OpenApiResponse, responseCode: number): OperationResponse {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import type { Enum } from '../../../client/interfaces/Enum';
|
||||
import { isDefined } from './isDefined';
|
||||
import { isDefined } from '../../../utils/isDefined';
|
||||
|
||||
export function getEnum(values?: (string | number)[]): Enum[] {
|
||||
if (Array.isArray(values)) {
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import type { Model } from '../../../client/interfaces/Model';
|
||||
import { getPattern } from '../../../utils/getPattern';
|
||||
import type { OpenApi } from '../interfaces/OpenApi';
|
||||
import type { OpenApiSchema } from '../interfaces/OpenApiSchema';
|
||||
import { extendEnum } from './extendEnum';
|
||||
@ -8,7 +9,6 @@ import { getEnumFromDescription } from './getEnumFromDescription';
|
||||
import { getModelComposition } from './getModelComposition';
|
||||
import { getModelDefault } from './getModelDefault';
|
||||
import { getModelProperties } from './getModelProperties';
|
||||
import { getPattern } from './getPattern';
|
||||
import { getType } from './getType';
|
||||
|
||||
export function getModel(openApi: OpenApi, definition: OpenApiSchema, isDefinition: boolean = false, name: string = ''): Model {
|
||||
|
||||
@ -14,8 +14,8 @@ export function getModelComposition(openApi: OpenApi, definitions: OpenApiSchema
|
||||
properties: [],
|
||||
};
|
||||
|
||||
const modes = definitions.map(definition => getModel(openApi, definition));
|
||||
modes
|
||||
const models = definitions.map(definition => getModel(openApi, definition));
|
||||
models
|
||||
.filter(model => {
|
||||
const hasProperties = model.properties.length;
|
||||
const hasEnums = model.enums.length;
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
import type { Model } from '../../../client/interfaces/Model';
|
||||
import { getPattern } from '../../../utils/getPattern';
|
||||
import type { OpenApi } from '../interfaces/OpenApi';
|
||||
import type { OpenApiSchema } from '../interfaces/OpenApiSchema';
|
||||
import { escapeName } from './escapeName';
|
||||
import { getComment } from './getComment';
|
||||
import type { getModel } from './getModel';
|
||||
import { getPattern } from './getPattern';
|
||||
import { getType } from './getType';
|
||||
|
||||
// Fix for circular dependency
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
import type { OperationParameter } from '../../../client/interfaces/OperationParameter';
|
||||
import { getPattern } from '../../../utils/getPattern';
|
||||
import type { OpenApi } from '../interfaces/OpenApi';
|
||||
import type { OpenApiParameter } from '../interfaces/OpenApiParameter';
|
||||
import { getComment } from './getComment';
|
||||
import { getModel } from './getModel';
|
||||
import { getModelDefault } from './getModelDefault';
|
||||
import { getOperationParameterName } from './getOperationParameterName';
|
||||
import { getPattern } from './getPattern';
|
||||
import { getType } from './getType';
|
||||
|
||||
export function getOperationParameter(openApi: OpenApi, parameter: OpenApiParameter): OperationParameter {
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
import type { OperationParameter } from '../../../client/interfaces/OperationParameter';
|
||||
import { getPattern } from '../../../utils/getPattern';
|
||||
import type { OpenApi } from '../interfaces/OpenApi';
|
||||
import type { OpenApiRequestBody } from '../interfaces/OpenApiRequestBody';
|
||||
import { getComment } from './getComment';
|
||||
import { getContent } from './getContent';
|
||||
import { getModel } from './getModel';
|
||||
import { getPattern } from './getPattern';
|
||||
import { getType } from './getType';
|
||||
|
||||
export function getOperationRequestBody(openApi: OpenApi, parameter: OpenApiRequestBody): OperationParameter {
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
import type { OperationResponse } from '../../../client/interfaces/OperationResponse';
|
||||
import { getPattern } from '../../../utils/getPattern';
|
||||
import type { OpenApi } from '../interfaces/OpenApi';
|
||||
import type { OpenApiResponse } from '../interfaces/OpenApiResponse';
|
||||
import { getComment } from './getComment';
|
||||
import { getContent } from './getContent';
|
||||
import { getModel } from './getModel';
|
||||
import { getPattern } from './getPattern';
|
||||
import { getType } from './getType';
|
||||
|
||||
export function getOperationResponse(openApi: OpenApi, response: OpenApiResponse, responseCode: number): OperationResponse {
|
||||
|
||||
@ -1,14 +0,0 @@
|
||||
import { getPattern } from './getPattern';
|
||||
|
||||
describe('getPattern', () => {
|
||||
it('should produce correct result', () => {
|
||||
expect(getPattern()).toEqual(undefined);
|
||||
expect(getPattern('')).toEqual('');
|
||||
expect(getPattern('^[a-zA-Z]')).toEqual('^[a-zA-Z]');
|
||||
expect(getPattern('^\\w+$')).toEqual('^\\\\w+$');
|
||||
expect(getPattern('^\\d{3}-\\d{2}-\\d{4}$')).toEqual('^\\\\d{3}-\\\\d{2}-\\\\d{4}$');
|
||||
expect(getPattern('\\')).toEqual('\\\\');
|
||||
expect(getPattern('\\/')).toEqual('\\\\/');
|
||||
expect(getPattern('\\/\\/')).toEqual('\\\\/\\\\/');
|
||||
});
|
||||
});
|
||||
@ -1,10 +0,0 @@
|
||||
/**
|
||||
* The spec generates a pattern like this '^\d{3}-\d{2}-\d{4}$'
|
||||
* However, to use it in HTML or inside new RegExp() we need to
|
||||
* escape the pattern to become: '^\\d{3}-\\d{2}-\\d{4}$' in order
|
||||
* to make it a valid regexp string.
|
||||
* @param pattern
|
||||
*/
|
||||
export function getPattern(pattern?: string): string | undefined {
|
||||
return pattern?.replace(/\\/g, '\\\\');
|
||||
}
|
||||
@ -1,7 +0,0 @@
|
||||
/**
|
||||
* Check if a value is defined
|
||||
* @param value
|
||||
*/
|
||||
export function isDefined<T>(value: T | undefined | null | ''): value is Exclude<T, undefined | null | ''> {
|
||||
return value !== undefined && value !== null && value !== '';
|
||||
}
|
||||
38
src/utils/isEqual.ts
Normal file
38
src/utils/isEqual.ts
Normal file
@ -0,0 +1,38 @@
|
||||
export function isEqual(a: any, b: any): boolean {
|
||||
if (a === b) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (a && b && typeof a === 'object' && typeof b === 'object') {
|
||||
if (Array.isArray(a) && Array.isArray(b)) {
|
||||
if (a.length !== b.length) {
|
||||
return false;
|
||||
}
|
||||
for (let i = 0; i < a.length; i++) {
|
||||
if (!isEqual(a[i], b[i])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
const keysA = Object.keys(a);
|
||||
const keysB = Object.keys(b);
|
||||
if (keysA.length !== keysB.length) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (let i = 0; i < keysA.length; i++) {
|
||||
const key = keysA[i];
|
||||
if (!Object.prototype.hasOwnProperty.call(b, key)) {
|
||||
return false;
|
||||
}
|
||||
if (!isEqual(a[key], b[key])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
return a !== a && b !== b;
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user