diff options
Diffstat (limited to 'src/node_modules/inversify/lib/annotation')
10 files changed, 210 insertions, 0 deletions
diff --git a/src/node_modules/inversify/lib/annotation/decorator_utils.js b/src/node_modules/inversify/lib/annotation/decorator_utils.js new file mode 100644 index 0000000..629d08a --- /dev/null +++ b/src/node_modules/inversify/lib/annotation/decorator_utils.js @@ -0,0 +1,58 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var ERROR_MSGS = require("../constants/error_msgs"); +var METADATA_KEY = require("../constants/metadata_keys"); +function tagParameter(annotationTarget, propertyName, parameterIndex, metadata) { + var metadataKey = METADATA_KEY.TAGGED; + _tagParameterOrProperty(metadataKey, annotationTarget, propertyName, metadata, parameterIndex); +} +exports.tagParameter = tagParameter; +function tagProperty(annotationTarget, propertyName, metadata) { + var metadataKey = METADATA_KEY.TAGGED_PROP; + _tagParameterOrProperty(metadataKey, annotationTarget.constructor, propertyName, metadata); +} +exports.tagProperty = tagProperty; +function _tagParameterOrProperty(metadataKey, annotationTarget, propertyName, metadata, parameterIndex) { + var paramsOrPropertiesMetadata = {}; + var isParameterDecorator = (typeof parameterIndex === "number"); + var key = (parameterIndex !== undefined && isParameterDecorator) ? parameterIndex.toString() : propertyName; + if (isParameterDecorator && propertyName !== undefined) { + throw new Error(ERROR_MSGS.INVALID_DECORATOR_OPERATION); + } + if (Reflect.hasOwnMetadata(metadataKey, annotationTarget)) { + paramsOrPropertiesMetadata = Reflect.getMetadata(metadataKey, annotationTarget); + } + var paramOrPropertyMetadata = paramsOrPropertiesMetadata[key]; + if (!Array.isArray(paramOrPropertyMetadata)) { + paramOrPropertyMetadata = []; + } + else { + for (var _i = 0, paramOrPropertyMetadata_1 = paramOrPropertyMetadata; _i < paramOrPropertyMetadata_1.length; _i++) { + var m = paramOrPropertyMetadata_1[_i]; + if (m.key === metadata.key) { + throw new Error(ERROR_MSGS.DUPLICATED_METADATA + " " + m.key.toString()); + } + } + } + paramOrPropertyMetadata.push(metadata); + paramsOrPropertiesMetadata[key] = paramOrPropertyMetadata; + Reflect.defineMetadata(metadataKey, paramsOrPropertiesMetadata, annotationTarget); +} +function _decorate(decorators, target) { + Reflect.decorate(decorators, target); +} +function _param(paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); }; +} +function decorate(decorator, target, parameterIndex) { + if (typeof parameterIndex === "number") { + _decorate([_param(parameterIndex, decorator)], target); + } + else if (typeof parameterIndex === "string") { + Reflect.decorate([decorator], target, parameterIndex); + } + else { + _decorate([decorator], target); + } +} +exports.decorate = decorate; diff --git a/src/node_modules/inversify/lib/annotation/inject.js b/src/node_modules/inversify/lib/annotation/inject.js new file mode 100644 index 0000000..d3c6502 --- /dev/null +++ b/src/node_modules/inversify/lib/annotation/inject.js @@ -0,0 +1,31 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var error_msgs_1 = require("../constants/error_msgs"); +var METADATA_KEY = require("../constants/metadata_keys"); +var metadata_1 = require("../planning/metadata"); +var decorator_utils_1 = require("./decorator_utils"); +var LazyServiceIdentifer = (function () { + function LazyServiceIdentifer(cb) { + this._cb = cb; + } + LazyServiceIdentifer.prototype.unwrap = function () { + return this._cb(); + }; + return LazyServiceIdentifer; +}()); +exports.LazyServiceIdentifer = LazyServiceIdentifer; +function inject(serviceIdentifier) { + return function (target, targetKey, index) { + if (serviceIdentifier === undefined) { + throw new Error(error_msgs_1.UNDEFINED_INJECT_ANNOTATION(target.name)); + } + var metadata = new metadata_1.Metadata(METADATA_KEY.INJECT_TAG, serviceIdentifier); + if (typeof index === "number") { + decorator_utils_1.tagParameter(target, targetKey, index, metadata); + } + else { + decorator_utils_1.tagProperty(target, targetKey, metadata); + } + }; +} +exports.inject = inject; diff --git a/src/node_modules/inversify/lib/annotation/injectable.js b/src/node_modules/inversify/lib/annotation/injectable.js new file mode 100644 index 0000000..f1e4f73 --- /dev/null +++ b/src/node_modules/inversify/lib/annotation/injectable.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var ERRORS_MSGS = require("../constants/error_msgs"); +var METADATA_KEY = require("../constants/metadata_keys"); +function injectable() { + return function (target) { + if (Reflect.hasOwnMetadata(METADATA_KEY.PARAM_TYPES, target)) { + throw new Error(ERRORS_MSGS.DUPLICATED_INJECTABLE_DECORATOR); + } + var types = Reflect.getMetadata(METADATA_KEY.DESIGN_PARAM_TYPES, target) || []; + Reflect.defineMetadata(METADATA_KEY.PARAM_TYPES, types, target); + return target; + }; +} +exports.injectable = injectable; diff --git a/src/node_modules/inversify/lib/annotation/multi_inject.js b/src/node_modules/inversify/lib/annotation/multi_inject.js new file mode 100644 index 0000000..f7e7fd8 --- /dev/null +++ b/src/node_modules/inversify/lib/annotation/multi_inject.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var METADATA_KEY = require("../constants/metadata_keys"); +var metadata_1 = require("../planning/metadata"); +var decorator_utils_1 = require("./decorator_utils"); +function multiInject(serviceIdentifier) { + return function (target, targetKey, index) { + var metadata = new metadata_1.Metadata(METADATA_KEY.MULTI_INJECT_TAG, serviceIdentifier); + if (typeof index === "number") { + decorator_utils_1.tagParameter(target, targetKey, index, metadata); + } + else { + decorator_utils_1.tagProperty(target, targetKey, metadata); + } + }; +} +exports.multiInject = multiInject; diff --git a/src/node_modules/inversify/lib/annotation/named.js b/src/node_modules/inversify/lib/annotation/named.js new file mode 100644 index 0000000..0c14304 --- /dev/null +++ b/src/node_modules/inversify/lib/annotation/named.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var METADATA_KEY = require("../constants/metadata_keys"); +var metadata_1 = require("../planning/metadata"); +var decorator_utils_1 = require("./decorator_utils"); +function named(name) { + return function (target, targetKey, index) { + var metadata = new metadata_1.Metadata(METADATA_KEY.NAMED_TAG, name); + if (typeof index === "number") { + decorator_utils_1.tagParameter(target, targetKey, index, metadata); + } + else { + decorator_utils_1.tagProperty(target, targetKey, metadata); + } + }; +} +exports.named = named; diff --git a/src/node_modules/inversify/lib/annotation/optional.js b/src/node_modules/inversify/lib/annotation/optional.js new file mode 100644 index 0000000..afe0df8 --- /dev/null +++ b/src/node_modules/inversify/lib/annotation/optional.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var METADATA_KEY = require("../constants/metadata_keys"); +var metadata_1 = require("../planning/metadata"); +var decorator_utils_1 = require("./decorator_utils"); +function optional() { + return function (target, targetKey, index) { + var metadata = new metadata_1.Metadata(METADATA_KEY.OPTIONAL_TAG, true); + if (typeof index === "number") { + decorator_utils_1.tagParameter(target, targetKey, index, metadata); + } + else { + decorator_utils_1.tagProperty(target, targetKey, metadata); + } + }; +} +exports.optional = optional; diff --git a/src/node_modules/inversify/lib/annotation/post_construct.js b/src/node_modules/inversify/lib/annotation/post_construct.js new file mode 100644 index 0000000..007c011 --- /dev/null +++ b/src/node_modules/inversify/lib/annotation/post_construct.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var ERRORS_MSGS = require("../constants/error_msgs"); +var METADATA_KEY = require("../constants/metadata_keys"); +var metadata_1 = require("../planning/metadata"); +function postConstruct() { + return function (target, propertyKey, descriptor) { + var metadata = new metadata_1.Metadata(METADATA_KEY.POST_CONSTRUCT, propertyKey); + if (Reflect.hasOwnMetadata(METADATA_KEY.POST_CONSTRUCT, target.constructor)) { + throw new Error(ERRORS_MSGS.MULTIPLE_POST_CONSTRUCT_METHODS); + } + Reflect.defineMetadata(METADATA_KEY.POST_CONSTRUCT, metadata, target.constructor); + }; +} +exports.postConstruct = postConstruct; diff --git a/src/node_modules/inversify/lib/annotation/tagged.js b/src/node_modules/inversify/lib/annotation/tagged.js new file mode 100644 index 0000000..be07ff5 --- /dev/null +++ b/src/node_modules/inversify/lib/annotation/tagged.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var metadata_1 = require("../planning/metadata"); +var decorator_utils_1 = require("./decorator_utils"); +function tagged(metadataKey, metadataValue) { + return function (target, targetKey, index) { + var metadata = new metadata_1.Metadata(metadataKey, metadataValue); + if (typeof index === "number") { + decorator_utils_1.tagParameter(target, targetKey, index, metadata); + } + else { + decorator_utils_1.tagProperty(target, targetKey, metadata); + } + }; +} +exports.tagged = tagged; diff --git a/src/node_modules/inversify/lib/annotation/target_name.js b/src/node_modules/inversify/lib/annotation/target_name.js new file mode 100644 index 0000000..9111c05 --- /dev/null +++ b/src/node_modules/inversify/lib/annotation/target_name.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var METADATA_KEY = require("../constants/metadata_keys"); +var metadata_1 = require("../planning/metadata"); +var decorator_utils_1 = require("./decorator_utils"); +function targetName(name) { + return function (target, targetKey, index) { + var metadata = new metadata_1.Metadata(METADATA_KEY.NAME_TAG, name); + decorator_utils_1.tagParameter(target, targetKey, index, metadata); + }; +} +exports.targetName = targetName; diff --git a/src/node_modules/inversify/lib/annotation/unmanaged.js b/src/node_modules/inversify/lib/annotation/unmanaged.js new file mode 100644 index 0000000..31b2a40 --- /dev/null +++ b/src/node_modules/inversify/lib/annotation/unmanaged.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var METADATA_KEY = require("../constants/metadata_keys"); +var metadata_1 = require("../planning/metadata"); +var decorator_utils_1 = require("./decorator_utils"); +function unmanaged() { + return function (target, targetKey, index) { + var metadata = new metadata_1.Metadata(METADATA_KEY.UNMANAGED_TAG, true); + decorator_utils_1.tagParameter(target, targetKey, index, metadata); + }; +} +exports.unmanaged = unmanaged; |