@malagu/core
Version:
31 lines • 1.62 kB
JavaScript
;
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