cs-element
Version:
Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support
121 lines • 3.98 kB
TypeScript
/**
* Генератор TypeScript типов из JSON Schema
* Создает TypeScript интерфейсы и типы на основе JSON Schema 7
*/
import { JSONSchema7 } from 'json-schema';
export interface TypeGenerationOptions {
/** Префикс для генерируемых типов */
typePrefix?: string;
/** Суффикс для генерируемых типов */
typeSuffix?: string;
/** Использовать опциональные поля для необязательных свойств */
optionalFields?: boolean;
/** Генерировать readonly поля */
readonly?: boolean;
/** Генерировать JSDoc комментарии */
includeJSDoc?: boolean;
/** Экспортировать типы */
exportTypes?: boolean;
/** Использовать строгие типы */
strict?: boolean;
/** Генерировать enum'ы как union типы */
enumAsUnion?: boolean;
}
export interface GeneratedType {
/** Имя типа */
name: string;
/** Сгенерированный TypeScript код */
code: string;
/** Зависимости от других типов */
dependencies: string[];
/** Исходная JSON Schema */
schema: JSONSchema7;
}
export interface TypeGenerationResult {
/** Сгенерированные типы */
types: GeneratedType[];
/** Полный TypeScript код */
code: string;
/** Ошибки генерации */
errors: string[];
/** Предупреждения */
warnings: string[];
}
/**
* Генератор TypeScript типов из JSON Schema
*/
export declare class TypeScriptGenerator {
private options;
private generatedTypes;
private typeNames;
private errors;
private warnings;
constructor(options?: TypeGenerationOptions);
/**
* Генерация TypeScript типов из JSON Schema
*/
generateTypes(schemas: {
[name: string]: JSONSchema7;
}): TypeGenerationResult;
/**
* Генерация одного типа
*/
private generateType;
/**
* Генерация определения типа
*/
private generateTypeDefinition;
/**
* Генерация свойств объекта
*/
private generateObjectProperties;
/**
* Преобразование JSON Schema типа в TypeScript тип
*/
private jsonSchemaTypeToTypeScript;
/**
* Преобразование примитивного типа
*/
private primitiveTypeToTypeScript;
/**
* Генерация JSDoc комментария
*/
private generateJSDoc;
/**
* Форматирование имени типа
*/
private formatTypeName;
/**
* Форматирование ключа enum
*/
private formatEnumKey;
/**
* Извлечение имени из $ref
*/
private extractRefName;
/**
* Сборка финального кода
*/
private buildFinalCode;
/**
* Сброс состояния генератора
*/
private reset;
/**
* Генерация типов из ValidationPlugin
*/
static generateFromValidationPlugin(validationPlugin: any, options?: TypeGenerationOptions): TypeGenerationResult;
}
/**
* Утилитарная функция для быстрой генерации типов
*/
export declare function generateTypesFromSchemas(schemas: {
[name: string]: JSONSchema7;
}, options?: TypeGenerationOptions): TypeGenerationResult;
/**
* Утилитарная функция для генерации типов в файл
*/
export declare function generateTypesToFile(schemas: {
[name: string]: JSONSchema7;
}, outputPath: string, options?: TypeGenerationOptions): Promise<void>;
//# sourceMappingURL=TypeScriptGenerator.d.ts.map