import { ResultDir, ProjectSchema } from '@alilc/lowcode-types'; import { IProjectBuilder, IProjectPlugins, IProjectTemplate, ISchemaParser, PostProcessor } from '../types'; import { ProjectPreProcessor, ProjectPostProcessor, IContextData } from '../types/core'; export interface ProjectBuilderInitOptions { /** 项目模板 */ template: IProjectTemplate; /** 项目插件 */ plugins: IProjectPlugins; /** 模块后置处理器 */ postProcessors: PostProcessor[]; /** Schema 解析器 */ schemaParser?: ISchemaParser; /** 项目级别的前置处理器 */ projectPreProcessors?: ProjectPreProcessor[]; /** 项目级别的后置处理器 */ projectPostProcessors?: ProjectPostProcessor[]; /** 是否处于严格模式 */ inStrictMode?: boolean; /** 一些额外的上下文数据 */ extraContextData?: Record; } /** * 项目构建器类,实现的 IProjectBuilder 接口也没啥好看的,里面就定义了一个 generateProject 方法 */ export declare class ProjectBuilder implements IProjectBuilder { /** 项目模板 */ private template; /** 项目插件 */ private plugins; /** 模块后置处理器 */ private postProcessors; /** Schema 解析器 */ private schemaParser; /** 项目级别的前置处理器 */ private projectPreProcessors; /** 项目级别的后置处理器 */ private projectPostProcessors; /** 是否处于严格模式 */ readonly inStrictMode: boolean; /** 一些额外的上下文数据 */ readonly extraContextData: IContextData; constructor({ template, plugins, postProcessors, schemaParser, // 可以自定义schema解析器,也内置了一个默认的解析器,通常来说默认的就足够了? projectPreProcessors, projectPostProcessors, inStrictMode, extraContextData, }: ProjectBuilderInitOptions); /** * 生成项目代码核心方法 * @param originalSchema schema原始数据 * @returns 输出的是结果目录? */ generateProject(originalSchema: ProjectSchema | string): Promise; /** * 创建模块构建器 * @returns 模块构建器 */ private createModuleBuilders; } export declare function createProjectBuilder(initOptions: ProjectBuilderInitOptions): IProjectBuilder;