UNPKG

inversify

Version:

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

70 lines (69 loc) 2.31 kB
import Metadata from "../planning/metadata"; import QueryableString from "./queryable_string"; import * as METADATA_KEY from "../constants/metadata_keys"; import guid from "../utils/guid"; var Target = (function () { function Target(type, name, serviceIdentifier, namedOrTagged) { this.guid = guid(); this.type = type; this.serviceIdentifier = serviceIdentifier; this.name = new QueryableString(name || ""); this.metadata = new Array(); var metadataItem = null; if (typeof namedOrTagged === "string") { metadataItem = new Metadata(METADATA_KEY.NAMED_TAG, namedOrTagged); } else if (namedOrTagged instanceof Metadata) { 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; }()); export default Target;