@launchtray/tsyringe-async
Version:
Lightweight dependency injection container for JavaScript/TypeScript, with asynchronous resolution
32 lines (31 loc) • 1.26 kB
JavaScript
import { __read, __spread } from "tslib";
function formatDependency(params, idx) {
if (params == null) {
return "at position #" + idx;
}
var argName = params.split(",")[idx].trim();
return "\"" + argName + "\" at position #" + idx;
}
function composeErrorMessage(msg, e, indent) {
if (indent === void 0) { indent = " "; }
return __spread([msg], e.message.split("\n").map(function (l) { return indent + l; })).join("\n");
}
export function formatErrorCtor(ctor, paramIdx, error, propertyKey) {
var _a, _b;
if (propertyKey === void 0) { propertyKey = undefined; }
var params;
var targetName;
if (propertyKey) {
var methodName = String(propertyKey);
_a = __read(ctor.constructor
.toString()
.match(new RegExp(methodName + "\\(([\\w, ]+)\\)")) || [], 2), params = _a[1];
targetName = ctor.constructor.name + "." + methodName;
}
else {
_b = __read(ctor.toString().match(/constructor\(([\w, ]+)\)/) || [], 2), params = _b[1];
targetName = ctor.name + " constructor";
}
var dep = formatDependency(params, paramIdx);
return composeErrorMessage("Cannot inject the dependency " + dep + " of " + targetName + ". Reason:", error);
}