UNPKG

@thatcompany/ts-tool

Version:

基于TypeScript编写的工具库

44 lines 1.59 kB
"use strict"; 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