2025-07-04 16:47:14 +08:00
|
|
|
|
import { ConfigBase } from "./models/config";
|
2025-07-03 10:26:03 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 加工处理器上下文
|
|
|
|
|
*/
|
2025-07-15 16:13:59 +08:00
|
|
|
|
export interface ProcessorContext<TInput, TOutput, TConfig extends ConfigBase> {
|
2025-07-03 10:26:03 +08:00
|
|
|
|
/**
|
|
|
|
|
* 输入数据
|
|
|
|
|
*/
|
2025-07-15 16:13:59 +08:00
|
|
|
|
input?: TInput;
|
2025-07-03 10:26:03 +08:00
|
|
|
|
/**
|
|
|
|
|
* 合并配置文件与临时输入参
|
|
|
|
|
*/
|
2025-07-15 16:13:59 +08:00
|
|
|
|
params?: TConfig;
|
2025-07-03 10:26:03 +08:00
|
|
|
|
/**
|
|
|
|
|
* 输出数据
|
|
|
|
|
*/
|
2025-07-15 16:13:59 +08:00
|
|
|
|
output?: TOutput;
|
2025-07-03 10:26:03 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 处理器基类
|
|
|
|
|
*/
|
2025-07-15 16:13:59 +08:00
|
|
|
|
export abstract class ProcessorBase<TInput, TOutput, TConfig extends ConfigBase> {
|
|
|
|
|
/**
|
|
|
|
|
* 处理器名,推荐使用 kebab-case 命名规则
|
|
|
|
|
* @example handle-ability
|
|
|
|
|
*/
|
|
|
|
|
public abstract get name(): string;
|
|
|
|
|
/**
|
|
|
|
|
* 处理器版本,对处理器进行更新后记得修改版本号
|
|
|
|
|
* 格式使用 semver
|
|
|
|
|
* @default 1.0.0
|
|
|
|
|
*/
|
2025-07-09 16:16:49 +08:00
|
|
|
|
public abstract get version(): string;
|
2025-07-15 16:13:59 +08:00
|
|
|
|
/**
|
|
|
|
|
* 处理器执行方法
|
|
|
|
|
* @param context 处理器上下文
|
|
|
|
|
*/
|
|
|
|
|
public abstract exec(context: ProcessorContext<TInput, TOutput, TConfig>): Promise<void> | void;
|
2025-06-24 11:48:26 +08:00
|
|
|
|
}
|