Viewing File: /home/ubuntu/efiexchange-node-base/node_modules/tsyringe/dist/esm2015/decorators/auto-injectable.js
import { getParamInfo } from "../reflection-helpers";
import { instance as globalContainer } from "../dependency-container";
import { isTokenDescriptor, isTransformDescriptor } from "../providers/injection-token";
import { formatErrorCtor } from "../error-helpers";
function autoInjectable() {
return function (target) {
const paramInfo = getParamInfo(target);
return class extends target {
constructor(...args) {
super(...args.concat(paramInfo.slice(args.length).map((type, index) => {
try {
if (isTokenDescriptor(type)) {
if (isTransformDescriptor(type)) {
return type.multiple
? globalContainer
.resolve(type.transform)
.transform(globalContainer.resolveAll(type.token), ...type.transformArgs)
: globalContainer
.resolve(type.transform)
.transform(globalContainer.resolve(type.token), ...type.transformArgs);
}
else {
return type.multiple
? globalContainer.resolveAll(type.token)
: globalContainer.resolve(type.token);
}
}
else if (isTransformDescriptor(type)) {
return globalContainer
.resolve(type.transform)
.transform(globalContainer.resolve(type.token), ...type.transformArgs);
}
return globalContainer.resolve(type);
}
catch (e) {
const argIndex = index + args.length;
throw new Error(formatErrorCtor(target, argIndex, e));
}
})));
}
};
};
}
export default autoInjectable;
Back to Directory
File Manager