@eggjs/tegg-schedule-plugin 3.65.3 → 3.67.0

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 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.scheduleWorkerRegister = new ScheduleWorkerRegister_1.ScheduleWorkerRegister(this.app);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EseUVBQXNFO0FBQ3RFLGlGQUE4RTtBQUM5RSx1RUFBb0U7QUFFcEUsTUFBcUIsbUJBQW1CO0lBTXRDLFlBQVksR0FBZ0I7UUFDMUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSwrQ0FBc0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksdURBQTBCLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksNkNBQXFCLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDbEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7Q0FDRjtBQXRCRCxzQ0FzQkMifQ==
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 app;
6
- constructor(app: Application);
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(app) {
9
- this.app = app;
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 path = proto.getMetaData(tegg_1.PrototypeUtil.FILE_PATH);
15
- this.app.scheduleWorker.registerSchedule({
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: path,
21
+ key,
19
22
  });
20
23
  }
21
24
  }
22
25
  exports.ScheduleWorkerRegister = ScheduleWorkerRegister;
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZWR1bGVXb3JrZXJSZWdpc3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIlNjaGVkdWxlV29ya2VyUmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esc0NBQTRDO0FBRzVDLDZEQUFpRTtBQUNqRSxpRkFBOEU7QUFFOUUsTUFBYSxzQkFBc0I7SUFHakMsWUFBWSxHQUFnQjtRQUMxQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNqQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQW1CLEVBQUUsUUFBa0M7UUFDOUQsTUFBTSxJQUFJLEdBQUcsSUFBQSw4Q0FBeUIsRUFBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEQsTUFBTSxRQUFRLEdBQUcsMkRBQTRCLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0UsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxvQkFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxHQUFXLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDO1lBQ2hELFFBQVE7WUFDUixJQUFJO1lBQ0osR0FBRyxFQUFFLElBQUk7U0FDVixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFqQkQsd0RBaUJDIn0=
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.65.3",
10
+ "version": "3.67.0",
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.65.3",
53
- "@eggjs/tegg": "^3.65.3",
54
- "@eggjs/tegg-common-util": "^3.65.3",
55
- "@eggjs/tegg-lifecycle": "^3.65.3",
56
- "@eggjs/tegg-loader": "^3.65.3",
57
- "@eggjs/tegg-metadata": "^3.65.3",
58
- "@eggjs/tegg-runtime": "^3.65.3",
59
- "@eggjs/tegg-schedule-decorator": "^3.65.3"
52
+ "@eggjs/egg-module-common": "^3.67.0",
53
+ "@eggjs/tegg": "^3.67.0",
54
+ "@eggjs/tegg-common-util": "^3.67.0",
55
+ "@eggjs/tegg-lifecycle": "^3.67.0",
56
+ "@eggjs/tegg-loader": "^3.67.0",
57
+ "@eggjs/tegg-metadata": "^3.67.0",
58
+ "@eggjs/tegg-runtime": "^3.67.0",
59
+ "@eggjs/tegg-schedule-decorator": "^3.67.0"
60
60
  },
61
61
  "devDependencies": {
62
- "@eggjs/module-test-util": "^3.65.3",
63
- "@eggjs/tegg-config": "^3.65.3",
64
- "@eggjs/tegg-plugin": "^3.65.3",
62
+ "@eggjs/module-test-util": "^3.67.0",
63
+ "@eggjs/tegg-config": "^3.67.0",
64
+ "@eggjs/tegg-plugin": "^3.67.0",
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": "e3334a4c8b04b22a2197693f0037fbf272b97032"
78
+ "gitHead": "d237adb730ab7ccf7cbe83a7a4e95beec3ae17ce"
79
79
  }