mirror of
https://github.com/ferdikoomen/openapi-typescript-codegen.git
synced 2025-12-08 20:16:21 +00:00
- Testing changes
This commit is contained in:
parent
5e11e792a8
commit
f57b4c3538
@ -1,14 +1,14 @@
|
||||
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';
|
||||
import { getComment } from './getComment';
|
||||
import { getEnum } from './getEnum';
|
||||
import { getEnumFromDescription } from './getEnumFromDescription';
|
||||
import { getModelComposition } from './getModelComposition';
|
||||
import { getModelProperties } from './getModelProperties';
|
||||
import { getType } from './getType';
|
||||
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';
|
||||
import {getComment} from './getComment';
|
||||
import {getEnum} from './getEnum';
|
||||
import {getEnumFromDescription} from './getEnumFromDescription';
|
||||
import {getModelComposition} from './getModelComposition';
|
||||
import {getModelProperties} from './getModelProperties';
|
||||
import {getType} from './getType';
|
||||
|
||||
export function getModel(openApi: OpenApi, definition: OpenApiSchema, isDefinition: boolean = false, name: string = ''): Model {
|
||||
const model: Model = {
|
||||
@ -119,7 +119,7 @@ export function getModel(openApi: OpenApi, definition: OpenApiSchema, isDefiniti
|
||||
}
|
||||
|
||||
if (definition.allOf?.length) {
|
||||
const composition = getModelComposition(openApi, definition.allOf, 'all-of', getModel);
|
||||
const composition = getModelComposition(openApi, definition, definition.allOf, 'all-of', getModel);
|
||||
model.export = composition.type;
|
||||
model.imports.push(...composition.imports);
|
||||
model.enums.push(...composition.enums);
|
||||
|
||||
@ -1,12 +1,13 @@
|
||||
import type { ModelComposition } from '../../../client/interfaces/ModelComposition';
|
||||
import type { OpenApi } from '../interfaces/OpenApi';
|
||||
import type { OpenApiSchema } from '../interfaces/OpenApiSchema';
|
||||
import type { getModel } from './getModel';
|
||||
import type {ModelComposition} from '../../../client/interfaces/ModelComposition';
|
||||
import type {OpenApi} from '../interfaces/OpenApi';
|
||||
import type {OpenApiSchema} from '../interfaces/OpenApiSchema';
|
||||
import type {getModel} from './getModel';
|
||||
import {getModelProperties} from "./getModelProperties";
|
||||
|
||||
// Fix for circular dependency
|
||||
export type GetModelFn = typeof getModel;
|
||||
|
||||
export function getModelComposition(openApi: OpenApi, definitions: OpenApiSchema[], type: 'one-of' | 'any-of' | 'all-of', getModel: GetModelFn): ModelComposition {
|
||||
export function getModelComposition(openApi: OpenApi, definition: OpenApiSchema, definitions: OpenApiSchema[], type: 'one-of' | 'any-of' | 'all-of', getModel: GetModelFn): ModelComposition {
|
||||
const composition: ModelComposition = {
|
||||
type,
|
||||
imports: [],
|
||||
@ -29,5 +30,24 @@ export function getModelComposition(openApi: OpenApi, definitions: OpenApiSchema
|
||||
composition.properties.push(model);
|
||||
});
|
||||
|
||||
if (definition.properties) {
|
||||
composition.properties.push({
|
||||
name: 'properties',
|
||||
export: 'interface',
|
||||
type: 'any',
|
||||
base: 'any',
|
||||
template: null,
|
||||
link: null,
|
||||
description: '',
|
||||
isDefinition: false,
|
||||
isReadOnly: false,
|
||||
isNullable: false,
|
||||
isRequired: false,
|
||||
imports: [],
|
||||
enum: [],
|
||||
enums: [],
|
||||
properties: [...getModelProperties(openApi, definition, getModel)],
|
||||
});
|
||||
}
|
||||
return composition;
|
||||
}
|
||||
|
||||
@ -16,7 +16,7 @@ export function getOperationParameterDefault(parameter: OpenApiParameter, operat
|
||||
case 'int':
|
||||
case 'integer':
|
||||
case 'number':
|
||||
if (operationParameter.export == 'enum' && operationParameter.enum?.[parameter.default]) {
|
||||
if (operationParameter.export === 'enum' && operationParameter.enum?.[parameter.default]) {
|
||||
return operationParameter.enum[parameter.default].value;
|
||||
}
|
||||
return parameter.default;
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
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';
|
||||
import { getComment } from './getComment';
|
||||
import { getEnum } from './getEnum';
|
||||
import { getEnumFromDescription } from './getEnumFromDescription';
|
||||
import { getModelComposition } from './getModelComposition';
|
||||
import { getModelDefault } from './getModelDefault';
|
||||
import { getModelProperties } from './getModelProperties';
|
||||
import { getType } from './getType';
|
||||
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';
|
||||
import {getComment} from './getComment';
|
||||
import {getEnum} from './getEnum';
|
||||
import {getEnumFromDescription} from './getEnumFromDescription';
|
||||
import {getModelComposition} from './getModelComposition';
|
||||
import {getModelDefault} from './getModelDefault';
|
||||
import {getModelProperties} from './getModelProperties';
|
||||
import {getType} from './getType';
|
||||
|
||||
export function getModel(openApi: OpenApi, definition: OpenApiSchema, isDefinition: boolean = false, name: string = ''): Model {
|
||||
const model: Model = {
|
||||
@ -127,7 +127,7 @@ export function getModel(openApi: OpenApi, definition: OpenApiSchema, isDefiniti
|
||||
}
|
||||
|
||||
if (definition.oneOf?.length) {
|
||||
const composition = getModelComposition(openApi, definition.oneOf, 'one-of', getModel);
|
||||
const composition = getModelComposition(openApi, definition, definition.oneOf, 'one-of', getModel);
|
||||
model.export = composition.type;
|
||||
model.imports.push(...composition.imports);
|
||||
model.enums.push(...composition.enums);
|
||||
@ -136,7 +136,7 @@ export function getModel(openApi: OpenApi, definition: OpenApiSchema, isDefiniti
|
||||
}
|
||||
|
||||
if (definition.anyOf?.length) {
|
||||
const composition = getModelComposition(openApi, definition.anyOf, 'any-of', getModel);
|
||||
const composition = getModelComposition(openApi, definition, definition.anyOf, 'any-of', getModel);
|
||||
model.export = composition.type;
|
||||
model.imports.push(...composition.imports);
|
||||
model.enums.push(...composition.enums);
|
||||
@ -145,7 +145,7 @@ export function getModel(openApi: OpenApi, definition: OpenApiSchema, isDefiniti
|
||||
}
|
||||
|
||||
if (definition.allOf?.length) {
|
||||
const composition = getModelComposition(openApi, definition.allOf, 'all-of', getModel);
|
||||
const composition = getModelComposition(openApi, definition, definition.allOf, 'all-of', getModel);
|
||||
model.export = composition.type;
|
||||
model.imports.push(...composition.imports);
|
||||
model.enums.push(...composition.enums);
|
||||
@ -157,9 +157,9 @@ export function getModel(openApi: OpenApi, definition: OpenApiSchema, isDefiniti
|
||||
model.export = 'interface';
|
||||
model.type = 'any';
|
||||
model.base = 'any';
|
||||
model.default = getModelDefault(definition, model);
|
||||
|
||||
if (definition.properties) {
|
||||
model.default = getModelDefault(definition, model);
|
||||
const properties = getModelProperties(openApi, definition, getModel);
|
||||
properties.forEach(property => {
|
||||
model.imports.push(...property.imports);
|
||||
|
||||
@ -1,12 +1,13 @@
|
||||
import type { ModelComposition } from '../../../client/interfaces/ModelComposition';
|
||||
import type { OpenApi } from '../interfaces/OpenApi';
|
||||
import type { OpenApiSchema } from '../interfaces/OpenApiSchema';
|
||||
import type { getModel } from './getModel';
|
||||
import type {ModelComposition} from '../../../client/interfaces/ModelComposition';
|
||||
import type {OpenApi} from '../interfaces/OpenApi';
|
||||
import type {OpenApiSchema} from '../interfaces/OpenApiSchema';
|
||||
import type {getModel} from './getModel';
|
||||
import {getModelProperties} from "./getModelProperties";
|
||||
|
||||
// Fix for circular dependency
|
||||
export type GetModelFn = typeof getModel;
|
||||
|
||||
export function getModelComposition(openApi: OpenApi, definitions: OpenApiSchema[], type: 'one-of' | 'any-of' | 'all-of', getModel: GetModelFn): ModelComposition {
|
||||
export function getModelComposition(openApi: OpenApi, definition: OpenApiSchema, definitions: OpenApiSchema[], type: 'one-of' | 'any-of' | 'all-of', getModel: GetModelFn): ModelComposition {
|
||||
const composition: ModelComposition = {
|
||||
type,
|
||||
imports: [],
|
||||
@ -29,5 +30,25 @@ export function getModelComposition(openApi: OpenApi, definitions: OpenApiSchema
|
||||
composition.properties.push(model);
|
||||
});
|
||||
|
||||
if (definition.properties) {
|
||||
composition.properties.push({
|
||||
name: 'properties',
|
||||
export: 'interface',
|
||||
type: 'any',
|
||||
base: 'any',
|
||||
template: null,
|
||||
link: null,
|
||||
description: '',
|
||||
isDefinition: false,
|
||||
isReadOnly: false,
|
||||
isNullable: false,
|
||||
isRequired: false,
|
||||
imports: [],
|
||||
enum: [],
|
||||
enums: [],
|
||||
properties: [...getModelProperties(openApi, definition, getModel)],
|
||||
});
|
||||
}
|
||||
|
||||
return composition;
|
||||
}
|
||||
|
||||
@ -16,7 +16,7 @@ export function getModelDefault(definition: OpenApiSchema, model?: Model): strin
|
||||
case 'int':
|
||||
case 'integer':
|
||||
case 'number':
|
||||
if (model?.export == 'enum' && model.enum?.[definition.default]) {
|
||||
if (model?.export === 'enum' && model.enum?.[definition.default]) {
|
||||
return model.enum[definition.default].value;
|
||||
}
|
||||
return definition.default;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user