UNPKG

@decorators/di

Version:

node decorators - decorators for dependency injection

26 lines 3.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Injectable = void 0; const constants_1 = require("../constants"); const root_container_1 = require("../root-container"); function Injectable(options) { return (target) => { var _a, _b; const params = (_a = Reflect.getMetadata('design:paramtypes', target)) !== null && _a !== void 0 ? _a : []; const ids = (_b = Reflect.getMetadata(constants_1.DEP_IDS_METADATA, target)) !== null && _b !== void 0 ? _b : []; const verifiedIds = params.map((param, index) => { var _a; const depId = typeof param === 'function' ? param : null; return (_a = ids[index]) !== null && _a !== void 0 ? _a : depId; }); Reflect.defineMetadata(constants_1.DEP_IDS_METADATA, verifiedIds, target); if ((options === null || options === void 0 ? void 0 : options.providedIn) === 'root') { root_container_1.RootContainer.provide([{ provide: target, useClass: target, }]); } }; } exports.Injectable = Injectable; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWNvcmF0b3JzL2luamVjdGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNENBQWdEO0FBRWhELHNEQUFrRDtBQU1sRCxTQUFnQixVQUFVLENBQUMsT0FBMkI7SUFDcEQsT0FBTyxDQUFDLE1BQXdCLEVBQUUsRUFBRTs7UUFDbEMsTUFBTSxNQUFNLEdBQUcsTUFBQSxPQUFPLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxtQ0FBSSxFQUFFLENBQUM7UUFDdEUsTUFBTSxHQUFHLEdBQUcsTUFBQSxPQUFPLENBQUMsV0FBVyxDQUFDLDRCQUFnQixFQUFFLE1BQU0sQ0FBQyxtQ0FBSSxFQUFFLENBQUM7UUFFaEUsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQXVCLEVBQUUsS0FBYSxFQUFFLEVBQUU7O1lBQ3hFLE1BQU0sS0FBSyxHQUFHLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFFekQsT0FBTyxNQUFBLEdBQUcsQ0FBQyxLQUFLLENBQUMsbUNBQUksS0FBSyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLGNBQWMsQ0FBQyw0QkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFOUQsSUFBSSxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxVQUFVLE1BQUssTUFBTSxFQUFFO1lBQ2xDLDhCQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3JCLE9BQU8sRUFBRSxNQUFNO29CQUNmLFFBQVEsRUFBRSxNQUFNO2lCQUNqQixDQUFDLENBQUMsQ0FBQztTQUNMO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQXBCRCxnQ0FvQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGFzc0NvbnN0cnVjdG9yIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgREVQX0lEU19NRVRBREFUQSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7IFJvb3RDb250YWluZXIgfSBmcm9tICcuLi9yb290LWNvbnRhaW5lcic7XG5cbmludGVyZmFjZSBJbmplY3RhYmxlT3B0aW9ucyB7XG4gIHByb3ZpZGVkSW4/OiAncm9vdCc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBJbmplY3RhYmxlKG9wdGlvbnM/OiBJbmplY3RhYmxlT3B0aW9ucykge1xuICByZXR1cm4gKHRhcmdldDogQ2xhc3NDb25zdHJ1Y3RvcikgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoJ2Rlc2lnbjpwYXJhbXR5cGVzJywgdGFyZ2V0KSA/PyBbXTtcbiAgICBjb25zdCBpZHMgPSBSZWZsZWN0LmdldE1ldGFkYXRhKERFUF9JRFNfTUVUQURBVEEsIHRhcmdldCkgPz8gW107XG5cbiAgICBjb25zdCB2ZXJpZmllZElkcyA9IHBhcmFtcy5tYXAoKHBhcmFtOiBDbGFzc0NvbnN0cnVjdG9yLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBkZXBJZCA9IHR5cGVvZiBwYXJhbSA9PT0gJ2Z1bmN0aW9uJyA/IHBhcmFtIDogbnVsbDtcblxuICAgICAgcmV0dXJuIGlkc1tpbmRleF0gPz8gZGVwSWQ7XG4gICAgfSk7XG5cbiAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKERFUF9JRFNfTUVUQURBVEEsIHZlcmlmaWVkSWRzLCB0YXJnZXQpO1xuXG4gICAgaWYgKG9wdGlvbnM/LnByb3ZpZGVkSW4gPT09ICdyb290Jykge1xuICAgICAgUm9vdENvbnRhaW5lci5wcm92aWRlKFt7XG4gICAgICAgIHByb3ZpZGU6IHRhcmdldCxcbiAgICAgICAgdXNlQ2xhc3M6IHRhcmdldCxcbiAgICAgIH1dKTtcbiAgICB9XG4gIH07XG59XG4iXX0=