@tsed/bullmq 7.59.0 → 7.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/lib/cjs/BullMQModule.js +51 -56
  2. package/lib/cjs/BullMQModule.js.map +1 -1
  3. package/lib/cjs/constants/BullMQTypes.js +12 -0
  4. package/lib/cjs/constants/BullMQTypes.js.map +1 -0
  5. package/lib/cjs/constants/constants.js +5 -0
  6. package/lib/cjs/constants/constants.js.map +1 -0
  7. package/lib/cjs/decorators/InjectQueue.js +10 -0
  8. package/lib/cjs/decorators/InjectQueue.js.map +1 -0
  9. package/lib/cjs/decorators/InjectWorker.js +10 -0
  10. package/lib/cjs/decorators/InjectWorker.js.map +1 -0
  11. package/lib/cjs/decorators/JobController.js +9 -6
  12. package/lib/cjs/decorators/JobController.js.map +1 -1
  13. package/lib/cjs/decorators/index.js +2 -0
  14. package/lib/cjs/decorators/index.js.map +1 -1
  15. package/lib/cjs/dispatchers/JobDispatcher.js +8 -5
  16. package/lib/cjs/dispatchers/JobDispatcher.js.map +1 -1
  17. package/lib/cjs/index.js +11 -0
  18. package/lib/cjs/index.js.map +1 -1
  19. package/lib/cjs/utils/createQueueProvider.js +20 -0
  20. package/lib/cjs/utils/createQueueProvider.js.map +1 -0
  21. package/lib/cjs/utils/createWorkerProvider.js +20 -0
  22. package/lib/cjs/utils/createWorkerProvider.js.map +1 -0
  23. package/lib/cjs/utils/getJobToken.js +12 -0
  24. package/lib/cjs/utils/getJobToken.js.map +1 -0
  25. package/lib/cjs/utils/getQueueToken.js +8 -0
  26. package/lib/cjs/utils/getQueueToken.js.map +1 -0
  27. package/lib/cjs/utils/getWorkerToken.js +8 -0
  28. package/lib/cjs/utils/getWorkerToken.js.map +1 -0
  29. package/lib/cjs/utils/mapQueueOptions.js +13 -0
  30. package/lib/cjs/utils/mapQueueOptions.js.map +1 -0
  31. package/lib/cjs/utils/mapWorkerOptions.js +12 -0
  32. package/lib/cjs/utils/mapWorkerOptions.js.map +1 -0
  33. package/lib/esm/BullMQModule.js +52 -57
  34. package/lib/esm/BullMQModule.js.map +1 -1
  35. package/lib/esm/constants/BullMQTypes.js +9 -0
  36. package/lib/esm/constants/BullMQTypes.js.map +1 -0
  37. package/lib/esm/constants/constants.js +2 -0
  38. package/lib/esm/constants/constants.js.map +1 -0
  39. package/lib/esm/decorators/InjectQueue.js +6 -0
  40. package/lib/esm/decorators/InjectQueue.js.map +1 -0
  41. package/lib/esm/decorators/InjectWorker.js +6 -0
  42. package/lib/esm/decorators/InjectWorker.js.map +1 -0
  43. package/lib/esm/decorators/JobController.js +9 -6
  44. package/lib/esm/decorators/JobController.js.map +1 -1
  45. package/lib/esm/decorators/index.js +2 -0
  46. package/lib/esm/decorators/index.js.map +1 -1
  47. package/lib/esm/dispatchers/JobDispatcher.js +8 -5
  48. package/lib/esm/dispatchers/JobDispatcher.js.map +1 -1
  49. package/lib/esm/index.js +11 -0
  50. package/lib/esm/index.js.map +1 -1
  51. package/lib/esm/utils/createQueueProvider.js +16 -0
  52. package/lib/esm/utils/createQueueProvider.js.map +1 -0
  53. package/lib/esm/utils/createWorkerProvider.js +16 -0
  54. package/lib/esm/utils/createWorkerProvider.js.map +1 -0
  55. package/lib/esm/utils/getJobToken.js +7 -0
  56. package/lib/esm/utils/getJobToken.js.map +1 -0
  57. package/lib/esm/utils/getQueueToken.js +4 -0
  58. package/lib/esm/utils/getQueueToken.js.map +1 -0
  59. package/lib/esm/utils/getWorkerToken.js +4 -0
  60. package/lib/esm/utils/getWorkerToken.js.map +1 -0
  61. package/lib/esm/utils/mapQueueOptions.js +9 -0
  62. package/lib/esm/utils/mapQueueOptions.js.map +1 -0
  63. package/lib/esm/utils/mapWorkerOptions.js +8 -0
  64. package/lib/esm/utils/mapWorkerOptions.js.map +1 -0
  65. package/lib/types/BullMQModule.d.ts +9 -1
  66. package/lib/types/config/config.d.ts +5 -5
  67. package/lib/types/constants/BullMQTypes.d.ts +7 -0
  68. package/lib/types/constants/constants.d.ts +1 -0
  69. package/lib/types/contracts/JobStore.d.ts +2 -2
  70. package/lib/types/decorators/InjectQueue.d.ts +1 -0
  71. package/lib/types/decorators/InjectWorker.d.ts +1 -0
  72. package/lib/types/decorators/index.d.ts +2 -0
  73. package/lib/types/dispatchers/JobDispatcher.d.ts +2 -2
  74. package/lib/types/index.d.ts +11 -0
  75. package/lib/types/utils/createQueueProvider.d.ts +3 -0
  76. package/lib/types/utils/createWorkerProvider.d.ts +3 -0
  77. package/lib/types/utils/getJobToken.d.ts +2 -0
  78. package/lib/types/utils/getQueueToken.d.ts +1 -0
  79. package/lib/types/utils/getWorkerToken.d.ts +1 -0
  80. package/lib/types/utils/mapQueueOptions.d.ts +3 -0
  81. package/lib/types/utils/mapWorkerOptions.d.ts +3 -0
  82. package/package.json +5 -5
@@ -1,76 +1,75 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { DIContext, runInContext } from "@tsed/common";
3
- import { Constant, InjectorService, Module } from "@tsed/di";
4
- import { deepMerge } from "@tsed/core";
3
+ import { InjectorService, Module } from "@tsed/di";
5
4
  import { getComputedType } from "@tsed/schema";
6
- import { Queue, Worker } from "bullmq";
7
5
  import { v4 } from "uuid";
6
+ import { BullMQTypes } from "./constants/BullMQTypes.js";
7
+ import { BULLMQ } from "./constants/constants.js";
8
8
  import { JobDispatcher } from "./dispatchers.js";
9
+ import { createQueueProvider } from "./utils/createQueueProvider.js";
10
+ import { createWorkerProvider } from "./utils/createWorkerProvider.js";
11
+ import { getFallbackJobToken, getJobToken } from "./utils/getJobToken.js";
12
+ import { mapQueueOptions } from "./utils/mapQueueOptions.js";
13
+ import { mapWorkerOptions } from "./utils/mapWorkerOptions.js";
9
14
  let BullMQModule = class BullMQModule {
10
15
  injector;
11
16
  dispatcher;
12
- bullmq;
13
17
  constructor(injector, dispatcher) {
14
18
  this.injector = injector;
15
19
  this.dispatcher = dispatcher;
20
+ // build providers allow @Inject(queue) usage in JobController instance
21
+ if (this.isEnabled()) {
22
+ const queues = [...this.getUniqQueueNames()];
23
+ this.buildQueues(queues);
24
+ if (!this.isWorkerEnabled()) {
25
+ const workers = this.config.workerQueues?.length ? this.config.workerQueues : queues;
26
+ this.buildWorkers(workers);
27
+ }
28
+ }
29
+ }
30
+ get config() {
31
+ return this.injector.settings.get("bullmq");
16
32
  }
17
33
  $beforeInit() {
18
- if (!this.bullmq) {
19
- return;
34
+ if (this.isEnabled()) {
35
+ this.injector.getMany(BullMQTypes.CRON).map((job) => this.dispatcher.dispatch(getComputedType(job)));
20
36
  }
21
- if (!this.bullmq.disableWorker) {
22
- this.buildWorkers();
23
- }
24
- this.buildQueues();
25
- this.injector.getMany("bullmq:cron").map((job) => this.dispatcher.dispatch(getComputedType(job)));
26
37
  }
27
- buildQueues() {
28
- this.bullmq.queues.forEach((queue) => {
29
- const ops = deepMerge({
30
- connection: this.bullmq.connection,
31
- defaultJobOptions: this.bullmq.defaultJobOptions,
32
- ...this.bullmq.defaultQueueOptions
33
- }, this.bullmq.queueOptions?.[queue]);
34
- this.injector
35
- .add(`bullmq.queue.${queue}`, {
36
- type: "bullmq:queue",
37
- useValue: new Queue(queue, ops),
38
- hooks: {
39
- $onDestroy: (queue) => queue.close()
40
- }
41
- })
42
- .invoke(`bullmq.queue.${queue}`);
38
+ isEnabled() {
39
+ return !!this.config;
40
+ }
41
+ isWorkerEnabled() {
42
+ return this.config.disableWorker;
43
+ }
44
+ buildQueues(queues) {
45
+ queues.forEach((queue) => {
46
+ const opts = mapQueueOptions(queue, this.config);
47
+ createQueueProvider(this.injector, queue, opts);
43
48
  });
44
49
  }
45
- buildWorkers() {
46
- (this.bullmq.workerQueues ?? this.bullmq.queues).forEach((queue) => {
47
- const ops = deepMerge({
48
- connection: this.bullmq.connection,
49
- ...this.bullmq.defaultWorkerOptions
50
- }, this.bullmq.workerOptions?.[queue]);
51
- this.injector
52
- .add(`bullmq.worker.${queue}`, {
53
- type: "bullmq:worker",
54
- useValue: new Worker(queue, this.onProcess.bind(this), ops),
55
- hooks: {
56
- $onDestroy: (worker) => worker.close()
57
- }
58
- })
59
- .invoke(`bullmq.worker.${queue}`);
50
+ buildWorkers(workers) {
51
+ workers.forEach((worker) => {
52
+ const opts = mapWorkerOptions(worker, this.config);
53
+ createWorkerProvider(this.injector, worker, this.onProcess, opts);
60
54
  });
61
55
  }
56
+ /**
57
+ * Auto discover queue names from provider and merge it with queue names from global configuration.
58
+ * @private
59
+ */
60
+ getUniqQueueNames() {
61
+ return new Set(this.injector
62
+ .getProviders([BullMQTypes.JOB, BullMQTypes.CRON, BullMQTypes.FALLBACK_JOB])
63
+ .map((provider) => provider.store.get(BULLMQ)?.queue)
64
+ .concat(this.config.queues)
65
+ .filter(Boolean));
66
+ }
62
67
  getJob(name, queueName) {
63
- const job = this.injector.get(`bullmq.job.${queueName}.${name}`);
64
- if (job) {
65
- return job;
66
- }
67
- const fallbackJobForQueue = this.injector.get(`bullmq.fallback-job.${queueName}`);
68
- if (fallbackJobForQueue) {
69
- return fallbackJobForQueue;
70
- }
71
- return this.injector.get("bullmq.fallback-job");
68
+ return (this.injector.get(getJobToken(queueName, name)) ||
69
+ this.injector.get(getFallbackJobToken(queueName)) ||
70
+ this.injector.get(getFallbackJobToken()));
72
71
  }
73
- async onProcess(job) {
72
+ onProcess = async (job) => {
74
73
  const jobService = this.getJob(job.name, job.queueName);
75
74
  if (!jobService) {
76
75
  this.injector.logger.warn({
@@ -113,12 +112,8 @@ let BullMQModule = class BullMQModule {
113
112
  finally {
114
113
  await $ctx.destroy();
115
114
  }
116
- }
115
+ };
117
116
  };
118
- __decorate([
119
- Constant("bullmq"),
120
- __metadata("design:type", Object)
121
- ], BullMQModule.prototype, "bullmq", void 0);
122
117
  BullMQModule = __decorate([
123
118
  Module(),
124
119
  __metadata("design:paramtypes", [InjectorService, JobDispatcher])
@@ -1 +1 @@
1
- {"version":3,"file":"BullMQModule.js","sourceRoot":"","sources":["../../src/BullMQModule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BullMQModule.js","sourceRoot":"","sources":["../../src/BullMQModule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export var BullMQTypes;
2
+ (function (BullMQTypes) {
3
+ BullMQTypes["CRON"] = "bullmq:cron";
4
+ BullMQTypes["QUEUE"] = "bullmq:queue";
5
+ BullMQTypes["JOB"] = "bullmq:job";
6
+ BullMQTypes["WORKER"] = "bullmq:worker";
7
+ BullMQTypes["FALLBACK_JOB"] = "bullmq:fallback-job";
8
+ })(BullMQTypes || (BullMQTypes = {}));
9
+ //# sourceMappingURL=BullMQTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BullMQTypes.js","sourceRoot":"","sources":["../../../src/constants/BullMQTypes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,mCAAoB,CAAA;IACpB,qCAAsB,CAAA;IACtB,iCAAkB,CAAA;IAClB,uCAAwB,CAAA;IACxB,mDAAoC,CAAA;AACtC,CAAC,EANW,WAAW,KAAX,WAAW,QAMtB"}
@@ -0,0 +1,2 @@
1
+ export const BULLMQ = "bullmq";
2
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/constants/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Inject } from "@tsed/common";
2
+ import { getQueueToken } from "../utils/getQueueToken.js";
3
+ export function InjectQueue(name) {
4
+ return Inject(getQueueToken(name));
5
+ }
6
+ //# sourceMappingURL=InjectQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InjectQueue.js","sourceRoot":"","sources":["../../../src/decorators/InjectQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AACpC,OAAO,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAErD,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Inject } from "@tsed/common";
2
+ import { getWorkerToken } from "../utils/getWorkerToken.js";
3
+ export function InjectWorker(name) {
4
+ return Inject(getWorkerToken(name));
5
+ }
6
+ //# sourceMappingURL=InjectWorker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InjectWorker.js","sourceRoot":"","sources":["../../../src/decorators/InjectWorker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AACpC,OAAO,EAAC,cAAc,EAAC,MAAM,yBAAyB,CAAC;AAEvD,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,CAAC"}
@@ -1,21 +1,24 @@
1
1
  import { StoreMerge, useDecorators } from "@tsed/core";
2
2
  import { Injectable } from "@tsed/di";
3
+ import { BullMQTypes } from "../constants/BullMQTypes.js";
4
+ import { BULLMQ } from "../constants/constants.js";
5
+ import { getFallbackJobToken, getJobToken } from "../utils/getJobToken.js";
3
6
  export function JobController(name, queue = "default", opts = {}) {
4
- return useDecorators(StoreMerge("bullmq", {
7
+ return useDecorators(StoreMerge(BULLMQ, {
5
8
  name,
6
9
  queue,
7
10
  opts
8
11
  }), Injectable({
9
- provide: `bullmq.job.${queue}.${name}`,
10
- type: opts.repeat ? "bullmq:cron" : "bullmq:job"
12
+ provide: getJobToken(queue, name),
13
+ type: opts.repeat ? BullMQTypes.CRON : BullMQTypes.JOB
11
14
  }));
12
15
  }
13
16
  export function FallbackJobController(queue) {
14
- return useDecorators(StoreMerge("bullmq", {
17
+ return useDecorators(StoreMerge(BULLMQ, {
15
18
  queue
16
19
  }), Injectable({
17
- provide: "bullmq.fallback-job" + (queue ? `.${queue}` : ""),
18
- type: "bullmq:fallback-job"
20
+ provide: getFallbackJobToken(queue),
21
+ type: BullMQTypes.FALLBACK_JOB
19
22
  }));
20
23
  }
21
24
  //# sourceMappingURL=JobController.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"JobController.js","sourceRoot":"","sources":["../../../src/decorators/JobController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,aAAa,EAAC,MAAM,YAAY,CAAC;AACrD,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAGpC,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,QAAgB,SAAS,EAAE,OAAoB,EAAE;IAC3F,OAAO,aAAa,CAClB,UAAU,CAAC,QAAQ,EAAE;QACnB,IAAI;QACJ,KAAK;QACL,IAAI;KACL,CAAC,EACF,UAAU,CAAC;QACT,OAAO,EAAE,cAAc,KAAK,IAAI,IAAI,EAAE;QACtC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY;KACjD,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,aAAa,CAClB,UAAU,CAAC,QAAQ,EAAE;QACnB,KAAK;KACN,CAAC,EACF,UAAU,CAAC;QACT,OAAO,EAAE,qBAAqB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,IAAI,EAAE,qBAAqB;KAC5B,CAAC,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"JobController.js","sourceRoot":"","sources":["../../../src/decorators/JobController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,aAAa,EAAC,MAAM,YAAY,CAAC;AACrD,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAC,WAAW,EAAC,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAC,MAAM,EAAC,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAC,mBAAmB,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAEtE,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,QAAgB,SAAS,EAAE,OAAoB,EAAE;IAC3F,OAAO,aAAa,CAClB,UAAU,CAAC,MAAM,EAAE;QACjB,IAAI;QACJ,KAAK;QACL,IAAI;KACL,CAAC,EACF,UAAU,CAAC;QACT,OAAO,EAAE,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC;QACjC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG;KACvD,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,aAAa,CAClB,UAAU,CAAC,MAAM,EAAE;QACjB,KAAK;KACN,CAAC,EACF,UAAU,CAAC;QACT,OAAO,EAAE,mBAAmB,CAAC,KAAK,CAAC;QACnC,IAAI,EAAE,WAAW,CAAC,YAAY;KAC/B,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -1,5 +1,7 @@
1
1
  /**
2
2
  * @file Automatically generated by barrelsby.
3
3
  */
4
+ export * from "./InjectQueue.js";
5
+ export * from "./InjectWorker.js";
4
6
  export * from "./JobController.js";
5
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorators/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorators/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
@@ -1,7 +1,10 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  /* eslint-disable require-await */
3
- import { InjectorService, Service } from "@tsed/di";
4
3
  import { Store } from "@tsed/core";
4
+ import { Injectable, InjectorService } from "@tsed/di";
5
+ import { BULLMQ } from "../constants/constants.js";
6
+ import { getJobToken } from "../utils/getJobToken.js";
7
+ import { getQueueToken } from "../utils/getQueueToken.js";
5
8
  let JobDispatcher = class JobDispatcher {
6
9
  injector;
7
10
  constructor(injector) {
@@ -9,7 +12,7 @@ let JobDispatcher = class JobDispatcher {
9
12
  }
10
13
  async dispatch(job, payload, options = {}) {
11
14
  const { queueName, jobName, defaultJobOptions } = await this.resolveDispatchArgs(job, payload);
12
- const queue = this.injector.get(`bullmq.queue.${queueName}`);
15
+ const queue = this.injector.get(getQueueToken(queueName));
13
16
  if (!queue) {
14
17
  throw new Error(`Queue(${queueName}) not defined`);
15
18
  }
@@ -24,7 +27,7 @@ let JobDispatcher = class JobDispatcher {
24
27
  let defaultJobOptions;
25
28
  if (typeof job === "function") {
26
29
  // job is passed as a Type
27
- const store = Store.from(job).get("bullmq");
30
+ const store = Store.from(job).get(BULLMQ);
28
31
  queueName = store.queue;
29
32
  jobName = store.name;
30
33
  defaultJobOptions = await this.retrieveJobOptionsFromClassBasedJob(store, payload);
@@ -46,7 +49,7 @@ let JobDispatcher = class JobDispatcher {
46
49
  };
47
50
  }
48
51
  async retrieveJobOptionsFromClassBasedJob(store, payload) {
49
- const job = this.injector.get(`bullmq.job.${store.queue}.${store.name}`);
52
+ const job = this.injector.get(getJobToken(store.queue, store.name));
50
53
  if (!job) {
51
54
  return store.opts;
52
55
  }
@@ -61,7 +64,7 @@ let JobDispatcher = class JobDispatcher {
61
64
  }
62
65
  };
63
66
  JobDispatcher = __decorate([
64
- Service(),
67
+ Injectable(),
65
68
  __metadata("design:paramtypes", [InjectorService])
66
69
  ], JobDispatcher);
67
70
  export { JobDispatcher };
@@ -1 +1 @@
1
- {"version":3,"file":"JobDispatcher.js","sourceRoot":"","sources":["../../../src/dispatchers/JobDispatcher.ts"],"names":[],"mappings":";AAAA,kCAAkC;AAClC,OAAO,EAAC,eAAe,EAAE,OAAO,EAAC,MAAM,UAAU,CAAC;AAElD,OAAO,EAAC,KAAK,EAAO,MAAM,YAAY,CAAC;AAKhC,IAAM,aAAa,GAAnB,MAAM,aAAa;IACK;IAA7B,YAA6B,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;IAAG,CAAC;IASnD,KAAK,CAAC,QAAQ,CAAC,GAAyC,EAAE,OAAgB,EAAE,UAAuB,EAAE;QAC1G,MAAM,EAAC,SAAS,EAAE,OAAO,EAAE,iBAAiB,EAAC,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAE7F,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAQ,gBAAgB,SAAS,EAAE,CAAC,CAAC;QAEpE,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,SAAS,SAAS,eAAe,CAAC,CAAC;SACpD;QAED,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE;YACjC,GAAG,iBAAiB;YACpB,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,GAAyC,EAAE,OAAgB;QAC3F,IAAI,SAAiB,CAAC;QACtB,IAAI,OAAe,CAAC;QACpB,IAAI,iBAA0C,CAAC;QAE/C,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;YAC7B,0BAA0B;YAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAW,QAAQ,CAAC,CAAC;YACtD,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;YACxB,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;YACrB,iBAAiB,GAAG,MAAM,IAAI,CAAC,mCAAmC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SACpF;aAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAClC,wCAAwC;YACxC,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC;YACtB,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;SACpB;aAAM;YACL,4BAA4B;YAC5B,SAAS,GAAG,SAAS,CAAC;YACtB,OAAO,GAAG,GAAG,CAAC;SACf;QAED,OAAO;YACL,SAAS;YACT,OAAO;YACP,iBAAiB;SAClB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,mCAAmC,CAAC,KAAe,EAAE,OAAgB;QACjF,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAa,cAAc,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,GAAG,EAAE;YACR,OAAO,KAAK,CAAC,IAAI,CAAC;SACnB;QAED,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,OAAO,KAAK,CAAC,IAAI,CAAC;SACnB;QAED,OAAO;YACL,GAAG,KAAK,CAAC,IAAI;YACb,KAAK;SACN,CAAC;IACJ,CAAC;CACF,CAAA;AArEY,aAAa;IADzB,OAAO,EAAE;qCAE+B,eAAe;GAD3C,aAAa,CAqEzB;SArEY,aAAa"}
1
+ {"version":3,"file":"JobDispatcher.js","sourceRoot":"","sources":["../../../src/dispatchers/JobDispatcher.ts"],"names":[],"mappings":";AAAA,kCAAkC;AAClC,OAAO,EAAC,KAAK,EAAO,MAAM,YAAY,CAAC;AACvC,OAAO,EAAC,UAAU,EAAE,eAAe,EAAC,MAAM,UAAU,CAAC;AAErD,OAAO,EAAC,MAAM,EAAC,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAI9C,IAAM,aAAa,GAAnB,MAAM,aAAa;IACK;IAA7B,YAA6B,QAAyB;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;IAAG,CAAC;IASnD,KAAK,CAAC,QAAQ,CAAC,GAAyC,EAAE,OAAgB,EAAE,UAAuB,EAAE;QAC1G,MAAM,EAAC,SAAS,EAAE,OAAO,EAAE,iBAAiB,EAAC,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAE7F,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAQ,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;QAEjE,IAAI,CAAC,KAAK,EAAE;YACV,MAAM,IAAI,KAAK,CAAC,SAAS,SAAS,eAAe,CAAC,CAAC;SACpD;QAED,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE;YACjC,GAAG,iBAAiB;YACpB,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,GAAyC,EAAE,OAAgB;QAC3F,IAAI,SAAiB,CAAC;QACtB,IAAI,OAAe,CAAC;QACpB,IAAI,iBAA0C,CAAC;QAE/C,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;YAC7B,0BAA0B;YAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAW,MAAM,CAAC,CAAC;YACpD,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;YACxB,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;YACrB,iBAAiB,GAAG,MAAM,IAAI,CAAC,mCAAmC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SACpF;aAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAClC,wCAAwC;YACxC,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC;YACtB,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;SACpB;aAAM;YACL,4BAA4B;YAC5B,SAAS,GAAG,SAAS,CAAC;YACtB,OAAO,GAAG,GAAG,CAAC;SACf;QAED,OAAO;YACL,SAAS;YACT,OAAO;YACP,iBAAiB;SAClB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,mCAAmC,CAAC,KAAe,EAAE,OAAgB;QACjF,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAa,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAEhF,IAAI,CAAC,GAAG,EAAE;YACR,OAAO,KAAK,CAAC,IAAI,CAAC;SACnB;QAED,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,OAAO,KAAK,CAAC,IAAI,CAAC;SACnB;QAED,OAAO;YACL,GAAG,KAAK,CAAC,IAAI;YACb,KAAK;SACN,CAAC;IACJ,CAAC;CACF,CAAA;AAtEY,aAAa;IADzB,UAAU,EAAE;qCAE4B,eAAe;GAD3C,aAAa,CAsEzB;SAtEY,aAAa"}
package/lib/esm/index.js CHANGED
@@ -3,9 +3,20 @@
3
3
  */
4
4
  export * from "./BullMQModule.js";
5
5
  export * from "./config/config.js";
6
+ export * from "./constants/BullMQTypes.js";
7
+ export * from "./constants/constants.js";
6
8
  export * from "./contracts/JobMethods.js";
7
9
  export * from "./contracts/JobStore.js";
10
+ export * from "./decorators/InjectQueue.js";
11
+ export * from "./decorators/InjectWorker.js";
8
12
  export * from "./decorators/JobController.js";
9
13
  export * from "./dispatchers/JobDispatcher.js";
10
14
  export * from "./dispatchers/JobDispatcherOptions.js";
15
+ export * from "./utils/createQueueProvider.js";
16
+ export * from "./utils/createWorkerProvider.js";
17
+ export * from "./utils/getJobToken.js";
18
+ export * from "./utils/getQueueToken.js";
19
+ export * from "./utils/getWorkerToken.js";
20
+ export * from "./utils/mapQueueOptions.js";
21
+ export * from "./utils/mapWorkerOptions.js";
11
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { Queue } from "bullmq";
2
+ import { BullMQTypes } from "../constants/BullMQTypes.js";
3
+ import { getQueueToken } from "./getQueueToken.js";
4
+ export function createQueueProvider(injector, queue, opts) {
5
+ const token = getQueueToken(queue);
6
+ return injector
7
+ .add(token, {
8
+ type: BullMQTypes.QUEUE,
9
+ useValue: new Queue(queue, opts),
10
+ hooks: {
11
+ $onDestroy: (queue) => queue.close()
12
+ }
13
+ })
14
+ .invoke(token);
15
+ }
16
+ //# sourceMappingURL=createQueueProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createQueueProvider.js","sourceRoot":"","sources":["../../../src/utils/createQueueProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,KAAK,EAAe,MAAM,QAAQ,CAAC;AAExD,OAAO,EAAC,WAAW,EAAC,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAE9C,MAAM,UAAU,mBAAmB,CAAC,QAAyB,EAAE,KAAa,EAAE,IAAkB;IAC9F,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAEnC,OAAO,QAAQ;SACZ,GAAG,CAAC,KAAK,EAAE;QACV,IAAI,EAAE,WAAW,CAAC,KAAK;QACvB,QAAQ,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;QAChC,KAAK,EAAE;YACL,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE;SACrC;KACF,CAAC;SACD,MAAM,CAAQ,KAAK,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { Worker } from "bullmq";
2
+ import { BullMQTypes } from "../constants/BullMQTypes.js";
3
+ import { getWorkerToken } from "./getWorkerToken.js";
4
+ export function createWorkerProvider(injector, worker, process, opts) {
5
+ const token = getWorkerToken(worker);
6
+ return injector
7
+ .add(token, {
8
+ type: BullMQTypes.WORKER,
9
+ useValue: new Worker(worker, process, opts),
10
+ hooks: {
11
+ $onDestroy: (worker) => worker.close()
12
+ }
13
+ })
14
+ .invoke(token);
15
+ }
16
+ //# sourceMappingURL=createWorkerProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createWorkerProvider.js","sourceRoot":"","sources":["../../../src/utils/createWorkerProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,MAAM,EAAgB,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAC,WAAW,EAAC,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAEhD,MAAM,UAAU,oBAAoB,CAAC,QAAyB,EAAE,MAAc,EAAE,OAA0B,EAAE,IAAmB;IAC7H,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAErC,OAAO,QAAQ;SACZ,GAAG,CAAC,KAAK,EAAE;QACV,IAAI,EAAE,WAAW,CAAC,MAAM;QACxB,QAAQ,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;QAC3C,KAAK,EAAE;YACL,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;SACvC;KACF,CAAC;SACD,MAAM,CAAS,KAAK,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,7 @@
1
+ export function getJobToken(queue, name) {
2
+ return `bullmq.job.${queue}.${name}`;
3
+ }
4
+ export function getFallbackJobToken(queue) {
5
+ return ["bullmq.fallback-job", queue].filter(Boolean).join(".");
6
+ }
7
+ //# sourceMappingURL=getJobToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getJobToken.js","sourceRoot":"","sources":["../../../src/utils/getJobToken.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,IAAY;IACrD,OAAO,cAAc,KAAK,IAAI,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,OAAO,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClE,CAAC"}
@@ -0,0 +1,4 @@
1
+ export function getQueueToken(queue) {
2
+ return `bullmq.queue.${queue}`;
3
+ }
4
+ //# sourceMappingURL=getQueueToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getQueueToken.js","sourceRoot":"","sources":["../../../src/utils/getQueueToken.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,gBAAgB,KAAK,EAAE,CAAC;AACjC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export function getWorkerToken(worker) {
2
+ return `bullmq.worker.${worker}`;
3
+ }
4
+ //# sourceMappingURL=getWorkerToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getWorkerToken.js","sourceRoot":"","sources":["../../../src/utils/getWorkerToken.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,OAAO,iBAAiB,MAAM,EAAE,CAAC;AACnC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { deepMerge } from "@tsed/core";
2
+ export function mapQueueOptions(queue, bullMQConfig) {
3
+ return deepMerge({
4
+ connection: bullMQConfig.connection,
5
+ defaultJobOptions: bullMQConfig.defaultJobOptions,
6
+ ...bullMQConfig.defaultQueueOptions
7
+ }, bullMQConfig.queueOptions?.[queue]);
8
+ }
9
+ //# sourceMappingURL=mapQueueOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapQueueOptions.js","sourceRoot":"","sources":["../../../src/utils/mapQueueOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AAIrC,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,YAA0B;IACvE,OAAO,SAAS,CACd;QACE,UAAU,EAAE,YAAY,CAAC,UAAU;QACnC,iBAAiB,EAAE,YAAY,CAAC,iBAAiB;QACjD,GAAG,YAAY,CAAC,mBAAmB;KACpC,EACD,YAAY,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAClC,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { deepMerge } from "@tsed/core";
2
+ export function mapWorkerOptions(queue, bullMQConfig) {
3
+ return deepMerge({
4
+ connection: bullMQConfig.connection,
5
+ ...bullMQConfig.defaultWorkerOptions
6
+ }, bullMQConfig.workerOptions?.[queue]);
7
+ }
8
+ //# sourceMappingURL=mapWorkerOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapWorkerOptions.js","sourceRoot":"","sources":["../../../src/utils/mapWorkerOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AAIrC,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,YAA0B;IACxE,OAAO,SAAS,CACd;QACE,UAAU,EAAE,YAAY,CAAC,UAAU;QACnC,GAAG,YAAY,CAAC,oBAAoB;KACrC,EACD,YAAY,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CACnC,CAAC;AACL,CAAC"}
@@ -1,14 +1,22 @@
1
1
  import { BeforeInit } from "@tsed/common";
2
2
  import { InjectorService } from "@tsed/di";
3
+ import { BullMQConfig } from "./config/config";
3
4
  import { JobDispatcher } from "./dispatchers";
4
5
  export declare class BullMQModule implements BeforeInit {
5
6
  private readonly injector;
6
7
  private readonly dispatcher;
7
- private readonly bullmq;
8
8
  constructor(injector: InjectorService, dispatcher: JobDispatcher);
9
+ get config(): BullMQConfig;
9
10
  $beforeInit(): void;
11
+ isEnabled(): boolean;
12
+ isWorkerEnabled(): boolean | undefined;
10
13
  private buildQueues;
11
14
  private buildWorkers;
15
+ /**
16
+ * Auto discover queue names from provider and merge it with queue names from global configuration.
17
+ * @private
18
+ */
19
+ private getUniqQueueNames;
12
20
  private getJob;
13
21
  private onProcess;
14
22
  }
@@ -3,7 +3,7 @@ export type BullMQConfig = {
3
3
  /**
4
4
  * Specify queue name's to create
5
5
  */
6
- queues: string[];
6
+ queues?: string[];
7
7
  /**
8
8
  * Default connection to use for queue's and worker's
9
9
  */
@@ -17,11 +17,11 @@ export type BullMQConfig = {
17
17
  *
18
18
  * Can be extended/overridden by `queueOptions`
19
19
  */
20
- defaultQueueOptions?: Omit<QueueOptions, "connection">;
20
+ defaultQueueOptions?: Partial<QueueOptions>;
21
21
  /**
22
22
  * Specify additional queue options by queue name
23
23
  */
24
- queueOptions?: Record<string, Omit<QueueOptions, "connection">>;
24
+ queueOptions?: Record<string, Partial<QueueOptions>>;
25
25
  /**
26
26
  * Disable the creation of any worker.
27
27
  *
@@ -39,11 +39,11 @@ export type BullMQConfig = {
39
39
  *
40
40
  * Can be extended/overridden by `workerOptions`
41
41
  */
42
- defaultWorkerOptions?: Omit<WorkerOptions, "connection">;
42
+ defaultWorkerOptions?: Partial<WorkerOptions>;
43
43
  /**
44
44
  * Specify additional worker options by queue name
45
45
  */
46
- workerOptions?: Record<string, Omit<WorkerOptions, "connection">>;
46
+ workerOptions?: Record<string, Partial<WorkerOptions>>;
47
47
  };
48
48
  declare global {
49
49
  namespace TsED {
@@ -0,0 +1,7 @@
1
+ export declare enum BullMQTypes {
2
+ CRON = "bullmq:cron",
3
+ QUEUE = "bullmq:queue",
4
+ JOB = "bullmq:job",
5
+ WORKER = "bullmq:worker",
6
+ FALLBACK_JOB = "bullmq:fallback-job"
7
+ }
@@ -0,0 +1 @@
1
+ export declare const BULLMQ = "bullmq";
@@ -1,6 +1,6 @@
1
1
  import { JobsOptions } from "bullmq";
2
- export type JobStore = {
2
+ export interface JobStore {
3
3
  name: string;
4
4
  queue: string;
5
5
  opts: JobsOptions;
6
- };
6
+ }
@@ -0,0 +1 @@
1
+ export declare function InjectQueue(name: string): Function;
@@ -0,0 +1 @@
1
+ export declare function InjectWorker(name: string): Function;
@@ -1,4 +1,6 @@
1
1
  /**
2
2
  * @file Automatically generated by barrelsby.
3
3
  */
4
+ export * from "./InjectQueue";
5
+ export * from "./InjectWorker";
4
6
  export * from "./JobController";
@@ -1,7 +1,7 @@
1
- import { InjectorService } from "@tsed/di";
2
- import { JobMethods } from "../contracts";
3
1
  import { Type } from "@tsed/core";
2
+ import { InjectorService } from "@tsed/di";
4
3
  import { Job as BullMQJob, JobsOptions } from "bullmq";
4
+ import { JobMethods } from "../contracts";
5
5
  import type { JobDispatcherOptions } from "./JobDispatcherOptions";
6
6
  export declare class JobDispatcher {
7
7
  private readonly injector;
@@ -3,8 +3,19 @@
3
3
  */
4
4
  export * from "./BullMQModule";
5
5
  export * from "./config/config";
6
+ export * from "./constants/BullMQTypes";
7
+ export * from "./constants/constants";
6
8
  export * from "./contracts/JobMethods";
7
9
  export * from "./contracts/JobStore";
10
+ export * from "./decorators/InjectQueue";
11
+ export * from "./decorators/InjectWorker";
8
12
  export * from "./decorators/JobController";
9
13
  export * from "./dispatchers/JobDispatcher";
10
14
  export * from "./dispatchers/JobDispatcherOptions";
15
+ export * from "./utils/createQueueProvider";
16
+ export * from "./utils/createWorkerProvider";
17
+ export * from "./utils/getJobToken";
18
+ export * from "./utils/getQueueToken";
19
+ export * from "./utils/getWorkerToken";
20
+ export * from "./utils/mapQueueOptions";
21
+ export * from "./utils/mapWorkerOptions";
@@ -0,0 +1,3 @@
1
+ import { InjectorService } from "@tsed/di";
2
+ import { Queue, QueueOptions } from "bullmq";
3
+ export declare function createQueueProvider(injector: InjectorService, queue: string, opts: QueueOptions): Queue<any, any, string>;
@@ -0,0 +1,3 @@
1
+ import { InjectorService } from "@tsed/di";
2
+ import { Job, Worker, WorkerOptions } from "bullmq";
3
+ export declare function createWorkerProvider(injector: InjectorService, worker: string, process: (job: Job) => any, opts: WorkerOptions): Worker<any, any, string>;
@@ -0,0 +1,2 @@
1
+ export declare function getJobToken(queue: string, name: string): string;
2
+ export declare function getFallbackJobToken(queue?: string): string;
@@ -0,0 +1 @@
1
+ export declare function getQueueToken(queue: string): string;
@@ -0,0 +1 @@
1
+ export declare function getWorkerToken(worker: string): string;
@@ -0,0 +1,3 @@
1
+ import type { QueueOptions } from "bullmq";
2
+ import { BullMQConfig } from "../config/config";
3
+ export declare function mapQueueOptions(queue: string, bullMQConfig: BullMQConfig): QueueOptions;