UNPKG

@inversifyjs/core

Version:

InversifyJs core package

77 lines (71 loc) 4.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.throwErrorWhenUnexpectedBindingsAmountFound = throwErrorWhenUnexpectedBindingsAmountFound; const common_1 = require("@inversifyjs/common"); const stringifyBinding_1 = require("../../binding/calculations/stringifyBinding"); const InversifyCoreError_1 = require("../../error/models/InversifyCoreError"); const InversifyCoreErrorKind_1 = require("../../error/models/InversifyCoreErrorKind"); const isPlanServiceRedirectionBindingNode_1 = require("./isPlanServiceRedirectionBindingNode"); function throwErrorWhenUnexpectedBindingsAmountFound(bindings, isOptional, node, bindingConstraints) { let serviceIdentifier; let parentServiceIdentifier; if ((0, isPlanServiceRedirectionBindingNode_1.isPlanServiceRedirectionBindingNode)(node)) { serviceIdentifier = node.binding.targetServiceIdentifier; parentServiceIdentifier = node.binding.serviceIdentifier; } else { serviceIdentifier = node.serviceIdentifier; parentServiceIdentifier = node.parent?.binding.serviceIdentifier; } if (Array.isArray(bindings)) { throwErrorWhenMultipleUnexpectedBindingsAmountFound(bindings, isOptional, serviceIdentifier, parentServiceIdentifier, bindingConstraints); } else { throwErrorWhenSingleUnexpectedBindingFound(bindings, isOptional, serviceIdentifier, parentServiceIdentifier, bindingConstraints); } } function throwBindingNotFoundError(serviceIdentifier, parentServiceIdentifier, bindingConstraints) { const errorMessage = `No bindings found for service: "${(0, common_1.stringifyServiceIdentifier)(serviceIdentifier)}". Trying to resolve bindings for "${stringifyParentServiceIdentifier(serviceIdentifier, parentServiceIdentifier)}". ${stringifyBindingConstraints(bindingConstraints)}`; throw new InversifyCoreError_1.InversifyCoreError(InversifyCoreErrorKind_1.InversifyCoreErrorKind.planning, errorMessage); } function throwErrorWhenMultipleUnexpectedBindingsAmountFound(bindings, isOptional, serviceIdentifier, parentServiceIdentifier, bindingConstraints) { if (bindings.length === 0) { if (!isOptional) { throwBindingNotFoundError(serviceIdentifier, parentServiceIdentifier, bindingConstraints); } } else { const errorMessage = `Ambiguous bindings found for service: "${(0, common_1.stringifyServiceIdentifier)(serviceIdentifier)}". Registered bindings: ${bindings.map((binding) => (0, stringifyBinding_1.stringifyBinding)(binding.binding)).join('\n')} Trying to resolve bindings for "${stringifyParentServiceIdentifier(serviceIdentifier, parentServiceIdentifier)}". ${stringifyBindingConstraints(bindingConstraints)}`; throw new InversifyCoreError_1.InversifyCoreError(InversifyCoreErrorKind_1.InversifyCoreErrorKind.planning, errorMessage); } } function throwErrorWhenSingleUnexpectedBindingFound(bindings, isOptional, serviceIdentifier, parentServiceIdentifier, bindingConstraints) { if (bindings === undefined && !isOptional) { throwBindingNotFoundError(serviceIdentifier, parentServiceIdentifier, bindingConstraints); } else { return; } } function stringifyParentServiceIdentifier(serviceIdentifier, parentServiceIdentifier) { return parentServiceIdentifier === undefined ? `${(0, common_1.stringifyServiceIdentifier)(serviceIdentifier)} (Root service)` : (0, common_1.stringifyServiceIdentifier)(parentServiceIdentifier); } function stringifyBindingConstraints(bindingConstraints) { const stringifiedTags = bindingConstraints.tags.size === 0 ? '' : ` - tags: - ${[...bindingConstraints.tags.keys()].map((key) => key.toString()).join('\n - ')}`; return `Binding constraints: - service identifier: ${(0, common_1.stringifyServiceIdentifier)(bindingConstraints.serviceIdentifier)} - name: ${bindingConstraints.name?.toString() ?? '-'}${stringifiedTags}`; } //# sourceMappingURL=throwErrorWhenUnexpectedBindingsAmountFound.js.map