UNPKG

@decorators/server

Version:

node decorators - decorators for express library

40 lines 5.15 kB
"use strict"; 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