UNPKG

@thatcompany/ts-tool

Version:

基于TypeScript编写的工具库

50 lines 1.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.IAutoManager = void 0; require("reflect-metadata"); const logger_1 = require("../../logger"); const logger = logger_1.LoggerContext.getSubLogger('AutoManager', true); class IAutoManager { entities = new Map(); /** * 将实体添加到指定的键下 * @param entity 要添加的实体 */ collection(entity) { // 检查实体是否有含有已知的装饰器 if (!this.identify(entity)) { return; } // 找到所有与实体匹配的 keys const keys = this.keys.filter((k) => Reflect.getMetadata(k, entity) === true); // 如果没有匹配的 keys,则输出警告 if (keys.length === 0) { return; } // 将实体添加到所有匹配的 keys 下 for (const key of keys) { if (!this.entities.has(key)) { this.entities.set(key, new Set()); } // 将实体添加到 key 对应的实体列表中 logger.silly(`扫描到管理器: ${entity.name}`); this.entities.get(key)?.add(entity); } } /** * 识别目标是否包含指定装饰器 * @param entity 目标类 * @returns {boolean} 如果目标类上含有任何一个指定装饰器,则返回 true */ identify(entity) { if (typeof entity.prototype === 'undefined') { return false; } // if (Clazz.hasClassInChain(entity as TConstructor, this.clazz)) { return this.keys.some((key) => Reflect.getMetadata(key, entity) === true); // } // return false; } } exports.IAutoManager = IAutoManager; //# sourceMappingURL=IAutoManager.js.map