@launchtray/tsyringe-async
Version:
Lightweight dependency injection container for JavaScript/TypeScript, with asynchronous resolution
32 lines (31 loc) • 1.33 kB
JavaScript
;
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;