tsioc
Version:
tsioc is AOP, Ioc container, via typescript decorator
44 lines (42 loc) • 1.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var index_1 = require("../../core/index");
var index_2 = require("../../utils/index");
function createAdviceDecorator(adviceName, adapter, afterPointcutAdapter, metadataExtends) {
return index_1.createMethodDecorator('Advice', function (args) {
if (adapter) {
adapter(args);
}
args.next({
isMetadata: function (arg) { return index_2.isClassMetadata(arg, ['pointcut']); },
match: function (arg) { return index_2.isString(arg) || index_2.isRegExp(arg); },
setMetadata: function (metadata, arg) {
metadata.pointcut = arg;
}
});
if (afterPointcutAdapter) {
afterPointcutAdapter(args);
}
args.next({
match: function (arg) { return index_2.isString(arg); },
setMetadata: function (metadata, arg) {
metadata.annotationArgName = arg;
}
});
args.next({
match: function (arg) { return index_2.isString(arg); },
setMetadata: function (metadata, arg) {
metadata.annotation = arg;
}
});
}, function (metadata) {
if (metadataExtends) {
metadata = metadataExtends(metadata);
}
metadata.adviceName = adviceName;
return metadata;
});
}
exports.createAdviceDecorator = createAdviceDecorator;
exports.Advice = createAdviceDecorator('Advice');
//# sourceMappingURL=../sourcemaps/decorators/Advice.js.map