@tsclean/core
Version:
Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.
69 lines • 11.4 kB
JavaScript
;
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==