@nest-boot/schedule 4.0.0-beta.1 → 4.0.0-beta.11
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.
- package/dist/create-schedule-server.util.d.ts +3 -0
- package/dist/create-schedule-server.util.js +14 -0
- package/dist/create-schedule-server.util.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/schedule-module-options.interface.d.ts +2 -2
- package/dist/schedule-server.interface.d.ts +4 -0
- package/dist/schedule-server.interface.js +3 -0
- package/dist/schedule-server.interface.js.map +1 -0
- package/dist/schedule.decorator.js +1 -8
- package/dist/schedule.decorator.js.map +1 -1
- package/dist/schedule.service.d.ts +4 -2
- package/dist/schedule.service.js +67 -41
- package/dist/schedule.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -9
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { NestApplicationContextOptions } from "@nestjs/common/interfaces/nest-application-context-options.interface";
|
|
2
|
+
import { ScheduleServer } from "./schedule-server.interface";
|
|
3
|
+
export declare function createScheduleServer(module: any, options?: NestApplicationContextOptions): Promise<ScheduleServer>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createScheduleServer = void 0;
|
|
4
|
+
const core_1 = require("@nestjs/core");
|
|
5
|
+
const schedule_service_1 = require("./schedule.service");
|
|
6
|
+
async function createScheduleServer(module, options) {
|
|
7
|
+
const app = (await core_1.NestFactory.createApplicationContext(module, options));
|
|
8
|
+
app.start = async () => {
|
|
9
|
+
await app.get(schedule_service_1.ScheduleService).start();
|
|
10
|
+
};
|
|
11
|
+
return app;
|
|
12
|
+
}
|
|
13
|
+
exports.createScheduleServer = createScheduleServer;
|
|
14
|
+
//# sourceMappingURL=create-schedule-server.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-schedule-server.util.js","sourceRoot":"","sources":["../src/create-schedule-server.util.ts"],"names":[],"mappings":";;;AACA,uCAA2C;AAE3C,yDAAqD;AAG9C,KAAK,UAAU,oBAAoB,CACxC,MAAW,EACX,OAAuC;IAEvC,MAAM,GAAG,GAAG,CAAC,MAAM,kBAAW,CAAC,wBAAwB,CACrD,MAAM,EACN,OAAO,CACR,CAAmB,CAAC;IAErB,GAAG,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE;QACrB,MAAM,GAAG,CAAC,GAAG,CAAC,kCAAe,CAAC,CAAC,KAAK,EAAE,CAAC;IACzC,CAAC,CAAC;IAEF,OAAO,GAAG,CAAC;AACb,CAAC;AAdD,oDAcC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -14,8 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./create-schedule-server.util"), exports);
|
|
17
18
|
__exportStar(require("./schedule.decorator"), exports);
|
|
18
19
|
__exportStar(require("./schedule.module"), exports);
|
|
19
|
-
__exportStar(require("./schedule.module-definition"), exports);
|
|
20
20
|
__exportStar(require("./schedule.service"), exports);
|
|
21
21
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,oDAAkC;AAClC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,uDAAqC;AACrC,oDAAkC;AAClC,qDAAmC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule-server.interface.js","sourceRoot":"","sources":["../src/schedule-server.interface.ts"],"names":[],"mappings":""}
|
|
@@ -3,14 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Interval = exports.Cron = exports.Schedule = void 0;
|
|
4
4
|
const common_1 = require("@nestjs/common");
|
|
5
5
|
const schedule_module_definition_1 = require("./schedule.module-definition");
|
|
6
|
-
const Schedule = (options) => (target, propertyKey, descriptor) =>
|
|
7
|
-
try {
|
|
8
|
-
const { UseRequestContext } = require("@mikro-orm/core");
|
|
9
|
-
UseRequestContext()(target, propertyKey, descriptor);
|
|
10
|
-
}
|
|
11
|
-
catch (err) { }
|
|
12
|
-
(0, common_1.SetMetadata)(schedule_module_definition_1.SCHEDULE_METADATA_KEY, options)(target, propertyKey, descriptor);
|
|
13
|
-
};
|
|
6
|
+
const Schedule = (options) => (target, propertyKey, descriptor) => (0, common_1.SetMetadata)(schedule_module_definition_1.SCHEDULE_METADATA_KEY, options)(target, propertyKey, descriptor);
|
|
14
7
|
exports.Schedule = Schedule;
|
|
15
8
|
const Cron = (value) => (0, exports.Schedule)({
|
|
16
9
|
type: "cron",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule.decorator.js","sourceRoot":"","sources":["../src/schedule.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAE7C,6EAAqE;AAG9D,MAAM,QAAQ,GACnB,CAAC,OAAgC,EAAmB,EAAE,CACtD,CACE,MAAc,EACd,WAA4B,EAC5B,UAAsC,EACtC,EAAE
|
|
1
|
+
{"version":3,"file":"schedule.decorator.js","sourceRoot":"","sources":["../src/schedule.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAE7C,6EAAqE;AAG9D,MAAM,QAAQ,GACnB,CAAC,OAAgC,EAAmB,EAAE,CACtD,CACE,MAAc,EACd,WAA4B,EAC5B,UAAsC,EACtC,EAAE,CACF,IAAA,oBAAW,EACT,kDAAqB,EACrB,OAAO,CACR,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AAV1B,QAAA,QAAQ,YAUkB;AAEhC,MAAM,IAAI,GAAG,CAAC,KAAa,EAAmB,EAAE,CACrD,IAAA,gBAAQ,EAAC;IACP,IAAI,EAAE,MAAM;IACZ,KAAK;CACN,CAAC,CAAC;AAJQ,QAAA,IAAI,QAIZ;AAEE,MAAM,QAAQ,GAAG,CAAC,KAAsB,EAAmB,EAAE,CAClE,IAAA,gBAAQ,EAAC;IACP,IAAI,EAAE,UAAU;IAChB,KAAK;CACN,CAAC,CAAC;AAJQ,QAAA,QAAQ,YAIhB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { OnApplicationShutdown, OnModuleInit } from "@nestjs/common";
|
|
2
2
|
import { DiscoveryService, MetadataScanner, ModuleRef, Reflector } from "@nestjs/core";
|
|
3
3
|
import { Job } from "bullmq";
|
|
4
4
|
import { ScheduleModuleOptions } from "./schedule-module-options.interface";
|
|
@@ -9,15 +9,17 @@ export declare class ScheduleService implements OnModuleInit, OnApplicationShutd
|
|
|
9
9
|
private readonly discoveryService;
|
|
10
10
|
private readonly metadataScanner;
|
|
11
11
|
private readonly logger;
|
|
12
|
+
private readonly injector;
|
|
12
13
|
private readonly name;
|
|
13
14
|
private readonly queue;
|
|
14
15
|
private worker?;
|
|
15
16
|
private readonly schedules;
|
|
16
|
-
constructor(options: ScheduleModuleOptions, moduleRef: ModuleRef, reflector: Reflector, discoveryService: DiscoveryService, metadataScanner: MetadataScanner
|
|
17
|
+
constructor(options: ScheduleModuleOptions, moduleRef: ModuleRef, reflector: Reflector, discoveryService: DiscoveryService, metadataScanner: MetadataScanner);
|
|
17
18
|
discoverySchedules(): Promise<void>;
|
|
18
19
|
cleanUnregisteredSchedules(): Promise<void>;
|
|
19
20
|
registerSchedules(): Promise<void>;
|
|
20
21
|
processor(job: Job): Promise<void>;
|
|
22
|
+
start(): Promise<void>;
|
|
21
23
|
onModuleInit(): Promise<void>;
|
|
22
24
|
onApplicationShutdown(): Promise<void>;
|
|
23
25
|
}
|
package/dist/schedule.service.js
CHANGED
|
@@ -14,80 +14,98 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
14
14
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
15
15
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
16
16
|
};
|
|
17
|
+
var ScheduleService_1;
|
|
17
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
19
|
exports.ScheduleService = void 0;
|
|
19
20
|
const request_context_1 = require("@nest-boot/request-context");
|
|
20
21
|
const common_1 = require("@nestjs/common");
|
|
21
22
|
const core_1 = require("@nestjs/core");
|
|
23
|
+
const injector_1 = require("@nestjs/core/injector/injector");
|
|
22
24
|
const bullmq_1 = require("bullmq");
|
|
23
25
|
const ms_1 = __importDefault(require("ms"));
|
|
24
26
|
const schedule_module_definition_1 = require("./schedule.module-definition");
|
|
25
|
-
let ScheduleService = class ScheduleService {
|
|
26
|
-
constructor(options, moduleRef, reflector, discoveryService, metadataScanner
|
|
27
|
+
let ScheduleService = ScheduleService_1 = class ScheduleService {
|
|
28
|
+
constructor(options, moduleRef, reflector, discoveryService, metadataScanner) {
|
|
27
29
|
var _a;
|
|
28
30
|
this.options = options;
|
|
29
31
|
this.moduleRef = moduleRef;
|
|
30
32
|
this.reflector = reflector;
|
|
31
33
|
this.discoveryService = discoveryService;
|
|
32
34
|
this.metadataScanner = metadataScanner;
|
|
33
|
-
this.logger =
|
|
34
|
-
this.
|
|
35
|
+
this.logger = new common_1.Logger(ScheduleService_1.name);
|
|
36
|
+
this.injector = new injector_1.Injector();
|
|
37
|
+
this.schedules = new Map();
|
|
35
38
|
this.name = (_a = options.name) !== null && _a !== void 0 ? _a : "nest-boot-schedule";
|
|
36
39
|
this.queue = new bullmq_1.Queue(this.name, options);
|
|
37
40
|
}
|
|
38
41
|
async discoverySchedules() {
|
|
39
|
-
this.discoveryService.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
if (typeof
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
42
|
+
this.discoveryService.getProviders().forEach((wrapper) => {
|
|
43
|
+
var _a;
|
|
44
|
+
if (typeof ((_a = wrapper.instance) === null || _a === void 0 ? void 0 : _a.constructor) !== "undefined") {
|
|
45
|
+
const { instance, host } = wrapper;
|
|
46
|
+
this.metadataScanner.scanFromPrototype(instance, Object.getPrototypeOf(instance), (key) => {
|
|
47
|
+
if (typeof host !== "undefined" &&
|
|
48
|
+
typeof instance.constructor.name === "string") {
|
|
49
|
+
const scheduleMetadataOptions = this.reflector.get(schedule_module_definition_1.SCHEDULE_METADATA_KEY, instance[key]);
|
|
50
|
+
if (typeof scheduleMetadataOptions !== "undefined") {
|
|
51
|
+
this.schedules.set(`${instance.constructor.name}#${key}`, {
|
|
52
|
+
...scheduleMetadataOptions,
|
|
53
|
+
processor: wrapper.isDependencyTreeStatic()
|
|
54
|
+
? (job) => instance[key](job)
|
|
55
|
+
: async (job) => {
|
|
56
|
+
const contextId = core_1.ContextIdFactory.create();
|
|
57
|
+
this.moduleRef.registerRequestByContextId(job, contextId);
|
|
58
|
+
const contextInstance = await this.injector.loadPerContext(instance, host, host.providers, contextId);
|
|
59
|
+
return contextInstance[key](job);
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
}
|
|
51
63
|
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
54
66
|
});
|
|
55
67
|
}
|
|
56
68
|
async cleanUnregisteredSchedules() {
|
|
57
69
|
const repeatableJobs = await this.queue.getRepeatableJobs();
|
|
58
70
|
await Promise.all(repeatableJobs
|
|
59
|
-
.filter((repeatableJob) =>
|
|
60
|
-
|
|
71
|
+
.filter((repeatableJob) => {
|
|
72
|
+
var _a;
|
|
73
|
+
return ((_a = this.schedules.get(repeatableJob.name)) === null || _a === void 0 ? void 0 : _a.value.toString()) !==
|
|
74
|
+
repeatableJob.pattern;
|
|
75
|
+
})
|
|
61
76
|
.map(async (repeatableJob) => {
|
|
62
77
|
await this.queue.removeRepeatableByKey(repeatableJob.key);
|
|
63
|
-
this.logger.log(`Removed {${repeatableJob.name}, ${repeatableJob.pattern}}
|
|
78
|
+
this.logger.log(`Removed {${repeatableJob.name}, ${repeatableJob.pattern}}`);
|
|
64
79
|
}));
|
|
65
80
|
}
|
|
66
81
|
async registerSchedules() {
|
|
67
|
-
await Promise.all(this.schedules.map(async (
|
|
68
|
-
await this.queue.add(
|
|
69
|
-
repeat:
|
|
70
|
-
? { pattern:
|
|
82
|
+
await Promise.all([...this.schedules.entries()].map(async ([name, { type, value }]) => {
|
|
83
|
+
await this.queue.add(name, {}, {
|
|
84
|
+
repeat: type === "cron"
|
|
85
|
+
? { pattern: value.toString() }
|
|
71
86
|
: {
|
|
72
|
-
every: typeof
|
|
73
|
-
? (0, ms_1.default)(schedule.value)
|
|
74
|
-
: schedule.value,
|
|
87
|
+
every: typeof value === "string" ? (0, ms_1.default)(value) : value,
|
|
75
88
|
},
|
|
76
89
|
removeOnFail: true,
|
|
77
90
|
removeOnComplete: true,
|
|
78
91
|
});
|
|
79
|
-
this.logger.log(`Registered {${
|
|
92
|
+
this.logger.log(`Registered {${name}, ${value}}`);
|
|
80
93
|
}));
|
|
81
94
|
}
|
|
82
95
|
async processor(job) {
|
|
83
|
-
|
|
96
|
+
var _a;
|
|
97
|
+
const ctx = new request_context_1.RequestContext(this.moduleRef);
|
|
84
98
|
ctx.set("job", job);
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
99
|
+
const processor = (_a = this.schedules.get(job.name)) === null || _a === void 0 ? void 0 : _a.processor;
|
|
100
|
+
if (typeof processor === "function") {
|
|
101
|
+
await request_context_1.RequestContext.run(ctx, async () => await processor(job));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
async start() {
|
|
105
|
+
if (this.worker instanceof bullmq_1.Worker && !this.worker.isRunning()) {
|
|
106
|
+
void this.worker.run();
|
|
107
|
+
this.logger.log(`Worker started`);
|
|
108
|
+
}
|
|
91
109
|
}
|
|
92
110
|
async onModuleInit() {
|
|
93
111
|
await this.discoverySchedules();
|
|
@@ -95,24 +113,32 @@ let ScheduleService = class ScheduleService {
|
|
|
95
113
|
await this.registerSchedules();
|
|
96
114
|
this.worker = new bullmq_1.Worker(this.name, async (job) => {
|
|
97
115
|
await this.processor(job);
|
|
98
|
-
},
|
|
116
|
+
}, {
|
|
117
|
+
autorun: false,
|
|
118
|
+
metrics: {
|
|
119
|
+
maxDataPoints: bullmq_1.MetricsTime.ONE_MONTH,
|
|
120
|
+
},
|
|
121
|
+
...this.options,
|
|
122
|
+
});
|
|
99
123
|
this.worker.on("failed", (job, err) => {
|
|
100
|
-
this.logger.error(err
|
|
124
|
+
this.logger.error(err, typeof job !== "undefined"
|
|
125
|
+
? { queueName: job.queueName, jobName: job.name, jobId: job.id }
|
|
126
|
+
: {});
|
|
101
127
|
});
|
|
102
128
|
}
|
|
103
129
|
async onApplicationShutdown() {
|
|
104
130
|
var _a;
|
|
131
|
+
await this.queue.close();
|
|
105
132
|
await ((_a = this.worker) === null || _a === void 0 ? void 0 : _a.close());
|
|
106
133
|
}
|
|
107
134
|
};
|
|
108
|
-
ScheduleService = __decorate([
|
|
135
|
+
ScheduleService = ScheduleService_1 = __decorate([
|
|
109
136
|
(0, common_1.Injectable)(),
|
|
110
137
|
__param(0, (0, common_1.Inject)(schedule_module_definition_1.MODULE_OPTIONS_TOKEN)),
|
|
111
138
|
__metadata("design:paramtypes", [Object, core_1.ModuleRef,
|
|
112
139
|
core_1.Reflector,
|
|
113
140
|
core_1.DiscoveryService,
|
|
114
|
-
core_1.MetadataScanner
|
|
115
|
-
common_1.Logger])
|
|
141
|
+
core_1.MetadataScanner])
|
|
116
142
|
], ScheduleService);
|
|
117
143
|
exports.ScheduleService = ScheduleService;
|
|
118
144
|
//# sourceMappingURL=schedule.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule.service.js","sourceRoot":"","sources":["../src/schedule.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schedule.service.js","sourceRoot":"","sources":["../src/schedule.service.ts"],"names":[],"mappings":"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"}
|