nestjs-custom-injector
Version:
Custom injecting logic for NestJS with support multi providing
38 lines • 1.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CustomInject = exports.CustomInjector = void 0;
const custom_injector_service_1 = require("./custom-injector.service");
const custom_injector_types_1 = require("./custom-injector.types");
function CustomInjector() {
return function (target, propertyKey) {
Object.defineProperty(target, propertyKey, {
get: function () {
return custom_injector_service_1.CustomInjectorService.getInstance();
},
});
};
}
exports.CustomInjector = CustomInjector;
function CustomInject(token, options) {
return function (target, propertyKey) {
let injectedProvidersStorageItem = Reflect.getMetadata(`${custom_injector_types_1.CUSTOM_INJECTOR_METADATA}_${propertyKey}`, target);
if (injectedProvidersStorageItem === undefined) {
injectedProvidersStorageItem =
custom_injector_service_1.CustomInjectorService.getInstance().createInjectedProvidersStorageItem(token, target, options || {});
}
Reflect.defineMetadata(`${custom_injector_types_1.CUSTOM_INJECTOR_METADATA}_${propertyKey}`, injectedProvidersStorageItem, target);
Object.defineProperty(target, propertyKey, {
get: function () {
if (!injectedProvidersStorageItem) {
throw new custom_injector_types_1.CustomInjectorError('injectedProvidersStorageItem not set');
}
if ((options === null || options === void 0 ? void 0 : options.lazy) || !injectedProvidersStorageItem.appiled) {
injectedProvidersStorageItem.init();
}
return injectedProvidersStorageItem.instance;
},
});
};
}
exports.CustomInject = CustomInject;
//# sourceMappingURL=custom-injector.decorators.js.map