UNPKG

@codegena/oapi3ts

Version:

Codegeneration from OAS3 to TypeScript

74 lines (73 loc) 3.69 kB
import { Schema } from '@codegena/definitions/json-schema'; import { BaseConvertor, ConvertorConfig, DataTypeContainer, DataTypeDescriptor, DescriptorContext } from '../../core'; /** * Record in temporary list of schema in process. * Those records are creating in order to avoid infinity loop * for recursive types. */ interface SchemaHold { schema: Schema; bulk: Partial<DataTypeDescriptor | DataTypeContainer>; } /** * Class of converter from OAPI3 to TypeScript types. */ export declare class Convertor extends BaseConvertor { /** * Конфигурация для конвертора. */ protected config: ConvertorConfig; protected _ajv: any; protected _onHoldSchemas: SchemaHold[]; /** * Рекурсивный рендеринг * [контенейра дескрипторов типов]{@link DataTypeContainer} * с ренлерингом всех их зависиомостей. * * @param typeContainer * Типы, которые нужно отрендерить. * @param renderedCallback * Колбэк, который срабатывает при рендеринге типа. * @param alreadyRendered * Типы, которые уже отрендерены, и их рендерить не нужно * @param rootLevel * `false`, если это дочерний "процес" */ static renderRecursive(typeContainer: DataTypeContainer, renderedCallback: (descriptor: DataTypeDescriptor, text: any, childrenDependencies: DataTypeDescriptor[]) => void, alreadyRendered?: DataTypeContainer): void; constructor( /** * Конфигурация для конвертора. */ config?: ConvertorConfig); /** * Превращение JSON-схемы в описание типа данных. * Возвращает контейнер [дескрипторов типов]{@link DataTypeDescriptor}, * в котором перечисляются типы данных (возможна принадлежность * к более чем одному типу данных: `number[] | InterfaceName`). * * @param schema * Схема, для которой будет подобрано соответствущее * правило, по которому будет определен дескриптор * нового типа данных. * @param context * Контекст, в котором хранятся ранее просчитаные модели * в рамках одной цепочки обработки. * @param name * Собственное имя типа данных * @param suggestedName * Предлагаемое имя для типа данных: может * применяться, если тип данных анонимный, но * необходимо вынести его за пределы родительской * модели по-ситуации (например, в случае с Enum). * @param originalPathSchema * Путь, по которому была взята схема * @param ancestors * Родительсткие модели * */ convert(schema: Schema, context: DescriptorContext, name?: string, suggestedName?: string, originalPathSchema?: string, ancestors?: DataTypeDescriptor[]): DataTypeContainer; protected _findMatchedConstructor(schema: Schema): any; protected _holdSchemaBeforeConvert(schema: Schema): SchemaHold | null; protected _holdSchemaOf(schema: Schema, descr: DataTypeDescriptor): void; } export {};