tsioc
Version:
tsioc is AOP, Ioc container, via typescript decorator
46 lines (44 loc) • 2.17 kB
JavaScript
;
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var ActionComposite_1 = require("./ActionComposite");
var CoreActions_1 = require("./CoreActions");
var index_1 = require("../factories/index");
var BindProviderAction = /** @class */ (function (_super) {
__extends(BindProviderAction, _super);
function BindProviderAction() {
return _super.call(this, CoreActions_1.CoreActions.bindProvider) || this;
}
BindProviderAction.prototype.working = function (container, data) {
var target = data.target;
var type = data.targetType;
var propertyKey = data.propertyKey;
var lifeScope = container.getLifeScope();
var matchs = lifeScope.getClassDecorators(function (surm) { return surm.actions.includes(CoreActions_1.CoreActions.bindProvider) && index_1.hasOwnClassMetadata(surm.name, type); });
var provides = [];
matchs.forEach(function (surm) {
var metadata = index_1.getOwnTypeMetadata(surm.name, type);
if (Array.isArray(metadata) && metadata.length > 0) {
var jcfg = metadata.find(function (c) { return c && !!c.provide; });
if (jcfg) {
var provideKey = container.getTokenKey(jcfg.provide, jcfg.alias);
provides.push(provideKey);
container.bindProvider(provideKey, jcfg.type);
}
}
});
data.execResult = provides;
};
return BindProviderAction;
}(ActionComposite_1.ActionComposite));
exports.BindProviderAction = BindProviderAction;
//# sourceMappingURL=../../sourcemaps/core/actions/BindProviderAction.js.map