UNPKG

@ccms/api

Version:

MiaoScript api package

200 lines 4.84 kB
export declare namespace plugin { /** * MiaoScript Plugin */ const Plugin: unique symbol; /** * MiaoScript Plugin Folder */ const PluginFolder: unique symbol; /** * Runtime Plugin Instance */ const PluginInstance: unique symbol; /** * MiaoScript Plugin Manager Interface */ abstract class PluginManager { abstract scan(folder: string): void; abstract build(): void; abstract loadFromFile(file: string, ext?: any): Plugin; abstract load(...args: any[]): void; abstract enable(...args: any[]): void; abstract disable(...args: any[]): void; abstract reload(...args: any[]): void; abstract getPlugin(name: string): plugin.Plugin; abstract getPlugins(): Map<string, plugin.Plugin>; } const PluginScanner: unique symbol; /** * 插件加载元信息 */ interface PluginLoadMetadata { /** * 插件加载类型 */ type: string; /** * 插件文件 */ file?: string; /** * 插件实例 */ instance?: any; /** * 插件元信息 */ metadata?: PluginMetadata; /** * 插件扫描器 */ scanner: PluginScanner; /** * 插件加载器 */ loader?: PluginLoader; /** * 是否已加载 */ loaded?: boolean; [key: string]: any; } /** * 插件扫描器 */ interface PluginScanner { /** * 扫描器类型 */ type: string; /** * 扫描插件目录 返回插件加载元信息列表 * @param target 扫描目标 */ scan(target: any): PluginLoadMetadata[]; /** * 读取插件 返回插件加载元信息 * @param target */ read(target: any): PluginLoadMetadata; /** * 加载扫描到的目标 * @param target 加载目标 */ load(target: PluginLoadMetadata): PluginLoadMetadata; } const PluginLoader: unique symbol; /** * 插件加载器 */ interface PluginLoader { /** * 加载器类型 */ type: string; /** * 加载插件 获取元数据 * @param target 加载目标 * @param result 扫描器加载的结果 */ require(loadMetadata: PluginLoadMetadata): PluginLoadMetadata; /** * 构建插件 * @param metadata 插件元信息 */ build(metadata: PluginMetadata): Plugin; /** * Load 阶段 * @param plugin 插件 */ load?(plugin: Plugin): void; /** * Enable 阶段 * @param plugin 插件 */ enable?(plugin: Plugin): void; /** * Disable 阶段 * @param plugin 插件 */ disable?(plugin: Plugin): void; /** * Reload 阶段 * @param plugin 插件 */ reload?(plugin: Plugin): void; } interface Plugin { description: PluginMetadata; logger: Console; load(): void; enable(): void; disable(): void; } interface BaseMetadata { /** * 名称 为空则为对象名称 */ name?: string; /** * 支持的服务器列表 为空则代表所有 */ servers?: string[]; } interface PluginMetadata extends BaseMetadata { /** * 插件名称 不填默认为类名 */ name: string; /** * 插件中文名称 */ cname?: string; /** * 付费插件ID */ pid?: number; /** * 付费插件等级 付费插件自动注入 */ level?: number; /** * 前缀 */ prefix?: string; /** * 插件版本 不填默认为 1.0.0 */ version?: string; /** * 插件作者 不填默认为 Unknow */ author?: string | string[]; /** * 脚本依赖 */ depends?: string[]; /** * 插件依赖 */ nativeDepends?: string[]; /** * 插件源文件 必须指定为 __filename */ source: string; /** * 插件类型 默认为 ioc 执行 MiaoScript 加载逻辑 */ type?: string; /** * 插件加载信息 */ loadMetadata?: PluginLoadMetadata; /** * 插件本体 */ target?: any; } } //# sourceMappingURL=plugin.d.ts.map