@nest-boot/schedule 7.3.3 → 7.3.5

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.
@@ -6,6 +6,8 @@ import { ScheduleModuleOptions } from "./schedule-module-options.interface";
6
6
  export declare class ScheduleProcessor extends WorkerHost implements OnApplicationBootstrap {
7
7
  private readonly scheduleRegistry;
8
8
  private readonly options?;
9
+ /** Logger for worker lifecycle failures. @internal */
10
+ private readonly logger;
9
11
  constructor(scheduleRegistry: ScheduleRegistry, options?: ScheduleModuleOptions | undefined);
10
12
  process(job: Job): Promise<void>;
11
13
  onApplicationBootstrap(): void;
@@ -11,17 +11,20 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
+ var ScheduleProcessor_1;
14
15
  Object.defineProperty(exports, "__esModule", { value: true });
15
16
  exports.ScheduleProcessor = void 0;
16
17
  const bullmq_1 = require("@nest-boot/bullmq");
17
18
  const common_1 = require("@nestjs/common");
18
19
  const schedule_module_definition_1 = require("./schedule.module-definition");
19
20
  const schedule_registry_1 = require("./schedule.registry");
20
- let ScheduleProcessor = class ScheduleProcessor extends bullmq_1.WorkerHost {
21
+ let ScheduleProcessor = ScheduleProcessor_1 = class ScheduleProcessor extends bullmq_1.WorkerHost {
21
22
  constructor(scheduleRegistry, options) {
22
23
  super();
23
24
  this.scheduleRegistry = scheduleRegistry;
24
25
  this.options = options;
26
+ /** Logger for worker lifecycle failures. @internal */
27
+ this.logger = new common_1.Logger(ScheduleProcessor_1.name);
25
28
  }
26
29
  async process(job) {
27
30
  await this.scheduleRegistry.get(job.name)?.handler();
@@ -31,14 +34,15 @@ let ScheduleProcessor = class ScheduleProcessor extends bullmq_1.WorkerHost {
31
34
  this.worker.concurrency = this.options.concurrency;
32
35
  }
33
36
  if (this.options?.autorun !== false) {
34
- this.worker.run().catch(() => {
35
- //
37
+ void this.worker.run().catch((error) => {
38
+ const message = error instanceof Error ? error.message : String(error);
39
+ this.logger.error(`Schedule worker stopped unexpectedly: ${message}`, error instanceof Error ? error.stack : undefined);
36
40
  });
37
41
  }
38
42
  }
39
43
  };
40
44
  exports.ScheduleProcessor = ScheduleProcessor;
41
- exports.ScheduleProcessor = ScheduleProcessor = __decorate([
45
+ exports.ScheduleProcessor = ScheduleProcessor = ScheduleProcessor_1 = __decorate([
42
46
  (0, bullmq_1.Processor)("schedule", { autorun: false }),
43
47
  __param(1, (0, common_1.Optional)()),
44
48
  __param(1, (0, common_1.Inject)(schedule_module_definition_1.MODULE_OPTIONS_TOKEN)),
@@ -1 +1 @@
1
- {"version":3,"file":"schedule.processor.js","sourceRoot":"","sources":["../src/schedule.processor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,8CAA0D;AAC1D,2CAA0E;AAG1E,6EAAoE;AACpE,2DAAuD;AAIhD,IAAM,iBAAiB,GAAvB,MAAM,iBACX,SAAQ,mBAAU;IAGlB,YACmB,gBAAkC,EAGlC,OAA+B;QAEhD,KAAK,EAAE,CAAC;QALS,qBAAgB,GAAhB,gBAAgB,CAAkB;QAGlC,YAAO,GAAP,OAAO,CAAwB;IAGlD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAQ;QACpB,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACvD,CAAC;IAED,sBAAsB;QACpB,IAAI,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QACrD,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;gBAC3B,EAAE;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAA;AA5BY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,kBAAS,EAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAOrC,WAAA,IAAA,iBAAQ,GAAE,CAAA;IACV,WAAA,IAAA,eAAM,EAAC,iDAAoB,CAAC,CAAA;qCAFM,oCAAgB;GAL1C,iBAAiB,CA4B7B"}
1
+ {"version":3,"file":"schedule.processor.js","sourceRoot":"","sources":["../src/schedule.processor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA0D;AAC1D,2CAKwB;AAGxB,6EAAoE;AACpE,2DAAuD;AAIhD,IAAM,iBAAiB,yBAAvB,MAAM,iBACX,SAAQ,mBAAU;IAMlB,YACmB,gBAAkC,EAGnD,OAAgD;QAEhD,KAAK,EAAE,CAAC;QALS,qBAAgB,GAAhB,gBAAgB,CAAkB;QAGlC,YAAO,GAAP,OAAO,CAAwB;QAPlD,sDAAsD;QACrC,WAAM,GAAG,IAAI,eAAM,CAAC,mBAAiB,CAAC,IAAI,CAAC,CAAC;IAS7D,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAQ;QACpB,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACvD,CAAC;IAED,sBAAsB;QACpB,IAAI,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QACrD,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;YACpC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBAC9C,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAEvE,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,yCAAyC,OAAO,EAAE,EAClD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CACjD,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAA;AApCY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,kBAAS,EAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAUrC,WAAA,IAAA,iBAAQ,GAAE,CAAA;IACV,WAAA,IAAA,eAAM,EAAC,iDAAoB,CAAC,CAAA;qCAFM,oCAAgB;GAR1C,iBAAiB,CAoC7B"}
@@ -47,6 +47,7 @@ jest.mock("@nest-boot/bullmq", () => ({
47
47
  }
48
48
  },
49
49
  }));
50
+ const common_1 = require("@nestjs/common");
50
51
  const testing_1 = require("@nestjs/testing");
51
52
  const schedule_module_definition_1 = require("./schedule.module-definition");
52
53
  const schedule_processor_1 = require("./schedule.processor");
@@ -61,6 +62,9 @@ describe("ScheduleProcessor", () => {
61
62
  },
62
63
  };
63
64
  };
65
+ afterEach(() => {
66
+ jest.restoreAllMocks();
67
+ });
64
68
  it("should apply the schedule processor decorator", () => {
65
69
  expect(mockProcessor).toHaveBeenCalledWith("schedule", {
66
70
  autorun: false,
@@ -107,14 +111,27 @@ describe("ScheduleProcessor", () => {
107
111
  expect(processor.worker.concurrency).toBe(1);
108
112
  expect(processor.worker.run).not.toHaveBeenCalled();
109
113
  });
110
- it("should swallow worker run errors", async () => {
114
+ it("should log worker run errors", async () => {
115
+ const loggerError = jest
116
+ .spyOn(common_1.Logger.prototype, "error")
117
+ .mockImplementation(jest.fn());
111
118
  const processor = await createProcessor(createRegistry().registry);
112
- processor.worker.run.mockRejectedValueOnce(new Error("boom"));
113
- expect(() => {
114
- processor.onApplicationBootstrap();
115
- }).not.toThrow();
119
+ const error = new Error("Redis unavailable");
120
+ processor.worker.run.mockRejectedValueOnce(error);
121
+ processor.onApplicationBootstrap();
116
122
  await Promise.resolve();
117
123
  expect(processor.worker.run).toHaveBeenCalledTimes(1);
124
+ expect(loggerError).toHaveBeenCalledWith("Schedule worker stopped unexpectedly: Redis unavailable", error.stack);
125
+ });
126
+ it("should stringify non-error worker run rejections", async () => {
127
+ const loggerError = jest
128
+ .spyOn(common_1.Logger.prototype, "error")
129
+ .mockImplementation(jest.fn());
130
+ const processor = await createProcessor(createRegistry().registry);
131
+ processor.worker.run.mockRejectedValueOnce("connection closed");
132
+ processor.onApplicationBootstrap();
133
+ await Promise.resolve();
134
+ expect(loggerError).toHaveBeenCalledWith("Schedule worker stopped unexpectedly: connection closed", undefined);
118
135
  });
119
136
  it("should load decorator metadata fallback branches", async () => {
120
137
  await jest.isolateModulesAsync(async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"schedule.processor.spec.js","sourceRoot":"","sources":["../src/schedule.processor.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schedule.processor.spec.js","sourceRoot":"","sources":["../src/schedule.processor.spec.ts"],"names":[],"mappings":"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"}