UNPKG

@cemusta/nestjs-pulse

Version:

The modern MongoDB-powered scheduling library pulse for NestJS

123 lines 4.38 kB
"use strict"; 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