- Cleanup

This commit is contained in:
Ferdi Koomen 2020-12-18 17:33:22 +01:00
parent 5a8c40b8ee
commit e3ff6277d1
20 changed files with 53 additions and 46 deletions

View File

@ -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)) {

View File

@ -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 {

View File

@ -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;

View File

@ -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

View File

@ -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 {

View File

@ -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 {

View File

@ -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)) {

View File

@ -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 {

View File

@ -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;

View File

@ -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

View File

@ -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 {

View File

@ -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 {

View File

@ -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 {

View File

@ -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('\\\\/\\\\/');
});
});

View File

@ -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, '\\\\');
}

View File

@ -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
View 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;
}