2024-03-20 14:08:32 +08:00

131 lines
2.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { MidwayCache } from "@midwayjs/cache-manager";
import { IMidwayContext, IMidwayApplication } from "@midwayjs/core";
import { CoolCacheStore, FsCacheStore } from "./cache/store";
// 文件上传
export * from "./hook/upload";
// 异常处理
export * from "./exception/base";
export * from "./exception/comm";
export * from "./exception/core";
export * from "./exception/validate";
// 全局参数
export * from "./constant/global";
/**
* 插件信息
*/
export interface PluginInfo {
/** 名称 */
name: string;
/** 唯一标识 */
key: string;
/** 钩子 */
hook: string;
/** 版本 */
version: string;
/** 描述 */
description: string;
/** 作者 */
author: string;
/** logo */
logo: string;
/** README 使用说明 */
readme: string;
/** 配置 */
config: any;
}
/**
* 插件基类,不建议修改
*/
export abstract class BasePlugin {
/** 插件信息 */
pluginInfo: PluginInfo;
/** 请求上下文用到此项无法本地调试需安装到cool-admin中才能调试 */
ctx: IMidwayContext;
/** 应用实例用到此项无法本地调试需安装到cool-admin中才能调试 */
app: IMidwayApplication;
/** 缓存 */
cache: FsCacheStore | MidwayCache;
/** 插件 */
pluginService: PluginService;
setCtx(ctx: IMidwayContext) {
this.ctx = ctx;
}
setApp(app: IMidwayApplication) {
this.app = app;
}
constructor() {}
/**
* 获得App级别的实例
* @param name
* @returns
*/
async getAppInstance(name: string) {
return await this.app.getApplicationContext().getAsync(name);
}
/**
* 获得请求级别的实例
* @param name
* @returns
*/
async getCtxInstance(name: string) {
return await this.ctx.requestContext.getAsync(name);
}
/**
* 初始化插件
* @param pluginInfo
* @param ctx
* @param app
*/
async init(
pluginInfo: PluginInfo,
ctx?: IMidwayContext,
app?: IMidwayApplication,
other?: any
) {
this.pluginInfo = pluginInfo;
this.ctx = ctx;
this.app = app;
this.cache = CoolCacheStore({});
if (other) {
this.cache = other.cache;
this.pluginService = other.pluginService;
}
}
}
/**
* 插件服务
*/
export declare class PluginService {
/**
* 调用插件
* @param key 插件key
* @param method 方法
* @param params 参数
* @returns
*/
invoke(key: string, method: string, ...params: any[]): Promise<any>;
/**
* 获得插件实例
* @param key
* @returns
*/
getInstance(key: string): Promise<any>;
/**
* 检查状态
* @param key
*/
checkStatus(key: string): Promise<void>;
}