@nest-boot/schedule 7.3.4 → 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":"
|
|
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
|
|
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
|
-
|
|
113
|
-
|
|
114
|
-
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACzC,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,CAAC;AAE5D,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;IACrC,SAAS,EAAE,aAAa;IACxB,UAAU,EAAE,MAAM,UAAU;QAAhB;YACV,WAAM,GAAG;gBACP,WAAW,EAAE,CAAC;gBACd,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;aAC5C,CAAC;QACJ,CAAC;KAAA;CACF,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"schedule.processor.spec.js","sourceRoot":"","sources":["../src/schedule.processor.spec.ts"],"names":[],"mappings":"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"}
|