@eggjs/schedule 5.0.1 → 6.0.0-beta.13

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 (110) hide show
  1. package/README.md +8 -14
  2. package/dist/agent.d.ts +13 -0
  3. package/dist/agent.js +32 -0
  4. package/dist/app/extend/agent.d.ts +22 -0
  5. package/dist/app/extend/agent.js +32 -0
  6. package/dist/app/extend/application.d.ts +16 -0
  7. package/dist/app/extend/application.js +18 -0
  8. package/dist/app/extend/application.unittest.d.ts +13 -0
  9. package/dist/app/extend/application.unittest.js +43 -0
  10. package/dist/app.d.ts +11 -0
  11. package/dist/app.js +69 -0
  12. package/dist/config/config.default.d.ts +6 -0
  13. package/dist/config/config.default.js +13 -0
  14. package/dist/index.d.ts +7 -0
  15. package/dist/index.js +7 -0
  16. package/dist/lib/load_schedule.d.ts +7 -0
  17. package/dist/lib/load_schedule.js +61 -0
  18. package/dist/lib/schedule.d.ts +35 -0
  19. package/dist/lib/schedule.js +77 -0
  20. package/dist/lib/schedule_worker.d.ts +14 -0
  21. package/dist/lib/schedule_worker.js +22 -0
  22. package/dist/lib/strategy/all.d.ts +8 -0
  23. package/dist/lib/strategy/all.js +11 -0
  24. package/dist/lib/strategy/base.d.ts +35 -0
  25. package/dist/lib/strategy/base.js +73 -0
  26. package/dist/lib/strategy/timer.d.ts +24 -0
  27. package/dist/lib/strategy/timer.js +71 -0
  28. package/dist/lib/strategy/worker.d.ts +8 -0
  29. package/dist/lib/strategy/worker.js +11 -0
  30. package/dist/lib/types.d.ts +44 -0
  31. package/dist/lib/types.js +1 -0
  32. package/package.json +51 -55
  33. package/dist/commonjs/agent.d.ts +0 -7
  34. package/dist/commonjs/agent.js +0 -32
  35. package/dist/commonjs/app/extend/agent.d.ts +0 -2
  36. package/dist/commonjs/app/extend/agent.js +0 -29
  37. package/dist/commonjs/app/extend/application.d.ts +0 -2
  38. package/dist/commonjs/app/extend/application.js +0 -16
  39. package/dist/commonjs/app/extend/application.unittest.d.ts +0 -2
  40. package/dist/commonjs/app/extend/application.unittest.js +0 -58
  41. package/dist/commonjs/app.d.ts +0 -6
  42. package/dist/commonjs/app.js +0 -80
  43. package/dist/commonjs/config/config.default.d.ts +0 -2
  44. package/dist/commonjs/config/config.default.js +0 -17
  45. package/dist/commonjs/index.d.ts +0 -1
  46. package/dist/commonjs/index.js +0 -18
  47. package/dist/commonjs/lib/load_schedule.d.ts +0 -3
  48. package/dist/commonjs/lib/load_schedule.js +0 -71
  49. package/dist/commonjs/lib/schedule.d.ts +0 -31
  50. package/dist/commonjs/lib/schedule.js +0 -89
  51. package/dist/commonjs/lib/schedule_worker.d.ts +0 -10
  52. package/dist/commonjs/lib/schedule_worker.js +0 -22
  53. package/dist/commonjs/lib/strategy/all.d.ts +0 -4
  54. package/dist/commonjs/lib/strategy/all.js +0 -11
  55. package/dist/commonjs/lib/strategy/base.d.ts +0 -30
  56. package/dist/commonjs/lib/strategy/base.js +0 -79
  57. package/dist/commonjs/lib/strategy/timer.d.ts +0 -20
  58. package/dist/commonjs/lib/strategy/timer.js +0 -99
  59. package/dist/commonjs/lib/strategy/worker.d.ts +0 -4
  60. package/dist/commonjs/lib/strategy/worker.js +0 -11
  61. package/dist/commonjs/lib/types.d.ts +0 -53
  62. package/dist/commonjs/lib/types.js +0 -3
  63. package/dist/commonjs/package.json +0 -3
  64. package/dist/esm/agent.d.ts +0 -7
  65. package/dist/esm/agent.js +0 -29
  66. package/dist/esm/app/extend/agent.d.ts +0 -2
  67. package/dist/esm/app/extend/agent.js +0 -27
  68. package/dist/esm/app/extend/application.d.ts +0 -2
  69. package/dist/esm/app/extend/application.js +0 -14
  70. package/dist/esm/app/extend/application.unittest.d.ts +0 -2
  71. package/dist/esm/app/extend/application.unittest.js +0 -53
  72. package/dist/esm/app.d.ts +0 -6
  73. package/dist/esm/app.js +0 -77
  74. package/dist/esm/config/config.default.d.ts +0 -2
  75. package/dist/esm/config/config.default.js +0 -15
  76. package/dist/esm/index.d.ts +0 -1
  77. package/dist/esm/index.js +0 -2
  78. package/dist/esm/lib/load_schedule.d.ts +0 -3
  79. package/dist/esm/lib/load_schedule.js +0 -65
  80. package/dist/esm/lib/schedule.d.ts +0 -31
  81. package/dist/esm/lib/schedule.js +0 -85
  82. package/dist/esm/lib/schedule_worker.d.ts +0 -10
  83. package/dist/esm/lib/schedule_worker.js +0 -18
  84. package/dist/esm/lib/strategy/all.d.ts +0 -4
  85. package/dist/esm/lib/strategy/all.js +0 -7
  86. package/dist/esm/lib/strategy/base.d.ts +0 -30
  87. package/dist/esm/lib/strategy/base.js +0 -75
  88. package/dist/esm/lib/strategy/timer.d.ts +0 -20
  89. package/dist/esm/lib/strategy/timer.js +0 -92
  90. package/dist/esm/lib/strategy/worker.d.ts +0 -4
  91. package/dist/esm/lib/strategy/worker.js +0 -7
  92. package/dist/esm/lib/types.d.ts +0 -53
  93. package/dist/esm/lib/types.js +0 -2
  94. package/dist/esm/package.json +0 -3
  95. package/dist/package.json +0 -4
  96. package/src/agent.ts +0 -36
  97. package/src/app/extend/agent.ts +0 -30
  98. package/src/app/extend/application.ts +0 -16
  99. package/src/app/extend/application.unittest.ts +0 -57
  100. package/src/app.ts +0 -92
  101. package/src/config/config.default.ts +0 -17
  102. package/src/index.ts +0 -1
  103. package/src/lib/load_schedule.ts +0 -74
  104. package/src/lib/schedule.ts +0 -100
  105. package/src/lib/schedule_worker.ts +0 -24
  106. package/src/lib/strategy/all.ts +0 -7
  107. package/src/lib/strategy/base.ts +0 -91
  108. package/src/lib/strategy/timer.ts +0 -106
  109. package/src/lib/strategy/worker.ts +0 -7
  110. package/src/lib/types.ts +0 -58
@@ -1,53 +0,0 @@
1
- import type { ParserOptions as CronOptions } from 'cron-parser';
2
- import type { Schedule } from './schedule.js';
3
- import type { ScheduleWorker } from './schedule_worker.js';
4
- /**
5
- * Schedule Config
6
- * @see https://www.eggjs.org/zh-CN/basics/schedule
7
- */
8
- export interface EggScheduleConfig {
9
- type?: 'worker' | 'all';
10
- interval?: string | number;
11
- cron?: string;
12
- cronOptions?: CronOptions;
13
- immediate?: boolean;
14
- disable?: boolean;
15
- env?: string[];
16
- }
17
- export type EggScheduleTask = (ctx: any, ...args: any[]) => Promise<void>;
18
- export interface EggScheduleItem {
19
- schedule: EggScheduleConfig;
20
- scheduleQueryString: string;
21
- task: EggScheduleTask;
22
- key: string;
23
- }
24
- export interface EggScheduleJobInfo {
25
- id: string;
26
- key: string;
27
- workerId: number;
28
- args: any[];
29
- success?: boolean;
30
- message?: string;
31
- rt?: number;
32
- }
33
- declare module 'egg' {
34
- interface EggScheduleAgent {
35
- schedule: Schedule;
36
- }
37
- interface Agent extends EggScheduleAgent {
38
- }
39
- interface EggScheduleApplication {
40
- scheduleWorker: ScheduleWorker;
41
- /** runSchedule in unittest */
42
- runSchedule: (schedulePath: string, ...args: any[]) => Promise<void>;
43
- }
44
- interface Application extends EggScheduleApplication {
45
- }
46
- interface EggScheduleAppConfig {
47
- schedule: {
48
- directory: string[];
49
- };
50
- }
51
- interface EggAppConfig extends EggScheduleAppConfig {
52
- }
53
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -1,3 +0,0 @@
1
- {
2
- "type": "commonjs"
3
- }
@@ -1,7 +0,0 @@
1
- import type { Agent, ILifecycleBoot } from 'egg';
2
- export default class Boot implements ILifecycleBoot {
3
- #private;
4
- constructor(agent: Agent);
5
- configDidLoad(): Promise<void>;
6
- serverDidReady(): Promise<void>;
7
- }
package/dist/esm/agent.js DELETED
@@ -1,29 +0,0 @@
1
- import { debuglog } from 'node:util';
2
- import { WorkerStrategy } from './lib/strategy/worker.js';
3
- import { AllStrategy } from './lib/strategy/all.js';
4
- const debug = debuglog('@eggjs/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
- this.#agent.schedule.start();
26
- debug('serverDidReady, schedule start');
27
- }
28
- }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3BELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBRWhELE1BQU0sQ0FBQyxPQUFPLE9BQU8sSUFBSTtJQUN2QixNQUFNLENBQVE7SUFDZCxZQUFZLEtBQVk7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhO1FBQ2pCLDZCQUE2QjtRQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFN0Msb0RBQW9EO1FBQ3BELE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFbEMsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUF3QixFQUFFLEVBQUU7WUFDcEUsMkJBQTJCO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRiJ9
@@ -1,2 +0,0 @@
1
- declare const _default: any;
2
- export default _default;
@@ -1,27 +0,0 @@
1
- import { BaseStrategy } from '../../lib/strategy/base.js';
2
- import { TimerStrategy } from '../../lib/strategy/timer.js';
3
- import { Schedule } from '../../lib/schedule.js';
4
- const SCHEDULE = Symbol('agent#schedule');
5
- export default {
6
- /**
7
- * @member agent#ScheduleStrategy
8
- */
9
- ScheduleStrategy: BaseStrategy,
10
- /**
11
- * @member agent#TimerScheduleStrategy
12
- */
13
- TimerScheduleStrategy: TimerStrategy,
14
- /**
15
- * @member agent#schedule
16
- */
17
- get schedule() {
18
- if (!this[SCHEDULE]) {
19
- this[SCHEDULE] = new Schedule(this);
20
- this.lifecycle.registerBeforeClose(() => {
21
- return this[SCHEDULE].close();
22
- });
23
- }
24
- return this[SCHEDULE];
25
- },
26
- };
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2V4dGVuZC9hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVqRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUUxQyxlQUFlO0lBQ2I7O09BRUc7SUFDSCxnQkFBZ0IsRUFBRSxZQUFZO0lBRTlCOztPQUVHO0lBQ0gscUJBQXFCLEVBQUUsYUFBYTtJQUVwQzs7T0FFRztJQUNILElBQUksUUFBUTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3RDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7Q0FDSyxDQUFDIn0=
@@ -1,2 +0,0 @@
1
- declare const _default: any;
2
- export default _default;
@@ -1,14 +0,0 @@
1
- import { ScheduleWorker } from '../../lib/schedule_worker.js';
2
- const SCHEDULE_WORKER = Symbol('application#scheduleWorker');
3
- export default {
4
- /**
5
- * @member app#schedule
6
- */
7
- get scheduleWorker() {
8
- if (!this[SCHEDULE_WORKER]) {
9
- this[SCHEDULE_WORKER] = new ScheduleWorker(this);
10
- }
11
- return this[SCHEDULE_WORKER];
12
- },
13
- };
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2V4dGVuZC9hcHBsaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFOUQsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUFFN0QsZUFBZTtJQUNiOztPQUVHO0lBQ0gsSUFBSSxjQUFjO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7Q0FDSyxDQUFDIn0=
@@ -1,2 +0,0 @@
1
- declare const _default: any;
2
- export default _default;
@@ -1,53 +0,0 @@
1
- import { debuglog } from 'node:util';
2
- import path from 'node:path';
3
- import { importResolve } from '@eggjs/utils';
4
- const debug = debuglog('@eggjs/schedule/app');
5
- export default {
6
- async runSchedule(schedulePath, ...args) {
7
- debug('[runSchedule] start schedulePath: %o, args: %o', schedulePath, args);
8
- // for test purpose
9
- const config = this.config;
10
- const directory = [
11
- path.join(config.baseDir, 'app/schedule'),
12
- ...config.schedule.directory,
13
- ];
14
- // resolve real path
15
- if (path.isAbsolute(schedulePath)) {
16
- schedulePath = importResolve(schedulePath);
17
- }
18
- else {
19
- for (const dir of directory) {
20
- const trySchedulePath = path.join(dir, schedulePath);
21
- try {
22
- schedulePath = importResolve(trySchedulePath);
23
- break;
24
- }
25
- catch (err) {
26
- debug('[runSchedule] importResolve %o error: %s', trySchedulePath, err);
27
- }
28
- }
29
- }
30
- debug('[runSchedule] resolve schedulePath: %o', schedulePath);
31
- const scheduleWorker = this.scheduleWorker;
32
- let schedule;
33
- try {
34
- schedule = scheduleWorker.scheduleItems[schedulePath];
35
- if (!schedule) {
36
- throw new TypeError(`Cannot find schedule ${schedulePath}`);
37
- }
38
- }
39
- catch (err) {
40
- err.message = `[@eggjs/schedule] ${err.message}`;
41
- throw err;
42
- }
43
- // run with anonymous context
44
- const ctx = this.createAnonymousContext({
45
- method: 'SCHEDULE',
46
- url: `/__schedule?path=${schedulePath}&${schedule.scheduleQueryString}`,
47
- });
48
- return await this.ctxStorage.run(ctx, async () => {
49
- return await schedule.task(ctx, ...args);
50
- });
51
- },
52
- };
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24udW5pdHRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2V4dGVuZC9hcHBsaWNhdGlvbi51bml0dGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBSTdDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBRTlDLGVBQWU7SUFDYixLQUFLLENBQUMsV0FBVyxDQUFDLFlBQW9CLEVBQUUsR0FBRyxJQUFXO1FBQ3BELEtBQUssQ0FBQyxnREFBZ0QsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDNUUsbUJBQW1CO1FBQ25CLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsTUFBTSxTQUFTLEdBQUc7WUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQztZQUN6QyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUztTQUM3QixDQUFDO1FBRUYsb0JBQW9CO1FBQ3BCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ2xDLFlBQVksR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0MsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLE1BQU0sR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUM1QixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztnQkFDckQsSUFBSSxDQUFDO29CQUNILFlBQVksR0FBRyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQzlDLE1BQU07Z0JBQ1IsQ0FBQztnQkFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO29CQUNiLEtBQUssQ0FBQywwQ0FBMEMsRUFBRSxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzFFLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELEtBQUssQ0FBQyx3Q0FBd0MsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM5RCxNQUFNLGNBQWMsR0FBbUIsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMzRCxJQUFJLFFBQXlCLENBQUM7UUFDOUIsSUFBSSxDQUFDO1lBQ0gsUUFBUSxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNkLE1BQU0sSUFBSSxTQUFTLENBQUMsd0JBQXdCLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDOUQsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO1lBQ2xCLEdBQUcsQ0FBQyxPQUFPLEdBQUcscUJBQXFCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqRCxNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7UUFFRCw2QkFBNkI7UUFDN0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1lBQ3RDLE1BQU0sRUFBRSxVQUFVO1lBQ2xCLEdBQUcsRUFBRSxvQkFBb0IsWUFBWSxJQUFJLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRTtTQUN4RSxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQy9DLE9BQU8sTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNLLENBQUMifQ==
package/dist/esm/app.d.ts DELETED
@@ -1,6 +0,0 @@
1
- import type { Application, ILifecycleBoot } from 'egg';
2
- export default class Boot implements ILifecycleBoot {
3
- #private;
4
- constructor(app: Application);
5
- configDidLoad(): Promise<void>;
6
- }
package/dist/esm/app.js DELETED
@@ -1,77 +0,0 @@
1
- import { debuglog } from 'node:util';
2
- const debug = debuglog('@eggjs/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBTXJDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBRTlDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sSUFBSTtJQUN2QixJQUFJLENBQWM7SUFDbEIsT0FBTyxDQUFZO0lBQ25CLFlBQVksR0FBZ0I7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhO1FBQ2pCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ2hELE1BQU0sY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTVCLG9CQUFvQjtRQUNwQixLQUFLLE1BQU0sQ0FBQyxJQUFJLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM3QyxNQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyx5Q0FBeUMsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0UsQ0FBQztRQUNILENBQUM7UUFFRCwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxLQUFLLEVBQUMsSUFBSSxFQUFDLEVBQUU7WUFDbEQsS0FBSyxDQUFDLG9DQUFvQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xELE1BQU0sRUFB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
@@ -1,2 +0,0 @@
1
- declare const _default: () => Record<string, any>;
2
- export default _default;
@@ -1,15 +0,0 @@
1
- export default () => {
2
- const config = {};
3
- config.customLogger = {
4
- scheduleLogger: {
5
- consoleLevel: 'NONE',
6
- file: 'egg-schedule.log',
7
- },
8
- };
9
- config.schedule = {
10
- // custom additional directory, full path
11
- directory: [],
12
- };
13
- return config;
14
- };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmRlZmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uZmlnL2NvbmZpZy5kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsR0FBRyxFQUFFO0lBQ2xCLE1BQU0sTUFBTSxHQUFHLEVBQXlCLENBQUM7SUFFekMsTUFBTSxDQUFDLFlBQVksR0FBRztRQUNwQixjQUFjLEVBQUU7WUFDZCxZQUFZLEVBQUUsTUFBTTtZQUNwQixJQUFJLEVBQUUsa0JBQWtCO1NBQ3pCO0tBQ0YsQ0FBQztJQUVGLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIseUNBQXlDO1FBQ3pDLFNBQVMsRUFBRSxFQUFFO0tBQ2QsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyJ9
@@ -1 +0,0 @@
1
- export * from './lib/types.js';
package/dist/esm/index.js DELETED
@@ -1,2 +0,0 @@
1
- export * from './lib/types.js';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQyJ9
@@ -1,3 +0,0 @@
1
- import type { EggApplicationCore } from 'egg';
2
- import type { EggScheduleItem } from './types.js';
3
- export declare function loadSchedule(app: EggApplicationCore): Promise<Record<string, EggScheduleItem>>;
@@ -1,65 +0,0 @@
1
- import path from 'node:path';
2
- import assert from 'node:assert';
3
- import { stringify } from 'node:querystring';
4
- import { isClass, isFunction, isGeneratorFunction } from 'is-type-of';
5
- import { importResolve } from '@eggjs/utils';
6
- function getScheduleLoader(app) {
7
- return class ScheduleLoader extends app.loader.FileLoader {
8
- async load() {
9
- const target = this.options.target;
10
- const items = await this.parse();
11
- for (const item of items) {
12
- const schedule = item.exports;
13
- const fullpath = item.fullpath;
14
- const scheduleConfig = schedule.schedule;
15
- assert(scheduleConfig, `schedule(${fullpath}): must have "schedule" and "task" properties`);
16
- assert(isClass(schedule) || isFunction(schedule.task), `schedule(${fullpath}: \`schedule.task\` should be function or \`schedule\` should be class`);
17
- let task;
18
- if (isClass(schedule)) {
19
- assert(!isGeneratorFunction(schedule.prototype.subscribe), `schedule(${fullpath}): "schedule" generator function is not support, should use async function instead`);
20
- task = async (ctx, ...args) => {
21
- const instance = new schedule(ctx);
22
- // s.subscribe = app.toAsyncFunction(s.subscribe);
23
- return instance.subscribe(...args);
24
- };
25
- }
26
- else {
27
- assert(!isGeneratorFunction(schedule.task), `schedule(${fullpath}): "task" generator function is not support, should use async function instead`);
28
- task = schedule.task;
29
- // task = app.toAsyncFunction(schedule.task);
30
- }
31
- const env = app.config.env;
32
- const envList = schedule.schedule.env;
33
- if (Array.isArray(envList) && !envList.includes(env)) {
34
- app.coreLogger.info(`[@eggjs/schedule]: ignore schedule ${fullpath} due to \`schedule.env\` not match`);
35
- continue;
36
- }
37
- // handle symlink case
38
- const realFullpath = importResolve(fullpath);
39
- target[realFullpath] = {
40
- schedule: scheduleConfig,
41
- scheduleQueryString: stringify(scheduleConfig),
42
- task,
43
- key: realFullpath,
44
- };
45
- }
46
- return target;
47
- }
48
- };
49
- }
50
- export async function loadSchedule(app) {
51
- const dirs = [
52
- ...app.loader.getLoadUnits().map(unit => path.join(unit.path, 'app/schedule')),
53
- ...app.config.schedule.directory,
54
- ];
55
- const Loader = getScheduleLoader(app);
56
- const schedules = {};
57
- await new Loader({
58
- directory: dirs,
59
- target: schedules,
60
- inject: app,
61
- }).load();
62
- Reflect.set(app, 'schedules', schedules);
63
- return schedules;
64
- }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZF9zY2hlZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbG9hZF9zY2hlZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBSTdDLFNBQVMsaUJBQWlCLENBQUMsR0FBdUI7SUFDaEQsT0FBTyxNQUFNLGNBQWUsU0FBUSxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVU7UUFDdkQsS0FBSyxDQUFDLElBQUk7WUFDUixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQXlDLENBQUM7WUFDdEUsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDekIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQWlFLENBQUM7Z0JBQ3hGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQy9CLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7Z0JBQ3pDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsWUFBWSxRQUFRLCtDQUErQyxDQUFDLENBQUM7Z0JBQzVGLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFDbkQsWUFBWSxRQUFRLHdFQUF3RSxDQUFDLENBQUM7Z0JBRWhHLElBQUksSUFBcUIsQ0FBQztnQkFDMUIsSUFBSSxP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
@@ -1,31 +0,0 @@
1
- import type { Agent } from 'egg';
2
- import type { EggScheduleItem, EggScheduleJobInfo } from './types.js';
3
- import type { BaseStrategy } from './strategy/base.js';
4
- export declare class Schedule {
5
- #private;
6
- closed: boolean;
7
- constructor(agent: Agent);
8
- /**
9
- * register a custom Schedule Strategy
10
- * @param {String} type - strategy type
11
- * @param {Strategy} clz - Strategy class
12
- */
13
- use(type: string, clz: typeof BaseStrategy): void;
14
- /**
15
- * load all schedule jobs, then initialize and register speical strategy
16
- */
17
- init(): Promise<void>;
18
- registerSchedule(scheduleItem: EggScheduleItem): void;
19
- unregisterSchedule(key: string): boolean;
20
- /**
21
- * job finish event handler
22
- *
23
- * @param {Object} info - { id, key, success, message, workerId }
24
- */
25
- onJobFinish(info: EggScheduleJobInfo): void;
26
- /**
27
- * start schedule
28
- */
29
- start(): void;
30
- close(): void;
31
- }
@@ -1,85 +0,0 @@
1
- import { debuglog } from 'node:util';
2
- import { loadSchedule } from './load_schedule.js';
3
- const debug = debuglog('@eggjs/schedule/lib/schedule');
4
- export class Schedule {
5
- closed = false;
6
- #agent;
7
- #logger;
8
- #strategyClassMap = new Map();
9
- #strategyInstanceMap = new Map();
10
- constructor(agent) {
11
- this.#agent = agent;
12
- this.#logger = agent.getLogger('scheduleLogger');
13
- }
14
- /**
15
- * register a custom Schedule Strategy
16
- * @param {String} type - strategy type
17
- * @param {Strategy} clz - Strategy class
18
- */
19
- use(type, clz) {
20
- this.#strategyClassMap.set(type, clz);
21
- debug('use type: %o', type);
22
- }
23
- /**
24
- * load all schedule jobs, then initialize and register speical strategy
25
- */
26
- async init() {
27
- const scheduleItems = await loadSchedule(this.#agent);
28
- for (const scheduleItem of Object.values(scheduleItems)) {
29
- this.registerSchedule(scheduleItem);
30
- }
31
- }
32
- registerSchedule(scheduleItem) {
33
- const { key, schedule } = scheduleItem;
34
- const type = schedule.type;
35
- if (schedule.disable) {
36
- return;
37
- }
38
- // find Strategy by type
39
- const Strategy = this.#strategyClassMap.get(type);
40
- if (!Strategy) {
41
- const err = new Error(`schedule type [${type}] is not defined`);
42
- err.name = 'EggScheduleError';
43
- throw err;
44
- }
45
- // Initialize strategy and register
46
- const instance = new Strategy(schedule, this.#agent, key);
47
- this.#strategyInstanceMap.set(key, instance);
48
- debug('registerSchedule type: %o, config: %o, key: %o', type, schedule, key);
49
- }
50
- unregisterSchedule(key) {
51
- debug('unregisterSchedule key: %o', key);
52
- return this.#strategyInstanceMap.delete(key);
53
- }
54
- /**
55
- * job finish event handler
56
- *
57
- * @param {Object} info - { id, key, success, message, workerId }
58
- */
59
- onJobFinish(info) {
60
- this.#logger.debug(`[Job#${info.id}] ${info.key} finish event received by agent from worker#${info.workerId}`);
61
- const instance = this.#strategyInstanceMap.get(info.key);
62
- /* istanbul ignore else */
63
- if (instance) {
64
- instance.onJobFinish(info);
65
- }
66
- }
67
- /**
68
- * start schedule
69
- */
70
- start() {
71
- debug('start');
72
- this.closed = false;
73
- for (const instance of this.#strategyInstanceMap.values()) {
74
- instance.start();
75
- }
76
- }
77
- close() {
78
- this.closed = true;
79
- for (const instance of this.#strategyInstanceMap.values()) {
80
- instance.close();
81
- }
82
- debug('close');
83
- }
84
- }
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3NjaGVkdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSWxELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0FBRXZELE1BQU0sT0FBTyxRQUFRO0lBQ25CLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFFZixNQUFNLENBQVE7SUFDZCxPQUFPLENBQVk7SUFDbkIsaUJBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7SUFDM0Qsb0JBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7SUFFdkQsWUFBWSxLQUFZO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsR0FBRyxDQUFDLElBQVksRUFBRSxHQUF3QjtRQUN4QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxLQUFLLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxJQUFJO1FBQ1IsTUFBTSxhQUFhLEdBQUcsTUFBTSxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELEtBQUssTUFBTSxZQUFZLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLFlBQTZCO1FBQzVDLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsWUFBWSxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDckIsT0FBTztRQUNULENBQUM7UUFFRCx3QkFBd0I7UUFDeEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFLLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxrQkFBa0IsQ0FBQyxDQUFDO1lBQ2hFLEdBQUcsQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUM7WUFDOUIsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO1FBRUQsbUNBQW1DO1FBQ25DLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLEtBQUssQ0FBQyxnREFBZ0QsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxHQUFXO1FBQzVCLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN6QyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXLENBQUMsSUFBd0I7UUFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLCtDQUErQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMvRyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6RCwwQkFBMEI7UUFDMUIsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzFELFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzFELFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixDQUFDO1FBQ0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7Q0FDRiJ9
@@ -1,10 +0,0 @@
1
- import type { Application } from 'egg';
2
- import type { EggScheduleItem } from './types.js';
3
- export declare class ScheduleWorker {
4
- #private;
5
- scheduleItems: Record<string, EggScheduleItem>;
6
- constructor(app: Application);
7
- init(): Promise<void>;
8
- registerSchedule(scheduleItem: EggScheduleItem): void;
9
- unregisterSchedule(key: string): void;
10
- }
@@ -1,18 +0,0 @@
1
- import { loadSchedule } from './load_schedule.js';
2
- export class ScheduleWorker {
3
- #app;
4
- scheduleItems = {};
5
- constructor(app) {
6
- this.#app = app;
7
- }
8
- async init() {
9
- this.scheduleItems = await loadSchedule(this.#app);
10
- }
11
- registerSchedule(scheduleItem) {
12
- this.scheduleItems[scheduleItem.key] = scheduleItem;
13
- }
14
- unregisterSchedule(key) {
15
- delete this.scheduleItems[key];
16
- }
17
- }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVfd29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zY2hlZHVsZV93b3JrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR2xELE1BQU0sT0FBTyxjQUFjO0lBQ3pCLElBQUksQ0FBYztJQUNsQixhQUFhLEdBQW9DLEVBQUUsQ0FBQztJQUVwRCxZQUFZLEdBQWdCO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxZQUE2QjtRQUM1QyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUM7SUFDdEQsQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQVc7UUFDNUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Q0FDRiJ9
@@ -1,4 +0,0 @@
1
- import { TimerStrategy } from './timer.js';
2
- export declare class AllStrategy extends TimerStrategy {
3
- handler(): void;
4
- }
@@ -1,7 +0,0 @@
1
- import { TimerStrategy } from './timer.js';
2
- export class AllStrategy extends TimerStrategy {
3
- handler() {
4
- this.sendAll();
5
- }
6
- }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zdHJhdGVneS9hbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUzQyxNQUFNLE9BQU8sV0FBWSxTQUFRLGFBQWE7SUFDNUMsT0FBTztRQUNMLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0NBQ0YifQ==
@@ -1,30 +0,0 @@
1
- import type { Agent, EggLogger } from 'egg';
2
- import type { EggScheduleConfig, EggScheduleJobInfo } from '../types.js';
3
- export declare class BaseStrategy {
4
- protected agent: Agent;
5
- protected scheduleConfig: EggScheduleConfig;
6
- protected key: string;
7
- protected logger: EggLogger;
8
- protected closed: boolean;
9
- count: number;
10
- constructor(scheduleConfig: EggScheduleConfig, agent: Agent, key: string);
11
- /** keep compatibility */
12
- get schedule(): EggScheduleConfig;
13
- start(): void;
14
- close(): void;
15
- onJobStart(_info: EggScheduleJobInfo): void;
16
- onJobFinish(_info: EggScheduleJobInfo): void;
17
- /**
18
- * trigger one worker
19
- *
20
- * @param {...any} args - pass to job task
21
- */
22
- sendOne(...args: any[]): void;
23
- /**
24
- * trigger all worker
25
- *
26
- * @param {...any} args - pass to job task
27
- */
28
- sendAll(...args: any[]): void;
29
- getSeqId(): string;
30
- }