@eggjs/schedule 6.0.0-beta.35 → 6.0.0-beta.36

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