UNPKG

dipend

Version:

This library implements a dependency injection (DI) system in JavaScript/TypeScript, making it easier to manage dependencies in modular applications.

59 lines (57 loc) 2.29 kB
/* * Copyright 2025 Saulo V. Alvarenga. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExceptionHandler = void 0; class ExceptionHandler { dependencyTokenStore; dependencyTokenType; dependencyTokenName; constructor(dependencyTokenStore, dependencyTokenType, dependencyTokenName) { this.dependencyTokenStore = dependencyTokenStore; this.dependencyTokenType = dependencyTokenType; this.dependencyTokenName = dependencyTokenName; } createErrorMessage(tokenName, description) { return `Error: ${description} - Caused by: [${tokenName}]`; } getTokenNames(dependencyIds) { const tokenNames = dependencyIds.map((dependencyId) => { try { const tokens = this.dependencyTokenStore.getTokens(dependencyId); const names = tokens.map((token) => { const dependencyTokenType = this.dependencyTokenType.getTokenType(token); const dependencyTokenName = this.dependencyTokenName.getTokenName(token, dependencyTokenType); return dependencyTokenName; }); return `(${names.join(" - ")})`; } catch { return `(UNKNOWN DEPENDENCY ID: ${dependencyId})`; } }); return tokenNames; } handle(input) { const tokenNames = this.getTokenNames(input.dependencyIds); const error = new Error(this.createErrorMessage(tokenNames.join(", "), input.message), { cause: input.cause, }); error.stack = input.stack; throw error; } } exports.ExceptionHandler = ExceptionHandler;