UNPKG

tsioc

Version:

tsioc is AOP, Ioc container, via typescript decorator

57 lines (55 loc) 2.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); require("reflect-metadata"); var DecoratorFactory_1 = require("./DecoratorFactory"); var DecoratorType_1 = require("./DecoratorType"); var Registration_1 = require("../../Registration"); var index_1 = require("../../utils/index"); /** * create class decorator * * @export * @template T metadata type. * @param {string} name decorator name. * @param {MetadataAdapter} [adapter] metadata adapter * @param {MetadataExtends<T>} [metadataExtends] add extents for metadata. * @returns {*} */ function createClassDecorator(name, adapter, metadataExtends) { var classAdapter = (function (args) { var metadata; if (adapter) { adapter(args); } args.next({ isMetadata: function (arg) { return index_1.isClassMetadata(arg); }, match: function (arg) { return arg && (index_1.isSymbol(arg) || index_1.isString(arg) || (index_1.isObject(arg) && arg instanceof Registration_1.Registration)); }, setMetadata: function (metadata, arg) { metadata.provide = arg; } }); args.next({ match: function (arg) { return index_1.isString(arg); }, setMetadata: function (metadata, arg) { metadata.alias = arg; } }); args.next({ match: function (arg) { return index_1.isBoolean(arg); }, setMetadata: function (metadata, arg) { metadata.singleton = arg; } }); args.next({ match: function (arg) { return index_1.isNumber(arg); }, setMetadata: function (metadata, arg) { metadata.expires = arg; } }); }); var decorator = DecoratorFactory_1.createDecorator(name, classAdapter, metadataExtends); decorator.decoratorType = DecoratorType_1.DecoratorType.Class; return decorator; } exports.createClassDecorator = createClassDecorator; //# sourceMappingURL=../../sourcemaps/core/factories/ClassDecoratorFactory.js.map