/** * @description get code using standard dataSource format * @NOTE getd files structure is as below: * - library (contains class library code) * - interfaces (contains interfaces code) * - api.d.ts (contains interfaces and library definitions) * - api-lock.json (contains local code state) */ import { StandardDataSource, Interface, Mod, BaseClass } from '../standard'; import { info } from '../debugLog'; import { Surrounding } from '../../types/pontConfig'; export declare class FileStructures { generators: CodeGenerator[]; usingMultipleOrigins: boolean; private surrounding; private baseDir; private templateType; spiltApiLock: boolean; constructor(generators: CodeGenerator[], usingMultipleOrigins: boolean, surrounding: Surrounding, baseDir: string, templateType: string, spiltApiLock: boolean); getMultipleOriginsFileStructures(): { 'api.d.ts': any; } | { 'api-lock.json': string; 'api.d.ts': any; }; getBaseClassesInDeclaration(originCode: string | (() => string), usingMultipleOrigins: boolean): string; getModsDeclaration(originCode: string | (() => string), usingMultipleOrigins: boolean): string; getOriginFileStructures(generator: CodeGenerator, usingMultipleOrigins?: boolean): { [x: string]: any; mods: {}; 'api.d.ts': any; }; getFileStructures(): { 'api.d.ts': any; }; private checkHasTemplateFetch; getMultipleOriginsDataSourceName(): string[]; judgeHasMultipleFilesName(): boolean; getDataSourcesTs(): string; getDataSourcesDeclarationTs(): string; /** 不指定generate时生成全量数据源的LockContent */ getLockContent(generate?: CodeGenerator): string; /** API 使用case,用于scan扫描接口 */ getApiUseCases: (inter: Interface) => Array; } export declare class CodeGenerator { surrounding: Surrounding; outDir: string; usingMultipleOrigins: boolean; dataSource: StandardDataSource; hasContextBund: boolean; readonly lockFilename: string; constructor(surrounding?: Surrounding, outDir?: string, lockFilename?: string); setDataSource(dataSource: StandardDataSource): void; /** 获取某个基类的类型定义代码 */ getBaseClassInDeclaration(base: BaseClass): string; /** 获取所有基类的类型定义代码,一个 namespace * surrounding, 优先级高于this.surrounding,用于生成api.d.ts时强制保留类型 */ getBaseClassesInDeclaration(): string; getBaseClassesInDeclarationWithMultipleOrigins(): string; getBaseClassesInDeclarationWithSingleOrigin(): string; /** 获取接口内容的类型定义代码 */ getInterfaceContentInDeclaration(inter: Interface): string; private getInterfaceInDeclaration; /** 获取模块的类型定义代码,一个 namespace ,一般不需要覆盖 */ getModsDeclaration(): string; getModsDeclarationWithMultipleOrigins(): void; getModsDeclarationWithSingleOrigin(): void; /** 获取公共的类型定义代码 */ getCommonDeclaration(): string; /** 获取总的类型定义代码 */ getDeclaration(): string; /** 获取接口类和基类的总的 index 入口文件代码 */ getIndex(): string; /** 获取所有基类文件代码 */ getBaseClassesIndex(): string; /** 获取接口实现内容的代码 */ getInterfaceContent(inter: Interface): string; /** 获取单个模块的 index 入口文件 */ getModIndex(mod: Mod): string; /** 获取所有模块的 index 入口文件 */ getModsIndex(): string; /** * 获取中间态数据结构 * @param dataSource */ getDataSourceCallback(dataSource?: StandardDataSource): void; codeSnippet(inter: Interface): string; } export declare class FilesManager { fileStructures: FileStructures; private baseDir; report: typeof info; prettierConfig: {}; constructor(fileStructures: FileStructures, baseDir: string); /** 初始化清空路径 */ private initPath; regenerate(files: {}, oldFiles?: {}): Promise; saveLock(originName?: string): Promise; diffFiles(newFiles: {}, lastFiles: {}, dir?: string): { deletes: string[]; files: {}; updateCnt: number; }; formatFile(code: string, name?: string): any; updateFiles(files: {}): Promise; /** 根据 Codegenerator 配置生成目录和文件 */ generateFiles(files: {}, dir?: string): Promise; }