@ccms/api
Version:
MiaoScript api package
200 lines • 4.84 kB
TypeScript
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