@nest-boot/schedule 7.0.0-beta.0 → 7.0.0-beta.10
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/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 +5 -2
- package/dist/schedule-options.interface.d.ts +2 -1
- package/dist/schedule.decorator.d.ts +1 -1
- package/dist/schedule.decorator.js +2 -1
- package/dist/schedule.decorator.js.map +1 -1
- package/dist/schedule.module-definition.d.ts +2 -1
- package/dist/schedule.module-definition.js +3 -1
- package/dist/schedule.module-definition.js.map +1 -1
- package/dist/schedule.module.d.ts +3 -3
- package/dist/schedule.module.js +29 -21
- package/dist/schedule.module.js.map +1 -1
- package/dist/schedule.module.spec.d.ts +1 -0
- package/dist/schedule.module.spec.js +39 -0
- package/dist/schedule.module.spec.js.map +1 -0
- package/dist/schedule.processor.d.ts +12 -0
- package/dist/schedule.processor.js +45 -0
- package/dist/schedule.processor.js.map +1 -0
- package/dist/{schedule.service.d.ts → schedule.registry.d.ts} +7 -3
- package/dist/{schedule.service.js → schedule.registry.js} +34 -39
- package/dist/schedule.registry.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +23 -21
- package/dist/schedule.service.js.map +0 -1
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -16,7 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./schedule.decorator"), exports);
|
|
18
18
|
__exportStar(require("./schedule.module"), exports);
|
|
19
|
-
__exportStar(require("./schedule.
|
|
19
|
+
__exportStar(require("./schedule.registry"), exports);
|
|
20
20
|
__exportStar(require("./schedule-module-options.interface"), exports);
|
|
21
21
|
__exportStar(require("./schedule-options.interface"), exports);
|
|
22
22
|
//# 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,uDAAqC;AACrC,oDAAkC;AAClC,sDAAoC;AACpC,sEAAoD;AACpD,+DAA6C"}
|
|
@@ -1,2 +1,5 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
export
|
|
1
|
+
import { type RegisterQueueOptions } from "@nestjs/bullmq";
|
|
2
|
+
export interface ScheduleModuleOptions extends RegisterQueueOptions {
|
|
3
|
+
autorun?: boolean;
|
|
4
|
+
concurrency?: number;
|
|
5
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type ScheduleOptions } from "./schedule-options.interface";
|
|
2
2
|
export declare const Schedule: (options: ScheduleOptions) => <T>(target: object, propertyKey: string, descriptor: TypedPropertyDescriptor<T>) => void;
|
|
3
3
|
export declare const Cron: (value: string, options?: Omit<ScheduleOptions, "type" | "value">) => <T>(target: object, propertyKey: string, descriptor: TypedPropertyDescriptor<T>) => void;
|
|
4
|
-
export declare const Interval: (value: number | string) => <T>(target: object, propertyKey: string, descriptor: TypedPropertyDescriptor<T>) => void;
|
|
4
|
+
export declare const Interval: (value: number | string, options?: Omit<ScheduleOptions, "type" | "value">) => <T>(target: object, propertyKey: string, descriptor: TypedPropertyDescriptor<T>) => void;
|
|
@@ -13,9 +13,10 @@ const Cron = (value, options) => (0, exports.Schedule)({
|
|
|
13
13
|
...(options ?? {}),
|
|
14
14
|
});
|
|
15
15
|
exports.Cron = Cron;
|
|
16
|
-
const Interval = (value) => (0, exports.Schedule)({
|
|
16
|
+
const Interval = (value, options) => (0, exports.Schedule)({
|
|
17
17
|
type: "interval",
|
|
18
18
|
value,
|
|
19
|
+
...(options ?? {}),
|
|
19
20
|
});
|
|
20
21
|
exports.Interval = Interval;
|
|
21
22
|
//# sourceMappingURL=schedule.decorator.js.map
|
|
@@ -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,OAAwB,EAAE,EAAE,CAC7B,CACE,MAAc,EACd,WAAmB,EACnB,UAAsC,EACtC,EAAE;IACF,IAAA,oBAAW,EAA0B,kDAAqB,EAAE,OAAO,CAAC,CAClE,MAAM,EACN,WAAW,EACX,UAAU,CACX,CAAC;AACJ,CAAC,CAAC;AAZS,QAAA,QAAQ,YAYjB;AAEG,MAAM,IAAI,GAAG,CAClB,KAAa,EACb,OAAiD,EACjD,EAAE,CACF,IAAA,gBAAQ,EAAC;IACP,IAAI,EAAE,MAAM;IACZ,KAAK;IACL,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;CACnB,CAAC,CAAC;AARQ,QAAA,IAAI,QAQZ;AAEE,MAAM,QAAQ,GAAG,
|
|
1
|
+
{"version":3,"file":"schedule.decorator.js","sourceRoot":"","sources":["../src/schedule.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAA6C;AAE7C,6EAAqE;AAG9D,MAAM,QAAQ,GACnB,CAAC,OAAwB,EAAE,EAAE,CAC7B,CACE,MAAc,EACd,WAAmB,EACnB,UAAsC,EACtC,EAAE;IACF,IAAA,oBAAW,EAA0B,kDAAqB,EAAE,OAAO,CAAC,CAClE,MAAM,EACN,WAAW,EACX,UAAU,CACX,CAAC;AACJ,CAAC,CAAC;AAZS,QAAA,QAAQ,YAYjB;AAEG,MAAM,IAAI,GAAG,CAClB,KAAa,EACb,OAAiD,EACjD,EAAE,CACF,IAAA,gBAAQ,EAAC;IACP,IAAI,EAAE,MAAM;IACZ,KAAK;IACL,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;CACnB,CAAC,CAAC;AARQ,QAAA,IAAI,QAQZ;AAEE,MAAM,QAAQ,GAAG,CACtB,KAAsB,EACtB,OAAiD,EACjD,EAAE,CACF,IAAA,gBAAQ,EAAC;IACP,IAAI,EAAE,UAAU;IAChB,KAAK;IACL,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;CACnB,CAAC,CAAC;AARQ,QAAA,QAAQ,YAQhB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ScheduleModuleOptions } from "./schedule-module-options.interface";
|
|
1
2
|
export declare const SCHEDULE_QUEUE_NAME = "schedule";
|
|
2
3
|
export declare const SCHEDULE_METADATA_KEY: `${string}-${string}-${string}-${string}-${string}`;
|
|
3
|
-
export declare const ConfigurableModuleClass: import("@nestjs/common").ConfigurableModuleCls<
|
|
4
|
+
export declare const ConfigurableModuleClass: import("@nestjs/common").ConfigurableModuleCls<ScheduleModuleOptions, "forRoot", "create", {}>, MODULE_OPTIONS_TOKEN: string | symbol, OPTIONS_TYPE: ScheduleModuleOptions & Partial<{}>, ASYNC_OPTIONS_TYPE: import("@nestjs/common").ConfigurableModuleAsyncOptions<ScheduleModuleOptions, "create"> & Partial<{}>;
|
|
@@ -6,5 +6,7 @@ const common_1 = require("@nestjs/common");
|
|
|
6
6
|
const crypto_1 = require("crypto");
|
|
7
7
|
exports.SCHEDULE_QUEUE_NAME = "schedule";
|
|
8
8
|
exports.SCHEDULE_METADATA_KEY = (0, crypto_1.randomUUID)();
|
|
9
|
-
_a = new common_1.ConfigurableModuleBuilder()
|
|
9
|
+
_a = new common_1.ConfigurableModuleBuilder()
|
|
10
|
+
.setClassMethodName("forRoot")
|
|
11
|
+
.build(), exports.ConfigurableModuleClass = _a.ConfigurableModuleClass, exports.MODULE_OPTIONS_TOKEN = _a.MODULE_OPTIONS_TOKEN, exports.OPTIONS_TYPE = _a.OPTIONS_TYPE, exports.ASYNC_OPTIONS_TYPE = _a.ASYNC_OPTIONS_TYPE;
|
|
10
12
|
//# sourceMappingURL=schedule.module-definition.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule.module-definition.js","sourceRoot":"","sources":["../src/schedule.module-definition.ts"],"names":[],"mappings":";;;;AAAA,2CAA2D;AAC3D,mCAAoC;AAIvB,QAAA,mBAAmB,GAAG,UAAU,CAAC;AAEjC,QAAA,qBAAqB,GAAG,IAAA,mBAAU,GAAE,CAAC;AAErC,KAKT,IAAI,kCAAyB,EAAyB,CAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"schedule.module-definition.js","sourceRoot":"","sources":["../src/schedule.module-definition.ts"],"names":[],"mappings":";;;;AAAA,2CAA2D;AAC3D,mCAAoC;AAIvB,QAAA,mBAAmB,GAAG,UAAU,CAAC;AAEjC,QAAA,qBAAqB,GAAG,IAAA,mBAAU,GAAE,CAAC;AAErC,KAKT,IAAI,kCAAyB,EAAyB;KACvD,kBAAkB,CAAC,SAAS,CAAC;KAC7B,KAAK,EAAE,EANR,+BAAuB,+BACvB,4BAAoB,4BACpB,oBAAY,oBACZ,0BAAkB,yBAGT"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type DynamicModule } from "@nestjs/common";
|
|
2
2
|
import { type ASYNC_OPTIONS_TYPE, ConfigurableModuleClass, type OPTIONS_TYPE } from "./schedule.module-definition";
|
|
3
3
|
export declare class ScheduleModule extends ConfigurableModuleClass {
|
|
4
|
-
static
|
|
5
|
-
static
|
|
6
|
-
|
|
4
|
+
private static patchDynamicModule;
|
|
5
|
+
static forRoot(options: typeof OPTIONS_TYPE): DynamicModule;
|
|
6
|
+
static forRootAsync(options: typeof ASYNC_OPTIONS_TYPE): DynamicModule;
|
|
7
7
|
}
|
package/dist/schedule.module.js
CHANGED
|
@@ -7,38 +7,46 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
};
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.ScheduleModule = void 0;
|
|
10
|
-
const
|
|
10
|
+
const bullmq_1 = require("@nest-boot/bullmq");
|
|
11
11
|
const common_1 = require("@nestjs/common");
|
|
12
12
|
const core_1 = require("@nestjs/core");
|
|
13
13
|
const schedule_module_definition_1 = require("./schedule.module-definition");
|
|
14
|
-
const
|
|
14
|
+
const schedule_processor_1 = require("./schedule.processor");
|
|
15
|
+
const schedule_registry_1 = require("./schedule.registry");
|
|
15
16
|
let ScheduleModule = class ScheduleModule extends schedule_module_definition_1.ConfigurableModuleClass {
|
|
16
|
-
static
|
|
17
|
-
return this.withQueue(super.register(options));
|
|
18
|
-
}
|
|
19
|
-
static registerAsync(options) {
|
|
20
|
-
return this.withQueue(super.registerAsync(options));
|
|
21
|
-
}
|
|
22
|
-
static withQueue(dynamicModule) {
|
|
23
|
-
const ScheduleQueueDynamicModule = queue_1.QueueModule.registerAsync({
|
|
24
|
-
name: "schedule",
|
|
25
|
-
imports: [dynamicModule],
|
|
26
|
-
inject: [schedule_module_definition_1.MODULE_OPTIONS_TOKEN],
|
|
27
|
-
useFactory: (options) => options,
|
|
28
|
-
});
|
|
29
|
-
dynamicModule.imports = [
|
|
30
|
-
...(dynamicModule.imports ?? []),
|
|
31
|
-
ScheduleQueueDynamicModule,
|
|
32
|
-
];
|
|
17
|
+
static patchDynamicModule(dynamicModule) {
|
|
33
18
|
dynamicModule.exports = [schedule_module_definition_1.MODULE_OPTIONS_TOKEN];
|
|
34
19
|
return dynamicModule;
|
|
35
20
|
}
|
|
21
|
+
static forRoot(options) {
|
|
22
|
+
return this.patchDynamicModule(super.forRoot(options));
|
|
23
|
+
}
|
|
24
|
+
static forRootAsync(options) {
|
|
25
|
+
return this.patchDynamicModule(super.forRootAsync(options));
|
|
26
|
+
}
|
|
36
27
|
};
|
|
37
28
|
exports.ScheduleModule = ScheduleModule;
|
|
38
29
|
exports.ScheduleModule = ScheduleModule = __decorate([
|
|
30
|
+
(0, common_1.Global)(),
|
|
39
31
|
(0, common_1.Module)({
|
|
40
|
-
imports: [
|
|
41
|
-
|
|
32
|
+
imports: [
|
|
33
|
+
core_1.DiscoveryModule,
|
|
34
|
+
bullmq_1.BullModule.registerQueueAsync({
|
|
35
|
+
name: "schedule",
|
|
36
|
+
inject: [{ token: schedule_module_definition_1.MODULE_OPTIONS_TOKEN, optional: true }],
|
|
37
|
+
useFactory: (options) => {
|
|
38
|
+
return {
|
|
39
|
+
...options,
|
|
40
|
+
defaultJobOptions: {
|
|
41
|
+
removeOnComplete: true,
|
|
42
|
+
removeOnFail: true,
|
|
43
|
+
...options?.defaultJobOptions,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
}),
|
|
48
|
+
],
|
|
49
|
+
providers: [common_1.Logger, schedule_registry_1.ScheduleRegistry, schedule_processor_1.ScheduleProcessor],
|
|
42
50
|
exports: [],
|
|
43
51
|
})
|
|
44
52
|
], ScheduleModule);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule.module.js","sourceRoot":"","sources":["../src/schedule.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"schedule.module.js","sourceRoot":"","sources":["../src/schedule.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,8CAA+C;AAC/C,2CAA4E;AAC5E,uCAA+C;AAE/C,6EAKsC;AACtC,6DAAyD;AACzD,2DAAuD;AAyBhD,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,oDAAuB;IACjD,MAAM,CAAC,kBAAkB,CAC/B,aAA4B;QAE5B,aAAa,CAAC,OAAO,GAAG,CAAC,iDAAoB,CAAC,CAAC;QAC/C,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,OAA4B;QACzC,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAAkC;QACpD,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,CAAC;CACF,CAAA;AAfY,wCAAc;yBAAd,cAAc;IAtB1B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,sBAAe;YACf,mBAAU,CAAC,kBAAkB,CAAC;gBAC5B,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,iDAAoB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACzD,UAAU,EAAE,CAAC,OAA8B,EAAE,EAAE;oBAC7C,OAAO;wBACL,GAAG,OAAO;wBACV,iBAAiB,EAAE;4BACjB,gBAAgB,EAAE,IAAI;4BACtB,YAAY,EAAE,IAAI;4BAClB,GAAG,OAAO,EAAE,iBAAiB;yBAC9B;qBACF,CAAC;gBACJ,CAAC;aACF,CAAC;SACH;QACD,SAAS,EAAE,CAAC,eAAM,EAAE,oCAAgB,EAAE,sCAAiB,CAAC;QACxD,OAAO,EAAE,EAAE;KACZ,CAAC;GACW,cAAc,CAe1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "dotenv/config";
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
require("dotenv/config");
|
|
4
|
+
const bullmq_1 = require("@nest-boot/bullmq");
|
|
5
|
+
const testing_1 = require("@nestjs/testing");
|
|
6
|
+
const _1 = require(".");
|
|
7
|
+
describe("BullModule", () => {
|
|
8
|
+
let app;
|
|
9
|
+
it(`ScheduleModule`, async () => {
|
|
10
|
+
const moduleRef = await testing_1.Test.createTestingModule({
|
|
11
|
+
imports: [bullmq_1.BullModule, _1.ScheduleModule],
|
|
12
|
+
}).compile();
|
|
13
|
+
app = moduleRef.createNestApplication();
|
|
14
|
+
await app.init();
|
|
15
|
+
await app.close();
|
|
16
|
+
});
|
|
17
|
+
it(`ScheduleModule.forRoot`, async () => {
|
|
18
|
+
const moduleRef = await testing_1.Test.createTestingModule({
|
|
19
|
+
imports: [bullmq_1.BullModule, _1.ScheduleModule.forRoot({})],
|
|
20
|
+
}).compile();
|
|
21
|
+
app = moduleRef.createNestApplication();
|
|
22
|
+
await app.init();
|
|
23
|
+
await app.close();
|
|
24
|
+
});
|
|
25
|
+
it(`ScheduleModule.forRootAsync`, async () => {
|
|
26
|
+
const moduleRef = await testing_1.Test.createTestingModule({
|
|
27
|
+
imports: [
|
|
28
|
+
bullmq_1.BullModule,
|
|
29
|
+
_1.ScheduleModule.forRootAsync({
|
|
30
|
+
useFactory: () => ({}),
|
|
31
|
+
}),
|
|
32
|
+
],
|
|
33
|
+
}).compile();
|
|
34
|
+
app = moduleRef.createNestApplication();
|
|
35
|
+
await app.init();
|
|
36
|
+
await app.close();
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=schedule.module.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule.module.spec.js","sourceRoot":"","sources":["../src/schedule.module.spec.ts"],"names":[],"mappings":";;AAAA,yBAAuB;AAEvB,8CAA+C;AAE/C,6CAAuC;AAEvC,wBAAmC;AAEnC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,GAAqB,CAAC;IAE1B,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,SAAS,GAAG,MAAM,cAAI,CAAC,mBAAmB,CAAC;YAC/C,OAAO,EAAE,CAAC,mBAAU,EAAE,iBAAc,CAAC;SACtC,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,GAAG,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;QACxC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,SAAS,GAAG,MAAM,cAAI,CAAC,mBAAmB,CAAC;YAC/C,OAAO,EAAE,CAAC,mBAAU,EAAE,iBAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;SAClD,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,GAAG,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;QACxC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,SAAS,GAAG,MAAM,cAAI,CAAC,mBAAmB,CAAC;YAC/C,OAAO,EAAE;gBACP,mBAAU;gBACV,iBAAc,CAAC,YAAY,CAAC;oBAC1B,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;iBACvB,CAAC;aACH;SACF,CAAC,CAAC,OAAO,EAAE,CAAC;QAEb,GAAG,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;QACxC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { WorkerHost } from "@nestjs/bullmq";
|
|
2
|
+
import { OnApplicationBootstrap } from "@nestjs/common";
|
|
3
|
+
import { Job } from "bullmq";
|
|
4
|
+
import { ScheduleRegistry } from "./schedule.registry";
|
|
5
|
+
import { ScheduleModuleOptions } from "./schedule-module-options.interface";
|
|
6
|
+
export declare class ScheduleProcessor extends WorkerHost implements OnApplicationBootstrap {
|
|
7
|
+
private readonly scheduleRegistry;
|
|
8
|
+
private readonly options?;
|
|
9
|
+
constructor(scheduleRegistry: ScheduleRegistry, options?: ScheduleModuleOptions | undefined);
|
|
10
|
+
process(job: Job): Promise<void>;
|
|
11
|
+
onApplicationBootstrap(): Promise<void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ScheduleProcessor = void 0;
|
|
16
|
+
const bullmq_1 = require("@nestjs/bullmq");
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const schedule_module_definition_1 = require("./schedule.module-definition");
|
|
19
|
+
const schedule_registry_1 = require("./schedule.registry");
|
|
20
|
+
let ScheduleProcessor = class ScheduleProcessor extends bullmq_1.WorkerHost {
|
|
21
|
+
constructor(scheduleRegistry, options) {
|
|
22
|
+
super();
|
|
23
|
+
this.scheduleRegistry = scheduleRegistry;
|
|
24
|
+
this.options = options;
|
|
25
|
+
}
|
|
26
|
+
async process(job) {
|
|
27
|
+
await this.scheduleRegistry.get(job.name)?.handler();
|
|
28
|
+
}
|
|
29
|
+
async onApplicationBootstrap() {
|
|
30
|
+
if (this.options?.concurrency) {
|
|
31
|
+
this.worker.concurrency = this.options.concurrency;
|
|
32
|
+
}
|
|
33
|
+
if (this.options?.autorun !== false && this.worker.isPaused()) {
|
|
34
|
+
await this.worker.run();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
exports.ScheduleProcessor = ScheduleProcessor;
|
|
39
|
+
exports.ScheduleProcessor = ScheduleProcessor = __decorate([
|
|
40
|
+
(0, bullmq_1.Processor)("schedule", { autorun: false }),
|
|
41
|
+
__param(1, (0, common_1.Optional)()),
|
|
42
|
+
__param(1, (0, common_1.Inject)(schedule_module_definition_1.MODULE_OPTIONS_TOKEN)),
|
|
43
|
+
__metadata("design:paramtypes", [schedule_registry_1.ScheduleRegistry, Object])
|
|
44
|
+
], ScheduleProcessor);
|
|
45
|
+
//# sourceMappingURL=schedule.processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule.processor.js","sourceRoot":"","sources":["../src/schedule.processor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAuD;AACvD,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,KAAK,CAAC,sBAAsB;QAC1B,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,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC9D,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;CACF,CAAA;AA1BY,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,CA0B7B"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Job, Queue } from "@nest-boot/queue";
|
|
2
1
|
import { type OnApplicationBootstrap } from "@nestjs/common";
|
|
3
2
|
import { DiscoveryService, MetadataScanner, Reflector } from "@nestjs/core";
|
|
4
|
-
|
|
3
|
+
import { Queue } from "bullmq";
|
|
4
|
+
import { type ScheduleOptions } from "./schedule-options.interface";
|
|
5
|
+
export declare class ScheduleRegistry implements OnApplicationBootstrap {
|
|
5
6
|
private readonly queue;
|
|
6
7
|
private readonly reflector;
|
|
7
8
|
private readonly discoveryService;
|
|
@@ -9,7 +10,10 @@ export declare class ScheduleService implements OnApplicationBootstrap {
|
|
|
9
10
|
private readonly logger;
|
|
10
11
|
private readonly schedules;
|
|
11
12
|
constructor(queue: Queue, reflector: Reflector, discoveryService: DiscoveryService, metadataScanner: MetadataScanner);
|
|
12
|
-
|
|
13
|
+
get(name: string): {
|
|
14
|
+
handler: () => Promise<void>;
|
|
15
|
+
options: ScheduleOptions;
|
|
16
|
+
} | undefined;
|
|
13
17
|
private discoverySchedules;
|
|
14
18
|
private cleanUnregisteredSchedules;
|
|
15
19
|
private registerSchedules;
|
|
@@ -11,31 +11,25 @@ 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
|
|
15
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
16
|
-
};
|
|
17
|
-
var ScheduleService_1;
|
|
14
|
+
var ScheduleRegistry_1;
|
|
18
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.
|
|
20
|
-
const
|
|
16
|
+
exports.ScheduleRegistry = void 0;
|
|
17
|
+
const bullmq_1 = require("@nestjs/bullmq");
|
|
21
18
|
const common_1 = require("@nestjs/common");
|
|
22
19
|
const core_1 = require("@nestjs/core");
|
|
23
|
-
const
|
|
20
|
+
const bullmq_2 = require("bullmq");
|
|
24
21
|
const schedule_module_definition_1 = require("./schedule.module-definition");
|
|
25
|
-
let
|
|
22
|
+
let ScheduleRegistry = ScheduleRegistry_1 = class ScheduleRegistry {
|
|
26
23
|
constructor(queue, reflector, discoveryService, metadataScanner) {
|
|
27
24
|
this.queue = queue;
|
|
28
25
|
this.reflector = reflector;
|
|
29
26
|
this.discoveryService = discoveryService;
|
|
30
27
|
this.metadataScanner = metadataScanner;
|
|
31
|
-
this.logger = new common_1.Logger(
|
|
28
|
+
this.logger = new common_1.Logger(ScheduleRegistry_1.name);
|
|
32
29
|
this.schedules = new Map();
|
|
33
30
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (typeof schedule !== "undefined") {
|
|
37
|
-
await schedule.handler();
|
|
38
|
-
}
|
|
31
|
+
get(name) {
|
|
32
|
+
return this.schedules.get(name);
|
|
39
33
|
}
|
|
40
34
|
discoverySchedules() {
|
|
41
35
|
[
|
|
@@ -62,29 +56,31 @@ let ScheduleService = ScheduleService_1 = class ScheduleService {
|
|
|
62
56
|
});
|
|
63
57
|
}
|
|
64
58
|
async cleanUnregisteredSchedules() {
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
.
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
this.logger.log(`Removed {${repeatableJob.name}, ${String(repeatableJob.pattern ?? "null")}}`);
|
|
73
|
-
}));
|
|
59
|
+
const jobSchedulers = await this.queue.getJobSchedulers();
|
|
60
|
+
for (const jobScheduler of jobSchedulers) {
|
|
61
|
+
if (!this.schedules.get(jobScheduler.name)) {
|
|
62
|
+
await this.queue.removeJobScheduler(jobScheduler.name);
|
|
63
|
+
this.logger.log(`Removed {${jobScheduler.name}, ${jobScheduler.pattern ? "cron" : "interval"}, ${String(jobScheduler.pattern ?? jobScheduler.every)}}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
74
66
|
}
|
|
75
67
|
async registerSchedules() {
|
|
76
|
-
|
|
77
|
-
await this.queue.
|
|
78
|
-
|
|
79
|
-
|
|
68
|
+
for (const [name, { options: { type, value, timezone, ...jobOptions }, },] of this.schedules.entries()) {
|
|
69
|
+
await this.queue.upsertJobScheduler(name, {
|
|
70
|
+
tz: timezone ?? "UTC",
|
|
71
|
+
...(type === "cron"
|
|
72
|
+
? {
|
|
73
|
+
pattern: value.toString(),
|
|
74
|
+
}
|
|
80
75
|
: {
|
|
81
|
-
every:
|
|
82
|
-
},
|
|
83
|
-
|
|
84
|
-
|
|
76
|
+
every: Number(value),
|
|
77
|
+
}),
|
|
78
|
+
}, {
|
|
79
|
+
name,
|
|
80
|
+
opts: jobOptions,
|
|
85
81
|
});
|
|
86
82
|
this.logger.log(`Registered {${name}, ${type}, ${String(value)}}`);
|
|
87
|
-
}
|
|
83
|
+
}
|
|
88
84
|
}
|
|
89
85
|
async onApplicationBootstrap() {
|
|
90
86
|
this.discoverySchedules();
|
|
@@ -92,13 +88,12 @@ let ScheduleService = ScheduleService_1 = class ScheduleService {
|
|
|
92
88
|
await this.registerSchedules();
|
|
93
89
|
}
|
|
94
90
|
};
|
|
95
|
-
exports.
|
|
96
|
-
exports.
|
|
97
|
-
(0,
|
|
98
|
-
|
|
99
|
-
__metadata("design:paramtypes", [queue_1.Queue,
|
|
91
|
+
exports.ScheduleRegistry = ScheduleRegistry;
|
|
92
|
+
exports.ScheduleRegistry = ScheduleRegistry = ScheduleRegistry_1 = __decorate([
|
|
93
|
+
__param(0, (0, bullmq_1.InjectQueue)(schedule_module_definition_1.SCHEDULE_QUEUE_NAME)),
|
|
94
|
+
__metadata("design:paramtypes", [bullmq_2.Queue,
|
|
100
95
|
core_1.Reflector,
|
|
101
96
|
core_1.DiscoveryService,
|
|
102
97
|
core_1.MetadataScanner])
|
|
103
|
-
],
|
|
104
|
-
//# sourceMappingURL=schedule.
|
|
98
|
+
], ScheduleRegistry);
|
|
99
|
+
//# sourceMappingURL=schedule.registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule.registry.js","sourceRoot":"","sources":["../src/schedule.registry.ts"],"names":[],"mappings":"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"}
|