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
JavaScript
;
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;