UNPKG

3.2 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.createQueueProviders = exports.createQueueOptionProviders = void 0;
4const bull_shared_1 = require("@nestjs/bull-shared");
5const common_1 = require("@nestjs/common");
6const Bull = require("bull");
7const is_advanced_processor_util_1 = require("./utils/is-advanced-processor.util");
8const is_advanced_separate_processor_util_1 = require("./utils/is-advanced-separate-processor.util");
9const is_processor_callback_util_1 = require("./utils/is-processor-callback.util");
10const is_separate_processor_util_1 = require("./utils/is-separate-processor.util");
11function buildQueue(options) {
12 const queueName = options.name ? options.name : 'default';
13 const queue = typeof (options === null || options === void 0 ? void 0 : options.redis) === 'string'
14 ? new Bull(queueName, options.redis, options)
15 : new Bull(queueName, options);
16 if (options.processors) {
17 options.processors.forEach((processor) => {
18 let args = [];
19 if ((0, is_advanced_processor_util_1.isAdvancedProcessor)(processor)) {
20 args.push(processor.name, processor.concurrency, processor.callback);
21 }
22 else if ((0, is_advanced_separate_processor_util_1.isAdvancedSeparateProcessor)(processor)) {
23 args.push(processor.name, processor.concurrency, processor.path);
24 }
25 else if ((0, is_separate_processor_util_1.isSeparateProcessor)(processor)) {
26 args.push(processor);
27 }
28 else if ((0, is_processor_callback_util_1.isProcessorCallback)(processor)) {
29 args.push(processor);
30 }
31 args = args.filter((arg) => typeof arg !== 'undefined');
32 queue.process.call(queue, ...args);
33 });
34 }
35 queue.onApplicationShutdown = function () {
36 return this.close();
37 };
38 return queue;
39}
40function createQueueOptionProviders(options) {
41 const providers = options.map((option) => {
42 const optionalSharedConfigHolder = (0, bull_shared_1.createConditionalDepHolder)((0, bull_shared_1.getSharedConfigToken)(option.configKey));
43 return [
44 optionalSharedConfigHolder,
45 {
46 provide: (0, bull_shared_1.getQueueOptionsToken)(option.name),
47 useFactory: (optionalDepHolder) => {
48 return {
49 ...optionalDepHolder.getDependencyRef(option.name),
50 ...option,
51 };
52 },
53 inject: [optionalSharedConfigHolder],
54 },
55 ];
56 });
57 return (0, common_1.flatten)(providers);
58}
59exports.createQueueOptionProviders = createQueueOptionProviders;
60function createQueueProviders(options) {
61 return options.map((option) => ({
62 provide: (0, bull_shared_1.getQueueToken)(option.name),
63 useFactory: (o) => {
64 const queueName = o.name || option.name;
65 return buildQueue({ ...o, name: queueName });
66 },
67 inject: [(0, bull_shared_1.getQueueOptionsToken)(option.name)],
68 }));
69}
70exports.createQueueProviders = createQueueProviders;