@nodeboot/di
Version:
Dependency Injection plugin for Node-Boot
47 lines • 1.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.decorateInjection = decorateInjection;
/**
* Apply proper @Inject decorator if dependency injection framework is available
* */
function decorateInjection(target, propertyName, index, options) {
return decorateTypeDi(target, propertyName, index, options) || decorateInversify(target, propertyName, index);
}
/**
* Apply @Inject decorator if TypeDI framework is available
* */
function decorateTypeDi(target, propertyName, index, options) {
let decorated;
try {
const { Inject } = require("typedi");
Inject(options)(target, propertyName, index);
decorated = true;
}
catch (error) {
if (error.name === "CannotInjectValueError") {
throw error;
}
// TypeDi is not available
console.warn("@Service decorator is only applied if 'TypeDi' dependency is available!");
decorated = false;
}
return decorated;
}
/**
* Apply @inject decorator if Inversify framework is available
* */
function decorateInversify(target, propertyName, index, options) {
let decorated;
try {
const { inject } = require("inversify");
inject(options)(target, propertyName, index);
decorated = true;
}
catch (error) {
// Inversify is not available
console.warn("@inject decorator is only applied if 'Inversify' dependency is available!");
decorated = false;
}
return decorated;
}
//# sourceMappingURL=makeInjectionDecoration.js.map