@eggjs/schedule 6.0.0-beta.19 → 6.0.0-beta.21
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/agent.d.ts +8 -12
- package/dist/agent.js +32 -30
- package/dist/app/extend/agent.d.ts +17 -21
- package/dist/app/extend/agent.js +27 -29
- package/dist/app/extend/application.d.ts +7 -11
- package/dist/app/extend/application.js +15 -17
- package/dist/app/extend/application.unittest.d.ts +3 -7
- package/dist/app/extend/application.unittest.js +50 -45
- package/dist/app.d.ts +6 -10
- package/dist/app.js +77 -69
- package/dist/config/config.default.d.ts +15 -18
- package/dist/config/config.default.js +12 -12
- package/dist/index.d.ts +8 -7
- package/dist/index.js +9 -7
- package/dist/lib/load_schedule.d.ts +3 -7
- package/dist/lib/load_schedule.js +63 -58
- package/dist/lib/schedule.d.ts +30 -34
- package/dist/lib/schedule.js +84 -76
- package/dist/lib/schedule_worker.d.ts +9 -13
- package/dist/lib/schedule_worker.js +17 -21
- package/dist/lib/strategy/all.d.ts +3 -7
- package/dist/lib/strategy/all.js +6 -10
- package/dist/lib/strategy/base.d.ts +31 -35
- package/dist/lib/strategy/base.js +75 -73
- package/dist/lib/strategy/timer.d.ts +19 -23
- package/dist/lib/strategy/timer.js +93 -70
- package/dist/lib/strategy/worker.d.ts +3 -7
- package/dist/lib/strategy/worker.js +6 -10
- package/dist/lib/types.d.ts +15 -19
- package/dist/lib/types.js +2 -1
- package/dist/types.d.ts +14 -15
- package/dist/types.js +2 -1
- package/package.json +7 -7
|
@@ -1,73 +1,75 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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,24 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
protected getNextTick(): number | undefined;
|
|
21
|
-
protected safeTimeout(handler: () => void, delay: number, ...args: any[]): number | safeTimers.Timeout;
|
|
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;
|
|
22
20
|
}
|
|
23
|
-
//#endregion
|
|
24
|
-
export { TimerStrategy };
|
|
@@ -1,71 +1,94 @@
|
|
|
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';
|
|
1
6
|
import { BaseStrategy } from "./base.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3N0cmF0ZWd5L3RpbWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUdqQyxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqQyxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUdsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR3pDLE1BQU0sT0FBZ0IsYUFBYyxTQUFRLFlBQVk7SUFDNUMsWUFBWSxDQUFrQjtJQUV4QyxZQUFZLGNBQWlDLEVBQUUsS0FBWSxFQUFFLEdBQVc7UUFDdEUsS0FBSyxDQUFDLGNBQWMsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFbEMsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDdkUsTUFBTSxDQUNKLFFBQVEsSUFBSSxJQUFJLElBQUksU0FBUyxFQUM3QixxQkFBcUIsSUFBSSxDQUFDLEdBQUcsdUZBQXVGLENBQ3JILENBQUM7UUFFRixtQkFBbUI7UUFDbkIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQztnQkFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO2dCQUNsQixNQUFNLElBQUksU0FBUyxDQUFDLHFCQUFxQixJQUFJLENBQUMsR0FBRywyQkFBMkIsSUFBSSxZQUFZLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDekcsS0FBSyxFQUFFLEdBQUc7aUJBQ1gsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRVMsT0FBTztRQUNmLE1BQU0sSUFBSSxTQUFTLENBQUMscUJBQXFCLElBQUksQ0FBQyxHQUFHLGdEQUFnRCxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLO1FBQ1QsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTTtZQUFFLE9BQU87UUFFdkMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLEdBQUcsbUNBQW1DLENBQUMsQ0FBQztZQUN6RSxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDckMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhO1FBQ1gsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTTtZQUFFLE9BQU87UUFFdkMsZ0JBQWdCO1FBQ2hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2QsV0FBVyxJQUFJLENBQUMsR0FBRyxpQ0FBaUMsUUFBUSxTQUFTLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUNoSCxDQUFDO1lBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbkQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxHQUFHLDJCQUEyQixDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1Isb0ZBQW9GO1FBQ3BGLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLFdBQVc7UUFDbkIsaUJBQWlCO1FBQ2pCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxhQUFhO1FBQ2IsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsMkJBQTJCO1lBQzNCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN2QixJQUFJLFFBQWdCLENBQUM7WUFFckIsaUNBQWlDO1lBQ2pDLEdBQUcsQ0FBQztnQkFDRixJQUFJLENBQUM7b0JBQ0gsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDOUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDcEMsQ0FBQztnQkFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO29CQUNiLG1DQUFtQztvQkFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsR0FBRyw0Q0FBNEMsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDdkYsT0FBTztnQkFDVCxDQUFDO1lBQ0gsQ0FBQyxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUU7WUFDMUIsT0FBTyxRQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ3hCLENBQUM7UUFDRCxrQkFBa0I7SUFDcEIsQ0FBQztJQUVTLFdBQVcsQ0FBQyxPQUFtQixFQUFFLEtBQWEsRUFBRSxHQUFHLElBQVc7UUFDdEUsTUFBTSxFQUFFLEdBQUcsS0FBSyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztRQUMvRSxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztDQUNGIn0=
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import { TimerStrategy } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
declare class WorkerStrategy extends TimerStrategy {
|
|
5
|
-
handler(): void;
|
|
1
|
+
import { TimerStrategy } from './timer.ts';
|
|
2
|
+
export declare class WorkerStrategy extends TimerStrategy {
|
|
3
|
+
handler(): void;
|
|
6
4
|
}
|
|
7
|
-
//#endregion
|
|
8
|
-
export { WorkerStrategy };
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { TimerStrategy } from "./timer.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
//#endregion
|
|
11
|
-
export { WorkerStrategy };
|
|
2
|
+
export class WorkerStrategy extends TimerStrategy {
|
|
3
|
+
handler() {
|
|
4
|
+
this.sendOne();
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zdHJhdGVneS93b3JrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUzQyxNQUFNLE9BQU8sY0FBZSxTQUFRLGFBQWE7SUFDL0MsT0FBTztRQUNMLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0NBQ0YifQ==
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -1,21 +1,17 @@
|
|
|
1
|
-
import { EggScheduleConfig } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
task: EggScheduleTask;
|
|
9
|
-
key: string;
|
|
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;
|
|
10
8
|
}
|
|
11
|
-
interface EggScheduleJobInfo {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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;
|
|
19
17
|
}
|
|
20
|
-
//#endregion
|
|
21
|
-
export { EggScheduleItem, EggScheduleJobInfo, EggScheduleTask };
|
package/dist/lib/types.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|
package/dist/types.d.ts
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import { EggScheduleConfig } from
|
|
2
|
-
|
|
3
|
-
//#region src/types.d.ts
|
|
1
|
+
import type { EggScheduleConfig } from './config/config.default.ts';
|
|
4
2
|
declare module 'egg' {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
+
}
|
|
12
16
|
}
|
|
13
|
-
declare module '@eggjs/mock' {
|
|
14
|
-
interface MockApplication {
|
|
15
|
-
runSchedule(schedulePath: string, ...args: any[]): Promise<any>;
|
|
16
|
-
}
|
|
17
|
-
}
|
package/dist/types.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
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.
|
|
3
|
+
"version": "6.0.0-beta.21",
|
|
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.
|
|
36
|
+
"@eggjs/utils": "5.0.0-beta.21"
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|
|
39
|
-
"egg": "4.1.0-beta.
|
|
39
|
+
"egg": "4.1.0-beta.21"
|
|
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/tsconfig": "3.1.0-beta.
|
|
48
|
-
"@eggjs/
|
|
49
|
-
"@eggjs/
|
|
47
|
+
"@eggjs/tsconfig": "3.1.0-beta.21",
|
|
48
|
+
"@eggjs/mock": "7.0.0-beta.21",
|
|
49
|
+
"@eggjs/bin": "8.0.0-beta.21"
|
|
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",
|