@thatcompany/ts-tool
Version:
基于TypeScript编写的工具库
44 lines • 1.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ManagerFactory = void 0;
const ConfigureManager_1 = require("./impl/ConfigureManager");
const TaskManager_1 = require("./impl/TaskManager");
const FrameWorkManager_1 = require("./impl/FrameWorkManager");
const annotation_1 = require("../annotation");
class ManagerFactory {
services;
factory = [];
constructor(services) {
this.services = services;
}
buildManagerChain() {
// 根据扫描结果自动添加管理链路
if (this.services.has(annotation_1.METADATA.CONFIGURE)) {
this.addManager(ConfigureManager_1.ConfigureManager);
}
if (this.hasAnyFrameworkMetadata()) {
this.addManager(FrameWorkManager_1.FrameWorkManager);
}
if (this.hasAnyTaskMetadata()) {
this.addManager(TaskManager_1.TaskManager);
}
return this.factory.map((manager) => new manager());
}
addManager(manager) {
if (!this.factory.some((m) => m === manager)) {
this.factory.push(manager);
}
}
hasAnyFrameworkMetadata() {
return Object.keys(annotation_1.METADATA.FRAMEWORK).some(
// @ts-ignore
(key) => this.services.has(annotation_1.METADATA.FRAMEWORK[key]));
}
hasAnyTaskMetadata() {
return Object.keys(annotation_1.METADATA.TASK).some(
// @ts-ignore
(key) => this.services.has(annotation_1.METADATA.TASK[key]));
}
}
exports.ManagerFactory = ManagerFactory;
//# sourceMappingURL=ManagerFactory.js.map