@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.
@@ -1,73 +1,75 @@
1
- //#region src/lib/strategy/base.ts
2
- var BaseStrategy = class {
3
- agent;
4
- scheduleConfig;
5
- key;
6
- logger;
7
- closed = false;
8
- count = 0;
9
- constructor(scheduleConfig, agent, key) {
10
- this.agent = agent;
11
- this.key = key;
12
- this.scheduleConfig = scheduleConfig;
13
- this.logger = this.agent.getLogger("scheduleLogger");
14
- }
15
- /** keep compatibility */
16
- get schedule() {
17
- return this.scheduleConfig;
18
- }
19
- async start() {}
20
- async close() {
21
- this.closed = true;
22
- }
23
- onJobStart(_info) {}
24
- onJobFinish(_info) {}
25
- /**
26
- * trigger one worker
27
- *
28
- * @param {...any} args - pass to job task
29
- */
30
- sendOne(...args) {
31
- /* istanbul ignore next */
32
- if (this.agent.schedule.closed) {
33
- this.logger.warn(`${this.key} skip due to schedule closed`);
34
- return;
35
- }
36
- this.count++;
37
- const info = {
38
- key: this.key,
39
- id: this.getSeqId(),
40
- args
41
- };
42
- this.logger.info(`[Job#${info.id}] ${info.key} triggered, send random by agent`);
43
- this.agent.messenger.sendRandom("egg-schedule", info);
44
- this.onJobStart(info);
45
- }
46
- /**
47
- * trigger all worker
48
- *
49
- * @param {...any} args - pass to job task
50
- */
51
- sendAll(...args) {
52
- /* istanbul ignore next */
53
- if (this.agent.schedule.closed) {
54
- this.logger.warn(`${this.key} skip due to schedule closed`);
55
- return;
56
- }
57
- this.count++;
58
- const info = {
59
- key: this.key,
60
- id: this.getSeqId(),
61
- args
62
- };
63
- this.logger.info(`[Job#${info.id}] ${info.key} triggered, send all by agent`);
64
- this.agent.messenger.send("egg-schedule", info);
65
- this.onJobStart(info);
66
- }
67
- getSeqId() {
68
- return `${Date.now()}${process.hrtime().join("")}${this.count}`;
69
- }
70
- };
71
-
72
- //#endregion
73
- 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,24 +1,20 @@
1
- import { EggScheduleConfig } from "../../config/config.default.js";
2
- import { BaseStrategy } from "./base.js";
3
- import ScheduleAgent from "../../app/extend/agent.js";
4
- import { CronExpression } from "cron-parser";
5
- import safeTimers from "safe-timers";
6
-
7
- //#region src/lib/strategy/timer.d.ts
8
- declare abstract class TimerStrategy extends BaseStrategy {
9
- #private;
10
- protected cronInstance?: CronExpression;
11
- constructor(scheduleConfig: EggScheduleConfig, agent: ScheduleAgent, key: string);
12
- protected handler(): void;
13
- start(): Promise<void>;
14
- onJobStart(): void;
15
- /**
16
- * calculate next tick
17
- *
18
- * @return {Number|undefined} time interval, if out of range then return `undefined`
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
- import assert from "node:assert";
3
- import cronParser from "cron-parser";
4
- import { ms } from "humanize-ms";
5
- import safeTimers from "safe-timers";
6
- import { logDate } from "utility";
7
-
8
- //#region src/lib/strategy/timer.ts
9
- var TimerStrategy = class extends BaseStrategy {
10
- cronInstance;
11
- constructor(scheduleConfig, agent, key) {
12
- super(scheduleConfig, agent, key);
13
- const { interval, cron, cronOptions, immediate } = this.scheduleConfig;
14
- assert(interval || cron || immediate, `[@eggjs/schedule] ${this.key} \`schedule.interval\` or \`schedule.cron\` or \`schedule.immediate\` must be present`);
15
- if (cron) try {
16
- this.cronInstance = cronParser.parseExpression(cron, cronOptions);
17
- } catch (err) {
18
- throw new TypeError(`[@eggjs/schedule] ${this.key} parse cron instruction(${cron}) error: ${err.message}`, { cause: err });
19
- }
20
- }
21
- handler() {
22
- throw new TypeError(`[@eggjs/schedule] ${this.key} strategy should override \`handler()\` method`);
23
- }
24
- async start() {
25
- /* istanbul ignore next */
26
- if (this.agent.schedule.closed) return;
27
- if (this.scheduleConfig.immediate) {
28
- this.logger.info(`[Timer] ${this.key} next time will execute immediate`);
29
- setImmediate(() => this.handler());
30
- } else this.#scheduleNext();
31
- }
32
- #scheduleNext() {
33
- /* istanbul ignore next */
34
- if (this.agent.schedule.closed) return;
35
- const nextTick = this.getNextTick();
36
- if (nextTick) {
37
- this.logger.info(`[Timer] ${this.key} next time will execute after ${nextTick}ms at ${logDate(new Date(Date.now() + nextTick))}`);
38
- this.safeTimeout(() => this.handler(), nextTick);
39
- } else this.logger.info(`[Timer] ${this.key} reach endDate, will stop`);
40
- }
41
- onJobStart() {
42
- this.#scheduleNext();
43
- }
44
- /**
45
- * calculate next tick
46
- *
47
- * @return {Number|undefined} time interval, if out of range then return `undefined`
48
- */
49
- getNextTick() {
50
- if (this.scheduleConfig.interval) return ms(this.scheduleConfig.interval);
51
- if (this.cronInstance) {
52
- const now = Date.now();
53
- let nextTick;
54
- do
55
- try {
56
- nextTick = this.cronInstance.next().getTime();
57
- } catch (err) {
58
- this.logger.info(`[Timer] ${this.key} cron out of the timespan range, error: %s`, err);
59
- return;
60
- }
61
- while (now >= nextTick);
62
- return nextTick - now;
63
- }
64
- }
65
- safeTimeout(handler, delay, ...args) {
66
- return (delay < safeTimers.maxInterval ? setTimeout : safeTimers.setTimeout)(handler, delay, ...args);
67
- }
68
- };
69
-
70
- //#endregion
71
- export { TimerStrategy };
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,8 +1,4 @@
1
- import { TimerStrategy } from "./timer.js";
2
-
3
- //#region src/lib/strategy/worker.d.ts
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
- //#region src/lib/strategy/worker.ts
4
- var WorkerStrategy = class extends TimerStrategy {
5
- handler() {
6
- this.sendOne();
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==
@@ -1,21 +1,17 @@
1
- import { EggScheduleConfig } from "../config/config.default.js";
2
-
3
- //#region src/lib/types.d.ts
4
- type EggScheduleTask = (ctx: any, ...args: any[]) => Promise<void>;
5
- interface EggScheduleItem {
6
- schedule: EggScheduleConfig;
7
- scheduleQueryString: string;
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
- id: string;
13
- key: string;
14
- workerId: number;
15
- args: any[];
16
- success?: boolean;
17
- message?: string;
18
- rt?: number;
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 "./config/config.default.js";
2
-
3
- //#region src/types.d.ts
1
+ import type { EggScheduleConfig } from './config/config.default.ts';
4
2
  declare module 'egg' {
5
- interface EggAppConfig {
6
- /**
7
- * Schedule Config
8
- * @see https://www.eggjs.org/zh-CN/basics/schedule
9
- */
10
- schedule: EggScheduleConfig;
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.19",
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.19"
36
+ "@eggjs/utils": "5.0.0-beta.21"
37
37
  },
38
38
  "peerDependencies": {
39
- "egg": "4.1.0-beta.19"
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.19",
48
- "@eggjs/bin": "8.0.0-beta.19",
49
- "@eggjs/mock": "7.0.0-beta.19"
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",