UNPKG

@malagu/core

Version:
31 lines 1.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.bindAutowiredProvider = exports.doInjectForAutowiredProvider = exports.AutowiredProvider = exports.ID_KEY = exports.PROVIDER = void 0; const autowired_1 = require("./autowired"); const inject_1 = require("./inject"); const tagged_1 = require("./tagged"); const provider_protocol_1 = require("../provider/provider-protocol"); exports.PROVIDER = Symbol('PROVIDER'); exports.ID_KEY = Symbol('ID_KEY'); const AutowiredProvider = function (idOrOption) { return (target, targetKey, index) => { const option = (0, autowired_1.parseAutowiredOption)(target, targetKey, index, idOrOption); (0, autowired_1.applyAutowiredDecorator)(option, target, targetKey, index, exports.doInjectForAutowiredProvider); }; }; exports.AutowiredProvider = AutowiredProvider; const doInjectForAutowiredProvider = (option, t, k, i) => { (0, inject_1.Inject)(exports.PROVIDER)(t, k, i); (0, tagged_1.Tagged)(exports.ID_KEY, option.id)(t, k, i); }; exports.doInjectForAutowiredProvider = doInjectForAutowiredProvider; function bindAutowiredProvider(bind) { bind(exports.PROVIDER).toDynamicValue(ctx => { var _a; const id = (_a = ctx.currentRequest.target.getCustomTags()) === null || _a === void 0 ? void 0 : _a.find(m => m.key === exports.ID_KEY).value; const providerCreator = ctx.container.get(provider_protocol_1.ProviderCreator); return providerCreator.create(id, ctx.container); }); } exports.bindAutowiredProvider = bindAutowiredProvider; //# sourceMappingURL=autowired-provider.js.map