Files
NapCatQQ/.pnpm-store/v3/files/85/623dfd3ea31a6a6cfd82c3dbd75559fe3db9b51444e7ffcc5e2f1cc93bf402714740ef39715c6f4f57d01a05e99a4bf018eabbca76056323adc342b9020171
TanTan e311ca3275
Build NapCat Artifacts / Type Check & Test (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

67 lines
1.9 KiB
Plaintext

import { LogWrapper } from '../../../napcat-core/helper/log';
import { PluginModule, PluginEntry, PluginStatusConfig } from './types';
/**
* 插件加载器
* 负责扫描、加载和导入插件模块
*/
export declare class PluginLoader {
private readonly pluginPath;
private readonly configPath;
private readonly logger;
constructor(pluginPath: string, configPath: string, logger: LogWrapper);
/**
* 加载插件状态配置
*/
loadPluginStatusConfig(): PluginStatusConfig;
/**
* 保存插件状态配置
*/
savePluginStatusConfig(config: PluginStatusConfig): void;
/**
* 扫描插件目录,收集所有有效插件条目(异步版本,验证模块有效性)
* 只有包含有效 plugin_init 函数的插件才会被收集
*/
scanPlugins(): Promise<PluginEntry[]>;
/**
* 扫描单个目录插件
*/
private scanDirectoryPlugin;
/**
* 查找插件目录的入口文件
*/
private findEntryFile;
/**
* 动态导入模块
*/
importModule(filePath: string): Promise<any>;
/**
* 加载插件模块
*/
loadPluginModule(entry: PluginEntry): Promise<PluginModule | null>;
/**
* 检查模块是否为有效的插件模块
*/
isValidPluginModule(module: any): module is PluginModule;
/**
* 验证插件入口文件是否包含有效的 plugin_init 函数
* 用于扫描阶段快速验证
*/
validatePluginEntry(entryPath: string): Promise<{
valid: boolean;
error?: string;
}>;
/**
* 重新扫描单个插件
*/
rescanPlugin(dirname: string): PluginEntry | null;
/**
* 通过 ID 查找插件目录名
*/
findPluginDirById(pluginId: string): string | null;
/**
* 清除插件文件的 require 缓存
* 用于确保卸载插件时清理 CJS 模块缓存
*/
clearCache(pluginPath: string): void;
}