mirror of
https://github.com/ferdikoomen/openapi-typescript-codegen.git
synced 2025-12-08 20:16:21 +00:00
- Added methods to get composition
This commit is contained in:
parent
18bf2f783f
commit
3978a30fbd
8
src/client/interfaces/ModelComposition.d.ts
vendored
Normal file
8
src/client/interfaces/ModelComposition.d.ts
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
import type { Model } from './Model';
|
||||
|
||||
export interface ModelComposition {
|
||||
type: 'one-of' | 'any-of' | 'all-of';
|
||||
imports: string[];
|
||||
enums: Model[];
|
||||
properties: Model[];
|
||||
}
|
||||
25
src/openApi/v2/parser/getModelComposition.ts
Normal file
25
src/openApi/v2/parser/getModelComposition.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import type { ModelComposition } from '../../../client/interfaces/ModelComposition';
|
||||
import type { OpenApi } from '../interfaces/OpenApi';
|
||||
import type { OpenApiSchema } from '../interfaces/OpenApiSchema';
|
||||
import type { getModel } from './getModel';
|
||||
|
||||
// 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 {
|
||||
const composition: ModelComposition = {
|
||||
type,
|
||||
imports: [],
|
||||
enums: [],
|
||||
properties: [],
|
||||
};
|
||||
|
||||
const modes = definitions.map(definition => getModel(openApi, definition));
|
||||
modes.forEach(model => {
|
||||
composition.imports.push(...model.imports);
|
||||
composition.enums.push(...model.enums);
|
||||
composition.properties.push(model);
|
||||
});
|
||||
|
||||
return composition;
|
||||
}
|
||||
25
src/openApi/v3/parser/getModelComposition.ts
Normal file
25
src/openApi/v3/parser/getModelComposition.ts
Normal file
@ -0,0 +1,25 @@
|
||||
import type { ModelComposition } from '../../../client/interfaces/ModelComposition';
|
||||
import type { OpenApi } from '../interfaces/OpenApi';
|
||||
import type { OpenApiSchema } from '../interfaces/OpenApiSchema';
|
||||
import type { getModel } from './getModel';
|
||||
|
||||
// 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 {
|
||||
const composition: ModelComposition = {
|
||||
type,
|
||||
imports: [],
|
||||
enums: [],
|
||||
properties: [],
|
||||
};
|
||||
|
||||
const modes = definitions.map(definition => getModel(openApi, definition));
|
||||
modes.forEach(model => {
|
||||
composition.imports.push(...model.imports);
|
||||
composition.enums.push(...model.enums);
|
||||
composition.properties.push(model);
|
||||
});
|
||||
|
||||
return composition;
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user