2019-09-07 04:23:15 +00:00
|
|
|
export namespace plugin {
|
|
|
|
/**
|
|
|
|
* MiaoScript Plugin
|
|
|
|
*/
|
|
|
|
export const Plugin = Symbol("Plugin");
|
2020-02-24 08:25:16 +00:00
|
|
|
/**
|
2020-02-29 14:28:43 +00:00
|
|
|
* MiaoScript Plugin Folder
|
2020-02-24 08:25:16 +00:00
|
|
|
*/
|
|
|
|
export const PluginFolder = Symbol("PluginFolder");
|
2019-09-07 04:23:15 +00:00
|
|
|
/**
|
|
|
|
* Runtime Plugin Instance
|
|
|
|
*/
|
|
|
|
export const PluginInstance = Symbol("PluginInstance");
|
|
|
|
/**
|
2020-02-24 08:25:16 +00:00
|
|
|
* MiaoScript Plugin Manager Symbol
|
2019-09-07 04:23:15 +00:00
|
|
|
*/
|
|
|
|
export const PluginManager = Symbol("PluginManager");
|
|
|
|
/**
|
2020-02-24 08:25:16 +00:00
|
|
|
* MiaoScript Plugin Manager Interface
|
2019-09-07 04:23:15 +00:00
|
|
|
*/
|
|
|
|
export interface PluginManager {
|
|
|
|
scan(folder: string): void;
|
2020-01-17 03:10:30 +00:00
|
|
|
build(): void;
|
2020-05-07 09:12:15 +00:00
|
|
|
loadFromFile(file: string): Plugin;
|
2019-09-19 10:59:00 +00:00
|
|
|
load(...args: any[]): void;
|
|
|
|
enable(...args: any[]): void;
|
|
|
|
disable(...args: any[]): void;
|
|
|
|
reload(...args: any[]): void;
|
2020-06-02 10:01:56 +00:00
|
|
|
getPlugin(name: string): plugin.Plugin;
|
|
|
|
getPlugins(): Map<string, plugin.Plugin>;
|
2019-09-07 04:23:15 +00:00
|
|
|
}
|
2020-05-07 09:12:15 +00:00
|
|
|
export interface Plugin {
|
|
|
|
description: PluginMetadata;
|
|
|
|
logger: Console;
|
|
|
|
load(): void;
|
|
|
|
enable(): void;
|
|
|
|
disable(): void;
|
|
|
|
}
|
|
|
|
interface BaseMetadata {
|
|
|
|
/**
|
|
|
|
* 名称 为空则为对象名称
|
|
|
|
*/
|
|
|
|
name?: string;
|
|
|
|
/**
|
|
|
|
* 支持的服务器列表 为空则代表所有
|
|
|
|
*/
|
|
|
|
servers?: string[];
|
|
|
|
}
|
|
|
|
export interface PluginMetadata extends BaseMetadata {
|
|
|
|
/**
|
|
|
|
* 插件名称
|
|
|
|
*/
|
|
|
|
name: string;
|
|
|
|
/**
|
|
|
|
* 前缀
|
|
|
|
*/
|
|
|
|
prefix?: string;
|
|
|
|
/**
|
|
|
|
* 插件版本
|
|
|
|
*/
|
|
|
|
version: string;
|
|
|
|
/**
|
|
|
|
* 插件版本
|
|
|
|
*/
|
|
|
|
author: string | string[];
|
|
|
|
/**
|
|
|
|
* 插件源文件 必须指定为 __filename
|
|
|
|
*/
|
|
|
|
source: string;
|
|
|
|
/**
|
|
|
|
* 插件本体
|
|
|
|
*/
|
|
|
|
target?: any;
|
|
|
|
}
|
2019-09-07 04:23:15 +00:00
|
|
|
}
|