summaryrefslogtreecommitdiff
path: root/src/node_modules/inversify/lib/planning
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2021-12-21 16:52:28 +0100
committerMinteck <contact@minteck.org>2021-12-21 16:52:28 +0100
commit46e43f4bde4a35785b4997b81e86cd19f046b69b (patch)
treec53c2f826f777f9d6b2d249dab556feb72a6c3a6 /src/node_modules/inversify/lib/planning
downloadlangdetect-46e43f4bde4a35785b4997b81e86cd19f046b69b.tar.gz
langdetect-46e43f4bde4a35785b4997b81e86cd19f046b69b.tar.bz2
langdetect-46e43f4bde4a35785b4997b81e86cd19f046b69b.zip
Commit
Diffstat (limited to 'src/node_modules/inversify/lib/planning')
-rw-r--r--src/node_modules/inversify/lib/planning/context.js17
-rw-r--r--src/node_modules/inversify/lib/planning/metadata.js19
-rw-r--r--src/node_modules/inversify/lib/planning/metadata_reader.js21
-rw-r--r--src/node_modules/inversify/lib/planning/plan.js10
-rw-r--r--src/node_modules/inversify/lib/planning/planner.js155
-rw-r--r--src/node_modules/inversify/lib/planning/queryable_string.js27
-rw-r--r--src/node_modules/inversify/lib/planning/reflection_utils.js124
-rw-r--r--src/node_modules/inversify/lib/planning/request.js24
-rw-r--r--src/node_modules/inversify/lib/planning/target.js90
9 files changed, 487 insertions, 0 deletions
diff --git a/src/node_modules/inversify/lib/planning/context.js b/src/node_modules/inversify/lib/planning/context.js
new file mode 100644
index 0000000..ceb5afc
--- /dev/null
+++ b/src/node_modules/inversify/lib/planning/context.js
@@ -0,0 +1,17 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var id_1 = require("../utils/id");
+var Context = (function () {
+ function Context(container) {
+ this.id = id_1.id();
+ this.container = container;
+ }
+ Context.prototype.addPlan = function (plan) {
+ this.plan = plan;
+ };
+ Context.prototype.setCurrentRequest = function (currentRequest) {
+ this.currentRequest = currentRequest;
+ };
+ return Context;
+}());
+exports.Context = Context;
diff --git a/src/node_modules/inversify/lib/planning/metadata.js b/src/node_modules/inversify/lib/planning/metadata.js
new file mode 100644
index 0000000..6e2fbc4
--- /dev/null
+++ b/src/node_modules/inversify/lib/planning/metadata.js
@@ -0,0 +1,19 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var METADATA_KEY = require("../constants/metadata_keys");
+var Metadata = (function () {
+ function Metadata(key, value) {
+ this.key = key;
+ this.value = value;
+ }
+ Metadata.prototype.toString = function () {
+ if (this.key === METADATA_KEY.NAMED_TAG) {
+ return "named: " + this.value.toString() + " ";
+ }
+ else {
+ return "tagged: { key:" + this.key.toString() + ", value: " + this.value + " }";
+ }
+ };
+ return Metadata;
+}());
+exports.Metadata = Metadata;
diff --git a/src/node_modules/inversify/lib/planning/metadata_reader.js b/src/node_modules/inversify/lib/planning/metadata_reader.js
new file mode 100644
index 0000000..9370551
--- /dev/null
+++ b/src/node_modules/inversify/lib/planning/metadata_reader.js
@@ -0,0 +1,21 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var METADATA_KEY = require("../constants/metadata_keys");
+var MetadataReader = (function () {
+ function MetadataReader() {
+ }
+ MetadataReader.prototype.getConstructorMetadata = function (constructorFunc) {
+ var compilerGeneratedMetadata = Reflect.getMetadata(METADATA_KEY.PARAM_TYPES, constructorFunc);
+ var userGeneratedMetadata = Reflect.getMetadata(METADATA_KEY.TAGGED, constructorFunc);
+ return {
+ compilerGeneratedMetadata: compilerGeneratedMetadata,
+ userGeneratedMetadata: userGeneratedMetadata || {}
+ };
+ };
+ MetadataReader.prototype.getPropertiesMetadata = function (constructorFunc) {
+ var userGeneratedMetadata = Reflect.getMetadata(METADATA_KEY.TAGGED_PROP, constructorFunc) || [];
+ return userGeneratedMetadata;
+ };
+ return MetadataReader;
+}());
+exports.MetadataReader = MetadataReader;
diff --git a/src/node_modules/inversify/lib/planning/plan.js b/src/node_modules/inversify/lib/planning/plan.js
new file mode 100644
index 0000000..18b1943
--- /dev/null
+++ b/src/node_modules/inversify/lib/planning/plan.js
@@ -0,0 +1,10 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var Plan = (function () {
+ function Plan(parentContext, rootRequest) {
+ this.parentContext = parentContext;
+ this.rootRequest = rootRequest;
+ }
+ return Plan;
+}());
+exports.Plan = Plan;
diff --git a/src/node_modules/inversify/lib/planning/planner.js b/src/node_modules/inversify/lib/planning/planner.js
new file mode 100644
index 0000000..c05eec9
--- /dev/null
+++ b/src/node_modules/inversify/lib/planning/planner.js
@@ -0,0 +1,155 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var binding_count_1 = require("../bindings/binding_count");
+var ERROR_MSGS = require("../constants/error_msgs");
+var literal_types_1 = require("../constants/literal_types");
+var METADATA_KEY = require("../constants/metadata_keys");
+var exceptions_1 = require("../utils/exceptions");
+var serialization_1 = require("../utils/serialization");
+var context_1 = require("./context");
+var metadata_1 = require("./metadata");
+var plan_1 = require("./plan");
+var reflection_utils_1 = require("./reflection_utils");
+var request_1 = require("./request");
+var target_1 = require("./target");
+function getBindingDictionary(cntnr) {
+ return cntnr._bindingDictionary;
+}
+exports.getBindingDictionary = getBindingDictionary;
+function _createTarget(isMultiInject, targetType, serviceIdentifier, name, key, value) {
+ var metadataKey = isMultiInject ? METADATA_KEY.MULTI_INJECT_TAG : METADATA_KEY.INJECT_TAG;
+ var injectMetadata = new metadata_1.Metadata(metadataKey, serviceIdentifier);
+ var target = new target_1.Target(targetType, name, serviceIdentifier, injectMetadata);
+ if (key !== undefined) {
+ var tagMetadata = new metadata_1.Metadata(key, value);
+ target.metadata.push(tagMetadata);
+ }
+ return target;
+}
+function _getActiveBindings(metadataReader, avoidConstraints, context, parentRequest, target) {
+ var bindings = getBindings(context.container, target.serviceIdentifier);
+ var activeBindings = [];
+ if (bindings.length === binding_count_1.BindingCount.NoBindingsAvailable &&
+ context.container.options.autoBindInjectable &&
+ typeof target.serviceIdentifier === "function" &&
+ metadataReader.getConstructorMetadata(target.serviceIdentifier).compilerGeneratedMetadata) {
+ context.container.bind(target.serviceIdentifier).toSelf();
+ bindings = getBindings(context.container, target.serviceIdentifier);
+ }
+ if (!avoidConstraints) {
+ activeBindings = bindings.filter(function (binding) {
+ var request = new request_1.Request(binding.serviceIdentifier, context, parentRequest, binding, target);
+ return binding.constraint(request);
+ });
+ }
+ else {
+ activeBindings = bindings;
+ }
+ _validateActiveBindingCount(target.serviceIdentifier, activeBindings, target, context.container);
+ return activeBindings;
+}
+function _validateActiveBindingCount(serviceIdentifier, bindings, target, container) {
+ switch (bindings.length) {
+ case binding_count_1.BindingCount.NoBindingsAvailable:
+ if (target.isOptional()) {
+ return bindings;
+ }
+ else {
+ var serviceIdentifierString = serialization_1.getServiceIdentifierAsString(serviceIdentifier);
+ var msg = ERROR_MSGS.NOT_REGISTERED;
+ msg += serialization_1.listMetadataForTarget(serviceIdentifierString, target);
+ msg += serialization_1.listRegisteredBindingsForServiceIdentifier(container, serviceIdentifierString, getBindings);
+ throw new Error(msg);
+ }
+ case binding_count_1.BindingCount.OnlyOneBindingAvailable:
+ if (!target.isArray()) {
+ return bindings;
+ }
+ case binding_count_1.BindingCount.MultipleBindingsAvailable:
+ default:
+ if (!target.isArray()) {
+ var serviceIdentifierString = serialization_1.getServiceIdentifierAsString(serviceIdentifier);
+ var msg = ERROR_MSGS.AMBIGUOUS_MATCH + " " + serviceIdentifierString;
+ msg += serialization_1.listRegisteredBindingsForServiceIdentifier(container, serviceIdentifierString, getBindings);
+ throw new Error(msg);
+ }
+ else {
+ return bindings;
+ }
+ }
+}
+function _createSubRequests(metadataReader, avoidConstraints, serviceIdentifier, context, parentRequest, target) {
+ var activeBindings;
+ var childRequest;
+ if (parentRequest === null) {
+ activeBindings = _getActiveBindings(metadataReader, avoidConstraints, context, null, target);
+ childRequest = new request_1.Request(serviceIdentifier, context, null, activeBindings, target);
+ var thePlan = new plan_1.Plan(context, childRequest);
+ context.addPlan(thePlan);
+ }
+ else {
+ activeBindings = _getActiveBindings(metadataReader, avoidConstraints, context, parentRequest, target);
+ childRequest = parentRequest.addChildRequest(target.serviceIdentifier, activeBindings, target);
+ }
+ activeBindings.forEach(function (binding) {
+ var subChildRequest = null;
+ if (target.isArray()) {
+ subChildRequest = childRequest.addChildRequest(binding.serviceIdentifier, binding, target);
+ }
+ else {
+ if (binding.cache) {
+ return;
+ }
+ subChildRequest = childRequest;
+ }
+ if (binding.type === literal_types_1.BindingTypeEnum.Instance && binding.implementationType !== null) {
+ var dependencies = reflection_utils_1.getDependencies(metadataReader, binding.implementationType);
+ if (!context.container.options.skipBaseClassChecks) {
+ var baseClassDependencyCount = reflection_utils_1.getBaseClassDependencyCount(metadataReader, binding.implementationType);
+ if (dependencies.length < baseClassDependencyCount) {
+ var error = ERROR_MSGS.ARGUMENTS_LENGTH_MISMATCH(reflection_utils_1.getFunctionName(binding.implementationType));
+ throw new Error(error);
+ }
+ }
+ dependencies.forEach(function (dependency) {
+ _createSubRequests(metadataReader, false, dependency.serviceIdentifier, context, subChildRequest, dependency);
+ });
+ }
+ });
+}
+function getBindings(container, serviceIdentifier) {
+ var bindings = [];
+ var bindingDictionary = getBindingDictionary(container);
+ if (bindingDictionary.hasKey(serviceIdentifier)) {
+ bindings = bindingDictionary.get(serviceIdentifier);
+ }
+ else if (container.parent !== null) {
+ bindings = getBindings(container.parent, serviceIdentifier);
+ }
+ return bindings;
+}
+function plan(metadataReader, container, isMultiInject, targetType, serviceIdentifier, key, value, avoidConstraints) {
+ if (avoidConstraints === void 0) { avoidConstraints = false; }
+ var context = new context_1.Context(container);
+ var target = _createTarget(isMultiInject, targetType, serviceIdentifier, "", key, value);
+ try {
+ _createSubRequests(metadataReader, avoidConstraints, serviceIdentifier, context, null, target);
+ return context;
+ }
+ catch (error) {
+ if (exceptions_1.isStackOverflowExeption(error)) {
+ if (context.plan) {
+ serialization_1.circularDependencyToException(context.plan.rootRequest);
+ }
+ }
+ throw error;
+ }
+}
+exports.plan = plan;
+function createMockRequest(container, serviceIdentifier, key, value) {
+ var target = new target_1.Target(literal_types_1.TargetTypeEnum.Variable, "", serviceIdentifier, new metadata_1.Metadata(key, value));
+ var context = new context_1.Context(container);
+ var request = new request_1.Request(serviceIdentifier, context, null, [], target);
+ return request;
+}
+exports.createMockRequest = createMockRequest;
diff --git a/src/node_modules/inversify/lib/planning/queryable_string.js b/src/node_modules/inversify/lib/planning/queryable_string.js
new file mode 100644
index 0000000..8eeec2f
--- /dev/null
+++ b/src/node_modules/inversify/lib/planning/queryable_string.js
@@ -0,0 +1,27 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var QueryableString = (function () {
+ function QueryableString(str) {
+ this.str = str;
+ }
+ QueryableString.prototype.startsWith = function (searchString) {
+ return this.str.indexOf(searchString) === 0;
+ };
+ QueryableString.prototype.endsWith = function (searchString) {
+ var reverseString = "";
+ var reverseSearchString = searchString.split("").reverse().join("");
+ reverseString = this.str.split("").reverse().join("");
+ return this.startsWith.call({ str: reverseString }, reverseSearchString);
+ };
+ QueryableString.prototype.contains = function (searchString) {
+ return (this.str.indexOf(searchString) !== -1);
+ };
+ QueryableString.prototype.equals = function (compareString) {
+ return this.str === compareString;
+ };
+ QueryableString.prototype.value = function () {
+ return this.str;
+ };
+ return QueryableString;
+}());
+exports.QueryableString = QueryableString;
diff --git a/src/node_modules/inversify/lib/planning/reflection_utils.js b/src/node_modules/inversify/lib/planning/reflection_utils.js
new file mode 100644
index 0000000..8c71f3c
--- /dev/null
+++ b/src/node_modules/inversify/lib/planning/reflection_utils.js
@@ -0,0 +1,124 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var inject_1 = require("../annotation/inject");
+var ERROR_MSGS = require("../constants/error_msgs");
+var literal_types_1 = require("../constants/literal_types");
+var METADATA_KEY = require("../constants/metadata_keys");
+var serialization_1 = require("../utils/serialization");
+exports.getFunctionName = serialization_1.getFunctionName;
+var target_1 = require("./target");
+function getDependencies(metadataReader, func) {
+ var constructorName = serialization_1.getFunctionName(func);
+ var targets = getTargets(metadataReader, constructorName, func, false);
+ return targets;
+}
+exports.getDependencies = getDependencies;
+function getTargets(metadataReader, constructorName, func, isBaseClass) {
+ var metadata = metadataReader.getConstructorMetadata(func);
+ var serviceIdentifiers = metadata.compilerGeneratedMetadata;
+ if (serviceIdentifiers === undefined) {
+ var msg = ERROR_MSGS.MISSING_INJECTABLE_ANNOTATION + " " + constructorName + ".";
+ throw new Error(msg);
+ }
+ var constructorArgsMetadata = metadata.userGeneratedMetadata;
+ var keys = Object.keys(constructorArgsMetadata);
+ var hasUserDeclaredUnknownInjections = (func.length === 0 && keys.length > 0);
+ var iterations = (hasUserDeclaredUnknownInjections) ? keys.length : func.length;
+ var constructorTargets = getConstructorArgsAsTargets(isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata, iterations);
+ var propertyTargets = getClassPropsAsTargets(metadataReader, func);
+ var targets = constructorTargets.concat(propertyTargets);
+ return targets;
+}
+function getConstructorArgsAsTarget(index, isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata) {
+ var targetMetadata = constructorArgsMetadata[index.toString()] || [];
+ var metadata = formatTargetMetadata(targetMetadata);
+ var isManaged = metadata.unmanaged !== true;
+ var serviceIdentifier = serviceIdentifiers[index];
+ var injectIdentifier = (metadata.inject || metadata.multiInject);
+ serviceIdentifier = (injectIdentifier) ? (injectIdentifier) : serviceIdentifier;
+ if (serviceIdentifier instanceof inject_1.LazyServiceIdentifer) {
+ serviceIdentifier = serviceIdentifier.unwrap();
+ }
+ if (isManaged) {
+ var isObject = serviceIdentifier === Object;
+ var isFunction = serviceIdentifier === Function;
+ var isUndefined = serviceIdentifier === undefined;
+ var isUnknownType = (isObject || isFunction || isUndefined);
+ if (!isBaseClass && isUnknownType) {
+ var msg = ERROR_MSGS.MISSING_INJECT_ANNOTATION + " argument " + index + " in class " + constructorName + ".";
+ throw new Error(msg);
+ }
+ var target = new target_1.Target(literal_types_1.TargetTypeEnum.ConstructorArgument, metadata.targetName, serviceIdentifier);
+ target.metadata = targetMetadata;
+ return target;
+ }
+ return null;
+}
+function getConstructorArgsAsTargets(isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata, iterations) {
+ var targets = [];
+ for (var i = 0; i < iterations; i++) {
+ var index = i;
+ var target = getConstructorArgsAsTarget(index, isBaseClass, constructorName, serviceIdentifiers, constructorArgsMetadata);
+ if (target !== null) {
+ targets.push(target);
+ }
+ }
+ return targets;
+}
+function getClassPropsAsTargets(metadataReader, constructorFunc) {
+ var classPropsMetadata = metadataReader.getPropertiesMetadata(constructorFunc);
+ var targets = [];
+ var keys = Object.keys(classPropsMetadata);
+ for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
+ var key = keys_1[_i];
+ var targetMetadata = classPropsMetadata[key];
+ var metadata = formatTargetMetadata(classPropsMetadata[key]);
+ var targetName = metadata.targetName || key;
+ var serviceIdentifier = (metadata.inject || metadata.multiInject);
+ var target = new target_1.Target(literal_types_1.TargetTypeEnum.ClassProperty, targetName, serviceIdentifier);
+ target.metadata = targetMetadata;
+ targets.push(target);
+ }
+ var baseConstructor = Object.getPrototypeOf(constructorFunc.prototype).constructor;
+ if (baseConstructor !== Object) {
+ var baseTargets = getClassPropsAsTargets(metadataReader, baseConstructor);
+ targets = targets.concat(baseTargets);
+ }
+ return targets;
+}
+function getBaseClassDependencyCount(metadataReader, func) {
+ var baseConstructor = Object.getPrototypeOf(func.prototype).constructor;
+ if (baseConstructor !== Object) {
+ var baseConstructorName = serialization_1.getFunctionName(baseConstructor);
+ var targets = getTargets(metadataReader, baseConstructorName, baseConstructor, true);
+ var metadata = targets.map(function (t) {
+ return t.metadata.filter(function (m) {
+ return m.key === METADATA_KEY.UNMANAGED_TAG;
+ });
+ });
+ var unmanagedCount = [].concat.apply([], metadata).length;
+ var dependencyCount = targets.length - unmanagedCount;
+ if (dependencyCount > 0) {
+ return dependencyCount;
+ }
+ else {
+ return getBaseClassDependencyCount(metadataReader, baseConstructor);
+ }
+ }
+ else {
+ return 0;
+ }
+}
+exports.getBaseClassDependencyCount = getBaseClassDependencyCount;
+function formatTargetMetadata(targetMetadata) {
+ var targetMetadataMap = {};
+ targetMetadata.forEach(function (m) {
+ targetMetadataMap[m.key.toString()] = m.value;
+ });
+ return {
+ inject: targetMetadataMap[METADATA_KEY.INJECT_TAG],
+ multiInject: targetMetadataMap[METADATA_KEY.MULTI_INJECT_TAG],
+ targetName: targetMetadataMap[METADATA_KEY.NAME_TAG],
+ unmanaged: targetMetadataMap[METADATA_KEY.UNMANAGED_TAG]
+ };
+}
diff --git a/src/node_modules/inversify/lib/planning/request.js b/src/node_modules/inversify/lib/planning/request.js
new file mode 100644
index 0000000..ad1c50c
--- /dev/null
+++ b/src/node_modules/inversify/lib/planning/request.js
@@ -0,0 +1,24 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var id_1 = require("../utils/id");
+var Request = (function () {
+ function Request(serviceIdentifier, parentContext, parentRequest, bindings, target) {
+ this.id = id_1.id();
+ this.serviceIdentifier = serviceIdentifier;
+ this.parentContext = parentContext;
+ this.parentRequest = parentRequest;
+ this.target = target;
+ this.childRequests = [];
+ this.bindings = (Array.isArray(bindings) ? bindings : [bindings]);
+ this.requestScope = parentRequest === null
+ ? new Map()
+ : null;
+ }
+ Request.prototype.addChildRequest = function (serviceIdentifier, bindings, target) {
+ var child = new Request(serviceIdentifier, this.parentContext, this, bindings, target);
+ this.childRequests.push(child);
+ return child;
+ };
+ return Request;
+}());
+exports.Request = Request;
diff --git a/src/node_modules/inversify/lib/planning/target.js b/src/node_modules/inversify/lib/planning/target.js
new file mode 100644
index 0000000..a97d228
--- /dev/null
+++ b/src/node_modules/inversify/lib/planning/target.js
@@ -0,0 +1,90 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var METADATA_KEY = require("../constants/metadata_keys");
+var id_1 = require("../utils/id");
+var metadata_1 = require("./metadata");
+var queryable_string_1 = require("./queryable_string");
+var Target = (function () {
+ function Target(type, name, serviceIdentifier, namedOrTagged) {
+ this.id = id_1.id();
+ this.type = type;
+ this.serviceIdentifier = serviceIdentifier;
+ this.name = new queryable_string_1.QueryableString(name || "");
+ this.metadata = new Array();
+ var metadataItem = null;
+ if (typeof namedOrTagged === "string") {
+ metadataItem = new metadata_1.Metadata(METADATA_KEY.NAMED_TAG, namedOrTagged);
+ }
+ else if (namedOrTagged instanceof metadata_1.Metadata) {
+ metadataItem = namedOrTagged;
+ }
+ if (metadataItem !== null) {
+ this.metadata.push(metadataItem);
+ }
+ }
+ Target.prototype.hasTag = function (key) {
+ for (var _i = 0, _a = this.metadata; _i < _a.length; _i++) {
+ var m = _a[_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 () {
+ return this.metadata.some(function (m) {
+ return (m.key !== METADATA_KEY.INJECT_TAG) &&
+ (m.key !== METADATA_KEY.MULTI_INJECT_TAG) &&
+ (m.key !== METADATA_KEY.NAME_TAG) &&
+ (m.key !== METADATA_KEY.UNMANAGED_TAG) &&
+ (m.key !== METADATA_KEY.NAMED_TAG);
+ });
+ };
+ Target.prototype.isOptional = function () {
+ return this.matchesTag(METADATA_KEY.OPTIONAL_TAG)(true);
+ };
+ Target.prototype.getNamedTag = function () {
+ if (this.isNamed()) {
+ return this.metadata.filter(function (m) { return m.key === METADATA_KEY.NAMED_TAG; })[0];
+ }
+ return null;
+ };
+ Target.prototype.getCustomTags = function () {
+ if (this.isTagged()) {
+ return this.metadata.filter(function (m) {
+ return (m.key !== METADATA_KEY.INJECT_TAG) &&
+ (m.key !== METADATA_KEY.MULTI_INJECT_TAG) &&
+ (m.key !== METADATA_KEY.NAME_TAG) &&
+ (m.key !== METADATA_KEY.UNMANAGED_TAG) &&
+ (m.key !== METADATA_KEY.NAMED_TAG);
+ });
+ }
+ return null;
+ };
+ 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, _a = _this.metadata; _i < _a.length; _i++) {
+ var m = _a[_i];
+ if (m.key === key && m.value === value) {
+ return true;
+ }
+ }
+ return false;
+ };
+ };
+ return Target;
+}());
+exports.Target = Target;