tsioc
Version:
tsioc is AOP, Ioc container, via typescript decorator
58 lines (56 loc) • 2.86 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 index_1 = require("../../core/index");
var index_2 = require("../../utils/index");
var AopActions_1 = require("./AopActions");
var index_3 = require("../joinpoints/index");
var isValideAspectTarget_1 = require("../isValideAspectTarget");
var InvokeAfterConstructorAction = /** @class */ (function (_super) {
__extends(InvokeAfterConstructorAction, _super);
function InvokeAfterConstructorAction() {
return _super.call(this, AopActions_1.AopActions.invokeAfterConstructorAdvices) || this;
}
InvokeAfterConstructorAction.prototype.working = function (container, data) {
// aspect class do nothing.
if (!data.target || !isValideAspectTarget_1.isValideAspectTarget(data.targetType)) {
return;
}
var aspectMgr = container.get(index_2.symbols.IAdvisor);
var advices = aspectMgr.getAdvices(data.targetType.name + '.constructor');
if (!advices) {
return;
}
var targetType = data.targetType;
var target = data.target;
var joinPoint = container.resolve(index_3.Joinpoint, index_1.Provider.create('options', {
name: 'constructor',
state: index_3.JoinpointState.After,
fullName: targetType.name + '.constructor',
target: target,
args: data.args,
targetType: targetType
}));
var providers = [index_1.Provider.create(index_3.Joinpoint, joinPoint)];
var access = container.get(index_2.symbols.IMethodAccessor);
advices.After.forEach(function (advicer) {
access.syncInvoke.apply(access, [advicer.aspectType, advicer.advice.propertyKey, undefined].concat(providers));
});
advices.Around.forEach(function (advicer) {
access.syncInvoke.apply(access, [advicer.aspectType, advicer.advice.propertyKey, undefined].concat(providers));
});
};
InvokeAfterConstructorAction.classAnnations = { "name": "InvokeAfterConstructorAction", "params": { "constructor": [], "working": ["container", "data"] } };
return InvokeAfterConstructorAction;
}(index_1.ActionComposite));
exports.InvokeAfterConstructorAction = InvokeAfterConstructorAction;
//# sourceMappingURL=../sourcemaps/actions/InvokeAfterConstructorAction.js.map