UNPKG

@launchtray/tsyringe-async

Version:

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

32 lines (31 loc) 1.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const reflection_helpers_1 = require("./reflection-helpers"); const injection_token_1 = require("./providers/injection-token"); const error_helpers_1 = require("./error-helpers"); function resolveParams(container, target, propertyKey = undefined, ...args) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const paramInfo = reflection_helpers_1.getParamInfo(target, propertyKey); const resolvedArgs = [...args]; const types = paramInfo.slice(args.length); let index = 0; for (const type of types) { try { if (injection_token_1.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(error_helpers_1.formatErrorCtor(target, argIndex, e, propertyKey)); } index += 1; } return resolvedArgs; }); } exports.resolveParams = resolveParams;