UNPKG

@inversifyjs/core

Version:

InversifyJs core package

75 lines (69 loc) 4.54 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"); function throwErrorWhenUnexpectedBindingsAmountFound(bindingNodes, isOptional, bindingConstraintNode, serviceRedirections) { const serviceIdentifier = bindingConstraintNode.elem.serviceIdentifier; const parentServiceIdentifier = bindingConstraintNode.previous?.elem.serviceIdentifier; if (Array.isArray(bindingNodes)) { throwErrorWhenMultipleUnexpectedBindingsAmountFound(bindingNodes, isOptional, serviceIdentifier, parentServiceIdentifier, bindingConstraintNode.elem, serviceRedirections); } else { throwErrorWhenSingleUnexpectedBindingFound(bindingNodes, isOptional, serviceIdentifier, parentServiceIdentifier, bindingConstraintNode.elem, serviceRedirections); } } function throwBindingNotFoundError(serviceIdentifier, parentServiceIdentifier, bindingConstraints, serviceRedirections) { const lastResolvedServiceIdentifier = serviceRedirections[serviceRedirections.length - 1] ?? serviceIdentifier; const errorMessage = `No bindings found for service: "${(0, common_1.stringifyServiceIdentifier)(lastResolvedServiceIdentifier)}". Trying to resolve bindings for "${stringifyParentServiceIdentifier(serviceIdentifier, parentServiceIdentifier)}".${stringifyServiceRedirections(serviceRedirections)}${stringifyBindingConstraints(bindingConstraints)}`; throw new InversifyCoreError_1.InversifyCoreError(InversifyCoreErrorKind_1.InversifyCoreErrorKind.planning, errorMessage); } function throwErrorWhenMultipleUnexpectedBindingsAmountFound(bindingNodes, isOptional, serviceIdentifier, parentServiceIdentifier, bindingConstraints, serviceRedirections) { if (bindingNodes.length === 0) { if (!isOptional) { throwBindingNotFoundError(serviceIdentifier, parentServiceIdentifier, bindingConstraints, serviceRedirections); } } else { const lastResolvedServiceIdentifier = serviceRedirections[serviceRedirections.length - 1] ?? serviceIdentifier; const errorMessage = `Ambiguous bindings found for service: "${(0, common_1.stringifyServiceIdentifier)(lastResolvedServiceIdentifier)}".${stringifyServiceRedirections(serviceRedirections)} Registered bindings: ${bindingNodes.map((bindingNode) => (0, stringifyBinding_1.stringifyBinding)(bindingNode.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(bindingNode, isOptional, serviceIdentifier, parentServiceIdentifier, bindingConstraints, serviceRedirections) { if (bindingNode === undefined && !isOptional) { throwBindingNotFoundError(serviceIdentifier, parentServiceIdentifier, bindingConstraints, serviceRedirections); } } 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}`; } function stringifyServiceRedirections(serviceRedirections) { return serviceRedirections.length === 0 ? '' : ` - service redirections: - ${serviceRedirections .map((serviceIdentifier) => (0, common_1.stringifyServiceIdentifier)(serviceIdentifier)) .join('\n - ')}`; } //# sourceMappingURL=throwErrorWhenUnexpectedBindingsAmountFound.js.map