@eggjs/tegg-schedule-plugin 3.66.0 → 3.67.1
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/app.d.ts +1 -0
- package/app.js +6 -2
- package/lib/ScheduleManager.d.ts +31 -0
- package/lib/ScheduleManager.js +50 -0
- package/lib/ScheduleWorkerRegister.d.ts +3 -3
- package/lib/ScheduleWorkerRegister.js +9 -6
- package/package.json +13 -13
package/app.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Application } from 'egg';
|
|
2
2
|
export default class ScheduleAppBootHook {
|
|
3
3
|
private readonly app;
|
|
4
|
+
private readonly scheduleManager;
|
|
4
5
|
private readonly scheduleWorkerRegister;
|
|
5
6
|
private readonly scheduleWorkerLoadUnitHook;
|
|
6
7
|
private readonly schedulePrototypeHook;
|
package/app.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const ScheduleManager_1 = require("./lib/ScheduleManager");
|
|
3
4
|
const ScheduleWorkerRegister_1 = require("./lib/ScheduleWorkerRegister");
|
|
4
5
|
const ScheduleWorkerLoadUnitHook_1 = require("./lib/ScheduleWorkerLoadUnitHook");
|
|
5
6
|
const SchedulePrototypeHook_1 = require("./lib/SchedulePrototypeHook");
|
|
6
7
|
class ScheduleAppBootHook {
|
|
7
8
|
constructor(app) {
|
|
8
9
|
this.app = app;
|
|
9
|
-
this.
|
|
10
|
+
this.scheduleManager = new ScheduleManager_1.ScheduleManager(this.app);
|
|
11
|
+
this.scheduleWorkerRegister = new ScheduleWorkerRegister_1.ScheduleWorkerRegister(this.scheduleManager);
|
|
10
12
|
this.scheduleWorkerLoadUnitHook = new ScheduleWorkerLoadUnitHook_1.ScheduleWorkerLoadUnitHook(this.scheduleWorkerRegister);
|
|
11
13
|
this.schedulePrototypeHook = new SchedulePrototypeHook_1.SchedulePrototypeHook();
|
|
12
14
|
}
|
|
@@ -15,9 +17,11 @@ class ScheduleAppBootHook {
|
|
|
15
17
|
this.app.eggPrototypeLifecycleUtil.registerLifecycle(this.schedulePrototypeHook);
|
|
16
18
|
}
|
|
17
19
|
beforeClose() {
|
|
20
|
+
// Unregister all schedules before deleting lifecycle hooks
|
|
21
|
+
this.scheduleManager.unregisterAll();
|
|
18
22
|
this.app.loadUnitLifecycleUtil.deleteLifecycle(this.scheduleWorkerLoadUnitHook);
|
|
19
23
|
this.app.eggPrototypeLifecycleUtil.deleteLifecycle(this.schedulePrototypeHook);
|
|
20
24
|
}
|
|
21
25
|
}
|
|
22
26
|
exports.default = ScheduleAppBootHook;
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsMkRBQXdEO0FBQ3hELHlFQUFzRTtBQUN0RSxpRkFBOEU7QUFDOUUsdUVBQW9FO0FBRXBFLE1BQXFCLG1CQUFtQjtJQU90QyxZQUFZLEdBQWdCO1FBQzFCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGlDQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLCtDQUFzQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMvRSxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSx1REFBMEIsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUM5RixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSw2Q0FBcUIsRUFBRSxDQUFDO0lBQzNELENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxXQUFXO1FBQ1QsMkRBQTJEO1FBQzNELElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDakYsQ0FBQztDQUNGO0FBM0JELHNDQTJCQyJ9
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Application } from 'egg';
|
|
2
|
+
import { EggPrototype } from '@eggjs/tegg-metadata';
|
|
3
|
+
/**
|
|
4
|
+
* Manager class to track registered schedules and handle cleanup
|
|
5
|
+
*/
|
|
6
|
+
export declare class ScheduleManager {
|
|
7
|
+
private readonly app;
|
|
8
|
+
private readonly registeredSchedules;
|
|
9
|
+
constructor(app: Application);
|
|
10
|
+
/**
|
|
11
|
+
* Register a schedule and track it
|
|
12
|
+
*/
|
|
13
|
+
register(proto: EggPrototype, scheduleItem: {
|
|
14
|
+
schedule: object;
|
|
15
|
+
task: any;
|
|
16
|
+
key: string;
|
|
17
|
+
}): void;
|
|
18
|
+
/**
|
|
19
|
+
* Unregister a single schedule by prototype
|
|
20
|
+
*/
|
|
21
|
+
unregister(proto: EggPrototype): void;
|
|
22
|
+
/**
|
|
23
|
+
* Unregister all tracked schedules
|
|
24
|
+
* Called during app beforeClose
|
|
25
|
+
*/
|
|
26
|
+
unregisterAll(): void;
|
|
27
|
+
/**
|
|
28
|
+
* Get the count of registered schedules
|
|
29
|
+
*/
|
|
30
|
+
get size(): number;
|
|
31
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScheduleManager = void 0;
|
|
4
|
+
const tegg_1 = require("@eggjs/tegg");
|
|
5
|
+
/**
|
|
6
|
+
* Manager class to track registered schedules and handle cleanup
|
|
7
|
+
*/
|
|
8
|
+
class ScheduleManager {
|
|
9
|
+
constructor(app) {
|
|
10
|
+
// Map of schedule key to EggPrototype
|
|
11
|
+
this.registeredSchedules = new Map();
|
|
12
|
+
this.app = app;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Register a schedule and track it
|
|
16
|
+
*/
|
|
17
|
+
register(proto, scheduleItem) {
|
|
18
|
+
const { key } = scheduleItem;
|
|
19
|
+
this.registeredSchedules.set(key, proto);
|
|
20
|
+
this.app.scheduleWorker.registerSchedule(scheduleItem);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Unregister a single schedule by prototype
|
|
24
|
+
*/
|
|
25
|
+
unregister(proto) {
|
|
26
|
+
const key = proto.getMetaData(tegg_1.PrototypeUtil.FILE_PATH);
|
|
27
|
+
if (this.registeredSchedules.has(key)) {
|
|
28
|
+
this.app.scheduleWorker.unregisterSchedule(key);
|
|
29
|
+
this.registeredSchedules.delete(key);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Unregister all tracked schedules
|
|
34
|
+
* Called during app beforeClose
|
|
35
|
+
*/
|
|
36
|
+
unregisterAll() {
|
|
37
|
+
for (const key of this.registeredSchedules.keys()) {
|
|
38
|
+
this.app.scheduleWorker.unregisterSchedule(key);
|
|
39
|
+
}
|
|
40
|
+
this.registeredSchedules.clear();
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get the count of registered schedules
|
|
44
|
+
*/
|
|
45
|
+
get size() {
|
|
46
|
+
return this.registeredSchedules.size;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.ScheduleManager = ScheduleManager;
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZWR1bGVNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiU2NoZWR1bGVNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHNDQUE0QztBQUU1Qzs7R0FFRztBQUNILE1BQWEsZUFBZTtJQUsxQixZQUFZLEdBQWdCO1FBSDVCLHNDQUFzQztRQUNyQix3QkFBbUIsR0FBOEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUcxRSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRLENBQUMsS0FBbUIsRUFBRSxZQUEwRDtRQUN0RixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsWUFBWSxDQUFDO1FBQzdCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxHQUFXLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVUsQ0FBQyxLQUFtQjtRQUM1QixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLG9CQUFhLENBQUMsU0FBUyxDQUFXLENBQUM7UUFDakUsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLEdBQVcsQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILGFBQWE7UUFDWCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxHQUFXLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQTlDRCwwQ0E4Q0MifQ==
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Application } from 'egg';
|
|
2
1
|
import { EggPrototype } from '@eggjs/tegg-metadata';
|
|
3
2
|
import { ScheduleMetadata } from '@eggjs/tegg-schedule-decorator';
|
|
3
|
+
import { ScheduleManager } from './ScheduleManager';
|
|
4
4
|
export declare class ScheduleWorkerRegister {
|
|
5
|
-
private readonly
|
|
6
|
-
constructor(
|
|
5
|
+
private readonly scheduleManager;
|
|
6
|
+
constructor(scheduleManager: ScheduleManager);
|
|
7
7
|
register(proto: EggPrototype, metadata: ScheduleMetadata<object>): void;
|
|
8
8
|
}
|
|
@@ -5,19 +5,22 @@ const tegg_1 = require("@eggjs/tegg");
|
|
|
5
5
|
const EggScheduleAdapter_1 = require("./EggScheduleAdapter");
|
|
6
6
|
const EggScheduleMetadataConvertor_1 = require("./EggScheduleMetadataConvertor");
|
|
7
7
|
class ScheduleWorkerRegister {
|
|
8
|
-
constructor(
|
|
9
|
-
this.
|
|
8
|
+
constructor(scheduleManager) {
|
|
9
|
+
this.scheduleManager = scheduleManager;
|
|
10
10
|
}
|
|
11
11
|
register(proto, metadata) {
|
|
12
12
|
const task = (0, EggScheduleAdapter_1.eggScheduleAdapterFactory)(proto, metadata);
|
|
13
13
|
const schedule = EggScheduleMetadataConvertor_1.EggScheduleMetadataConvertor.convertToEggSchedule(metadata);
|
|
14
|
-
const
|
|
15
|
-
|
|
14
|
+
const key = proto.getMetaData(tegg_1.PrototypeUtil.FILE_PATH);
|
|
15
|
+
if (!key) {
|
|
16
|
+
throw new Error(`schedule prototype: ${proto.name} missing FILE_PATH metadata`);
|
|
17
|
+
}
|
|
18
|
+
this.scheduleManager.register(proto, {
|
|
16
19
|
schedule,
|
|
17
20
|
task,
|
|
18
|
-
key
|
|
21
|
+
key,
|
|
19
22
|
});
|
|
20
23
|
}
|
|
21
24
|
}
|
|
22
25
|
exports.ScheduleWorkerRegister = ScheduleWorkerRegister;
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZWR1bGVXb3JrZXJSZWdpc3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIlNjaGVkdWxlV29ya2VyUmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0NBQTRDO0FBRzVDLDZEQUFpRTtBQUNqRSxpRkFBOEU7QUFHOUUsTUFBYSxzQkFBc0I7SUFHakMsWUFBWSxlQUFnQztRQUMxQyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQW1CLEVBQUUsUUFBa0M7UUFDOUQsTUFBTSxJQUFJLEdBQUcsSUFBQSw4Q0FBeUIsRUFBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEQsTUFBTSxRQUFRLEdBQUcsMkRBQTRCLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0UsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxvQkFBYSxDQUFDLFNBQVMsQ0FBVyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLEtBQUssQ0FBQyxJQUFjLDZCQUE2QixDQUFDLENBQUM7UUFDNUYsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRTtZQUNuQyxRQUFRO1lBQ1IsSUFBSTtZQUNKLEdBQUc7U0FDSixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFwQkQsd0RBb0JDIn0=
|
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"schedule"
|
|
8
8
|
]
|
|
9
9
|
},
|
|
10
|
-
"version": "3.
|
|
10
|
+
"version": "3.67.1",
|
|
11
11
|
"description": "schedule decorator for egg",
|
|
12
12
|
"keywords": [
|
|
13
13
|
"egg",
|
|
@@ -49,19 +49,19 @@
|
|
|
49
49
|
"node": ">=14.0.0"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@eggjs/egg-module-common": "^3.
|
|
53
|
-
"@eggjs/tegg": "^3.
|
|
54
|
-
"@eggjs/tegg-common-util": "^3.
|
|
55
|
-
"@eggjs/tegg-lifecycle": "^3.
|
|
56
|
-
"@eggjs/tegg-loader": "^3.
|
|
57
|
-
"@eggjs/tegg-metadata": "^3.
|
|
58
|
-
"@eggjs/tegg-runtime": "^3.
|
|
59
|
-
"@eggjs/tegg-schedule-decorator": "^3.
|
|
52
|
+
"@eggjs/egg-module-common": "^3.67.1",
|
|
53
|
+
"@eggjs/tegg": "^3.67.1",
|
|
54
|
+
"@eggjs/tegg-common-util": "^3.67.1",
|
|
55
|
+
"@eggjs/tegg-lifecycle": "^3.67.1",
|
|
56
|
+
"@eggjs/tegg-loader": "^3.67.1",
|
|
57
|
+
"@eggjs/tegg-metadata": "^3.67.1",
|
|
58
|
+
"@eggjs/tegg-runtime": "^3.67.1",
|
|
59
|
+
"@eggjs/tegg-schedule-decorator": "^3.67.1"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
|
-
"@eggjs/module-test-util": "^3.
|
|
63
|
-
"@eggjs/tegg-config": "^3.
|
|
64
|
-
"@eggjs/tegg-plugin": "^3.
|
|
62
|
+
"@eggjs/module-test-util": "^3.67.1",
|
|
63
|
+
"@eggjs/tegg-config": "^3.67.1",
|
|
64
|
+
"@eggjs/tegg-plugin": "^3.67.1",
|
|
65
65
|
"@types/mocha": "^10.0.1",
|
|
66
66
|
"@types/node": "^20.2.4",
|
|
67
67
|
"cross-env": "^7.0.3",
|
|
@@ -75,5 +75,5 @@
|
|
|
75
75
|
"publishConfig": {
|
|
76
76
|
"access": "public"
|
|
77
77
|
},
|
|
78
|
-
"gitHead": "
|
|
78
|
+
"gitHead": "6a262faee17fd7cda8dcacddb61555c9e56968bb"
|
|
79
79
|
}
|