1 | "use strict";
|
2 | var BullModule_1;
|
3 | Object.defineProperty(exports, "__esModule", { value: true });
|
4 | exports.BullModule = void 0;
|
5 | const tslib_1 = require("tslib");
|
6 | const bull_shared_1 = require("@nestjs/bull-shared");
|
7 | const common_1 = require("@nestjs/common");
|
8 | const core_1 = require("@nestjs/core");
|
9 | const bull_metadata_accessor_1 = require("./bull-metadata.accessor");
|
10 | const bull_explorer_1 = require("./bull.explorer");
|
11 | const bull_providers_1 = require("./bull.providers");
|
12 | let BullModule = BullModule_1 = class BullModule {
|
13 | |
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 | static forRoot(keyOrConfig, bullConfig) {
|
21 | const [configKey, sharedBullConfig] = typeof keyOrConfig === 'string'
|
22 | ? [keyOrConfig, bullConfig]
|
23 | : [undefined, keyOrConfig];
|
24 | const sharedBullConfigProvider = {
|
25 | provide: (0, bull_shared_1.getSharedConfigToken)(configKey),
|
26 | useValue: sharedBullConfig,
|
27 | };
|
28 | return {
|
29 | global: true,
|
30 | module: BullModule_1,
|
31 | providers: [sharedBullConfigProvider],
|
32 | exports: [sharedBullConfigProvider],
|
33 | };
|
34 | }
|
35 | |
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 | static forRootAsync(keyOrAsyncConfig, asyncBullConfig) {
|
43 | const [configKey, asyncSharedBullConfig] = typeof keyOrAsyncConfig === 'string'
|
44 | ? [keyOrAsyncConfig, asyncBullConfig]
|
45 | : [undefined, keyOrAsyncConfig];
|
46 | const imports = this.getUniqImports([asyncSharedBullConfig]);
|
47 | const providers = this.createAsyncSharedConfigurationProviders(configKey, asyncSharedBullConfig);
|
48 | return {
|
49 | global: true,
|
50 | module: BullModule_1,
|
51 | imports,
|
52 | providers,
|
53 | exports: providers,
|
54 | };
|
55 | }
|
56 | static registerQueue(...options) {
|
57 | const queueProviders = (0, bull_providers_1.createQueueProviders)([].concat(options));
|
58 | const queueOptionProviders = (0, bull_providers_1.createQueueOptionProviders)([].concat(options));
|
59 | return {
|
60 | module: BullModule_1,
|
61 | imports: [BullModule_1.registerCore()],
|
62 | providers: [...queueOptionProviders, ...queueProviders],
|
63 | exports: queueProviders,
|
64 | };
|
65 | }
|
66 | static registerQueueAsync(...options) {
|
67 | const optionsArr = [].concat(options);
|
68 | const queueProviders = (0, bull_providers_1.createQueueProviders)(optionsArr);
|
69 | const imports = this.getUniqImports(optionsArr);
|
70 | const asyncQueueOptionsProviders = options
|
71 | .map((queueOptions) => this.createAsyncProviders(queueOptions))
|
72 | .reduce((a, b) => a.concat(b), []);
|
73 | return {
|
74 | imports: imports.concat(BullModule_1.registerCore()),
|
75 | module: BullModule_1,
|
76 | providers: [...asyncQueueOptionsProviders, ...queueProviders],
|
77 | exports: queueProviders,
|
78 | };
|
79 | }
|
80 | static createAsyncProviders(options) {
|
81 | const optionalSharedConfigHolder = (0, bull_shared_1.createConditionalDepHolder)((0, bull_shared_1.getSharedConfigToken)(options.configKey));
|
82 | if (options.useExisting || options.useFactory) {
|
83 | return [
|
84 | optionalSharedConfigHolder,
|
85 | this.createAsyncOptionsProvider(options, optionalSharedConfigHolder),
|
86 | ];
|
87 | }
|
88 | if (!options.useClass) {
|
89 |
|
90 | return (0, bull_providers_1.createQueueOptionProviders)([options]);
|
91 | }
|
92 | const useClass = options.useClass;
|
93 | return [
|
94 | optionalSharedConfigHolder,
|
95 | this.createAsyncOptionsProvider(options, optionalSharedConfigHolder),
|
96 | {
|
97 | provide: useClass,
|
98 | useClass,
|
99 | },
|
100 | ];
|
101 | }
|
102 | static createAsyncOptionsProvider(asyncOptions, optionalSharedConfigHolderRef) {
|
103 | if (asyncOptions.useFactory) {
|
104 | return {
|
105 | provide: (0, bull_shared_1.getQueueOptionsToken)(asyncOptions.name),
|
106 | useFactory: async (optionalDepHolder, ...factoryArgs) => {
|
107 | return {
|
108 | ...optionalDepHolder.getDependencyRef(asyncOptions.name),
|
109 | ...(await asyncOptions.useFactory(...factoryArgs)),
|
110 | };
|
111 | },
|
112 | inject: [optionalSharedConfigHolderRef, ...(asyncOptions.inject || [])],
|
113 | };
|
114 | }
|
115 |
|
116 | const inject = [
|
117 | (asyncOptions.useClass ||
|
118 | asyncOptions.useExisting),
|
119 | ];
|
120 | return {
|
121 | provide: (0, bull_shared_1.getQueueOptionsToken)(asyncOptions.name),
|
122 | useFactory: async (optionalDepHolder, optionsFactory) => {
|
123 | return {
|
124 | ...optionalDepHolder.getDependencyRef(asyncOptions.name),
|
125 | ...(await optionsFactory.createBullOptions()),
|
126 | };
|
127 | },
|
128 | inject: [optionalSharedConfigHolderRef, ...inject],
|
129 | };
|
130 | }
|
131 | static createAsyncSharedConfigurationProviders(configKey, options) {
|
132 | if (options.useExisting || options.useFactory) {
|
133 | return [this.createAsyncSharedConfigurationProvider(configKey, options)];
|
134 | }
|
135 | const useClass = options.useClass;
|
136 | return [
|
137 | this.createAsyncSharedConfigurationProvider(configKey, options),
|
138 | {
|
139 | provide: useClass,
|
140 | useClass,
|
141 | },
|
142 | ];
|
143 | }
|
144 | static createAsyncSharedConfigurationProvider(configKey, options) {
|
145 | if (options.useFactory) {
|
146 | return {
|
147 | provide: (0, bull_shared_1.getSharedConfigToken)(configKey),
|
148 | useFactory: options.useFactory,
|
149 | inject: options.inject || [],
|
150 | };
|
151 | }
|
152 |
|
153 | const inject = [
|
154 | (options.useClass ||
|
155 | options.useExisting),
|
156 | ];
|
157 | return {
|
158 | provide: (0, bull_shared_1.getSharedConfigToken)(configKey),
|
159 | useFactory: async (optionsFactory) => optionsFactory.createSharedConfiguration(),
|
160 | inject,
|
161 | };
|
162 | }
|
163 | static registerCore() {
|
164 | return {
|
165 | global: true,
|
166 | module: BullModule_1,
|
167 | imports: [core_1.DiscoveryModule],
|
168 | providers: [bull_explorer_1.BullExplorer, bull_metadata_accessor_1.BullMetadataAccessor],
|
169 | };
|
170 | }
|
171 | static getUniqImports(options) {
|
172 | return (options
|
173 | .map((option) => option.imports)
|
174 | .reduce((acc, i) => acc.concat(i || []), [])
|
175 | .filter((v, i, a) => a.indexOf(v) === i) || []);
|
176 | }
|
177 | };
|
178 | BullModule = BullModule_1 = tslib_1.__decorate([
|
179 | (0, common_1.Module)({})
|
180 | ], BullModule);
|
181 | exports.BullModule = BullModule;
|