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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/agent-BiclCXUu.js +32 -0
  2. package/dist/agent-DUNNeo72.d.ts +100 -0
  3. package/dist/agent.d.ts +3 -1
  4. package/dist/agent.js +4 -2
  5. package/dist/all-DY7LEzzF.js +11 -0
  6. package/dist/app/extend/agent.d.ts +3 -21
  7. package/dist/app/extend/agent.js +5 -30
  8. package/dist/app/extend/application.d.ts +3 -11
  9. package/dist/app/extend/application.js +3 -16
  10. package/dist/app/extend/application.unittest.d.ts +4 -7
  11. package/dist/app/extend/application.unittest.js +4 -44
  12. package/dist/app.d.ts +3 -1
  13. package/dist/application-Be3vYRp0.d.ts +22 -0
  14. package/dist/application-CtPD5smr.js +18 -0
  15. package/dist/application.unittest-BySM_r-a.js +46 -0
  16. package/dist/application.unittest-DOurfxcE.d.ts +8 -0
  17. package/dist/base-BQ53Qv2t.js +73 -0
  18. package/dist/config/config.default.d.ts +1 -19
  19. package/dist/config.default-Oe7rctMS.d.ts +20 -0
  20. package/dist/index.d.ts +6 -6
  21. package/dist/index.js +10 -5
  22. package/dist/lib/load_schedule.d.ts +2 -1
  23. package/dist/lib/load_schedule.js +1 -59
  24. package/dist/lib/schedule.d.ts +3 -34
  25. package/dist/lib/schedule.js +2 -75
  26. package/dist/lib/schedule_worker.d.ts +3 -13
  27. package/dist/lib/schedule_worker.js +2 -20
  28. package/dist/lib/strategy/all.d.ts +3 -1
  29. package/dist/lib/strategy/all.js +3 -9
  30. package/dist/lib/strategy/base.d.ts +3 -35
  31. package/dist/lib/strategy/base.js +1 -71
  32. package/dist/lib/strategy/timer.d.ts +3 -23
  33. package/dist/lib/strategy/timer.js +2 -69
  34. package/dist/lib/strategy/worker.d.ts +3 -1
  35. package/dist/lib/strategy/worker.js +3 -9
  36. package/dist/lib/types.d.ts +2 -20
  37. package/dist/lib/types.js +2 -0
  38. package/dist/load_schedule-BwGbsGkz.js +61 -0
  39. package/dist/schedule-C0pZBoiR.js +77 -0
  40. package/dist/schedule_worker-DsbRF__K.js +22 -0
  41. package/dist/timer-B-5D2wim.js +71 -0
  42. package/dist/types-C43iyhAd.js +1 -0
  43. package/dist/types-CPNMyF89.js +1 -0
  44. package/dist/types-D3XkzB3g.d.ts +21 -0
  45. package/dist/types-VUtK3imu.d.ts +17 -0
  46. package/dist/types.d.ts +2 -17
  47. package/dist/types.js +2 -0
  48. package/dist/worker-Dc570kZo.js +11 -0
  49. package/package.json +6 -6
@@ -0,0 +1,71 @@
1
+ import { BaseStrategy } from "./base-BQ53Qv2t.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 };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,21 @@
1
+ import { EggScheduleConfig } from "./config.default-Oe7rctMS.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;
10
+ }
11
+ interface EggScheduleJobInfo {
12
+ id: string;
13
+ key: string;
14
+ workerId: number;
15
+ args: any[];
16
+ success?: boolean;
17
+ message?: string;
18
+ rt?: number;
19
+ }
20
+ //#endregion
21
+ export { EggScheduleItem, EggScheduleJobInfo, EggScheduleTask };
@@ -0,0 +1,17 @@
1
+ import { EggScheduleConfig } from "./config.default-Oe7rctMS.js";
2
+
3
+ //#region src/types.d.ts
4
+ 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
+ }
12
+ }
13
+ declare module '@eggjs/mock' {
14
+ interface MockApplication {
15
+ runSchedule(schedulePath: string, ...args: any[]): Promise<any>;
16
+ }
17
+ }
package/dist/types.d.ts CHANGED
@@ -1,17 +1,2 @@
1
- import { EggScheduleConfig } from "./config/config.default.js";
2
-
3
- //#region src/types.d.ts
4
- 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
- }
12
- }
13
- declare module '@eggjs/mock' {
14
- interface MockApplication {
15
- runSchedule(schedulePath: string, ...args: any[]): Promise<any>;
16
- }
17
- }
1
+ import "./config.default-Oe7rctMS.js";
2
+ import "./types-VUtK3imu.js";
package/dist/types.js CHANGED
@@ -1 +1,3 @@
1
+ import "./types-CPNMyF89.js";
2
+
1
3
  export { };
@@ -0,0 +1,11 @@
1
+ import { TimerStrategy } from "./timer-B-5D2wim.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 };
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.20",
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.20"
37
37
  },
38
38
  "peerDependencies": {
39
- "egg": "4.1.0-beta.19"
39
+ "egg": "4.1.0-beta.20"
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/bin": "8.0.0-beta.20",
48
+ "@eggjs/mock": "7.0.0-beta.20",
49
+ "@eggjs/tsconfig": "3.1.0-beta.20"
50
50
  },
51
51
  "author": "dead_horse",
52
52
  "license": "MIT",