UNPKG

tsioc

Version:

tsioc is AOP, Ioc container, via typescript decorator

58 lines (56 loc) 2.92 kB
"use strict"; 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