@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
package/dist/agent.d.ts
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
serverDidReady(): Promise<void>;
|
|
10
|
-
beforeClose(): Promise<void>;
|
|
1
|
+
import type { ILifecycleBoot } from 'egg';
|
|
2
|
+
import type Agent from './app/extend/agent.ts';
|
|
3
|
+
export default class Boot implements ILifecycleBoot {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(agent: Agent);
|
|
6
|
+
configDidLoad(): Promise<void>;
|
|
7
|
+
serverDidReady(): Promise<void>;
|
|
8
|
+
beforeClose(): Promise<void>;
|
|
11
9
|
}
|
|
12
|
-
//#endregion
|
|
13
|
-
export { Boot as default };
|
package/dist/agent.js
CHANGED
|
@@ -1,32 +1,34 @@
|
|
|
1
|
+
import { debuglog } from 'node:util';
|
|
1
2
|
import { WorkerStrategy } from "./lib/strategy/worker.js";
|
|
2
3
|
import { AllStrategy } from "./lib/strategy/all.js";
|
|
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
|
-
|
|
4
|
+
const debug = debuglog('egg/schedule/agent');
|
|
5
|
+
export default class Boot {
|
|
6
|
+
#agent;
|
|
7
|
+
constructor(agent) {
|
|
8
|
+
this.#agent = agent;
|
|
9
|
+
}
|
|
10
|
+
async configDidLoad() {
|
|
11
|
+
// register built-in strategy
|
|
12
|
+
this.#agent.schedule.use('worker', WorkerStrategy);
|
|
13
|
+
this.#agent.schedule.use('all', AllStrategy);
|
|
14
|
+
// wait for other plugin to register custom strategy
|
|
15
|
+
await this.#agent.schedule.init();
|
|
16
|
+
// dispatch job finish event to strategy
|
|
17
|
+
this.#agent.messenger.on('egg-schedule', (info) => {
|
|
18
|
+
// get job info from worker
|
|
19
|
+
this.#agent.schedule.onJobFinish(info);
|
|
20
|
+
});
|
|
21
|
+
debug('configDidLoad');
|
|
22
|
+
}
|
|
23
|
+
async serverDidReady() {
|
|
24
|
+
// start schedule after worker ready
|
|
25
|
+
await this.#agent.schedule.start();
|
|
26
|
+
debug('serverDidReady, schedule start');
|
|
27
|
+
}
|
|
28
|
+
async beforeClose() {
|
|
29
|
+
// stop schedule before app close
|
|
30
|
+
await this.#agent.schedule.close();
|
|
31
|
+
debug('beforeClose, schedule close');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUlyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSXBELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBRTdDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sSUFBSTtJQUN2QixNQUFNLENBQVE7SUFDZCxZQUFZLEtBQVk7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhO1FBQ2pCLDZCQUE2QjtRQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFN0Msb0RBQW9EO1FBQ3BELE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFbEMsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUF3QixFQUFFLEVBQUU7WUFDcEUsMkJBQTJCO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsb0NBQW9DO1FBQ3BDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkMsS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELEtBQUssQ0FBQyxXQUFXO1FBQ2YsaUNBQWlDO1FBQ2pDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkMsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGIn0=
|
|
@@ -1,22 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
*/
|
|
19
|
-
get schedule(): Schedule;
|
|
1
|
+
import { Agent } from 'egg';
|
|
2
|
+
import { BaseStrategy } from '../../lib/strategy/base.ts';
|
|
3
|
+
import { TimerStrategy } from '../../lib/strategy/timer.ts';
|
|
4
|
+
import { Schedule } from '../../lib/schedule.ts';
|
|
5
|
+
export default class ScheduleAgent extends Agent {
|
|
6
|
+
/**
|
|
7
|
+
* @member agent#ScheduleStrategy
|
|
8
|
+
*/
|
|
9
|
+
get ScheduleStrategy(): typeof BaseStrategy;
|
|
10
|
+
/**
|
|
11
|
+
* @member agent#TimerScheduleStrategy
|
|
12
|
+
*/
|
|
13
|
+
get TimerScheduleStrategy(): typeof TimerStrategy;
|
|
14
|
+
/**
|
|
15
|
+
* @member agent#schedule
|
|
16
|
+
*/
|
|
17
|
+
get schedule(): Schedule;
|
|
20
18
|
}
|
|
21
|
-
//#endregion
|
|
22
|
-
export { ScheduleAgent as default };
|
package/dist/app/extend/agent.js
CHANGED
|
@@ -1,32 +1,30 @@
|
|
|
1
|
+
import { Agent } from 'egg';
|
|
1
2
|
import { BaseStrategy } from "../../lib/strategy/base.js";
|
|
2
3
|
import { TimerStrategy } from "../../lib/strategy/timer.js";
|
|
3
4
|
import { Schedule } from "../../lib/schedule.js";
|
|
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
|
-
//#endregion
|
|
32
|
-
export { ScheduleAgent as default };
|
|
5
|
+
const SCHEDULE = Symbol('agent schedule');
|
|
6
|
+
export default class ScheduleAgent extends Agent {
|
|
7
|
+
/**
|
|
8
|
+
* @member agent#ScheduleStrategy
|
|
9
|
+
*/
|
|
10
|
+
get ScheduleStrategy() {
|
|
11
|
+
return BaseStrategy;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* @member agent#TimerScheduleStrategy
|
|
15
|
+
*/
|
|
16
|
+
get TimerScheduleStrategy() {
|
|
17
|
+
return TimerStrategy;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* @member agent#schedule
|
|
21
|
+
*/
|
|
22
|
+
get schedule() {
|
|
23
|
+
let schedule = this[SCHEDULE];
|
|
24
|
+
if (!schedule) {
|
|
25
|
+
this[SCHEDULE] = schedule = new Schedule(this);
|
|
26
|
+
}
|
|
27
|
+
return schedule;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2V4dGVuZC9hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRTVCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWpELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBRTFDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sYUFBYyxTQUFRLEtBQUs7SUFDOUM7O09BRUc7SUFDSCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLHFCQUFxQjtRQUN2QixPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFFBQVE7UUFDVixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFhLENBQUM7UUFDMUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGIn0=
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
*/
|
|
9
|
-
get scheduleWorker(): ScheduleWorker;
|
|
1
|
+
import { Application } from 'egg';
|
|
2
|
+
import { ScheduleWorker } from '../../lib/schedule_worker.ts';
|
|
3
|
+
export default class ScheduleApplication extends Application {
|
|
4
|
+
/**
|
|
5
|
+
* @member app#schedule
|
|
6
|
+
*/
|
|
7
|
+
get scheduleWorker(): ScheduleWorker;
|
|
10
8
|
}
|
|
11
|
-
//#endregion
|
|
12
|
-
export { ScheduleApplication as default };
|
|
@@ -1,18 +1,16 @@
|
|
|
1
|
+
import { Application } from 'egg';
|
|
1
2
|
import { ScheduleWorker } from "../../lib/schedule_worker.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
//#endregion
|
|
18
|
-
export { ScheduleApplication as default };
|
|
3
|
+
const SCHEDULE_WORKER = Symbol('application scheduleWorker');
|
|
4
|
+
export default class ScheduleApplication extends Application {
|
|
5
|
+
/**
|
|
6
|
+
* @member app#schedule
|
|
7
|
+
*/
|
|
8
|
+
get scheduleWorker() {
|
|
9
|
+
let scheduleWorker = this[SCHEDULE_WORKER];
|
|
10
|
+
if (!scheduleWorker) {
|
|
11
|
+
this[SCHEDULE_WORKER] = scheduleWorker = new ScheduleWorker(this);
|
|
12
|
+
}
|
|
13
|
+
return scheduleWorker;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2V4dGVuZC9hcHBsaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU5RCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUU3RCxNQUFNLENBQUMsT0FBTyxPQUFPLG1CQUFvQixTQUFRLFdBQVc7SUFDMUQ7O09BRUc7SUFDSCxJQUFJLGNBQWM7UUFDaEIsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBbUIsQ0FBQztRQUM3RCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztDQUNGIn0=
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import ScheduleApplication from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
declare class ScheduleApplicationUnittest extends ScheduleApplication {
|
|
5
|
-
runSchedule(schedulePath: string, ...args: any[]): Promise<void>;
|
|
1
|
+
import ScheduleApplication from './application.ts';
|
|
2
|
+
export default class ScheduleApplicationUnittest extends ScheduleApplication {
|
|
3
|
+
runSchedule(schedulePath: string, ...args: any[]): Promise<void>;
|
|
6
4
|
}
|
|
7
|
-
//#endregion
|
|
8
|
-
export { ScheduleApplicationUnittest as default };
|
|
@@ -1,46 +1,51 @@
|
|
|
1
|
+
import { debuglog } from 'node:util';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { importResolve } from '@eggjs/utils';
|
|
1
4
|
import ScheduleApplication from "./application.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
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
|
-
|
|
5
|
+
const debug = debuglog('egg/schedule/app');
|
|
6
|
+
export default class ScheduleApplicationUnittest extends ScheduleApplication {
|
|
7
|
+
async runSchedule(schedulePath, ...args) {
|
|
8
|
+
debug('[runSchedule] start schedulePath: %o, args: %o', schedulePath, args);
|
|
9
|
+
// for test purpose
|
|
10
|
+
const config = this.config;
|
|
11
|
+
const directory = [path.join(config.baseDir, 'app/schedule'), ...config.schedule.directory];
|
|
12
|
+
// resolve real path
|
|
13
|
+
if (path.isAbsolute(schedulePath)) {
|
|
14
|
+
schedulePath = importResolve(schedulePath);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
for (const dir of directory) {
|
|
18
|
+
const trySchedulePath = path.join(dir, schedulePath);
|
|
19
|
+
try {
|
|
20
|
+
schedulePath = importResolve(trySchedulePath);
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
debug('[runSchedule] importResolve %o error: %s', trySchedulePath, err);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
debug('[runSchedule] resolve schedulePath: %o', schedulePath);
|
|
29
|
+
let schedule;
|
|
30
|
+
try {
|
|
31
|
+
schedule = this.scheduleWorker.scheduleItems[schedulePath];
|
|
32
|
+
if (!schedule) {
|
|
33
|
+
debug('[runSchedule] Cannot find schedule %o, scheduleItems: %o', schedulePath, this.scheduleWorker.scheduleItems);
|
|
34
|
+
throw new TypeError(`Cannot find schedule ${schedulePath}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
err.message = `[@eggjs/schedule] ${err.message}`;
|
|
39
|
+
throw err;
|
|
40
|
+
}
|
|
41
|
+
// run with anonymous context
|
|
42
|
+
const ctx = this.createAnonymousContext({
|
|
43
|
+
method: 'SCHEDULE',
|
|
44
|
+
url: `/__schedule?path=${schedulePath}&${schedule.scheduleQueryString}`,
|
|
45
|
+
});
|
|
46
|
+
return await this.ctxStorage.run(ctx, async () => {
|
|
47
|
+
return await schedule.task(ctx, ...args);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24udW5pdHRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2V4dGVuZC9hcHBsaWNhdGlvbi51bml0dGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUU3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRzdDLE9BQU8sbUJBQW1CLE1BQU0sa0JBQWtCLENBQUM7QUFFbkQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFFM0MsTUFBTSxDQUFDLE9BQU8sT0FBTywyQkFBNEIsU0FBUSxtQkFBbUI7SUFDMUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxZQUFvQixFQUFFLEdBQUcsSUFBVztRQUNwRCxLQUFLLENBQUMsZ0RBQWdELEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVFLG1CQUFtQjtRQUNuQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU1RixvQkFBb0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDbEMsWUFBWSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM3QyxDQUFDO2FBQU0sQ0FBQztZQUNOLEtBQUssTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQzVCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLENBQUM7b0JBQ0gsWUFBWSxHQUFHLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDOUMsTUFBTTtnQkFDUixDQUFDO2dCQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7b0JBQ2IsS0FBSyxDQUFDLDBDQUEwQyxFQUFFLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDMUUsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsS0FBSyxDQUFDLHdDQUF3QyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzlELElBQUksUUFBeUIsQ0FBQztRQUM5QixJQUFJLENBQUM7WUFDSCxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNkLEtBQUssQ0FDSCwwREFBMEQsRUFDMUQsWUFBWSxFQUNaLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUNsQyxDQUFDO2dCQUNGLE1BQU0sSUFBSSxTQUFTLENBQUMsd0JBQXdCLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDOUQsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO1lBQ2xCLEdBQUcsQ0FBQyxPQUFPLEdBQUcscUJBQXFCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqRCxNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7UUFFRCw2QkFBNkI7UUFDN0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1lBQ3RDLE1BQU0sRUFBRSxVQUFVO1lBQ2xCLEdBQUcsRUFBRSxvQkFBb0IsWUFBWSxJQUFJLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRTtTQUN4RSxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQy9DLE9BQU8sTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIn0=
|
package/dist/app.d.ts
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
constructor(app: ScheduleApplication);
|
|
8
|
-
configDidLoad(): Promise<void>;
|
|
1
|
+
import type { ILifecycleBoot } from 'egg';
|
|
2
|
+
import type Application from './app/extend/application.ts';
|
|
3
|
+
export default class Boot implements ILifecycleBoot {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(app: Application);
|
|
6
|
+
configDidLoad(): Promise<void>;
|
|
9
7
|
}
|
|
10
|
-
//#endregion
|
|
11
|
-
export { Boot as default };
|
package/dist/app.js
CHANGED
|
@@ -1,69 +1,77 @@
|
|
|
1
|
-
import { debuglog } from
|
|
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
|
-
|
|
1
|
+
import { debuglog } from 'node:util';
|
|
2
|
+
const debug = debuglog('egg/schedule/app');
|
|
3
|
+
export default class Boot {
|
|
4
|
+
#app;
|
|
5
|
+
#logger;
|
|
6
|
+
constructor(app) {
|
|
7
|
+
this.#app = app;
|
|
8
|
+
this.#logger = app.getLogger('scheduleLogger');
|
|
9
|
+
}
|
|
10
|
+
async configDidLoad() {
|
|
11
|
+
const scheduleWorker = this.#app.scheduleWorker;
|
|
12
|
+
await scheduleWorker.init();
|
|
13
|
+
// log schedule list
|
|
14
|
+
for (const s in scheduleWorker.scheduleItems) {
|
|
15
|
+
const schedule = scheduleWorker.scheduleItems[s];
|
|
16
|
+
if (!schedule.schedule.disable) {
|
|
17
|
+
this.#logger.info('[@eggjs/schedule]: register schedule %s', schedule.key);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
// register schedule event
|
|
21
|
+
this.#app.messenger.on('egg-schedule', async (info) => {
|
|
22
|
+
debug('app got "egg-schedule" message: %o', info);
|
|
23
|
+
const { id, key } = info;
|
|
24
|
+
this.#logger.debug(`[Job#${id}] ${key} await app ready`);
|
|
25
|
+
await this.#app.ready();
|
|
26
|
+
const schedule = scheduleWorker.scheduleItems[key];
|
|
27
|
+
this.#logger.debug(`[Job#${id}] ${key} task received by app`);
|
|
28
|
+
if (!schedule) {
|
|
29
|
+
this.#logger.warn(`[Job#${id}] ${key} unknown task`);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
/* istanbul ignore next */
|
|
33
|
+
if (schedule.schedule.disable) {
|
|
34
|
+
this.#logger.warn(`[Job#${id}] ${key} disable`);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
this.#logger.info(`[Job#${id}] ${key} executing by app`);
|
|
38
|
+
// run with anonymous context
|
|
39
|
+
const ctx = this.#app.createAnonymousContext({
|
|
40
|
+
method: 'SCHEDULE',
|
|
41
|
+
url: `/__schedule?path=${key}&${schedule.scheduleQueryString}`,
|
|
42
|
+
});
|
|
43
|
+
const start = Date.now();
|
|
44
|
+
let success;
|
|
45
|
+
let e;
|
|
46
|
+
try {
|
|
47
|
+
// execute
|
|
48
|
+
await this.#app.ctxStorage.run(ctx, async () => {
|
|
49
|
+
return await schedule.task(ctx, ...info.args);
|
|
50
|
+
});
|
|
51
|
+
success = true;
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
success = false;
|
|
55
|
+
e = err;
|
|
56
|
+
}
|
|
57
|
+
const rt = Date.now() - start;
|
|
58
|
+
const msg = `[Job#${id}] ${key} execute ${success ? 'succeed' : 'failed'}, used ${rt}ms.`;
|
|
59
|
+
if (success) {
|
|
60
|
+
this.#logger.info(msg);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
this.#logger.error(msg, e);
|
|
64
|
+
}
|
|
65
|
+
// notify agent job finish
|
|
66
|
+
this.#app.messenger.sendToAgent('egg-schedule', {
|
|
67
|
+
...info,
|
|
68
|
+
success,
|
|
69
|
+
workerId: process.pid,
|
|
70
|
+
rt,
|
|
71
|
+
message: e?.message,
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
debug('configDidLoad');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBT3JDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRTNDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sSUFBSTtJQUN2QixJQUFJLENBQWM7SUFDbEIsT0FBTyxDQUFZO0lBQ25CLFlBQVksR0FBZ0I7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhO1FBQ2pCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ2hELE1BQU0sY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTVCLG9CQUFvQjtRQUNwQixLQUFLLE1BQU0sQ0FBQyxJQUFJLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM3QyxNQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyx5Q0FBeUMsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0UsQ0FBQztRQUNILENBQUM7UUFFRCwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxLQUFLLEVBQUMsSUFBSSxFQUFDLEVBQUU7WUFDbEQsS0FBSyxDQUFDLG9DQUFvQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xELE1BQU0sRUFBRSxF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
|
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
*/
|
|
16
|
-
directory: string[];
|
|
1
|
+
import { type PartialEggConfig } from 'egg';
|
|
2
|
+
import type { ParserOptions as CronOptions } from 'cron-parser';
|
|
3
|
+
export interface EggScheduleConfig {
|
|
4
|
+
type?: 'worker' | 'all';
|
|
5
|
+
interval?: string | number;
|
|
6
|
+
cron?: string;
|
|
7
|
+
cronOptions?: CronOptions;
|
|
8
|
+
immediate?: boolean;
|
|
9
|
+
disable?: boolean;
|
|
10
|
+
env?: string[];
|
|
11
|
+
/**
|
|
12
|
+
* custom additional directory, full path
|
|
13
|
+
*/
|
|
14
|
+
directory: string[];
|
|
17
15
|
}
|
|
18
16
|
declare const _default: PartialEggConfig;
|
|
19
|
-
|
|
20
|
-
export { EggScheduleConfig, _default as default };
|
|
17
|
+
export default _default;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import {} from 'egg';
|
|
2
|
+
export default {
|
|
3
|
+
customLogger: {
|
|
4
|
+
scheduleLogger: {
|
|
5
|
+
consoleLevel: 'NONE',
|
|
6
|
+
file: 'egg-schedule.log',
|
|
7
|
+
},
|
|
8
|
+
},
|
|
9
|
+
schedule: {
|
|
10
|
+
directory: [],
|
|
11
|
+
},
|
|
10
12
|
};
|
|
11
|
-
|
|
12
|
-
//#endregion
|
|
13
|
-
export { config_default_default as default };
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmRlZmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2NvbmZpZy5kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBeUIsTUFBTSxLQUFLLENBQUM7QUFpQjVDLGVBQWU7SUFDYixZQUFZLEVBQUU7UUFDWixjQUFjLEVBQUU7WUFDZCxZQUFZLEVBQUUsTUFBTTtZQUNwQixJQUFJLEVBQUUsa0JBQWtCO1NBQ3pCO0tBQ0Y7SUFDRCxRQUFRLEVBQUU7UUFDUixTQUFTLEVBQUUsRUFBRTtLQUNkO0NBQ2tCLENBQUMifQ==
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import Agent from './app/extend/agent.ts';
|
|
2
|
+
import Application from './app/extend/application.ts';
|
|
3
|
+
import ApplicationUnittest from './app/extend/application.unittest.ts';
|
|
4
|
+
export { Agent, Application, ApplicationUnittest };
|
|
5
|
+
export { ScheduleWorker } from './lib/schedule_worker.ts';
|
|
6
|
+
export { Schedule } from './lib/schedule.ts';
|
|
7
|
+
import './types.ts';
|
|
8
|
+
export * from './lib/types.ts';
|