UNPKG

@launchtray/tsyringe-async

Version:

Lightweight dependency injection container for JavaScript/TypeScript, with asynchronous resolution

29 lines (28 loc) 1.15 kB
import { __awaiter } from "tslib"; import { getParamInfo } from "./reflection-helpers"; import { isTokenDescriptor } from "./providers/injection-token"; import { formatErrorCtor } from "./error-helpers"; export function resolveParams(container, target, propertyKey = undefined, ...args) { return __awaiter(this, void 0, void 0, function* () { const paramInfo = getParamInfo(target, propertyKey); const resolvedArgs = [...args]; const types = paramInfo.slice(args.length); let index = 0; for (const type of types) { try { if (isTokenDescriptor(type)) { resolvedArgs.push(type.multiple ? yield container.resolveAll(type.token) : yield container.resolve(type.token)); } resolvedArgs.push(yield container.resolve(type)); } catch (e) { const argIndex = index + args.length; throw new Error(formatErrorCtor(target, argIndex, e, propertyKey)); } index += 1; } return resolvedArgs; }); }