@eggjs/schedule 6.0.0-beta.20 → 6.0.0-beta.22

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.
Files changed (51) hide show
  1. package/dist/agent.d.ts +8 -14
  2. package/dist/agent.js +34 -34
  3. package/dist/app/extend/agent.d.ts +18 -4
  4. package/dist/app/extend/agent.js +30 -7
  5. package/dist/app/extend/application.d.ts +8 -4
  6. package/dist/app/extend/application.js +16 -5
  7. package/dist/app/extend/application.unittest.d.ts +4 -5
  8. package/dist/app/extend/application.unittest.js +51 -6
  9. package/dist/app.d.ts +6 -12
  10. package/dist/app.js +77 -69
  11. package/dist/config/config.default.d.ts +17 -2
  12. package/dist/config/config.default.js +12 -12
  13. package/dist/index.d.ts +8 -7
  14. package/dist/index.js +9 -12
  15. package/dist/lib/load_schedule.d.ts +3 -8
  16. package/dist/lib/load_schedule.js +66 -3
  17. package/dist/lib/schedule.d.ts +31 -4
  18. package/dist/lib/schedule.js +85 -4
  19. package/dist/lib/schedule_worker.d.ts +10 -4
  20. package/dist/lib/schedule_worker.js +18 -4
  21. package/dist/lib/strategy/all.d.ts +3 -9
  22. package/dist/lib/strategy/all.js +7 -5
  23. package/dist/lib/strategy/base.d.ts +32 -4
  24. package/dist/lib/strategy/base.js +75 -3
  25. package/dist/lib/strategy/timer.d.ts +20 -4
  26. package/dist/lib/strategy/timer.js +94 -4
  27. package/dist/lib/strategy/worker.d.ts +3 -9
  28. package/dist/lib/strategy/worker.js +7 -5
  29. package/dist/lib/types.d.ts +17 -3
  30. package/dist/lib/types.js +2 -3
  31. package/dist/types.d.ts +16 -2
  32. package/dist/types.js +2 -3
  33. package/package.json +7 -7
  34. package/dist/agent-BiclCXUu.js +0 -32
  35. package/dist/agent-DUNNeo72.d.ts +0 -100
  36. package/dist/all-DY7LEzzF.js +0 -11
  37. package/dist/application-Be3vYRp0.d.ts +0 -22
  38. package/dist/application-CtPD5smr.js +0 -18
  39. package/dist/application.unittest-BySM_r-a.js +0 -46
  40. package/dist/application.unittest-DOurfxcE.d.ts +0 -8
  41. package/dist/base-BQ53Qv2t.js +0 -73
  42. package/dist/config.default-Oe7rctMS.d.ts +0 -20
  43. package/dist/load_schedule-BwGbsGkz.js +0 -61
  44. package/dist/schedule-C0pZBoiR.js +0 -77
  45. package/dist/schedule_worker-DsbRF__K.js +0 -22
  46. package/dist/timer-B-5D2wim.js +0 -71
  47. package/dist/types-C43iyhAd.js +0 -1
  48. package/dist/types-CPNMyF89.js +0 -1
  49. package/dist/types-D3XkzB3g.d.ts +0 -21
  50. package/dist/types-VUtK3imu.d.ts +0 -17
  51. package/dist/worker-Dc570kZo.js +0 -11
@@ -1,4 +1,31 @@
1
- import "../config.default-Oe7rctMS.js";
2
- import "../types-D3XkzB3g.js";
3
- import { Schedule } from "../agent-DUNNeo72.js";
4
- export { Schedule };
1
+ import type { EggScheduleItem, EggScheduleJobInfo } from './types.ts';
2
+ import type { BaseStrategy } from './strategy/base.ts';
3
+ import type Agent from '../app/extend/agent.ts';
4
+ export declare class Schedule {
5
+ #private;
6
+ closed: boolean;
7
+ constructor(agent: Agent);
8
+ /**
9
+ * register a custom Schedule Strategy
10
+ * @param {String} type - strategy type
11
+ * @param {Strategy} clz - Strategy class
12
+ */
13
+ use(type: string, clz: typeof BaseStrategy): void;
14
+ /**
15
+ * load all schedule jobs, then initialize and register special strategy
16
+ */
17
+ init(): Promise<void>;
18
+ registerSchedule(scheduleItem: EggScheduleItem): void;
19
+ unregisterSchedule(key: string): boolean;
20
+ /**
21
+ * job finish event handler
22
+ *
23
+ * @param {Object} info - { id, key, success, message, workerId }
24
+ */
25
+ onJobFinish(info: EggScheduleJobInfo): void;
26
+ /**
27
+ * start schedule
28
+ */
29
+ start(): Promise<void>;
30
+ close(): Promise<void>;
31
+ }
@@ -1,4 +1,85 @@
1
- import "../load_schedule-BwGbsGkz.js";
2
- import { Schedule } from "../schedule-C0pZBoiR.js";
3
-
4
- export { Schedule };
1
+ import { debuglog } from 'node:util';
2
+ import { loadSchedule } from "./load_schedule.js";
3
+ const debug = debuglog('egg/schedule/lib/schedule');
4
+ export class Schedule {
5
+ closed = false;
6
+ #agent;
7
+ #logger;
8
+ #strategyClassMap = new Map();
9
+ #strategyInstanceMap = new Map();
10
+ constructor(agent) {
11
+ this.#agent = agent;
12
+ this.#logger = agent.getLogger('scheduleLogger');
13
+ }
14
+ /**
15
+ * register a custom Schedule Strategy
16
+ * @param {String} type - strategy type
17
+ * @param {Strategy} clz - Strategy class
18
+ */
19
+ use(type, clz) {
20
+ this.#strategyClassMap.set(type, clz);
21
+ debug('use type: %o', type);
22
+ }
23
+ /**
24
+ * load all schedule jobs, then initialize and register special strategy
25
+ */
26
+ async init() {
27
+ const scheduleItems = await loadSchedule(this.#agent);
28
+ for (const scheduleItem of Object.values(scheduleItems)) {
29
+ this.registerSchedule(scheduleItem);
30
+ }
31
+ }
32
+ registerSchedule(scheduleItem) {
33
+ const { key, schedule } = scheduleItem;
34
+ const type = schedule.type;
35
+ if (schedule.disable) {
36
+ return;
37
+ }
38
+ // find Strategy by type
39
+ const Strategy = this.#strategyClassMap.get(type);
40
+ if (!Strategy) {
41
+ const err = new Error(`schedule type [${type}] is not defined`);
42
+ err.name = 'EggScheduleError';
43
+ throw err;
44
+ }
45
+ // Initialize strategy and register
46
+ const instance = new Strategy(schedule, this.#agent, key);
47
+ this.#strategyInstanceMap.set(key, instance);
48
+ debug('registerSchedule type: %o, config: %o, key: %o', type, schedule, key);
49
+ }
50
+ unregisterSchedule(key) {
51
+ debug('unregisterSchedule key: %o', key);
52
+ return this.#strategyInstanceMap.delete(key);
53
+ }
54
+ /**
55
+ * job finish event handler
56
+ *
57
+ * @param {Object} info - { id, key, success, message, workerId }
58
+ */
59
+ onJobFinish(info) {
60
+ this.#logger.debug(`[Job#${info.id}] ${info.key} finish event received by agent from worker#${info.workerId}`);
61
+ const instance = this.#strategyInstanceMap.get(info.key);
62
+ /* istanbul ignore else */
63
+ if (instance) {
64
+ instance.onJobFinish(info);
65
+ }
66
+ }
67
+ /**
68
+ * start schedule
69
+ */
70
+ async start() {
71
+ debug('start');
72
+ this.closed = false;
73
+ for (const instance of this.#strategyInstanceMap.values()) {
74
+ instance.start();
75
+ }
76
+ }
77
+ async close() {
78
+ this.closed = true;
79
+ for (const instance of this.#strategyInstanceMap.values()) {
80
+ await instance.close();
81
+ }
82
+ debug('close');
83
+ }
84
+ }
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3NjaGVkdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFJckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBS2xELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0FBRXBELE1BQU0sT0FBTyxRQUFRO0lBQ25CLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFFZixNQUFNLENBQVE7SUFDZCxPQUFPLENBQVk7SUFDbkIsaUJBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7SUFDM0Qsb0JBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7SUFFdkQsWUFBWSxLQUFZO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsR0FBRyxDQUFDLElBQVksRUFBRSxHQUF3QjtRQUN4QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxLQUFLLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxJQUFJO1FBQ1IsTUFBTSxhQUFhLEdBQUcsTUFBTSxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELEtBQUssTUFBTSxZQUFZLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gs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
@@ -1,4 +1,10 @@
1
- import "../config.default-Oe7rctMS.js";
2
- import "../types-D3XkzB3g.js";
3
- import { ScheduleWorker } from "../application-Be3vYRp0.js";
4
- export { ScheduleWorker };
1
+ import type { EggScheduleItem } from './types.ts';
2
+ import type Application from '../app/extend/application.ts';
3
+ export declare class ScheduleWorker {
4
+ #private;
5
+ scheduleItems: Record<string, EggScheduleItem>;
6
+ constructor(app: Application);
7
+ init(): Promise<void>;
8
+ registerSchedule(scheduleItem: EggScheduleItem): void;
9
+ unregisterSchedule(key: string): void;
10
+ }
@@ -1,4 +1,18 @@
1
- import "../load_schedule-BwGbsGkz.js";
2
- import { ScheduleWorker } from "../schedule_worker-DsbRF__K.js";
3
-
4
- export { ScheduleWorker };
1
+ import { loadSchedule } from "./load_schedule.js";
2
+ export class ScheduleWorker {
3
+ #app;
4
+ scheduleItems = {};
5
+ constructor(app) {
6
+ this.#app = app;
7
+ }
8
+ async init() {
9
+ this.scheduleItems = await loadSchedule(this.#app);
10
+ }
11
+ registerSchedule(scheduleItem) {
12
+ this.scheduleItems[scheduleItem.key] = scheduleItem;
13
+ }
14
+ unregisterSchedule(key) {
15
+ delete this.scheduleItems[key];
16
+ }
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVfd29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9zY2hlZHVsZV93b3JrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSWxELE1BQU0sT0FBTyxjQUFjO0lBQ3pCLElBQUksQ0FBYztJQUNsQixhQUFhLEdBQW9DLEVBQUUsQ0FBQztJQUVwRCxZQUFZLEdBQWdCO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxZQUE2QjtRQUM1QyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUM7SUFDdEQsQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQVc7UUFDNUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Q0FDRiJ9
@@ -1,10 +1,4 @@
1
- import "../../config.default-Oe7rctMS.js";
2
- import "../../types-D3XkzB3g.js";
3
- import { TimerStrategy } from "../../agent-DUNNeo72.js";
4
-
5
- //#region src/lib/strategy/all.d.ts
6
- declare class AllStrategy extends TimerStrategy {
7
- handler(): void;
1
+ import { TimerStrategy } from './timer.ts';
2
+ export declare class AllStrategy extends TimerStrategy {
3
+ handler(): void;
8
4
  }
9
- //#endregion
10
- export { AllStrategy };
@@ -1,5 +1,7 @@
1
- import "../../base-BQ53Qv2t.js";
2
- import "../../timer-B-5D2wim.js";
3
- import { AllStrategy } from "../../all-DY7LEzzF.js";
4
-
5
- export { AllStrategy };
1
+ import { TimerStrategy } from "./timer.js";
2
+ export class AllStrategy extends TimerStrategy {
3
+ handler() {
4
+ this.sendAll();
5
+ }
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zdHJhdGVneS9hbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUzQyxNQUFNLE9BQU8sV0FBWSxTQUFRLGFBQWE7SUFDNUMsT0FBTztRQUNMLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0NBQ0YifQ==
@@ -1,4 +1,32 @@
1
- import "../../config.default-Oe7rctMS.js";
2
- import "../../types-D3XkzB3g.js";
3
- import { BaseStrategy } from "../../agent-DUNNeo72.js";
4
- export { BaseStrategy };
1
+ import type { EggLogger } from 'egg';
2
+ import type { EggScheduleJobInfo } from '../types.ts';
3
+ import type { EggScheduleConfig } from '../../config/config.default.ts';
4
+ import type Agent from '../../app/extend/agent.ts';
5
+ export declare class BaseStrategy {
6
+ protected agent: Agent;
7
+ protected scheduleConfig: EggScheduleConfig;
8
+ protected key: string;
9
+ protected logger: EggLogger;
10
+ protected closed: boolean;
11
+ count: number;
12
+ constructor(scheduleConfig: EggScheduleConfig, agent: Agent, key: string);
13
+ /** keep compatibility */
14
+ get schedule(): EggScheduleConfig;
15
+ start(): Promise<void>;
16
+ close(): Promise<void>;
17
+ onJobStart(_info: EggScheduleJobInfo): void;
18
+ onJobFinish(_info: EggScheduleJobInfo): void;
19
+ /**
20
+ * trigger one worker
21
+ *
22
+ * @param {...any} args - pass to job task
23
+ */
24
+ sendOne(...args: any[]): void;
25
+ /**
26
+ * trigger all worker
27
+ *
28
+ * @param {...any} args - pass to job task
29
+ */
30
+ sendAll(...args: any[]): void;
31
+ getSeqId(): string;
32
+ }
@@ -1,3 +1,75 @@
1
- import { BaseStrategy } from "../../base-BQ53Qv2t.js";
2
-
3
- export { BaseStrategy };
1
+ export class BaseStrategy {
2
+ agent;
3
+ scheduleConfig;
4
+ key;
5
+ logger;
6
+ closed = false;
7
+ count = 0;
8
+ constructor(scheduleConfig, agent, key) {
9
+ this.agent = agent;
10
+ this.key = key;
11
+ this.scheduleConfig = scheduleConfig;
12
+ this.logger = this.agent.getLogger('scheduleLogger');
13
+ }
14
+ /** keep compatibility */
15
+ get schedule() {
16
+ return this.scheduleConfig;
17
+ }
18
+ async start() {
19
+ // empty loop by default
20
+ }
21
+ async close() {
22
+ this.closed = true;
23
+ }
24
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
25
+ onJobStart(_info) { }
26
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
27
+ onJobFinish(_info) { }
28
+ /**
29
+ * trigger one worker
30
+ *
31
+ * @param {...any} args - pass to job task
32
+ */
33
+ sendOne(...args) {
34
+ /* istanbul ignore next */
35
+ if (this.agent.schedule.closed) {
36
+ this.logger.warn(`${this.key} skip due to schedule closed`);
37
+ return;
38
+ }
39
+ this.count++;
40
+ const info = {
41
+ key: this.key,
42
+ id: this.getSeqId(),
43
+ args,
44
+ };
45
+ this.logger.info(`[Job#${info.id}] ${info.key} triggered, send random by agent`);
46
+ this.agent.messenger.sendRandom('egg-schedule', info);
47
+ this.onJobStart(info);
48
+ }
49
+ /**
50
+ * trigger all worker
51
+ *
52
+ * @param {...any} args - pass to job task
53
+ */
54
+ sendAll(...args) {
55
+ /* istanbul ignore next */
56
+ if (this.agent.schedule.closed) {
57
+ this.logger.warn(`${this.key} skip due to schedule closed`);
58
+ return;
59
+ }
60
+ this.count++;
61
+ const info = {
62
+ key: this.key,
63
+ id: this.getSeqId(),
64
+ args,
65
+ };
66
+ this.logger.info(`[Job#${info.id}] ${info.key} triggered, send all by agent`);
67
+ // send to all workers
68
+ this.agent.messenger.send('egg-schedule', info);
69
+ this.onJobStart(info);
70
+ }
71
+ getSeqId() {
72
+ return `${Date.now()}${process.hrtime().join('')}${this.count}`;
73
+ }
74
+ }
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvc3RyYXRlZ3kvYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLE9BQU8sWUFBWTtJQUNiLEtBQUssQ0FBUTtJQUNiLGNBQWMsQ0FBb0I7SUFDbEMsR0FBRyxDQUFTO0lBQ1osTUFBTSxDQUFZO0lBQ2xCLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDekIsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUVWLFlBQVksY0FBaUMsRUFBRSxLQUFZLEVBQUUsR0FBVztRQUN0RSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUs7UUFDVCx3QkFBd0I7SUFDMUIsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLO1FBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELDZEQUE2RDtJQUM3RCxVQUFVLENBQUMsS0FBeUIsSUFBRyxDQUFDO0lBRXhDLDZEQUE2RDtJQUM3RCxXQUFXLENBQUMsS0FBeUIsSUFBRyxDQUFDO0lBRXpDOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsR0FBRyxJQUFXO1FBQ3BCLDBCQUEwQjtRQUMxQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsOEJBQThCLENBQUMsQ0FBQztZQUM1RCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUViLE1BQU0sSUFBSSxHQUFHO1lBQ1gsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbkIsSUFBSTtTQUNpQixDQUFDO1FBRXhCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxHQUFHLElBQVc7UUFDcEIsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyw4QkFBOEIsQ0FBQyxDQUFDO1lBQzVELE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWIsTUFBTSxJQUFJLEdBQUc7WUFDWCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNuQixJQUFJO1NBQ2lCLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLCtCQUErQixDQUFDLENBQUM7UUFDOUUsc0JBQXNCO1FBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEUsQ0FBQztDQUNGIn0=
@@ -1,4 +1,20 @@
1
- import "../../config.default-Oe7rctMS.js";
2
- import "../../types-D3XkzB3g.js";
3
- import { TimerStrategy } from "../../agent-DUNNeo72.js";
4
- export { TimerStrategy };
1
+ import type { CronExpression } from 'cron-parser';
2
+ import safeTimers from 'safe-timers';
3
+ import type { EggScheduleConfig } from '../../config/config.default.ts';
4
+ import { BaseStrategy } from './base.ts';
5
+ import type Agent from '../../app/extend/agent.ts';
6
+ export declare abstract class TimerStrategy extends BaseStrategy {
7
+ #private;
8
+ protected cronInstance?: CronExpression;
9
+ constructor(scheduleConfig: EggScheduleConfig, agent: Agent, key: string);
10
+ protected handler(): void;
11
+ start(): Promise<void>;
12
+ onJobStart(): void;
13
+ /**
14
+ * calculate next tick
15
+ *
16
+ * @return {Number|undefined} time interval, if out of range then return `undefined`
17
+ */
18
+ protected getNextTick(): number | undefined;
19
+ protected safeTimeout(handler: () => void, delay: number, ...args: any[]): number | safeTimers.Timeout;
20
+ }
@@ -1,4 +1,94 @@
1
- import "../../base-BQ53Qv2t.js";
2
- import { TimerStrategy } from "../../timer-B-5D2wim.js";
3
-
4
- export { TimerStrategy };
1
+ import assert from 'node:assert';
2
+ import cronParser from 'cron-parser';
3
+ import { ms } from 'humanize-ms';
4
+ import safeTimers from 'safe-timers';
5
+ import { logDate } from 'utility';
6
+ import { BaseStrategy } from "./base.js";
7
+ export class TimerStrategy extends BaseStrategy {
8
+ cronInstance;
9
+ constructor(scheduleConfig, agent, key) {
10
+ super(scheduleConfig, agent, key);
11
+ const { interval, cron, cronOptions, immediate } = this.scheduleConfig;
12
+ assert(interval || cron || immediate, `[@eggjs/schedule] ${this.key} \`schedule.interval\` or \`schedule.cron\` or \`schedule.immediate\` must be present`);
13
+ // init cron parser
14
+ if (cron) {
15
+ try {
16
+ this.cronInstance = cronParser.parseExpression(cron, cronOptions);
17
+ }
18
+ catch (err) {
19
+ throw new TypeError(`[@eggjs/schedule] ${this.key} parse cron instruction(${cron}) error: ${err.message}`, {
20
+ cause: err,
21
+ });
22
+ }
23
+ }
24
+ }
25
+ handler() {
26
+ throw new TypeError(`[@eggjs/schedule] ${this.key} strategy should override \`handler()\` method`);
27
+ }
28
+ async start() {
29
+ /* istanbul ignore next */
30
+ if (this.agent.schedule.closed)
31
+ return;
32
+ if (this.scheduleConfig.immediate) {
33
+ this.logger.info(`[Timer] ${this.key} next time will execute immediate`);
34
+ setImmediate(() => this.handler());
35
+ }
36
+ else {
37
+ this.#scheduleNext();
38
+ }
39
+ }
40
+ #scheduleNext() {
41
+ /* istanbul ignore next */
42
+ if (this.agent.schedule.closed)
43
+ return;
44
+ // get next tick
45
+ const nextTick = this.getNextTick();
46
+ if (nextTick) {
47
+ this.logger.info(`[Timer] ${this.key} next time will execute after ${nextTick}ms at ${logDate(new Date(Date.now() + nextTick))}`);
48
+ this.safeTimeout(() => this.handler(), nextTick);
49
+ }
50
+ else {
51
+ this.logger.info(`[Timer] ${this.key} reach endDate, will stop`);
52
+ }
53
+ }
54
+ onJobStart() {
55
+ // Next execution will trigger task at a fix rate, regardless of its execution time.
56
+ this.#scheduleNext();
57
+ }
58
+ /**
59
+ * calculate next tick
60
+ *
61
+ * @return {Number|undefined} time interval, if out of range then return `undefined`
62
+ */
63
+ getNextTick() {
64
+ // interval-style
65
+ if (this.scheduleConfig.interval) {
66
+ return ms(this.scheduleConfig.interval);
67
+ }
68
+ // cron-style
69
+ if (this.cronInstance) {
70
+ // calculate next cron tick
71
+ const now = Date.now();
72
+ let nextTick;
73
+ // loop to find next feature time
74
+ do {
75
+ try {
76
+ const nextInterval = this.cronInstance.next();
77
+ nextTick = nextInterval.getTime();
78
+ }
79
+ catch (err) {
80
+ // Error: Out of the timespan range
81
+ this.logger.info(`[Timer] ${this.key} cron out of the timespan range, error: %s`, err);
82
+ return;
83
+ }
84
+ } while (now >= nextTick);
85
+ return nextTick - now;
86
+ }
87
+ // won\'t run here
88
+ }
89
+ safeTimeout(handler, delay, ...args) {
90
+ const fn = delay < safeTimers.maxInterval ? setTimeout : safeTimers.setTimeout;
91
+ return fn(handler, delay, ...args);
92
+ }
93
+ }
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3N0cmF0ZWd5L3RpbWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUdqQyxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUdsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR3pDLE1BQU0sT0FBZ0IsYUFBYyxTQUFRLFlBQVk7SUFDNUMsWUFBWSxDQUFrQjtJQUV4QyxZQUFZLGNBQWlDLEVBQUUsS0FBWSxFQUFFLEdBQVc7UUFDdEUsS0FBSyxDQUFDLGNBQWMsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFbEMsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDdkUsTUFBTSxDQUNKLFFBQVEsSUFBSSxJQUFJLElBQUksU0FBUyxFQUM3QixxQkFBcUIsSUFBSSxDQUFDLEdBQUcsdUZBQXVGLENBQ3JILENBQUM7UUFFRixtQkFBbUI7UUFDbkIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQztnQkFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO2dCQUNsQixNQUFNLElBQUksU0FBUyxDQUFDLHFCQUFxQixJQUFJLENBQUMsR0FBRywyQkFBMkIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDekcsS0FB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
@@ -1,10 +1,4 @@
1
- import "../../config.default-Oe7rctMS.js";
2
- import "../../types-D3XkzB3g.js";
3
- import { TimerStrategy } from "../../agent-DUNNeo72.js";
4
-
5
- //#region src/lib/strategy/worker.d.ts
6
- declare class WorkerStrategy extends TimerStrategy {
7
- handler(): void;
1
+ import { TimerStrategy } from './timer.ts';
2
+ export declare class WorkerStrategy extends TimerStrategy {
3
+ handler(): void;
8
4
  }
9
- //#endregion
10
- export { WorkerStrategy };
@@ -1,5 +1,7 @@
1
- import "../../base-BQ53Qv2t.js";
2
- import "../../timer-B-5D2wim.js";
3
- import { WorkerStrategy } from "../../worker-Dc570kZo.js";
4
-
5
- export { WorkerStrategy };
1
+ import { TimerStrategy } from "./timer.js";
2
+ export class WorkerStrategy extends TimerStrategy {
3
+ handler() {
4
+ this.sendOne();
5
+ }
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zdHJhdGVneS93b3JrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUzQyxNQUFNLE9BQU8sY0FBZSxTQUFRLGFBQWE7SUFDL0MsT0FBTztRQUNMLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0NBQ0YifQ==
@@ -1,3 +1,17 @@
1
- import "../config.default-Oe7rctMS.js";
2
- import { EggScheduleItem, EggScheduleJobInfo, EggScheduleTask } from "../types-D3XkzB3g.js";
3
- export { EggScheduleItem, EggScheduleJobInfo, EggScheduleTask };
1
+ import type { EggScheduleConfig } from '../config/config.default.ts';
2
+ export type EggScheduleTask = (ctx: any, ...args: any[]) => Promise<void>;
3
+ export interface EggScheduleItem {
4
+ schedule: EggScheduleConfig;
5
+ scheduleQueryString: string;
6
+ task: EggScheduleTask;
7
+ key: string;
8
+ }
9
+ export interface EggScheduleJobInfo {
10
+ id: string;
11
+ key: string;
12
+ workerId: number;
13
+ args: any[];
14
+ success?: boolean;
15
+ message?: string;
16
+ rt?: number;
17
+ }
package/dist/lib/types.js CHANGED
@@ -1,3 +1,2 @@
1
- import "../types-C43iyhAd.js";
2
-
3
- export { };
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
package/dist/types.d.ts CHANGED
@@ -1,2 +1,16 @@
1
- import "./config.default-Oe7rctMS.js";
2
- import "./types-VUtK3imu.js";
1
+ import type { EggScheduleConfig } from './config/config.default.ts';
2
+ declare module 'egg' {
3
+ interface EggAppConfig {
4
+ /**
5
+ * Schedule Config
6
+ * @see https://www.eggjs.org/zh-CN/basics/schedule
7
+ */
8
+ schedule: EggScheduleConfig;
9
+ }
10
+ interface Application {
11
+ /**
12
+ * Run a schedule, only for unit test
13
+ */
14
+ runSchedule(schedulePath: string, ...args: any[]): Promise<any>;
15
+ }
16
+ }
package/dist/types.js CHANGED
@@ -1,3 +1,2 @@
1
- import "./types-CPNMyF89.js";
2
-
3
- export { };
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eggjs/schedule",
3
- "version": "6.0.0-beta.20",
3
+ "version": "6.0.0-beta.22",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -33,10 +33,10 @@
33
33
  "is-type-of": "^2.2.0",
34
34
  "safe-timers": "^1.1.0",
35
35
  "utility": "^2.5.0",
36
- "@eggjs/utils": "5.0.0-beta.20"
36
+ "@eggjs/utils": "5.0.0-beta.22"
37
37
  },
38
38
  "peerDependencies": {
39
- "egg": "4.1.0-beta.20"
39
+ "egg": "4.1.0-beta.22"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@types/safe-timers": "^1.1.2",
@@ -44,9 +44,9 @@
44
44
  "tsdown": "^0.15.4",
45
45
  "typescript": "^5.9.3",
46
46
  "vitest": "4.0.0-beta.16",
47
- "@eggjs/bin": "8.0.0-beta.20",
48
- "@eggjs/mock": "7.0.0-beta.20",
49
- "@eggjs/tsconfig": "3.1.0-beta.20"
47
+ "@eggjs/tsconfig": "3.1.0-beta.22",
48
+ "@eggjs/bin": "8.0.0-beta.22",
49
+ "@eggjs/mock": "7.0.0-beta.22"
50
50
  },
51
51
  "author": "dead_horse",
52
52
  "license": "MIT",
@@ -77,7 +77,7 @@
77
77
  "main": "./dist/index.js",
78
78
  "module": "./dist/index.js",
79
79
  "scripts": {
80
- "build": "tsdown",
80
+ "build": "tsdown && rimraf dist && tsc -b --clean && tsc",
81
81
  "typecheck": "tsc --noEmit",
82
82
  "lint": "oxlint --type-aware",
83
83
  "lint:fix": "npm run lint -- --fix",
@@ -1,32 +0,0 @@
1
- import { BaseStrategy } from "./base-BQ53Qv2t.js";
2
- import { TimerStrategy } from "./timer-B-5D2wim.js";
3
- import { Schedule } from "./schedule-C0pZBoiR.js";
4
- import { Agent } from "egg";
5
-
6
- //#region src/app/extend/agent.ts
7
- const SCHEDULE = Symbol("agent schedule");
8
- var ScheduleAgent = class extends Agent {
9
- /**
10
- * @member agent#ScheduleStrategy
11
- */
12
- get ScheduleStrategy() {
13
- return BaseStrategy;
14
- }
15
- /**
16
- * @member agent#TimerScheduleStrategy
17
- */
18
- get TimerScheduleStrategy() {
19
- return TimerStrategy;
20
- }
21
- /**
22
- * @member agent#schedule
23
- */
24
- get schedule() {
25
- let schedule = this[SCHEDULE];
26
- if (!schedule) this[SCHEDULE] = schedule = new Schedule(this);
27
- return schedule;
28
- }
29
- };
30
-
31
- //#endregion
32
- export { ScheduleAgent };