1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.createQueueProviders = exports.createQueueOptionProviders = void 0;
|
4 | const bull_shared_1 = require("@nestjs/bull-shared");
|
5 | const common_1 = require("@nestjs/common");
|
6 | const Bull = require("bull");
|
7 | const is_advanced_processor_util_1 = require("./utils/is-advanced-processor.util");
|
8 | const is_advanced_separate_processor_util_1 = require("./utils/is-advanced-separate-processor.util");
|
9 | const is_processor_callback_util_1 = require("./utils/is-processor-callback.util");
|
10 | const is_separate_processor_util_1 = require("./utils/is-separate-processor.util");
|
11 | function 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 | }
|
40 | function 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 | }
|
59 | exports.createQueueOptionProviders = createQueueOptionProviders;
|
60 | function 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 | }
|
70 | exports.createQueueProviders = createQueueProviders;
|