@decorators/server
Version:
node decorators - decorators for express library
40 lines • 5.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Module = void 0;
const di_1 = require("@decorators/di");
const helpers_1 = require("../helpers");
/**
* Module provides a scope providers, nested namespace
*
* Module options:
* * controllers - list of controllers to handle namespace-based endpoints.
* Each enpoint consists of parent module.namespace + controller.url + method.url
* * modules - list of child modules
* * namespace - prefix to be added to all nested modules and provided controllers
* * providers - list of required providers
*/
function Module(options) {
return (target) => {
var _a, _b, _c, _d;
const providers = ((_a = options.providers) !== null && _a !== void 0 ? _a : []).map(injectable => injectable.provide ? injectable : ({
provide: injectable,
useClass: injectable,
}));
const modules = ((_b = options.modules) !== null && _b !== void 0 ? _b : []).map(module => {
if (module.module) {
providers.push(...module.providers);
return module.module;
}
return module;
});
Reflect.defineMetadata(helpers_1.MODULE_METADATA, {
controllers: (_c = options.controllers) !== null && _c !== void 0 ? _c : [],
modules,
namespace: (_d = options.namespace) !== null && _d !== void 0 ? _d : '',
providers,
}, target);
(0, di_1.Injectable)()(target);
};
}
exports.Module = Module;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvcmUvZGVjb3JhdG9ycy9tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdUNBQXNEO0FBRXRELHdDQUE2QztBQWU3Qzs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixNQUFNLENBQUMsT0FBc0I7SUFDM0MsT0FBTyxDQUFDLE1BQXdCLEVBQUUsRUFBRTs7UUFDbEMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFBLE9BQU8sQ0FBQyxTQUFTLG1DQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFFLFVBQXVCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0csT0FBTyxFQUFFLFVBQVU7WUFDbkIsUUFBUSxFQUFFLFVBQVU7U0FDckIsQ0FBQyxDQUFDLENBQUM7UUFDSixNQUFNLE9BQU8sR0FBRyxDQUFDLE1BQUEsT0FBTyxDQUFDLE9BQU8sbUNBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ25ELElBQUssTUFBOEIsQ0FBQyxNQUFNLEVBQUU7Z0JBQzFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBSSxNQUE4QixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUU3RCxPQUFRLE1BQThCLENBQUMsTUFBTSxDQUFDO2FBQy9DO1lBRUQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsY0FBYyxDQUFDLHlCQUFlLEVBQUU7WUFDdEMsV0FBVyxFQUFFLE1BQUEsT0FBTyxDQUFDLFdBQVcsbUNBQUksRUFBRTtZQUN0QyxPQUFPO1lBQ1AsU0FBUyxFQUFFLE1BQUEsT0FBTyxDQUFDLFNBQVMsbUNBQUksRUFBRTtZQUNsQyxTQUFTO1NBQ1YsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVYLElBQUEsZUFBVSxHQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQXpCRCx3QkF5QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBQcm92aWRlciB9IGZyb20gJ0BkZWNvcmF0b3JzL2RpJztcblxuaW1wb3J0IHsgTU9EVUxFX01FVEFEQVRBIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBDbGFzc0NvbnN0cnVjdG9yIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vZHVsZVdpdGhQcm92aWRlcnMge1xuICBtb2R1bGU6IENsYXNzQ29uc3RydWN0b3I7XG4gIHByb3ZpZGVyczogKENsYXNzQ29uc3RydWN0b3IgfCBQcm92aWRlcilbXTtcbn1cblxuaW50ZXJmYWNlIE1vZHVsZU9wdGlvbnMge1xuICBjb250cm9sbGVycz86IENsYXNzQ29uc3RydWN0b3JbXTtcbiAgbW9kdWxlcz86IChNb2R1bGVXaXRoUHJvdmlkZXJzIHwgQ2xhc3NDb25zdHJ1Y3RvcilbXTtcbiAgbmFtZXNwYWNlPzogc3RyaW5nO1xuICBwcm92aWRlcnM/OiAoQ2xhc3NDb25zdHJ1Y3RvciB8IFByb3ZpZGVyKVtdO1xufVxuXG4vKipcbiAqIE1vZHVsZSBwcm92aWRlcyBhIHNjb3BlIHByb3ZpZGVycywgbmVzdGVkIG5hbWVzcGFjZVxuICpcbiAqIE1vZHVsZSBvcHRpb25zOlxuICogKiBjb250cm9sbGVycyAtIGxpc3Qgb2YgY29udHJvbGxlcnMgdG8gaGFuZGxlIG5hbWVzcGFjZS1iYXNlZCBlbmRwb2ludHMuXG4gKiBFYWNoIGVucG9pbnQgY29uc2lzdHMgb2YgcGFyZW50IG1vZHVsZS5uYW1lc3BhY2UgKyBjb250cm9sbGVyLnVybCArIG1ldGhvZC51cmxcbiAqICogbW9kdWxlcyAtIGxpc3Qgb2YgY2hpbGQgbW9kdWxlc1xuICogKiBuYW1lc3BhY2UgLSBwcmVmaXggdG8gYmUgYWRkZWQgdG8gYWxsIG5lc3RlZCBtb2R1bGVzIGFuZCBwcm92aWRlZCBjb250cm9sbGVyc1xuICogKiBwcm92aWRlcnMgLSBsaXN0IG9mIHJlcXVpcmVkIHByb3ZpZGVyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gTW9kdWxlKG9wdGlvbnM6IE1vZHVsZU9wdGlvbnMpIHtcbiAgcmV0dXJuICh0YXJnZXQ6IENsYXNzQ29uc3RydWN0b3IpID0+IHtcbiAgICBjb25zdCBwcm92aWRlcnMgPSAob3B0aW9ucy5wcm92aWRlcnMgPz8gW10pLm1hcChpbmplY3RhYmxlID0+IChpbmplY3RhYmxlIGFzIFByb3ZpZGVyKS5wcm92aWRlID8gaW5qZWN0YWJsZSA6ICh7XG4gICAgICBwcm92aWRlOiBpbmplY3RhYmxlLFxuICAgICAgdXNlQ2xhc3M6IGluamVjdGFibGUsXG4gICAgfSkpO1xuICAgIGNvbnN0IG1vZHVsZXMgPSAob3B0aW9ucy5tb2R1bGVzID8/IFtdKS5tYXAobW9kdWxlID0+IHtcbiAgICAgIGlmICgobW9kdWxlIGFzIE1vZHVsZVdpdGhQcm92aWRlcnMpLm1vZHVsZSkge1xuICAgICAgICBwcm92aWRlcnMucHVzaCguLi4obW9kdWxlIGFzIE1vZHVsZVdpdGhQcm92aWRlcnMpLnByb3ZpZGVycyk7XG5cbiAgICAgICAgcmV0dXJuIChtb2R1bGUgYXMgTW9kdWxlV2l0aFByb3ZpZGVycykubW9kdWxlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbW9kdWxlO1xuICAgIH0pO1xuXG4gICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShNT0RVTEVfTUVUQURBVEEsIHtcbiAgICAgIGNvbnRyb2xsZXJzOiBvcHRpb25zLmNvbnRyb2xsZXJzID8/IFtdLFxuICAgICAgbW9kdWxlcyxcbiAgICAgIG5hbWVzcGFjZTogb3B0aW9ucy5uYW1lc3BhY2UgPz8gJycsXG4gICAgICBwcm92aWRlcnMsXG4gICAgfSwgdGFyZ2V0KTtcblxuICAgIEluamVjdGFibGUoKSh0YXJnZXQpO1xuICB9O1xufVxuIl19