UNPKG

@tsclean/core

Version:

Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.

51 lines 6.42 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ModuleTokenFactory = void 0; const object_hash_1 = __importDefault(require("object-hash")); const fast_safe_stringify_1 = __importDefault(require("fast-safe-stringify")); const utils_1 = require("../../utils"); class ModuleTokenFactory { constructor() { this.moduleIdsCache = new WeakMap(); } create(metaType, dynamicModuleMetadata) { const moduleId = this.getModuleId(metaType); const opaqueToken = { id: moduleId, module: this.getModuleName(metaType), dynamic: this.getDynamicMetadataToken(dynamicModuleMetadata), }; return (0, object_hash_1.default)(opaqueToken, { ignoreUnknown: true }); } getDynamicMetadataToken(dynamicModuleMetadata) { return dynamicModuleMetadata ? (0, fast_safe_stringify_1.default)(dynamicModuleMetadata, ModuleTokenFactory.replacer) : ''; } getModuleId(metaType) { let moduleId = this.moduleIdsCache.get(metaType); if (moduleId) return moduleId; moduleId = (0, utils_1.randomStringGenerator)(); this.moduleIdsCache.set(metaType, moduleId); return moduleId; } getModuleName(metaType) { return metaType.name; } static replacer(key, value) { if (typeof value === 'function') { const funcAsString = value.toString(); const isClass = /^class\s/.test(funcAsString); if (isClass) return value.name; return (0, object_hash_1.default)(funcAsString, { ignoreUnknown: true }); } if (typeof value === 'symbol') return value.toString(); return value; } } exports.ModuleTokenFactory = ModuleTokenFactory; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLXRva2VuLWZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9pbmplY3Rvci9tb2R1bGUtdG9rZW4tZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4REFBK0I7QUFDL0IsOEVBQTRDO0FBRTVDLHVDQUFrRDtBQUdsRCxNQUFhLGtCQUFrQjtJQUEvQjtRQUNxQixtQkFBYyxHQUFHLElBQUksT0FBTyxFQUF5QixDQUFDO0lBMkMzRSxDQUFDO0lBekNVLE1BQU0sQ0FDVCxRQUF1QixFQUFFLHFCQUFtRTtRQUU1RixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sV0FBVyxHQUFHO1lBQ2hCLEVBQUUsRUFBRSxRQUFRO1lBQ1osTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO1lBQ3BDLE9BQU8sRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMscUJBQXFCLENBQUM7U0FDL0QsQ0FBQztRQUNGLE9BQU8sSUFBQSxxQkFBSSxFQUFDLFdBQVcsRUFBRSxFQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxxQkFBa0U7UUFDN0YsT0FBTyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsSUFBQSw2QkFBUyxFQUFDLHFCQUFxQixFQUFFLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdEcsQ0FBQztJQUVNLFdBQVcsQ0FBQyxRQUF1QjtRQUN0QyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRCxJQUFJLFFBQVE7WUFBRSxPQUFPLFFBQVEsQ0FBQztRQUU5QixRQUFRLEdBQUcsSUFBQSw2QkFBcUIsR0FBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM1QyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRU0sYUFBYSxDQUFDLFFBQW1CO1FBQ3BDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztJQUN6QixDQUFDO0lBRU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFXLEVBQUUsS0FBVTtRQUMzQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzlCLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN0QyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzlDLElBQUksT0FBTztnQkFBRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFFL0IsT0FBTyxJQUFBLHFCQUFJLEVBQUMsWUFBWSxFQUFFLEVBQUMsYUFBYSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtZQUFFLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXZELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSjtBQTVDRCxnREE0Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaGFzaCBmcm9tICdvYmplY3QtaGFzaCc7XG5pbXBvcnQgc3RyaW5naWZ5IGZyb20gJ2Zhc3Qtc2FmZS1zdHJpbmdpZnknO1xuXG5pbXBvcnQge3JhbmRvbVN0cmluZ0dlbmVyYXRvcn0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQge0R5bmFtaWNNb2R1bGVJbnRlcmZhY2UsIFR5cGV9IGZyb20gXCIuLi8uLi9jb250cmFjdHNcIjtcblxuZXhwb3J0IGNsYXNzIE1vZHVsZVRva2VuRmFjdG9yeSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2R1bGVJZHNDYWNoZSA9IG5ldyBXZWFrTWFwPFR5cGU8dW5rbm93bj4sIHN0cmluZz4oKTtcblxuICAgIHB1YmxpYyBjcmVhdGUoXG4gICAgICAgIG1ldGFUeXBlOiBUeXBlPHVua25vd24+LCBkeW5hbWljTW9kdWxlTWV0YWRhdGE/OiBQYXJ0aWFsPER5bmFtaWNNb2R1bGVJbnRlcmZhY2U+IHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcblxuICAgICAgICBjb25zdCBtb2R1bGVJZCA9IHRoaXMuZ2V0TW9kdWxlSWQobWV0YVR5cGUpO1xuICAgICAgICBjb25zdCBvcGFxdWVUb2tlbiA9IHtcbiAgICAgICAgICAgIGlkOiBtb2R1bGVJZCxcbiAgICAgICAgICAgIG1vZHVsZTogdGhpcy5nZXRNb2R1bGVOYW1lKG1ldGFUeXBlKSxcbiAgICAgICAgICAgIGR5bmFtaWM6IHRoaXMuZ2V0RHluYW1pY01ldGFkYXRhVG9rZW4oZHluYW1pY01vZHVsZU1ldGFkYXRhKSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGhhc2gob3BhcXVlVG9rZW4sIHtpZ25vcmVVbmtub3duOiB0cnVlfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldER5bmFtaWNNZXRhZGF0YVRva2VuKGR5bmFtaWNNb2R1bGVNZXRhZGF0YTogUGFydGlhbDxEeW5hbWljTW9kdWxlSW50ZXJmYWNlPiB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBkeW5hbWljTW9kdWxlTWV0YWRhdGEgPyBzdHJpbmdpZnkoZHluYW1pY01vZHVsZU1ldGFkYXRhLCBNb2R1bGVUb2tlbkZhY3RvcnkucmVwbGFjZXIpIDogJyc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1vZHVsZUlkKG1ldGFUeXBlOiBUeXBlPHVua25vd24+KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IG1vZHVsZUlkID0gdGhpcy5tb2R1bGVJZHNDYWNoZS5nZXQobWV0YVR5cGUpO1xuICAgICAgICBpZiAobW9kdWxlSWQpIHJldHVybiBtb2R1bGVJZDtcblxuICAgICAgICBtb2R1bGVJZCA9IHJhbmRvbVN0cmluZ0dlbmVyYXRvcigpO1xuICAgICAgICB0aGlzLm1vZHVsZUlkc0NhY2hlLnNldChtZXRhVHlwZSwgbW9kdWxlSWQpO1xuICAgICAgICByZXR1cm4gbW9kdWxlSWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1vZHVsZU5hbWUobWV0YVR5cGU6IFR5cGU8YW55Pik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBtZXRhVHlwZS5uYW1lO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHJlcGxhY2VyKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnN0IGZ1bmNBc1N0cmluZyA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBjb25zdCBpc0NsYXNzID0gL15jbGFzc1xccy8udGVzdChmdW5jQXNTdHJpbmcpO1xuICAgICAgICAgICAgaWYgKGlzQ2xhc3MpIHJldHVybiB2YWx1ZS5uYW1lO1xuXG4gICAgICAgICAgICByZXR1cm4gaGFzaChmdW5jQXNTdHJpbmcsIHtpZ25vcmVVbmtub3duOiB0cnVlfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N5bWJvbCcpIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG59XG4iXX0=