- Updates to schema editor

This commit is contained in:
Ferdi Koomen 2019-12-11 09:47:07 +01:00
parent c6c09b5ecd
commit fbc2e8c78b
127 changed files with 773 additions and 534 deletions

1
.gitignore vendored
View File

@ -9,5 +9,6 @@ junit.xml
.vscode
*.iml
dist
archive
coverage
test/result

View File

@ -1,5 +1,5 @@
import { Enum } from './Enum';
import { Schema } from './Schema';
import {Schema} from "./Schema";
export interface Model extends Schema {
name: string;
@ -10,10 +10,6 @@ export interface Model extends Schema {
link: Model | null;
description: string | null;
default?: any;
isProperty: boolean;
isReadOnly: boolean;
isRequired: boolean;
isNullable: boolean;
imports: string[];
extends: string[];
enum: Enum[];

View File

@ -1,4 +0,0 @@
export interface OperationResult {
type: string;
imports: string[];
}

20
src/client/interfaces/Schema.d.ts vendored Normal file
View File

@ -0,0 +1,20 @@
export interface Schema {
isProperty: boolean;
isReadOnly: boolean;
isRequired: boolean;
isNullable: boolean;
format?: 'int32' | 'int64' | 'float' | 'double' | 'string' | 'boolean' | 'byte' | 'binary' | 'date' | 'date-time' | 'password';
maximum?: number;
exclusiveMaximum?: boolean;
minimum?: number;
exclusiveMinimum?: boolean;
multipleOf?: number;
maxLength?: number;
minLength?: number;
pattern?: string;
maxItems?: number;
minItems?: number;
uniqueItems?: boolean;
maxProperties?: number;
minProperties?: number;
}

View File

@ -1,9 +1,9 @@
import { Client } from '../../client/interfaces/Client';
import { OpenApi } from './interfaces/OpenApi';
import { getModels } from './parser/getModels';
import { getServer } from './parser/getServer';
import { getServiceVersion } from './parser/getServiceVersion';
import { getServices } from './parser/getServices';
import {Client} from '../../client/interfaces/Client';
import {OpenApi} from './interfaces/OpenApi';
import {getModels} from './parser/getModels';
import {getServer} from './parser/getServer';
import {getServiceVersion} from './parser/getServiceVersion';
import {getServices} from './parser/getServices';
/**
* Parse the OpenAPI specification to a Client model that contains

View File

@ -1,13 +1,13 @@
import { Dictionary } from '../../../utils/types';
import { OpenApiExternalDocs } from './OpenApiExternalDocs';
import { OpenApiInfo } from './OpenApiInfo';
import { OpenApiParameter } from './OpenApiParameter';
import { OpenApiPath } from './OpenApiPath';
import { OpenApiResponse } from './OpenApiResponse';
import { OpenApiSchema } from './OpenApiSchema';
import { OpenApiSecurityRequirement } from './OpenApiSecurityRequirement';
import { OpenApiSecurityScheme } from './OpenApiSecurityScheme';
import { OpenApiTag } from './OpenApiTag';
import {Dictionary} from '../../../utils/types';
import {OpenApiExternalDocs} from './OpenApiExternalDocs';
import {OpenApiInfo} from './OpenApiInfo';
import {OpenApiParameter} from './OpenApiParameter';
import {OpenApiPath} from './OpenApiPath';
import {OpenApiResponse} from './OpenApiResponse';
import {OpenApiSchema} from './OpenApiSchema';
import {OpenApiSecurityRequirement} from './OpenApiSecurityRequirement';
import {OpenApiSecurityScheme} from './OpenApiSecurityScheme';
import {OpenApiTag} from './OpenApiTag';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md

View File

@ -1,5 +1,5 @@
import { Dictionary } from '../../../utils/types';
import { OpenApiItems } from './OpenApiItems';
import {Dictionary} from '../../../utils/types';
import {OpenApiItems} from './OpenApiItems';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#headerObject

View File

@ -1,5 +1,5 @@
import { OpenApiContact } from './OpenApiContact';
import { OpenApiLicense } from './OpenApiLicense';
import {OpenApiContact} from './OpenApiContact';
import {OpenApiLicense} from './OpenApiLicense';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#infoObject

View File

@ -1,7 +1,7 @@
import { OpenApiExternalDocs } from './OpenApiExternalDocs';
import { OpenApiParameter } from './OpenApiParameter';
import { OpenApiResponses } from './OpenApiResponses';
import { OpenApiSecurityRequirement } from './OpenApiSecurityRequirement';
import {OpenApiExternalDocs} from './OpenApiExternalDocs';
import {OpenApiParameter} from './OpenApiParameter';
import {OpenApiResponses} from './OpenApiResponses';
import {OpenApiSecurityRequirement} from './OpenApiSecurityRequirement';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#operationObject

View File

@ -1,6 +1,6 @@
import { OpenApiItems } from './OpenApiItems';
import { OpenApiReference } from './OpenApiReference';
import { OpenApiSchema } from './OpenApiSchema';
import {OpenApiItems} from './OpenApiItems';
import {OpenApiReference} from './OpenApiReference';
import {OpenApiSchema} from './OpenApiSchema';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#parameterObject

View File

@ -1,6 +1,6 @@
import { OpenApiOperation } from './OpenApiOperation';
import { OpenApiParameter } from './OpenApiParameter';
import { OpenApiReference } from './OpenApiReference';
import {OpenApiOperation} from './OpenApiOperation';
import {OpenApiParameter} from './OpenApiParameter';
import {OpenApiReference} from './OpenApiReference';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#pathItemObject

View File

@ -1,8 +1,8 @@
import { Dictionary } from '../../../utils/types';
import { OpenApiExample } from './OpenApiExample';
import { OpenApiHeader } from './OpenApiHeader';
import { OpenApiReference } from './OpenApiReference';
import { OpenApiSchema } from './OpenApiSchema';
import {Dictionary} from '../../../utils/types';
import {OpenApiExample} from './OpenApiExample';
import {OpenApiHeader} from './OpenApiHeader';
import {OpenApiReference} from './OpenApiReference';
import {OpenApiSchema} from './OpenApiSchema';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#responseObject

View File

@ -1,4 +1,4 @@
import { OpenApiResponse } from './OpenApiResponse';
import {OpenApiResponse} from './OpenApiResponse';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#responsesObject

View File

@ -1,7 +1,7 @@
import { Dictionary } from '../../../utils/types';
import { OpenApiExternalDocs } from './OpenApiExternalDocs';
import { OpenApiReference } from './OpenApiReference';
import { OpenApiXml } from './OpenApiXml';
import {Dictionary} from '../../../utils/types';
import {OpenApiExternalDocs} from './OpenApiExternalDocs';
import {OpenApiReference} from './OpenApiReference';
import {OpenApiXml} from './OpenApiXml';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#schemaObject

View File

@ -1,4 +1,4 @@
import { Dictionary } from '../../../utils/types';
import {Dictionary} from '../../../utils/types';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#securitySchemeObject

View File

@ -1,4 +1,4 @@
import { OpenApiExternalDocs } from './OpenApiExternalDocs';
import {OpenApiExternalDocs} from './OpenApiExternalDocs';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#tagObject

View File

@ -1,4 +1,4 @@
import { EOL } from 'os';
import {EOL} from 'os';
export function getComment(comment?: string): string | null {
if (comment) {

View File

@ -1,5 +1,5 @@
import { Enum } from '../../../client/interfaces/Enum';
import { PrimaryType } from './constants';
import {Enum} from '../../../client/interfaces/Enum';
import {PrimaryType} from './constants';
export function getEnum(values?: (string | number)[]): Enum[] {
if (Array.isArray(values)) {

View File

@ -1,5 +1,5 @@
import { Enum } from '../../../client/interfaces/Enum';
import { PrimaryType } from './constants';
import {Enum} from '../../../client/interfaces/Enum';
import {PrimaryType} from './constants';
export function getEnumFromDescription(description: string): Enum[] {
// Check if we can find this special format string:

View File

@ -1,4 +1,4 @@
import { Enum } from '../../../client/interfaces/Enum';
import {Enum} from '../../../client/interfaces/Enum';
export function getEnumValues(enumerators: Enum[]): string[] {
// Fetch values from the symbols, just to be sure we filter out

View File

@ -1,4 +1,4 @@
import { getMappedType } from './getMappedType';
import {getMappedType} from './getMappedType';
describe('getMappedType', () => {
it('should map types to the basics', () => {

View File

@ -1,4 +1,4 @@
import { PrimaryType, TYPE_MAPPINGS } from './constants';
import {PrimaryType, TYPE_MAPPINGS} from './constants';
/**
* Get mapped type for given type to any basic Typescript/Javascript type.

View File

@ -1,12 +1,12 @@
import { Model } from '../../../client/interfaces/Model';
import { OpenApi } from '../interfaces/OpenApi';
import { OpenApiSchema } from '../interfaces/OpenApiSchema';
import { PrimaryType } from './constants';
import { getComment } from './getComment';
import { getEnum } from './getEnum';
import { getEnumFromDescription } from './getEnumFromDescription';
import { getModelProperties } from './getModelProperties';
import { getType } from './getType';
import {Model} from '../../../client/interfaces/Model';
import {OpenApi} from '../interfaces/OpenApi';
import {OpenApiSchema} from '../interfaces/OpenApiSchema';
import {PrimaryType} from './constants';
import {getComment} from './getComment';
import {getEnum} from './getEnum';
import {getEnumFromDescription} from './getEnumFromDescription';
import {getModelProperties} from './getModelProperties';
import {getType} from './getType';
export function getModel(openApi: OpenApi, definition: OpenApiSchema, isProperty: boolean = false, name: string = ''): Model {
const model: Model = {
@ -21,6 +21,20 @@ export function getModel(openApi: OpenApi, definition: OpenApiSchema, isProperty
isReadOnly: definition.readOnly === true,
isNullable: false,
isRequired: false,
format: definition.format,
maximum: definition.maximum,
exclusiveMaximum: definition.exclusiveMaximum,
minimum: definition.minimum,
exclusiveMinimum: definition.exclusiveMinimum,
multipleOf: definition.multipleOf,
maxLength: definition.maxLength,
minLength: definition.minLength,
pattern: definition.pattern,
maxItems: definition.maxItems,
minItems: definition.minItems,
uniqueItems: definition.uniqueItems,
maxProperties: definition.maxProperties,
minProperties: definition.minProperties,
imports: [],
extends: [],
enum: [],

View File

@ -1,9 +1,9 @@
import { Model } from '../../../client/interfaces/Model';
import { OpenApi } from '../interfaces/OpenApi';
import { OpenApiSchema } from '../interfaces/OpenApiSchema';
import { getComment } from './getComment';
import { getModel } from './getModel';
import { getType } from './getType';
import {Model} from '../../../client/interfaces/Model';
import {OpenApi} from '../interfaces/OpenApi';
import {OpenApiSchema} from '../interfaces/OpenApiSchema';
import {getComment} from './getComment';
import {getModel} from './getModel';
import {getType} from './getType';
export function getModelProperties(openApi: OpenApi, definition: OpenApiSchema): Model[] {
const models: Model[] = [];
@ -25,6 +25,20 @@ export function getModelProperties(openApi: OpenApi, definition: OpenApiSchema):
isReadOnly: property.readOnly === true,
isRequired: propertyRequired === true,
isNullable: false,
format: property.format,
maximum: property.maximum,
exclusiveMaximum: property.exclusiveMaximum,
minimum: property.minimum,
exclusiveMinimum: property.exclusiveMinimum,
multipleOf: property.multipleOf,
maxLength: property.maxLength,
minLength: property.minLength,
pattern: property.pattern,
maxItems: property.maxItems,
minItems: property.minItems,
uniqueItems: property.uniqueItems,
maxProperties: property.maxProperties,
minProperties: property.minProperties,
imports: model.imports,
extends: [],
enum: [],
@ -45,6 +59,20 @@ export function getModelProperties(openApi: OpenApi, definition: OpenApiSchema):
isReadOnly: property.readOnly === true,
isRequired: propertyRequired === true,
isNullable: false,
format: property.format,
maximum: property.maximum,
exclusiveMaximum: property.exclusiveMaximum,
minimum: property.minimum,
exclusiveMinimum: property.exclusiveMinimum,
multipleOf: property.multipleOf,
maxLength: property.maxLength,
minLength: property.minLength,
pattern: property.pattern,
maxItems: property.maxItems,
minItems: property.minItems,
uniqueItems: property.uniqueItems,
maxProperties: property.maxProperties,
minProperties: property.minProperties,
imports: model.imports,
extends: model.extends,
enum: model.enum,

View File

@ -1,4 +1,4 @@
import { getModelTemplate } from './getModelTemplate';
import {getModelTemplate} from './getModelTemplate';
describe('getModelTemplate', () => {
it('should return generic for template type', () => {

View File

@ -1,4 +1,4 @@
import { Type } from '../../../client/interfaces/Type';
import {Type} from '../../../client/interfaces/Type';
/**
* If our model has a template type, then we want to generalize that!

View File

@ -1,7 +1,7 @@
import { Model } from '../../../client/interfaces/Model';
import { OpenApi } from '../interfaces/OpenApi';
import { getModel } from './getModel';
import { getType } from './getType';
import {Model} from '../../../client/interfaces/Model';
import {OpenApi} from '../interfaces/OpenApi';
import {getModel} from './getModel';
import {getType} from './getType';
export function getModels(openApi: OpenApi): Model[] {
const models = new Map<string, Model>();

View File

@ -1,14 +1,14 @@
import { OpenApi } from '../interfaces/OpenApi';
import { OpenApiOperation } from '../interfaces/OpenApiOperation';
import { Operation } from '../../../client/interfaces/Operation';
import { getComment } from './getComment';
import { getOperationErrors } from './getOperationErrors';
import { getOperationName } from './getOperationName';
import { getOperationParameters } from './getOperationParameters';
import { getOperationPath } from './getOperationPath';
import { getOperationResponses } from './getOperationResponses';
import { getOperationResults } from './getOperationResults';
import { getServiceClassName } from './getServiceClassName';
import {OpenApi} from '../interfaces/OpenApi';
import {OpenApiOperation} from '../interfaces/OpenApiOperation';
import {Operation} from '../../../client/interfaces/Operation';
import {getComment} from './getComment';
import {getOperationErrors} from './getOperationErrors';
import {getOperationName} from './getOperationName';
import {getOperationParameters} from './getOperationParameters';
import {getOperationPath} from './getOperationPath';
import {getOperationResponses} from './getOperationResponses';
import {getOperationResults} from './getOperationResults';
import {getServiceClassName} from './getServiceClassName';
export function getOperation(openApi: OpenApi, url: string, method: string, op: OpenApiOperation): Operation {
const serviceName = (op.tags && op.tags[0]) || 'Service';

View File

@ -1,5 +1,5 @@
import { OperationError } from '../../../client/interfaces/OperationError';
import { OperationResponse } from '../../../client/interfaces/OperationResponse';
import {OperationError} from '../../../client/interfaces/OperationError';
import {OperationResponse} from '../../../client/interfaces/OperationResponse';
export function getOperationErrors(operationResponses: OperationResponse[]): OperationError[] {
return operationResponses

View File

@ -1,4 +1,4 @@
import { getOperationName } from './getOperationName';
import {getOperationName} from './getOperationName';
describe('getOperationName', () => {
it('should produce correct result', () => {

View File

@ -1,14 +1,14 @@
import { OpenApi } from '../interfaces/OpenApi';
import { OpenApiParameter } from '../interfaces/OpenApiParameter';
import { OperationParameter } from '../../../client/interfaces/OperationParameter';
import { PrimaryType } from './constants';
import { getComment } from './getComment';
import { getEnum } from './getEnum';
import { getEnumFromDescription } from './getEnumFromDescription';
import { getModel } from './getModel';
import { getOperationParameterDefault } from './getOperationParameterDefault';
import { getOperationParameterName } from './getOperationParameterName';
import { getType } from './getType';
import {OpenApi} from '../interfaces/OpenApi';
import {OpenApiParameter} from '../interfaces/OpenApiParameter';
import {OperationParameter} from '../../../client/interfaces/OperationParameter';
import {PrimaryType} from './constants';
import {getComment} from './getComment';
import {getEnum} from './getEnum';
import {getEnumFromDescription} from './getEnumFromDescription';
import {getModel} from './getModel';
import {getOperationParameterDefault} from './getOperationParameterDefault';
import {getOperationParameterName} from './getOperationParameterName';
import {getType} from './getType';
export function getOperationParameter(openApi: OpenApi, parameter: OpenApiParameter): OperationParameter {
const operationParameter: OperationParameter = {
@ -25,6 +25,18 @@ export function getOperationParameter(openApi: OpenApi, parameter: OpenApiParame
isReadOnly: false,
isRequired: parameter.required === true,
isNullable: false,
format: parameter.format,
maximum: parameter.maximum,
exclusiveMaximum: parameter.exclusiveMaximum,
minimum: parameter.minimum,
exclusiveMinimum: parameter.exclusiveMinimum,
multipleOf: parameter.multipleOf,
maxLength: parameter.maxLength,
minLength: parameter.minLength,
pattern: parameter.pattern,
maxItems: parameter.maxItems,
minItems: parameter.minItems,
uniqueItems: parameter.uniqueItems,
imports: [],
extends: [],
enum: [],

View File

@ -1,5 +1,5 @@
import { OpenApiParameter } from '../interfaces/OpenApiParameter';
import { OperationParameter } from '../../../client/interfaces/OperationParameter';
import {OpenApiParameter} from '../interfaces/OpenApiParameter';
import {OperationParameter} from '../../../client/interfaces/OperationParameter';
export function getOperationParameterDefault(parameter: OpenApiParameter, operationParameter: OperationParameter): string | null {
if (parameter.default === null) {

View File

@ -1,9 +1,9 @@
import { OpenApi } from '../interfaces/OpenApi';
import { OpenApiParameter } from '../interfaces/OpenApiParameter';
import { OperationParameter } from '../../../client/interfaces/OperationParameter';
import { OperationParameters } from '../../../client/interfaces/OperationParameters';
import { getOperationParameter } from './getOperationParameter';
import { getRef } from './getRef';
import {OpenApi} from '../interfaces/OpenApi';
import {OpenApiParameter} from '../interfaces/OpenApiParameter';
import {OperationParameter} from '../../../client/interfaces/OperationParameter';
import {OperationParameters} from '../../../client/interfaces/OperationParameters';
import {getOperationParameter} from './getOperationParameter';
import {getRef} from './getRef';
function sortByRequired(a: OperationParameter, b: OperationParameter): number {
return a.isRequired && !b.isRequired ? -1 : !a.isRequired && b.isRequired ? 1 : 0;

View File

@ -1,4 +1,4 @@
import { getOperationPath } from './getOperationPath';
import {getOperationPath} from './getOperationPath';
describe('getOperationPath', () => {
it('should produce correct result', () => {

View File

@ -1,10 +1,10 @@
import { OpenApi } from '../interfaces/OpenApi';
import { OpenApiResponse } from '../interfaces/OpenApiResponse';
import { OperationResponse } from '../../../client/interfaces/OperationResponse';
import { PrimaryType } from './constants';
import { getComment } from './getComment';
import { getModel } from './getModel';
import { getType } from './getType';
import {OpenApi} from '../interfaces/OpenApi';
import {OpenApiResponse} from '../interfaces/OpenApiResponse';
import {OperationResponse} from '../../../client/interfaces/OperationResponse';
import {PrimaryType} from './constants';
import {getComment} from './getComment';
import {getModel} from './getModel';
import {getType} from './getType';
export function getOperationResponse(openApi: OpenApi, response: OpenApiResponse, responseCode: number): OperationResponse {
const operationResponse: OperationResponse = {
@ -46,6 +46,23 @@ export function getOperationResponse(openApi: OpenApi, response: OpenApiResponse
operationResponse.base = model.base;
operationResponse.template = model.template;
operationResponse.link = model.link;
operationResponse.isReadOnly = model.isReadOnly;
operationResponse.isRequired = model.isRequired;
operationResponse.isNullable = model.isNullable;
operationResponse.format = model.format;
operationResponse.maximum = model.maximum;
operationResponse.exclusiveMaximum = model.exclusiveMaximum;
operationResponse.minimum = model.minimum;
operationResponse.exclusiveMinimum = model.exclusiveMinimum;
operationResponse.multipleOf = model.multipleOf;
operationResponse.maxLength = model.maxLength;
operationResponse.minLength = model.minLength;
operationResponse.pattern = model.pattern;
operationResponse.maxItems = model.maxItems;
operationResponse.minItems = model.minItems;
operationResponse.uniqueItems = model.uniqueItems;
operationResponse.maxProperties = model.maxProperties;
operationResponse.minProperties = model.minProperties;
operationResponse.imports.push(...model.imports);
operationResponse.extends.push(...model.extends);
operationResponse.enum.push(...model.enum);

View File

@ -1,10 +1,10 @@
import { OpenApi } from '../interfaces/OpenApi';
import { OpenApiResponse } from '../interfaces/OpenApiResponse';
import { OpenApiResponses } from '../interfaces/OpenApiResponses';
import { OperationResponse } from '../../../client/interfaces/OperationResponse';
import { getOperationResponse } from './getOperationResponse';
import { getOperationResponseCode } from './getOperationResponseCode';
import { getRef } from './getRef';
import {OpenApi} from '../interfaces/OpenApi';
import {OpenApiResponse} from '../interfaces/OpenApiResponse';
import {OpenApiResponses} from '../interfaces/OpenApiResponses';
import {OperationResponse} from '../../../client/interfaces/OperationResponse';
import {getOperationResponse} from './getOperationResponse';
import {getOperationResponseCode} from './getOperationResponseCode';
import {getRef} from './getRef';
export function getOperationResponses(openApi: OpenApi, responses: OpenApiResponses): OperationResponse[] {
const operationResponses: OperationResponse[] = [];

View File

@ -1,6 +1,6 @@
import { Model } from '../../../client/interfaces/Model';
import { OperationResponse } from '../../../client/interfaces/OperationResponse';
import { PrimaryType } from './constants';
import {Model} from '../../../client/interfaces/Model';
import {OperationResponse} from '../../../client/interfaces/OperationResponse';
import {PrimaryType} from './constants';
function areEqual(a: Model, b: Model): boolean {
const equal = a.type === b.type && a.base === b.base && a.template === b.template;

View File

@ -1,5 +1,5 @@
import { OpenApi } from '../interfaces/OpenApi';
import { OpenApiReference } from '../interfaces/OpenApiReference';
import {OpenApi} from '../interfaces/OpenApi';
import {OpenApiReference} from '../interfaces/OpenApiReference';
export function getRef<T>(openApi: OpenApi, item: T & OpenApiReference): T {
if (item.$ref) {

View File

@ -1,4 +1,4 @@
import { getServer } from './getServer';
import {getServer} from './getServer';
describe('getServer', () => {
it('should produce correct result', () => {

View File

@ -1,4 +1,4 @@
import { OpenApi } from '../interfaces/OpenApi';
import {OpenApi} from '../interfaces/OpenApi';
/**
* Get the base server url.

View File

@ -1,4 +1,4 @@
import { getServiceClassName } from './getServiceClassName';
import {getServiceClassName} from './getServiceClassName';
describe('getServiceClassName', () => {
it('should produce correct result', () => {

View File

@ -6,7 +6,7 @@ import camelCase from 'camelcase';
*/
export function getServiceClassName(value: string): string {
const clean = value.replace(/[^\w\s\-]+/g, '_').trim();
const name = camelCase(clean, { pascalCase: true });
const name = camelCase(clean, {pascalCase: true});
if (name && !name.endsWith('Service')) {
return `${name}Service`;
}

View File

@ -1,4 +1,4 @@
import { getServiceVersion } from './getServiceVersion';
import {getServiceVersion} from './getServiceVersion';
describe('getServiceVersion', () => {
it('should produce correct result', () => {

View File

@ -1,7 +1,7 @@
import { Method } from './constants';
import { OpenApi } from '../interfaces/OpenApi';
import { Service } from '../../../client/interfaces/Service';
import { getOperation } from './getOperation';
import {Method} from './constants';
import {OpenApi} from '../interfaces/OpenApi';
import {Service} from '../../../client/interfaces/Service';
import {getOperation} from './getOperation';
/**
* Get the OpenAPI services

View File

@ -1,4 +1,4 @@
import { getType } from './getType';
import {getType} from './getType';
describe('getType', () => {
it('should convert int', () => {

View File

@ -1,7 +1,7 @@
import { PrimaryType } from './constants';
import { Type } from '../../../client/interfaces/Type';
import { getMappedType, hasMappedType } from './getMappedType';
import { stripNamespace } from './stripNamespace';
import {PrimaryType} from './constants';
import {Type} from '../../../client/interfaces/Type';
import {getMappedType, hasMappedType} from './getMappedType';
import {stripNamespace} from './stripNamespace';
/**
* Parse any string value into a type object.

View File

@ -1,4 +1,4 @@
import { isPrimaryType } from './isPrimaryType';
import {isPrimaryType} from './isPrimaryType';
describe('isPrimaryType', () => {
it('should return true for primary types', () => {

View File

@ -1,4 +1,4 @@
import { PrimaryType } from './constants';
import {PrimaryType} from './constants';
/**
* Check if given type is a primary type.

View File

@ -1,4 +1,4 @@
import { stripNamespace } from './stripNamespace';
import {stripNamespace} from './stripNamespace';
describe('stripNamespace', () => {
it('should strip namespace', () => {

View File

@ -1,9 +1,9 @@
import { Client } from '../../client/interfaces/Client';
import { OpenApi } from './interfaces/OpenApi';
import { getModels } from './parser/getModels';
import { getServer } from './parser/getServer';
import { getServiceVersion } from './parser/getServiceVersion';
import { getServices } from './parser/getServices';
import {Client} from '../../client/interfaces/Client';
import {OpenApi} from './interfaces/OpenApi';
import {getModels} from './parser/getModels';
import {getServer} from './parser/getServer';
import {getServiceVersion} from './parser/getServiceVersion';
import {getServices} from './parser/getServices';
/**
* Parse the OpenAPI specification to a Client model that contains

View File

@ -1,10 +1,10 @@
import { OpenApiComponents } from './OpenApiComponents';
import { OpenApiExternalDocs } from './OpenApiExternalDocs';
import { OpenApiInfo } from './OpenApiInfo';
import { OpenApiPaths } from './OpenApiPaths';
import { OpenApiSecurityRequirement } from './OpenApiSecurityRequirement';
import { OpenApiServer } from './OpenApiServer';
import { OpenApiTag } from './OpenApiTag';
import {OpenApiComponents} from './OpenApiComponents';
import {OpenApiExternalDocs} from './OpenApiExternalDocs';
import {OpenApiInfo} from './OpenApiInfo';
import {OpenApiPaths} from './OpenApiPaths';
import {OpenApiSecurityRequirement} from './OpenApiSecurityRequirement';
import {OpenApiServer} from './OpenApiServer';
import {OpenApiTag} from './OpenApiTag';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md

View File

@ -1,5 +1,5 @@
import { OpenApiPath } from './OpenApiPath';
import { OpenApiReference } from './OpenApiReference';
import {OpenApiPath} from './OpenApiPath';
import {OpenApiReference} from './OpenApiReference';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#callbackObject

View File

@ -1,13 +1,13 @@
import { Dictionary } from '../../../utils/types';
import { OpenApiCallback } from './OpenApiCallback';
import { OpenApiExample } from './OpenApiExample';
import { OpenApiHeader } from './OpenApiHeader';
import { OpenApiLink } from './OpenApiLink';
import { OpenApiParameter } from './OpenApiParameter';
import { OpenApiRequestBody } from './OpenApiRequestBody';
import { OpenApiResponses } from './OpenApiResponses';
import { OpenApiSchema } from './OpenApiSchema';
import { OpenApiSecurityScheme } from './OpenApiSecurityScheme';
import {Dictionary} from '../../../utils/types';
import {OpenApiCallback} from './OpenApiCallback';
import {OpenApiExample} from './OpenApiExample';
import {OpenApiHeader} from './OpenApiHeader';
import {OpenApiLink} from './OpenApiLink';
import {OpenApiParameter} from './OpenApiParameter';
import {OpenApiRequestBody} from './OpenApiRequestBody';
import {OpenApiResponses} from './OpenApiResponses';
import {OpenApiSchema} from './OpenApiSchema';
import {OpenApiSecurityScheme} from './OpenApiSecurityScheme';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#componentsObject

View File

@ -1,4 +1,4 @@
import { Dictionary } from '../../../utils/types';
import {Dictionary} from '../../../utils/types';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#discriminatorObject

View File

@ -1,5 +1,5 @@
import { Dictionary } from '../../../utils/types';
import { OpenApiHeader } from './OpenApiHeader';
import {Dictionary} from '../../../utils/types';
import {OpenApiHeader} from './OpenApiHeader';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#encodingObject

View File

@ -1,4 +1,4 @@
import { OpenApiReference } from './OpenApiReference';
import {OpenApiReference} from './OpenApiReference';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#exampleObject

View File

@ -1,7 +1,7 @@
import { Dictionary } from '../../../utils/types';
import { OpenApiExample } from './OpenApiExample';
import { OpenApiReference } from './OpenApiReference';
import { OpenApiSchema } from './OpenApiSchema';
import {Dictionary} from '../../../utils/types';
import {OpenApiExample} from './OpenApiExample';
import {OpenApiReference} from './OpenApiReference';
import {OpenApiSchema} from './OpenApiSchema';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#headerObject

View File

@ -1,5 +1,5 @@
import { OpenApiContact } from './OpenApiContact';
import { OpenApiLicense } from './OpenApiLicense';
import {OpenApiContact} from './OpenApiContact';
import {OpenApiLicense} from './OpenApiLicense';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#infoObject

View File

@ -1,6 +1,6 @@
import { Dictionary } from '../../../utils/types';
import { OpenApiReference } from './OpenApiReference';
import { OpenApiServer } from './OpenApiServer';
import {Dictionary} from '../../../utils/types';
import {OpenApiReference} from './OpenApiReference';
import {OpenApiServer} from './OpenApiServer';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#linkObject

View File

@ -1,8 +1,8 @@
import { Dictionary } from '../../../utils/types';
import { OpenApiEncoding } from './OpenApiEncoding';
import { OpenApiExample } from './OpenApiExample';
import { OpenApiReference } from './OpenApiReference';
import { OpenApiSchema } from './OpenApiSchema';
import {Dictionary} from '../../../utils/types';
import {OpenApiEncoding} from './OpenApiEncoding';
import {OpenApiExample} from './OpenApiExample';
import {OpenApiReference} from './OpenApiReference';
import {OpenApiSchema} from './OpenApiSchema';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#mediaTypeObject

View File

@ -1,4 +1,4 @@
import { Dictionary } from '../../../utils/types';
import {Dictionary} from '../../../utils/types';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#oauthFlowObject

View File

@ -1,4 +1,4 @@
import { OpenApiOAuthFlow } from './OpenApiOAuthFlow';
import {OpenApiOAuthFlow} from './OpenApiOAuthFlow';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#oauthFlowsObject

View File

@ -1,11 +1,11 @@
import { Dictionary } from '../../../utils/types';
import { OpenApiCallback } from './OpenApiCallback';
import { OpenApiExternalDocs } from './OpenApiExternalDocs';
import { OpenApiParameter } from './OpenApiParameter';
import { OpenApiRequestBody } from './OpenApiRequestBody';
import { OpenApiResponses } from './OpenApiResponses';
import { OpenApiSecurityRequirement } from './OpenApiSecurityRequirement';
import { OpenApiServer } from './OpenApiServer';
import {Dictionary} from '../../../utils/types';
import {OpenApiCallback} from './OpenApiCallback';
import {OpenApiExternalDocs} from './OpenApiExternalDocs';
import {OpenApiParameter} from './OpenApiParameter';
import {OpenApiRequestBody} from './OpenApiRequestBody';
import {OpenApiResponses} from './OpenApiResponses';
import {OpenApiSecurityRequirement} from './OpenApiSecurityRequirement';
import {OpenApiServer} from './OpenApiServer';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#operationObject

View File

@ -1,7 +1,7 @@
import { Dictionary } from '../../../utils/types';
import { OpenApiExample } from './OpenApiExample';
import { OpenApiReference } from './OpenApiReference';
import { OpenApiSchema } from './OpenApiSchema';
import {Dictionary} from '../../../utils/types';
import {OpenApiExample} from './OpenApiExample';
import {OpenApiReference} from './OpenApiReference';
import {OpenApiSchema} from './OpenApiSchema';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#parameterObject

View File

@ -1,6 +1,6 @@
import { OpenApiOperation } from './OpenApiOperation';
import { OpenApiParameter } from './OpenApiParameter';
import { OpenApiServer } from './OpenApiServer';
import {OpenApiOperation} from './OpenApiOperation';
import {OpenApiParameter} from './OpenApiParameter';
import {OpenApiServer} from './OpenApiServer';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#pathItemObject

View File

@ -1,4 +1,4 @@
import { OpenApiPath } from './OpenApiPath';
import {OpenApiPath} from './OpenApiPath';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#pathsObject

View File

@ -1,6 +1,6 @@
import { Dictionary } from '../../../utils/types';
import { OpenApiMediaType } from './OpenApiMediaType';
import { OpenApiReference } from './OpenApiReference';
import {Dictionary} from '../../../utils/types';
import {OpenApiMediaType} from './OpenApiMediaType';
import {OpenApiReference} from './OpenApiReference';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#requestBodyObject

View File

@ -1,8 +1,8 @@
import { Dictionary } from '../../../utils/types';
import { OpenApiHeader } from './OpenApiHeader';
import { OpenApiLink } from './OpenApiLink';
import { OpenApiMediaType } from './OpenApiMediaType';
import { OpenApiReference } from './OpenApiReference';
import {Dictionary} from '../../../utils/types';
import {OpenApiHeader} from './OpenApiHeader';
import {OpenApiLink} from './OpenApiLink';
import {OpenApiMediaType} from './OpenApiMediaType';
import {OpenApiReference} from './OpenApiReference';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#responseObject

View File

@ -1,5 +1,5 @@
import { OpenApiReference } from './OpenApiReference';
import { OpenApiResponse } from './OpenApiResponse';
import {OpenApiReference} from './OpenApiReference';
import {OpenApiResponse} from './OpenApiResponse';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#responsesObject

View File

@ -1,8 +1,8 @@
import { Dictionary } from '../../../utils/types';
import { OpenApiDiscriminator } from './OpenApiDiscriminator';
import { OpenApiExternalDocs } from './OpenApiExternalDocs';
import { OpenApiReference } from './OpenApiReference';
import { OpenApiXml } from './OpenApiXml';
import {Dictionary} from '../../../utils/types';
import {OpenApiDiscriminator} from './OpenApiDiscriminator';
import {OpenApiExternalDocs} from './OpenApiExternalDocs';
import {OpenApiReference} from './OpenApiReference';
import {OpenApiXml} from './OpenApiXml';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#schemaObject
@ -19,7 +19,7 @@ export interface OpenApiSchema extends OpenApiReference {
pattern?: string;
maxItems?: number;
minItems?: number;
uniqueItems?: number;
uniqueItems?: boolean;
maxProperties?: number;
minProperties?: number;
required?: string[];

View File

@ -1,5 +1,5 @@
import { OpenApiOAuthFlows } from './OpenApiOAuthFlows';
import { OpenApiReference } from './OpenApiReference';
import {OpenApiOAuthFlows} from './OpenApiOAuthFlows';
import {OpenApiReference} from './OpenApiReference';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#securitySchemeObject

View File

@ -1,5 +1,5 @@
import { Dictionary } from '../../../utils/types';
import { OpenApiServerVariable } from './OpenApiServerVariable';
import {Dictionary} from '../../../utils/types';
import {OpenApiServerVariable} from './OpenApiServerVariable';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#serverObject

View File

@ -1,4 +1,4 @@
import { OpenApiExternalDocs } from './OpenApiExternalDocs';
import {OpenApiExternalDocs} from './OpenApiExternalDocs';
/**
* https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#tagObject

View File

@ -1,4 +1,4 @@
import { EOL } from 'os';
import {EOL} from 'os';
export function getComment(comment?: string): string | null {
if (comment) {

View File

@ -1,8 +1,8 @@
import { ContentType } from './constants';
import { Dictionary } from '../../../utils/types';
import { OpenApi } from '../interfaces/OpenApi';
import { OpenApiMediaType } from '../interfaces/OpenApiMediaType';
import { OpenApiSchema } from '../interfaces/OpenApiSchema';
import {ContentType} from './constants';
import {Dictionary} from '../../../utils/types';
import {OpenApi} from '../interfaces/OpenApi';
import {OpenApiMediaType} from '../interfaces/OpenApiMediaType';
import {OpenApiSchema} from '../interfaces/OpenApiSchema';
export function getContent(openApi: OpenApi, content: Dictionary<OpenApiMediaType>): OpenApiSchema | null {
/* prettier-ignore */

View File

@ -1,5 +1,5 @@
import { Enum } from '../../../client/interfaces/Enum';
import { PrimaryType } from './constants';
import {Enum} from '../../../client/interfaces/Enum';
import {PrimaryType} from './constants';
export function getEnum(values?: (string | number)[]): Enum[] {
if (Array.isArray(values)) {

View File

@ -1,5 +1,5 @@
import { Enum } from '../../../client/interfaces/Enum';
import { PrimaryType } from './constants';
import {Enum} from '../../../client/interfaces/Enum';
import {PrimaryType} from './constants';
export function getEnumFromDescription(description: string): Enum[] {
// Check if we can find this special format string:

View File

@ -1,4 +1,4 @@
import { Enum } from '../../../client/interfaces/Enum';
import {Enum} from '../../../client/interfaces/Enum';
export function getEnumValues(enumerators: Enum[]): string[] {
// Fetch values from the symbols, just to be sure we filter out

View File

@ -1,4 +1,4 @@
import { getMappedType } from './getMappedType';
import {getMappedType} from './getMappedType';
describe('getMappedType', () => {
it('should map types to the basics', () => {

View File

@ -1,4 +1,4 @@
import { PrimaryType, TYPE_MAPPINGS } from './constants';
import {PrimaryType, TYPE_MAPPINGS} from './constants';
/**
* Get mapped type for given type to any basic Typescript/Javascript type.

View File

@ -1,13 +1,13 @@
import { Model } from '../../../client/interfaces/Model';
import { OpenApi } from '../interfaces/OpenApi';
import { OpenApiSchema } from '../interfaces/OpenApiSchema';
import { PrimaryType } from './constants';
import { getComment } from './getComment';
import { getEnum } from './getEnum';
import { getEnumFromDescription } from './getEnumFromDescription';
import { getModelDefault } from './getModelDefault';
import { getModelProperties } from './getModelProperties';
import { getType } from './getType';
import {Model} from '../../../client/interfaces/Model';
import {OpenApi} from '../interfaces/OpenApi';
import {OpenApiSchema} from '../interfaces/OpenApiSchema';
import {PrimaryType} from './constants';
import {getComment} from './getComment';
import {getEnum} from './getEnum';
import {getEnumFromDescription} from './getEnumFromDescription';
import {getModelDefault} from './getModelDefault';
import {getModelProperties} from './getModelProperties';
import {getType} from './getType';
export function getModel(openApi: OpenApi, definition: OpenApiSchema, isProperty: boolean = false, name: string = ''): Model {
const model: Model = {

View File

@ -1,5 +1,5 @@
import { Model } from '../../../client/interfaces/Model';
import { OpenApiSchema } from '../interfaces/OpenApiSchema';
import {Model} from '../../../client/interfaces/Model';
import {OpenApiSchema} from '../interfaces/OpenApiSchema';
export function getModelDefault(definition: OpenApiSchema, model?: Model): string | null {
if (definition.default === null) {

View File

@ -1,9 +1,9 @@
import { Model } from '../../../client/interfaces/Model';
import { OpenApi } from '../interfaces/OpenApi';
import { OpenApiSchema } from '../interfaces/OpenApiSchema';
import { getComment } from './getComment';
import { getModel } from './getModel';
import { getType } from './getType';
import {Model} from '../../../client/interfaces/Model';
import {OpenApi} from '../interfaces/OpenApi';
import {OpenApiSchema} from '../interfaces/OpenApiSchema';
import {getComment} from './getComment';
import {getModel} from './getModel';
import {getType} from './getType';
export function getModelProperties(openApi: OpenApi, definition: OpenApiSchema): Model[] {
const models: Model[] = [];
@ -25,6 +25,20 @@ export function getModelProperties(openApi: OpenApi, definition: OpenApiSchema):
isReadOnly: property.readOnly === true,
isRequired: propertyRequired === true,
isNullable: property.nullable === true,
format: property.format,
maximum: property.maximum,
exclusiveMaximum: property.exclusiveMaximum,
minimum: property.minimum,
exclusiveMinimum: property.exclusiveMinimum,
multipleOf: property.multipleOf,
maxLength: property.maxLength,
minLength: property.minLength,
pattern: property.pattern,
maxItems: property.maxItems,
minItems: property.minItems,
uniqueItems: property.uniqueItems,
maxProperties: property.maxProperties,
minProperties: property.minProperties,
imports: model.imports,
extends: [],
enum: [],
@ -45,6 +59,20 @@ export function getModelProperties(openApi: OpenApi, definition: OpenApiSchema):
isReadOnly: property.readOnly === true,
isRequired: propertyRequired === true,
isNullable: property.nullable === true,
format: property.format,
maximum: property.maximum,
exclusiveMaximum: property.exclusiveMaximum,
minimum: property.minimum,
exclusiveMinimum: property.exclusiveMinimum,
multipleOf: property.multipleOf,
maxLength: property.maxLength,
minLength: property.minLength,
pattern: property.pattern,
maxItems: property.maxItems,
minItems: property.minItems,
uniqueItems: property.uniqueItems,
maxProperties: property.maxProperties,
minProperties: property.minProperties,
imports: model.imports,
extends: model.extends,
enum: model.enum,

View File

@ -1,4 +1,4 @@
import { getModelTemplate } from './getModelTemplate';
import {getModelTemplate} from './getModelTemplate';
describe('getModelTemplate', () => {
it('should return generic for template type', () => {

View File

@ -1,4 +1,4 @@
import { Type } from '../../../client/interfaces/Type';
import {Type} from '../../../client/interfaces/Type';
/**
* If our model has a template type, then we want to generalize that!

View File

@ -1,7 +1,7 @@
import { Model } from '../../../client/interfaces/Model';
import { OpenApi } from '../interfaces/OpenApi';
import { getModel } from './getModel';
import { getType } from './getType';
import {Model} from '../../../client/interfaces/Model';
import {OpenApi} from '../interfaces/OpenApi';
import {getModel} from './getModel';
import {getType} from './getType';
export function getModels(openApi: OpenApi): Model[] {
const models = new Map<string, Model>();

View File

@ -1,15 +1,15 @@
import { OpenApi } from '../interfaces/OpenApi';
import { OpenApiOperation } from '../interfaces/OpenApiOperation';
import { Operation } from '../../../client/interfaces/Operation';
import { getComment } from './getComment';
import { getOperationErrors } from './getOperationErrors';
import { getOperationName } from './getOperationName';
import { getOperationParameters } from './getOperationParameters';
import { getOperationPath } from './getOperationPath';
import { getOperationRequestBody } from './getOperationRequestBody';
import { getOperationResponses } from './getOperationResponses';
import { getOperationResults } from './getOperationResults';
import { getServiceClassName } from './getServiceClassName';
import {OpenApi} from '../interfaces/OpenApi';
import {OpenApiOperation} from '../interfaces/OpenApiOperation';
import {Operation} from '../../../client/interfaces/Operation';
import {getComment} from './getComment';
import {getOperationErrors} from './getOperationErrors';
import {getOperationName} from './getOperationName';
import {getOperationParameters} from './getOperationParameters';
import {getOperationPath} from './getOperationPath';
import {getOperationRequestBody} from './getOperationRequestBody';
import {getOperationResponses} from './getOperationResponses';
import {getOperationResults} from './getOperationResults';
import {getServiceClassName} from './getServiceClassName';
export function getOperation(openApi: OpenApi, url: string, method: string, op: OpenApiOperation): Operation {
const serviceName = (op.tags && op.tags[0]) || 'Service';

View File

@ -1,5 +1,5 @@
import { OperationError } from '../../../client/interfaces/OperationError';
import { OperationResponse } from '../../../client/interfaces/OperationResponse';
import {OperationError} from '../../../client/interfaces/OperationError';
import {OperationResponse} from '../../../client/interfaces/OperationResponse';
export function getOperationErrors(operationResponses: OperationResponse[]): OperationError[] {
return operationResponses

View File

@ -1,4 +1,4 @@
import { getOperationName } from './getOperationName';
import {getOperationName} from './getOperationName';
describe('getOperationName', () => {
it('should produce correct result', () => {

View File

@ -1,12 +1,12 @@
import { OpenApi } from '../interfaces/OpenApi';
import { OpenApiParameter } from '../interfaces/OpenApiParameter';
import { OperationParameter } from '../../../client/interfaces/OperationParameter';
import { PrimaryType } from './constants';
import { getComment } from './getComment';
import { getModel } from './getModel';
import { getModelDefault } from './getModelDefault';
import { getOperationParameterName } from './getOperationParameterName';
import { getType } from './getType';
import {OpenApi} from '../interfaces/OpenApi';
import {OpenApiParameter} from '../interfaces/OpenApiParameter';
import {OperationParameter} from '../../../client/interfaces/OperationParameter';
import {PrimaryType} from './constants';
import {getComment} from './getComment';
import {getModel} from './getModel';
import {getModelDefault} from './getModelDefault';
import {getOperationParameterName} from './getOperationParameterName';
import {getType} from './getType';
export function getOperationParameter(openApi: OpenApi, parameter: OpenApiParameter): OperationParameter {
const operationParameter: OperationParameter = {
@ -49,6 +49,7 @@ export function getOperationParameter(openApi: OpenApi, parameter: OpenApiParame
operationParameter.template = model.template;
operationParameter.imports.push(...model.imports);
operationParameter.default = getModelDefault(parameter.schema);
operationParameter.isRequired = operationParameter.default || operationParameter.isRequired;
return operationParameter;
} else {
@ -58,7 +59,25 @@ export function getOperationParameter(openApi: OpenApi, parameter: OpenApiParame
operationParameter.base = model.base;
operationParameter.template = model.template;
operationParameter.link = model.link;
operationParameter.isReadOnly = model.isReadOnly;
operationParameter.isRequired = model.isRequired;
operationParameter.isNullable = model.isNullable;
operationParameter.format = model.format;
operationParameter.maximum = model.maximum;
operationParameter.exclusiveMaximum = model.exclusiveMaximum;
operationParameter.minimum = model.minimum;
operationParameter.exclusiveMinimum = model.exclusiveMinimum;
operationParameter.multipleOf = model.multipleOf;
operationParameter.maxLength = model.maxLength;
operationParameter.minLength = model.minLength;
operationParameter.pattern = model.pattern;
operationParameter.maxItems = model.maxItems;
operationParameter.minItems = model.minItems;
operationParameter.uniqueItems = model.uniqueItems;
operationParameter.maxProperties = model.maxProperties;
operationParameter.minProperties = model.minProperties;
operationParameter.default = model.default;
operationParameter.isRequired = model.default || model.isRequired;
operationParameter.imports.push(...model.imports);
operationParameter.extends.push(...model.extends);
operationParameter.enum.push(...model.enum);

View File

@ -1,9 +1,9 @@
import { OpenApi } from '../interfaces/OpenApi';
import { OpenApiParameter } from '../interfaces/OpenApiParameter';
import { OperationParameter } from '../../../client/interfaces/OperationParameter';
import { OperationParameters } from '../../../client/interfaces/OperationParameters';
import { getOperationParameter } from './getOperationParameter';
import { getRef } from './getRef';
import {OpenApi} from '../interfaces/OpenApi';
import {OpenApiParameter} from '../interfaces/OpenApiParameter';
import {OperationParameter} from '../../../client/interfaces/OperationParameter';
import {OperationParameters} from '../../../client/interfaces/OperationParameters';
import {getOperationParameter} from './getOperationParameter';
import {getRef} from './getRef';
function sortByRequired(a: OperationParameter, b: OperationParameter): number {
return a.isRequired && !b.isRequired ? -1 : !a.isRequired && b.isRequired ? 1 : 0;

View File

@ -1,4 +1,4 @@
import { getOperationPath } from './getOperationPath';
import {getOperationPath} from './getOperationPath';
describe('getOperationPath', () => {
it('should produce correct result', () => {

View File

@ -1,11 +1,11 @@
import { OpenApi } from '../interfaces/OpenApi';
import { OpenApiRequestBody } from '../interfaces/OpenApiRequestBody';
import { OperationParameter } from '../../../client/interfaces/OperationParameter';
import { PrimaryType } from './constants';
import { getComment } from './getComment';
import { getContent } from './getContent';
import { getModel } from './getModel';
import { getType } from './getType';
import {OpenApi} from '../interfaces/OpenApi';
import {OpenApiRequestBody} from '../interfaces/OpenApiRequestBody';
import {OperationParameter} from '../../../client/interfaces/OperationParameter';
import {PrimaryType} from './constants';
import {getComment} from './getComment';
import {getContent} from './getContent';
import {getModel} from './getModel';
import {getType} from './getType';
export function getOperationRequestBody(openApi: OpenApi, parameter: OpenApiRequestBody): OperationParameter {
const requestBody: OperationParameter = {
@ -47,6 +47,23 @@ export function getOperationRequestBody(openApi: OpenApi, parameter: OpenApiRequ
requestBody.base = model.base;
requestBody.template = model.template;
requestBody.link = model.link;
requestBody.isReadOnly = model.isReadOnly;
requestBody.isRequired = model.isRequired;
requestBody.isNullable = model.isNullable;
requestBody.format = model.format;
requestBody.maximum = model.maximum;
requestBody.exclusiveMaximum = model.exclusiveMaximum;
requestBody.minimum = model.minimum;
requestBody.exclusiveMinimum = model.exclusiveMinimum;
requestBody.multipleOf = model.multipleOf;
requestBody.maxLength = model.maxLength;
requestBody.minLength = model.minLength;
requestBody.pattern = model.pattern;
requestBody.maxItems = model.maxItems;
requestBody.minItems = model.minItems;
requestBody.uniqueItems = model.uniqueItems;
requestBody.maxProperties = model.maxProperties;
requestBody.minProperties = model.minProperties;
requestBody.imports.push(...model.imports);
requestBody.extends.push(...model.extends);
requestBody.enum.push(...model.enum);

View File

@ -1,11 +1,11 @@
import { OpenApi } from '../interfaces/OpenApi';
import { OpenApiResponse } from '../interfaces/OpenApiResponse';
import { OperationResponse } from '../../../client/interfaces/OperationResponse';
import { PrimaryType } from './constants';
import { getComment } from './getComment';
import { getContent } from './getContent';
import { getModel } from './getModel';
import { getType } from './getType';
import {OpenApi} from '../interfaces/OpenApi';
import {OpenApiResponse} from '../interfaces/OpenApiResponse';
import {OperationResponse} from '../../../client/interfaces/OperationResponse';
import {PrimaryType} from './constants';
import {getComment} from './getComment';
import {getContent} from './getContent';
import {getModel} from './getModel';
import {getType} from './getType';
export function getOperationResponse(openApi: OpenApi, response: OpenApiResponse, responseCode: number): OperationResponse {
const operationResponse: OperationResponse = {
@ -45,6 +45,23 @@ export function getOperationResponse(openApi: OpenApi, response: OpenApiResponse
operationResponse.base = model.base;
operationResponse.template = model.template;
operationResponse.link = model.link;
operationResponse.isReadOnly = model.isReadOnly;
operationResponse.isRequired = model.isRequired;
operationResponse.isNullable = model.isNullable;
operationResponse.format = model.format;
operationResponse.maximum = model.maximum;
operationResponse.exclusiveMaximum = model.exclusiveMaximum;
operationResponse.minimum = model.minimum;
operationResponse.exclusiveMinimum = model.exclusiveMinimum;
operationResponse.multipleOf = model.multipleOf;
operationResponse.maxLength = model.maxLength;
operationResponse.minLength = model.minLength;
operationResponse.pattern = model.pattern;
operationResponse.maxItems = model.maxItems;
operationResponse.minItems = model.minItems;
operationResponse.uniqueItems = model.uniqueItems;
operationResponse.maxProperties = model.maxProperties;
operationResponse.minProperties = model.minProperties;
operationResponse.imports.push(...model.imports);
operationResponse.extends.push(...model.extends);
operationResponse.enum.push(...model.enum);

View File

@ -1,10 +1,10 @@
import { OpenApi } from '../interfaces/OpenApi';
import { OpenApiResponse } from '../interfaces/OpenApiResponse';
import { OpenApiResponses } from '../interfaces/OpenApiResponses';
import { OperationResponse } from '../../../client/interfaces/OperationResponse';
import { getOperationResponse } from './getOperationResponse';
import { getOperationResponseCode } from './getOperationResponseCode';
import { getRef } from './getRef';
import {OpenApi} from '../interfaces/OpenApi';
import {OpenApiResponse} from '../interfaces/OpenApiResponse';
import {OpenApiResponses} from '../interfaces/OpenApiResponses';
import {OperationResponse} from '../../../client/interfaces/OperationResponse';
import {getOperationResponse} from './getOperationResponse';
import {getOperationResponseCode} from './getOperationResponseCode';
import {getRef} from './getRef';
export function getOperationResponses(openApi: OpenApi, responses: OpenApiResponses): OperationResponse[] {
const operationResponses: OperationResponse[] = [];

View File

@ -1,6 +1,6 @@
import { Model } from '../../../client/interfaces/Model';
import { OperationResponse } from '../../../client/interfaces/OperationResponse';
import { PrimaryType } from './constants';
import {Model} from '../../../client/interfaces/Model';
import {OperationResponse} from '../../../client/interfaces/OperationResponse';
import {PrimaryType} from './constants';
function areEqual(a: Model, b: Model): boolean {
const equal = a.type === b.type && a.base === b.base && a.template === b.template;

View File

@ -1,5 +1,5 @@
import { OpenApi } from '../interfaces/OpenApi';
import { OpenApiReference } from '../interfaces/OpenApiReference';
import {OpenApi} from '../interfaces/OpenApi';
import {OpenApiReference} from '../interfaces/OpenApiReference';
export function getRef<T>(openApi: OpenApi, item: T & OpenApiReference): T {
if (item.$ref) {

View File

@ -1,4 +1,4 @@
import { getServer } from './getServer';
import {getServer} from './getServer';
describe('getServer', () => {
it('should produce correct result', () => {

View File

@ -1,4 +1,4 @@
import { OpenApi } from '../interfaces/OpenApi';
import {OpenApi} from '../interfaces/OpenApi';
export function getServer(openApi: OpenApi): string {
const server = openApi.servers && openApi.servers[0];

View File

@ -1,4 +1,4 @@
import { getServiceClassName } from './getServiceClassName';
import {getServiceClassName} from './getServiceClassName';
describe('getServiceClassName', () => {
it('should produce correct result', () => {

Some files were not shown because too many files have changed in this diff Show More