tsioc
Version:
tsioc is AOP, Ioc container, via typescript decorator
58 lines (56 loc) • 2.92 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 InvokeBeforeConstructorAction = /** @class */ (function (_super) {
__extends(InvokeBeforeConstructorAction, _super);
function InvokeBeforeConstructorAction() {
return _super.call(this, AopActions_1.AopActions.registAspect) || this;
}
InvokeBeforeConstructorAction.prototype.working = function (container, data) {
// aspect class do nothing.
if (!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.Before,
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.Before.forEach(function (advicer) {
access.syncInvoke.apply(access, [advicer.aspectType, advicer.advice.propertyKey, undefined].concat(providers)); // new Joinpoint(joinPoint) // container.resolve(Joinpoint, { json: joinPoint })
});
advices.Around.forEach(function (advicer) {
access.syncInvoke.apply(access, [advicer.aspectType, advicer.advice.propertyKey, undefined].concat(providers));
});
};
InvokeBeforeConstructorAction.classAnnations = { "name": "InvokeBeforeConstructorAction", "params": { "constructor": [], "working": ["container", "data"] } };
return InvokeBeforeConstructorAction;
}(index_1.ActionComposite));
exports.InvokeBeforeConstructorAction = InvokeBeforeConstructorAction;
//# sourceMappingURL=../sourcemaps/actions/InvokeBeforeConstructorAction.js.map