UNPKG

@tsclean/core

Version:

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

69 lines 11.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.InterceptorsContextCreator = void 0; const iterare_1 = require("iterare"); const utils_1 = require("../utils"); const helpers_1 = require("../helpers"); const core_1 = require("../core"); class InterceptorsContextCreator extends helpers_1.ContextCreator { constructor(container, config) { super(); this.container = container; this.config = config; } create(instance, callback, module, contextId = core_1.STATIC_CONTEXT, inquirerId) { this.moduleContext = module; return this.createContext(instance, callback, helpers_1.INTERCEPTORS_METADATA, contextId, inquirerId); } createConcreteContext(metadata, contextId = core_1.STATIC_CONTEXT, inquirerId) { if ((0, utils_1.isEmpty)(metadata)) { return []; } return (0, iterare_1.iterate)(metadata) .filter(interceptor => interceptor && (interceptor.name || interceptor.intercept)) .map(interceptor => this.getInterceptorInstance(interceptor, contextId, inquirerId)) .filter((interceptor) => interceptor && (0, utils_1.isFunction)(interceptor.intercept)) .toArray(); } getInterceptorInstance(metatype, contextId = core_1.STATIC_CONTEXT, inquirerId) { const isObject = metatype.intercept; if (isObject) { return metatype; } const instanceWrapper = this.getInstanceByMetatype(metatype); if (!instanceWrapper) { return null; } const instanceHost = instanceWrapper.getInstanceByContextId(contextId, inquirerId); return instanceHost && instanceHost.instance; } getInstanceByMetatype(metatype) { if (!this.moduleContext) { return; } const collection = this.container.getModules(); const moduleRef = collection.get(this.moduleContext); if (!moduleRef) { return; } return moduleRef.injectables.get(metatype); } getGlobalMetadata(contextId = core_1.STATIC_CONTEXT, inquirerId) { if (!this.config) { return []; } const globalInterceptors = this.config.getGlobalInterceptors(); if (contextId === core_1.STATIC_CONTEXT && !inquirerId) { return globalInterceptors; } const scopedInterceptorWrappers = this.config.getGlobalRequestInterceptors(); const scopedInterceptors = (0, iterare_1.iterate)(scopedInterceptorWrappers) .map(wrapper => wrapper.getInstanceByContextId(contextId, inquirerId)) .filter(host => !!host) .map(host => host.instance) .toArray(); return globalInterceptors.concat(scopedInterceptors); } } exports.InterceptorsContextCreator = InterceptorsContextCreator; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3JzLWNvbnRleHQtY3JlYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmNlcHRvcnMvaW50ZXJjZXB0b3JzLWNvbnRleHQtY3JlYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBZ0M7QUFHaEMsb0NBQTZDO0FBRTdDLHdDQUFpRTtBQUNqRSxrQ0FBc0U7QUFFdEUsTUFBYSwwQkFBMkIsU0FBUSx3QkFBYztJQUcxRCxZQUNxQixTQUF1QixFQUN2QixNQUEwQjtRQUUzQyxLQUFLLEVBQUUsQ0FBQztRQUhTLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDdkIsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7SUFHL0MsQ0FBQztJQUVNLE1BQU0sQ0FDVCxRQUF3QixFQUN4QixRQUF5QyxFQUN6QyxNQUFjLEVBQ2QsU0FBUyxHQUFHLHFCQUFjLEVBQzFCLFVBQW1CO1FBRW5CLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FDckIsUUFBUSxFQUNSLFFBQVEsRUFDUiwrQkFBcUIsRUFDckIsU0FBUyxFQUNULFVBQVUsQ0FDYixDQUFDO0lBQ04sQ0FBQztJQUVNLHFCQUFxQixDQUN4QixRQUFXLEVBQ1gsU0FBUyxHQUFHLHFCQUFjLEVBQzFCLFVBQW1CO1FBRW5CLElBQUksSUFBQSxlQUFPLEVBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNwQixPQUFPLEVBQU8sQ0FBQztRQUNuQixDQUFDO1FBQ0QsT0FBTyxJQUFBLGlCQUFPLEVBQUMsUUFBUSxDQUFDO2FBQ25CLE1BQU0sQ0FDSCxXQUFXLENBQUMsRUFBRSxDQUNWLFdBQVcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUNqRTthQUNBLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUNmLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUNsRTthQUNBLE1BQU0sQ0FDSCxDQUFDLFdBQWlDLEVBQUUsRUFBRSxDQUNsQyxXQUFXLElBQUksSUFBQSxrQkFBVSxFQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FDdkQ7YUFDQSxPQUFPLEVBQU8sQ0FBQztJQUN4QixDQUFDO0lBRU0sc0JBQXNCLENBQ3pCLFFBQXlDLEVBQ3pDLFNBQVMsR0FBRyxxQkFBYyxFQUMxQixVQUFtQjtRQUVuQixNQUFNLFFBQVEsR0FBSSxRQUFpQyxDQUFDLFNBQVMsQ0FBQztRQUM5RCxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ1gsT0FBTyxRQUFnQyxDQUFDO1FBQzVDLENBQUM7UUFDRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQzlDLFFBQXlCLENBQzVCLENBQUM7UUFDRixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDbkIsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUNELE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxzQkFBc0IsQ0FDdkQsU0FBUyxFQUNULFVBQVUsQ0FDYixDQUFDO1FBQ0YsT0FBTyxZQUFZLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUNqRCxDQUFDO0lBRU0scUJBQXFCLENBQ3hCLFFBQXVCO1FBRXZCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEIsT0FBTztRQUNYLENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQy9DLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNiLE9BQU87UUFDWCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0saUJBQWlCLENBQ3BCLFNBQVMsR0FBRyxxQkFBYyxFQUMxQixVQUFtQjtRQUVuQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2YsT0FBTyxFQUFPLENBQUM7UUFDbkIsQ0FBQztRQUNELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBTyxDQUFDO1FBQ3BFLElBQUksU0FBUyxLQUFLLHFCQUFjLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM5QyxPQUFPLGtCQUFrQixDQUFDO1FBQzlCLENBQUM7UUFDRCxNQUFNLHlCQUF5QixHQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLDRCQUE0QixFQUF1QixDQUFDO1FBQ3BFLE1BQU0sa0JBQWtCLEdBQUcsSUFBQSxpQkFBTyxFQUFDLHlCQUF5QixDQUFDO2FBQ3hELEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDckUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzthQUN0QixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2FBQzFCLE9BQU8sRUFBRSxDQUFDO1FBRWYsT0FBTyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQU0sQ0FBQztJQUM5RCxDQUFDO0NBQ0o7QUEzR0QsZ0VBMkdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpdGVyYXRlfSBmcm9tICdpdGVyYXJlJztcbmltcG9ydCB7QXBwbGljYXRpb25Db25maWd9IGZyb20gJy4uL2FwcCc7XG5pbXBvcnQge0NvbnRyb2xsZXJUeXBlfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7aXNFbXB0eSwgaXNGdW5jdGlvbn0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQge0ludGVyY2VwdG9ySW50ZXJmYWNlLCBUeXBlfSBmcm9tIFwiLi4vY29udHJhY3RzXCI7XG5pbXBvcnQge0NvbnRleHRDcmVhdG9yLCBJTlRFUkNFUFRPUlNfTUVUQURBVEF9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHtTVEFUSUNfQ09OVEVYVCwgQ29udGFpbmVySW9DLCBJbnN0YW5jZVdyYXBwZXJ9IGZyb20gJy4uL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgSW50ZXJjZXB0b3JzQ29udGV4dENyZWF0b3IgZXh0ZW5kcyBDb250ZXh0Q3JlYXRvciB7XG4gICAgcHJpdmF0ZSBtb2R1bGVDb250ZXh0OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb250YWluZXI6IENvbnRhaW5lcklvQyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb25maWc/OiBBcHBsaWNhdGlvbkNvbmZpZyxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlKFxuICAgICAgICBpbnN0YW5jZTogQ29udHJvbGxlclR5cGUsXG4gICAgICAgIGNhbGxiYWNrOiAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duLFxuICAgICAgICBtb2R1bGU6IHN0cmluZyxcbiAgICAgICAgY29udGV4dElkID0gU1RBVElDX0NPTlRFWFQsXG4gICAgICAgIGlucXVpcmVySWQ/OiBzdHJpbmcsXG4gICAgKTogSW50ZXJjZXB0b3JJbnRlcmZhY2VbXSB7XG4gICAgICAgIHRoaXMubW9kdWxlQ29udGV4dCA9IG1vZHVsZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQ29udGV4dChcbiAgICAgICAgICAgIGluc3RhbmNlLFxuICAgICAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgICAgICBJTlRFUkNFUFRPUlNfTUVUQURBVEEsXG4gICAgICAgICAgICBjb250ZXh0SWQsXG4gICAgICAgICAgICBpbnF1aXJlcklkLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVDb25jcmV0ZUNvbnRleHQ8VCBleHRlbmRzIGFueVtdLCBSIGV4dGVuZHMgYW55W10+KFxuICAgICAgICBtZXRhZGF0YTogVCxcbiAgICAgICAgY29udGV4dElkID0gU1RBVElDX0NPTlRFWFQsXG4gICAgICAgIGlucXVpcmVySWQ/OiBzdHJpbmcsXG4gICAgKTogUiB7XG4gICAgICAgIGlmIChpc0VtcHR5KG1ldGFkYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdIGFzIFI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZXJhdGUobWV0YWRhdGEpXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgIGludGVyY2VwdG9yID0+XG4gICAgICAgICAgICAgICAgICAgIGludGVyY2VwdG9yICYmIChpbnRlcmNlcHRvci5uYW1lIHx8IGludGVyY2VwdG9yLmludGVyY2VwdCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAubWFwKGludGVyY2VwdG9yID0+XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRJbnRlcmNlcHRvckluc3RhbmNlKGludGVyY2VwdG9yLCBjb250ZXh0SWQsIGlucXVpcmVySWQpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoaW50ZXJjZXB0b3I6IEludGVyY2VwdG9ySW50ZXJmYWNlKSA9PlxuICAgICAgICAgICAgICAgICAgICBpbnRlcmNlcHRvciAmJiBpc0Z1bmN0aW9uKGludGVyY2VwdG9yLmludGVyY2VwdCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAudG9BcnJheSgpIGFzIFI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEludGVyY2VwdG9ySW5zdGFuY2UoXG4gICAgICAgIG1ldGF0eXBlOiBGdW5jdGlvbiB8IEludGVyY2VwdG9ySW50ZXJmYWNlLFxuICAgICAgICBjb250ZXh0SWQgPSBTVEFUSUNfQ09OVEVYVCxcbiAgICAgICAgaW5xdWlyZXJJZD86IHN0cmluZyxcbiAgICApOiBJbnRlcmNlcHRvckludGVyZmFjZSB8IG51bGwge1xuICAgICAgICBjb25zdCBpc09iamVjdCA9IChtZXRhdHlwZSBhcyBJbnRlcmNlcHRvckludGVyZmFjZSkuaW50ZXJjZXB0O1xuICAgICAgICBpZiAoaXNPYmplY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBtZXRhdHlwZSBhcyBJbnRlcmNlcHRvckludGVyZmFjZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbnN0YW5jZVdyYXBwZXIgPSB0aGlzLmdldEluc3RhbmNlQnlNZXRhdHlwZShcbiAgICAgICAgICAgIG1ldGF0eXBlIGFzIFR5cGU8dW5rbm93bj4sXG4gICAgICAgICk7XG4gICAgICAgIGlmICghaW5zdGFuY2VXcmFwcGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbnN0YW5jZUhvc3QgPSBpbnN0YW5jZVdyYXBwZXIuZ2V0SW5zdGFuY2VCeUNvbnRleHRJZChcbiAgICAgICAgICAgIGNvbnRleHRJZCxcbiAgICAgICAgICAgIGlucXVpcmVySWQsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBpbnN0YW5jZUhvc3QgJiYgaW5zdGFuY2VIb3N0Lmluc3RhbmNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJbnN0YW5jZUJ5TWV0YXR5cGUoXG4gICAgICAgIG1ldGF0eXBlOiBUeXBlPHVua25vd24+LFxuICAgICk6IEluc3RhbmNlV3JhcHBlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghdGhpcy5tb2R1bGVDb250ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuY29udGFpbmVyLmdldE1vZHVsZXMoKTtcbiAgICAgICAgY29uc3QgbW9kdWxlUmVmID0gY29sbGVjdGlvbi5nZXQodGhpcy5tb2R1bGVDb250ZXh0KTtcbiAgICAgICAgaWYgKCFtb2R1bGVSZWYpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbW9kdWxlUmVmLmluamVjdGFibGVzLmdldChtZXRhdHlwZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEdsb2JhbE1ldGFkYXRhPFQgZXh0ZW5kcyB1bmtub3duW10+KFxuICAgICAgICBjb250ZXh0SWQgPSBTVEFUSUNfQ09OVEVYVCxcbiAgICAgICAgaW5xdWlyZXJJZD86IHN0cmluZyxcbiAgICApOiBUIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuIFtdIGFzIFQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZ2xvYmFsSW50ZXJjZXB0b3JzID0gdGhpcy5jb25maWcuZ2V0R2xvYmFsSW50ZXJjZXB0b3JzKCkgYXMgVDtcbiAgICAgICAgaWYgKGNvbnRleHRJZCA9PT0gU1RBVElDX0NPTlRFWFQgJiYgIWlucXVpcmVySWQpIHtcbiAgICAgICAgICAgIHJldHVybiBnbG9iYWxJbnRlcmNlcHRvcnM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NvcGVkSW50ZXJjZXB0b3JXcmFwcGVycyA9XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5nZXRHbG9iYWxSZXF1ZXN0SW50ZXJjZXB0b3JzKCkgYXMgSW5zdGFuY2VXcmFwcGVyW107XG4gICAgICAgIGNvbnN0IHNjb3BlZEludGVyY2VwdG9ycyA9IGl0ZXJhdGUoc2NvcGVkSW50ZXJjZXB0b3JXcmFwcGVycylcbiAgICAgICAgICAgIC5tYXAod3JhcHBlciA9PiB3cmFwcGVyLmdldEluc3RhbmNlQnlDb250ZXh0SWQoY29udGV4dElkLCBpbnF1aXJlcklkKSlcbiAgICAgICAgICAgIC5maWx0ZXIoaG9zdCA9PiAhIWhvc3QpXG4gICAgICAgICAgICAubWFwKGhvc3QgPT4gaG9zdC5pbnN0YW5jZSlcbiAgICAgICAgICAgIC50b0FycmF5KCk7XG5cbiAgICAgICAgcmV0dXJuIGdsb2JhbEludGVyY2VwdG9ycy5jb25jYXQoc2NvcGVkSW50ZXJjZXB0b3JzKSBhcyBUO1xuICAgIH1cbn1cbiJdfQ==