@decorators/di
Version:
node decorators - decorators for dependency injection
26 lines • 3.58 kB
JavaScript
;
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=