UNPKG

inversify

Version:

A powerful and lightweight inversion of control container for JavaScript and Node.js apps powered by TypeScript.

72 lines (71 loc) 2.44 kB
"use strict"; var metadata_1 = require("../planning/metadata"); var queryable_string_1 = require("./queryable_string"); var METADATA_KEY = require("../constants/metadata_keys"); var guid_1 = require("../utils/guid"); var Target = (function () { function Target(type, name, serviceIdentifier, namedOrTagged) { this.guid = guid_1.default(); this.type = type; this.serviceIdentifier = serviceIdentifier; this.name = new queryable_string_1.default(name || ""); this.metadata = new Array(); var metadataItem = null; if (typeof namedOrTagged === "string") { metadataItem = new metadata_1.default(METADATA_KEY.NAMED_TAG, namedOrTagged); } else if (namedOrTagged instanceof metadata_1.default) { metadataItem = namedOrTagged; } if (metadataItem !== null) { this.metadata.push(metadataItem); } } Target.prototype.hasTag = function (key) { for (var i = 0; i < this.metadata.length; i++) { var m = this.metadata[i]; if (m.key === key) { return true; } } return false; }; Target.prototype.isArray = function () { return this.hasTag(METADATA_KEY.MULTI_INJECT_TAG); }; Target.prototype.matchesArray = function (name) { return this.matchesTag(METADATA_KEY.MULTI_INJECT_TAG)(name); }; Target.prototype.isNamed = function () { return this.hasTag(METADATA_KEY.NAMED_TAG); }; Target.prototype.isTagged = function () { if (this.metadata.length > 1) { return true; } else if (this.metadata.length === 1) { return !this.hasTag(METADATA_KEY.NAMED_TAG); } else { return false; } }; Target.prototype.matchesNamedTag = function (name) { return this.matchesTag(METADATA_KEY.NAMED_TAG)(name); }; Target.prototype.matchesTag = function (key) { var _this = this; return function (value) { for (var i = 0; i < _this.metadata.length; i++) { var m = _this.metadata[i]; if (m.key === key && m.value === value) { return true; } } return false; }; }; return Target; }()); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = Target;