@codegena/oapi3ts
Version:
Codegeneration from OAS3 to TypeScript
74 lines (73 loc) • 3.69 kB
TypeScript
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 {};