Files
certd/packages/core/pipeline/src/plugin/registry.ts
T

37 lines
1.1 KiB
TypeScript
Raw Normal View History

2024-11-16 11:01:14 +08:00
import { createRegistry, OnRegisterContext } from "../registry/index.js";
2024-07-15 00:30:33 +08:00
import { AbstractTaskPlugin } from "./api.js";
import { pluginGroups } from "./group.js";
2022-10-26 09:02:47 +08:00
const onRegister = ({ key, value }: OnRegisterContext<AbstractTaskPlugin>) => {
2025-04-08 22:56:38 +08:00
//如果有相同名字的先移除
for (const group of Object.values(pluginGroups)) {
const index = group.plugins.findIndex(plugin => plugin.name === key);
if (index > -1) {
group.plugins.splice(index, 1);
}
}
const group = value?.define?.group as string;
if (group) {
if (pluginGroups.hasOwnProperty(group)) {
// @ts-ignore
pluginGroups[group].plugins.push(value.define);
2025-04-08 22:56:38 +08:00
return;
}
}
2025-04-08 22:56:38 +08:00
pluginGroups.other.plugins.push(value.define);
};
const onUnRegister = ({ key }: OnRegisterContext<AbstractTaskPlugin>) => {
for (const group of Object.values(pluginGroups)) {
const index = group.plugins.findIndex(plugin => plugin.name === key);
if (index > -1) {
group.plugins.splice(index, 1);
return;
}
}
};
export const pluginRegistry = createRegistry<AbstractTaskPlugin>("plugin", onRegister, onUnRegister);