@cemusta/nestjs-pulse
Version:
The modern MongoDB-powered scheduling library pulse for NestJS
123 lines • 4.38 kB
JavaScript
;
var PulseModule_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PulseModule = void 0;
const tslib_1 = require("tslib");
const common_1 = require("@nestjs/common");
const core_1 = require("@nestjs/core");
const constants_1 = require("./constants");
const factories_1 = require("./factories");
const providers_1 = require("./providers");
const pulse_orchestrator_1 = require("./providers/pulse.orchestrator");
const database_service_1 = require("./providers/database.service");
const utils_1 = require("./utils");
let PulseModule = PulseModule_1 = class PulseModule {
static forRoot(config) {
const configProviders = [
{
provide: constants_1.PULSE_MODULE_CONFIG,
useValue: config,
},
database_service_1.DatabaseService,
providers_1.PulseMetadataAccessor,
providers_1.PulseExplorer,
pulse_orchestrator_1.PulseOrchestrator,
];
return {
global: true,
module: PulseModule_1,
providers: configProviders,
exports: configProviders,
};
}
static forRootAsync(config) {
const providers = this.createAsyncProviders(constants_1.PULSE_MODULE_CONFIG, config);
return {
global: true,
module: PulseModule_1,
imports: config.imports || [],
providers: [
...providers,
database_service_1.DatabaseService,
providers_1.PulseMetadataAccessor,
providers_1.PulseExplorer,
pulse_orchestrator_1.PulseOrchestrator,
...(config.extraProviders || []),
],
exports: providers,
};
}
static registerQueue(name, config = {}) {
const queueConfigToken = (0, utils_1.getQueueConfigToken)(name);
const providers = [
{
provide: queueConfigToken,
useValue: { autoStart: true, ...config },
},
{
provide: (0, utils_1.getQueueToken)(name),
useFactory: factories_1.pulseFactory,
inject: [queueConfigToken, constants_1.PULSE_MODULE_CONFIG],
},
];
return {
module: PulseModule_1,
providers,
exports: providers,
};
}
static registerQueueAsync(name, config) {
const queueConfigToken = (0, utils_1.getQueueConfigToken)(name);
const providers = [
{
provide: (0, utils_1.getQueueToken)(name),
useFactory: factories_1.pulseFactory,
inject: [queueConfigToken, constants_1.PULSE_MODULE_CONFIG],
},
...this.createAsyncProviders(queueConfigToken, config),
];
return {
module: PulseModule_1,
imports: config.imports || [],
providers: [...providers, ...(config.extraProviders || [])],
exports: providers,
};
}
static createAsyncProviders(token, config) {
if (config.useExisting || config.useFactory) {
return [this.createAsyncOptionsProvider(token, config)];
}
const useClass = config.useClass;
return [
this.createAsyncOptionsProvider(token, config),
{
provide: useClass,
useClass,
},
];
}
static createAsyncOptionsProvider(token, config) {
if (config.useFactory) {
return {
provide: token,
useFactory: config.useFactory,
inject: config.inject || [],
};
}
const inject = [(config.useClass || config.useExisting)];
return {
provide: token,
useFactory: async (optionsFactory) => optionsFactory.createPulseConfig(),
inject,
};
}
};
exports.PulseModule = PulseModule;
exports.PulseModule = PulseModule = PulseModule_1 = tslib_1.__decorate([
(0, common_1.Module)({
imports: [core_1.DiscoveryModule],
providers: [pulse_orchestrator_1.PulseOrchestrator, database_service_1.DatabaseService],
exports: [pulse_orchestrator_1.PulseOrchestrator],
})
], PulseModule);
//# sourceMappingURL=pulse.module.js.map