@tsclean/core
Version:
Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.
52 lines • 7.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MiddlewareContainer = void 0;
const helpers_1 = require("../helpers");
const core_1 = require("../core");
class MiddlewareContainer {
constructor(container) {
this.container = container;
this.middleware = new Map();
this.configurationSets = new Map();
}
getMiddlewareCollection(moduleKey) {
if (!this.middleware.has(moduleKey)) {
const moduleRef = this.container.getModuleByKey(moduleKey);
this.middleware.set(moduleKey, moduleRef.middlewares);
}
return this.middleware.get(moduleKey);
}
getConfigurations() {
return this.configurationSets;
}
insertConfig(configList, moduleKey) {
const middleware = this.getMiddlewareCollection(moduleKey);
const targetConfig = this.getTargetConfig(moduleKey);
const configurations = configList || [];
const insertMiddleware = (metaType) => {
const token = metaType;
middleware.set(token, new core_1.InstanceWrapper({
scope: MiddlewareContainer.getClassScope(metaType),
name: token,
metaType,
token,
}));
};
configurations.forEach(config => {
[].concat(config.middleware).map(insertMiddleware);
targetConfig.add(config);
});
}
getTargetConfig(moduleName) {
if (!this.configurationSets.has(moduleName)) {
this.configurationSets.set(moduleName, new Set());
}
return this.configurationSets.get(moduleName);
}
static getClassScope(type) {
const metadata = Reflect.getMetadata(helpers_1.SCOPE_OPTIONS_METADATA, type);
return metadata && metadata.scope;
}
}
exports.MiddlewareContainer = MiddlewareContainer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21pZGRsZXdhcmUvY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHdDQUFrRDtBQUNsRCxrQ0FBd0Q7QUFHeEQsTUFBYSxtQkFBbUI7SUFJOUIsWUFDcUIsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUozQixlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQW1ELENBQUM7UUFDeEUsc0JBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQWlELENBQUM7SUFJM0YsQ0FBQztJQUVHLHVCQUF1QixDQUFDLFNBQWlCO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBRU0sWUFBWSxDQUFDLFVBQThDLEVBQUUsU0FBaUI7UUFDbkYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFckQsTUFBTSxjQUFjLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQztRQUN4QyxNQUFNLGdCQUFnQixHQUFHLENBQTBCLFFBQVcsRUFBRSxFQUFFO1lBQ2hFLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQztZQUN2QixVQUFVLENBQUMsR0FBRyxDQUNaLEtBQUssRUFDTCxJQUFJLHNCQUFlLENBQUM7Z0JBQ2xCLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO2dCQUNsRCxJQUFJLEVBQUUsS0FBSztnQkFDWCxRQUFRO2dCQUNSLEtBQUs7YUFDTixDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUNGLGNBQWMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDOUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDbkQsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxlQUFlLENBQUMsVUFBa0I7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUN4QixVQUFVLEVBQ1YsSUFBSSxHQUFHLEVBQW9DLENBQzVDLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTyxNQUFNLENBQUMsYUFBYSxDQUFjLElBQWE7UUFDckQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxnQ0FBc0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuRSxPQUFPLFFBQVEsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQ3BDLENBQUM7Q0FDRjtBQXpERCxrREF5REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luc3RhbmNlVG9rZW5UeXBlfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7U0NPUEVfT1BUSU9OU19NRVRBREFUQX0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcbmltcG9ydCB7IENvbnRhaW5lcklvQywgSW5zdGFuY2VXcmFwcGVyIH0gZnJvbSAnLi4vY29yZSc7XG5pbXBvcnQge01pZGRsZXdhcmVDb25maWd1cmF0aW9uSW50ZXJmYWNlLCBTY29wZSwgVHlwZX0gZnJvbSBcIi4uL2NvbnRyYWN0c1wiO1xuXG5leHBvcnQgY2xhc3MgTWlkZGxld2FyZUNvbnRhaW5lciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWlkZGxld2FyZSA9IG5ldyBNYXA8c3RyaW5nLCBNYXA8SW5zdGFuY2VUb2tlblR5cGUsIEluc3RhbmNlV3JhcHBlcj4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlndXJhdGlvblNldHMgPSBuZXcgTWFwPHN0cmluZywgU2V0PE1pZGRsZXdhcmVDb25maWd1cmF0aW9uSW50ZXJmYWNlPj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGFpbmVyOiBDb250YWluZXJJb0NcbiAgKSB7fVxuXG4gIHB1YmxpYyBnZXRNaWRkbGV3YXJlQ29sbGVjdGlvbihtb2R1bGVLZXk6IHN0cmluZyk6IE1hcDxJbnN0YW5jZVRva2VuVHlwZSwgSW5zdGFuY2VXcmFwcGVyPiB7XG4gICAgaWYgKCF0aGlzLm1pZGRsZXdhcmUuaGFzKG1vZHVsZUtleSkpIHtcbiAgICAgIGNvbnN0IG1vZHVsZVJlZiA9IHRoaXMuY29udGFpbmVyLmdldE1vZHVsZUJ5S2V5KG1vZHVsZUtleSk7XG4gICAgICB0aGlzLm1pZGRsZXdhcmUuc2V0KG1vZHVsZUtleSwgbW9kdWxlUmVmLm1pZGRsZXdhcmVzKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubWlkZGxld2FyZS5nZXQobW9kdWxlS2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb25maWd1cmF0aW9ucygpOiBNYXA8c3RyaW5nLCBTZXQ8TWlkZGxld2FyZUNvbmZpZ3VyYXRpb25JbnRlcmZhY2U+PiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvblNldHM7XG4gIH1cblxuICBwdWJsaWMgaW5zZXJ0Q29uZmlnKGNvbmZpZ0xpc3Q6IE1pZGRsZXdhcmVDb25maWd1cmF0aW9uSW50ZXJmYWNlW10sIG1vZHVsZUtleTogc3RyaW5nKSB7XG4gICAgY29uc3QgbWlkZGxld2FyZSA9IHRoaXMuZ2V0TWlkZGxld2FyZUNvbGxlY3Rpb24obW9kdWxlS2V5KTtcbiAgICBjb25zdCB0YXJnZXRDb25maWcgPSB0aGlzLmdldFRhcmdldENvbmZpZyhtb2R1bGVLZXkpO1xuXG4gICAgY29uc3QgY29uZmlndXJhdGlvbnMgPSBjb25maWdMaXN0IHx8IFtdO1xuICAgIGNvbnN0IGluc2VydE1pZGRsZXdhcmUgPSA8VCBleHRlbmRzIFR5cGU8dW5rbm93bj4+KG1ldGFUeXBlOiBUKSA9PiB7XG4gICAgICBjb25zdCB0b2tlbiA9IG1ldGFUeXBlO1xuICAgICAgbWlkZGxld2FyZS5zZXQoXG4gICAgICAgIHRva2VuLFxuICAgICAgICBuZXcgSW5zdGFuY2VXcmFwcGVyKHtcbiAgICAgICAgICBzY29wZTogTWlkZGxld2FyZUNvbnRhaW5lci5nZXRDbGFzc1Njb3BlKG1ldGFUeXBlKSxcbiAgICAgICAgICBuYW1lOiB0b2tlbixcbiAgICAgICAgICBtZXRhVHlwZSxcbiAgICAgICAgICB0b2tlbixcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH07XG4gICAgY29uZmlndXJhdGlvbnMuZm9yRWFjaChjb25maWcgPT4ge1xuICAgICAgW10uY29uY2F0KGNvbmZpZy5taWRkbGV3YXJlKS5tYXAoaW5zZXJ0TWlkZGxld2FyZSk7XG4gICAgICB0YXJnZXRDb25maWcuYWRkKGNvbmZpZyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFRhcmdldENvbmZpZyhtb2R1bGVOYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlndXJhdGlvblNldHMuaGFzKG1vZHVsZU5hbWUpKSB7XG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25TZXRzLnNldChcbiAgICAgICAgbW9kdWxlTmFtZSxcbiAgICAgICAgbmV3IFNldDxNaWRkbGV3YXJlQ29uZmlndXJhdGlvbkludGVyZmFjZT4oKSxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25TZXRzLmdldChtb2R1bGVOYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldENsYXNzU2NvcGU8VCA9IHVua25vd24+KHR5cGU6IFR5cGU8VD4pOiBTY29wZSB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFNDT1BFX09QVElPTlNfTUVUQURBVEEsIHR5cGUpO1xuICAgIHJldHVybiBtZXRhZGF0YSAmJiBtZXRhZGF0YS5zY29wZTtcbiAgfVxufVxuIl19