@eggjs/schedule 5.0.2 → 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.
- package/README.md +6 -12
- package/dist/agent.d.ts +13 -0
- package/dist/agent.js +32 -0
- package/dist/app/extend/agent.d.ts +22 -0
- package/dist/app/extend/agent.js +32 -0
- package/dist/app/extend/application.d.ts +16 -0
- package/dist/app/extend/application.js +18 -0
- package/dist/app/extend/application.unittest.d.ts +13 -0
- package/dist/app/extend/application.unittest.js +43 -0
- package/dist/app.d.ts +11 -0
- package/dist/app.js +69 -0
- package/dist/config/config.default.d.ts +6 -0
- package/dist/config/config.default.js +13 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +7 -0
- package/dist/lib/load_schedule.d.ts +7 -0
- package/dist/lib/load_schedule.js +61 -0
- package/dist/lib/schedule.d.ts +35 -0
- package/dist/lib/schedule.js +77 -0
- package/dist/lib/schedule_worker.d.ts +14 -0
- package/dist/lib/schedule_worker.js +22 -0
- package/dist/lib/strategy/all.d.ts +8 -0
- package/dist/lib/strategy/all.js +11 -0
- package/dist/lib/strategy/base.d.ts +35 -0
- package/dist/lib/strategy/base.js +73 -0
- package/dist/lib/strategy/timer.d.ts +24 -0
- package/dist/lib/strategy/timer.js +71 -0
- package/dist/lib/strategy/worker.d.ts +8 -0
- package/dist/lib/strategy/worker.js +11 -0
- package/dist/lib/types.d.ts +44 -0
- package/dist/lib/types.js +1 -0
- package/package.json +51 -55
- package/dist/commonjs/agent.d.ts +0 -7
- package/dist/commonjs/agent.js +0 -32
- package/dist/commonjs/app/extend/agent.d.ts +0 -2
- package/dist/commonjs/app/extend/agent.js +0 -29
- package/dist/commonjs/app/extend/application.d.ts +0 -2
- package/dist/commonjs/app/extend/application.js +0 -16
- package/dist/commonjs/app/extend/application.unittest.d.ts +0 -2
- package/dist/commonjs/app/extend/application.unittest.js +0 -58
- package/dist/commonjs/app.d.ts +0 -6
- package/dist/commonjs/app.js +0 -80
- package/dist/commonjs/config/config.default.d.ts +0 -2
- package/dist/commonjs/config/config.default.js +0 -17
- package/dist/commonjs/index.d.ts +0 -1
- package/dist/commonjs/index.js +0 -18
- package/dist/commonjs/lib/load_schedule.d.ts +0 -3
- package/dist/commonjs/lib/load_schedule.js +0 -71
- package/dist/commonjs/lib/schedule.d.ts +0 -31
- package/dist/commonjs/lib/schedule.js +0 -89
- package/dist/commonjs/lib/schedule_worker.d.ts +0 -10
- package/dist/commonjs/lib/schedule_worker.js +0 -22
- package/dist/commonjs/lib/strategy/all.d.ts +0 -4
- package/dist/commonjs/lib/strategy/all.js +0 -11
- package/dist/commonjs/lib/strategy/base.d.ts +0 -30
- package/dist/commonjs/lib/strategy/base.js +0 -79
- package/dist/commonjs/lib/strategy/timer.d.ts +0 -20
- package/dist/commonjs/lib/strategy/timer.js +0 -99
- package/dist/commonjs/lib/strategy/worker.d.ts +0 -4
- package/dist/commonjs/lib/strategy/worker.js +0 -11
- package/dist/commonjs/lib/types.d.ts +0 -53
- package/dist/commonjs/lib/types.js +0 -3
- package/dist/commonjs/package.json +0 -3
- package/dist/esm/agent.d.ts +0 -7
- package/dist/esm/agent.js +0 -29
- package/dist/esm/app/extend/agent.d.ts +0 -2
- package/dist/esm/app/extend/agent.js +0 -27
- package/dist/esm/app/extend/application.d.ts +0 -2
- package/dist/esm/app/extend/application.js +0 -14
- package/dist/esm/app/extend/application.unittest.d.ts +0 -2
- package/dist/esm/app/extend/application.unittest.js +0 -53
- package/dist/esm/app.d.ts +0 -6
- package/dist/esm/app.js +0 -77
- package/dist/esm/config/config.default.d.ts +0 -2
- package/dist/esm/config/config.default.js +0 -15
- package/dist/esm/index.d.ts +0 -1
- package/dist/esm/index.js +0 -2
- package/dist/esm/lib/load_schedule.d.ts +0 -3
- package/dist/esm/lib/load_schedule.js +0 -65
- package/dist/esm/lib/schedule.d.ts +0 -31
- package/dist/esm/lib/schedule.js +0 -85
- package/dist/esm/lib/schedule_worker.d.ts +0 -10
- package/dist/esm/lib/schedule_worker.js +0 -18
- package/dist/esm/lib/strategy/all.d.ts +0 -4
- package/dist/esm/lib/strategy/all.js +0 -7
- package/dist/esm/lib/strategy/base.d.ts +0 -30
- package/dist/esm/lib/strategy/base.js +0 -75
- package/dist/esm/lib/strategy/timer.d.ts +0 -20
- package/dist/esm/lib/strategy/timer.js +0 -92
- package/dist/esm/lib/strategy/worker.d.ts +0 -4
- package/dist/esm/lib/strategy/worker.js +0 -7
- package/dist/esm/lib/types.d.ts +0 -53
- package/dist/esm/lib/types.js +0 -2
- package/dist/esm/package.json +0 -3
- package/dist/package.json +0 -4
- package/src/agent.ts +0 -36
- package/src/app/extend/agent.ts +0 -30
- package/src/app/extend/application.ts +0 -16
- package/src/app/extend/application.unittest.ts +0 -57
- package/src/app.ts +0 -92
- package/src/config/config.default.ts +0 -17
- package/src/index.ts +0 -1
- package/src/lib/load_schedule.ts +0 -74
- package/src/lib/schedule.ts +0 -100
- package/src/lib/schedule_worker.ts +0 -24
- package/src/lib/strategy/all.ts +0 -7
- package/src/lib/strategy/base.ts +0 -91
- package/src/lib/strategy/timer.ts +0 -107
- package/src/lib/strategy/worker.ts +0 -7
- package/src/lib/types.ts +0 -58
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.default = () => {
|
|
4
|
-
const config = {};
|
|
5
|
-
config.customLogger = {
|
|
6
|
-
scheduleLogger: {
|
|
7
|
-
consoleLevel: 'NONE',
|
|
8
|
-
file: 'egg-schedule.log',
|
|
9
|
-
},
|
|
10
|
-
};
|
|
11
|
-
config.schedule = {
|
|
12
|
-
// custom additional directory, full path
|
|
13
|
-
directory: [],
|
|
14
|
-
};
|
|
15
|
-
return config;
|
|
16
|
-
};
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmRlZmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29uZmlnL2NvbmZpZy5kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsa0JBQWUsR0FBRyxFQUFFO0lBQ2xCLE1BQU0sTUFBTSxHQUFHLEVBQXlCLENBQUM7SUFFekMsTUFBTSxDQUFDLFlBQVksR0FBRztRQUNwQixjQUFjLEVBQUU7WUFDZCxZQUFZLEVBQUUsTUFBTTtZQUNwQixJQUFJLEVBQUUsa0JBQWtCO1NBQ3pCO0tBQ0YsQ0FBQztJQUVGLE1BQU0sQ0FBQyxRQUFRLEdBQUc7UUFDaEIseUNBQXlDO1FBQ3pDLFNBQVMsRUFBRSxFQUFFO0tBQ2QsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyJ9
|
package/dist/commonjs/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './lib/types.js';
|
package/dist/commonjs/index.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./lib/types.js"), exports);
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUErQiJ9
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.loadSchedule = loadSchedule;
|
|
7
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
-
const node_assert_1 = __importDefault(require("node:assert"));
|
|
9
|
-
const node_querystring_1 = require("node:querystring");
|
|
10
|
-
const is_type_of_1 = require("is-type-of");
|
|
11
|
-
const utils_1 = require("@eggjs/utils");
|
|
12
|
-
function getScheduleLoader(app) {
|
|
13
|
-
return class ScheduleLoader extends app.loader.FileLoader {
|
|
14
|
-
async load() {
|
|
15
|
-
const target = this.options.target;
|
|
16
|
-
const items = await this.parse();
|
|
17
|
-
for (const item of items) {
|
|
18
|
-
const schedule = item.exports;
|
|
19
|
-
const fullpath = item.fullpath;
|
|
20
|
-
const scheduleConfig = schedule.schedule;
|
|
21
|
-
(0, node_assert_1.default)(scheduleConfig, `schedule(${fullpath}): must have "schedule" and "task" properties`);
|
|
22
|
-
(0, node_assert_1.default)((0, is_type_of_1.isClass)(schedule) || (0, is_type_of_1.isFunction)(schedule.task), `schedule(${fullpath}: \`schedule.task\` should be function or \`schedule\` should be class`);
|
|
23
|
-
let task;
|
|
24
|
-
if ((0, is_type_of_1.isClass)(schedule)) {
|
|
25
|
-
(0, node_assert_1.default)(!(0, is_type_of_1.isGeneratorFunction)(schedule.prototype.subscribe), `schedule(${fullpath}): "schedule" generator function is not support, should use async function instead`);
|
|
26
|
-
task = async (ctx, ...args) => {
|
|
27
|
-
const instance = new schedule(ctx);
|
|
28
|
-
// s.subscribe = app.toAsyncFunction(s.subscribe);
|
|
29
|
-
return instance.subscribe(...args);
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
(0, node_assert_1.default)(!(0, is_type_of_1.isGeneratorFunction)(schedule.task), `schedule(${fullpath}): "task" generator function is not support, should use async function instead`);
|
|
34
|
-
task = schedule.task;
|
|
35
|
-
// task = app.toAsyncFunction(schedule.task);
|
|
36
|
-
}
|
|
37
|
-
const env = app.config.env;
|
|
38
|
-
const envList = schedule.schedule.env;
|
|
39
|
-
if (Array.isArray(envList) && !envList.includes(env)) {
|
|
40
|
-
app.coreLogger.info(`[@eggjs/schedule]: ignore schedule ${fullpath} due to \`schedule.env\` not match`);
|
|
41
|
-
continue;
|
|
42
|
-
}
|
|
43
|
-
// handle symlink case
|
|
44
|
-
const realFullpath = (0, utils_1.importResolve)(fullpath);
|
|
45
|
-
target[realFullpath] = {
|
|
46
|
-
schedule: scheduleConfig,
|
|
47
|
-
scheduleQueryString: (0, node_querystring_1.stringify)(scheduleConfig),
|
|
48
|
-
task,
|
|
49
|
-
key: realFullpath,
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
return target;
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
async function loadSchedule(app) {
|
|
57
|
-
const dirs = [
|
|
58
|
-
...app.loader.getLoadUnits().map(unit => node_path_1.default.join(unit.path, 'app/schedule')),
|
|
59
|
-
...app.config.schedule.directory,
|
|
60
|
-
];
|
|
61
|
-
const Loader = getScheduleLoader(app);
|
|
62
|
-
const schedules = {};
|
|
63
|
-
await new Loader({
|
|
64
|
-
directory: dirs,
|
|
65
|
-
target: schedules,
|
|
66
|
-
inject: app,
|
|
67
|
-
}).load();
|
|
68
|
-
Reflect.set(app, 'schedules', schedules);
|
|
69
|
-
return schedules;
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZF9zY2hlZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbG9hZF9zY2hlZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQTBEQSxvQ0FlQztBQXpFRCwwREFBNkI7QUFDN0IsOERBQWlDO0FBQ2pDLHVEQUE2QztBQUM3QywyQ0FBc0U7QUFDdEUsd0NBQTZDO0FBSTdDLFNBQVMsaUJBQWlCLENBQUMsR0FBdUI7SUFDaEQsT0FBTyxNQUFNLGNBQWUsU0FBUSxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVU7UUFDdkQsS0FBSyxDQUFDLElBQUk7WUFDUixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQXlDLENBQUM7WUFDdEUsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDekIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQWlFLENBQUM7Z0JBQ3hGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQy9CLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7Z0JBQ3pDLElBQUEscUJBQU0sRUFBQyxjQUFjLEVBQUUsWUFBWSxRQUFRLCtDQUErQyxDQUFDLENBQUM7Z0JBQzVGLElBQUEscUJBQU0sRUFBQyxJQUFBLG9CQUFPLEVBQUMsUUFBUSxDQUFDLElBQUksSUFBQSx1QkFBVSxFQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFDbkQsWUFBWSxRQUFRLHdFQUF3RSxDQUFDLENBQUM7Z0JBRWhHLElBQUksSUFBcUIsQ0FBQztnQkFDMUIsSUFBSSxJQUFBLG9CQUFPLEVBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDdEIsSUFBQSxxQkFBTSxFQUFDLENBQUMsSUFBQSxnQ0FBbUIsRUFBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUN2RCxZQUFZLFFBQVEsb0ZBQW9GLENBQUMsQ0FBQztvQkFDNUcsSUFBSSxHQUFHLEtBQUssRUFBRSxHQUFlLEVBQUUsR0FBRyxJQUFXLEVBQUUsRUFBRTt3QkFDL0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ25DLGtEQUFrRDt3QkFDbEQsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7b0JBQ3JDLENBQUMsQ0FBQztnQkFDSixDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBQSxxQkFBTSxFQUFDLENBQUMsSUFBQSxnQ0FBbUIsRUFBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQ3hDLFlBQVksUUFBUSxnRkFBZ0YsQ0FBQyxDQUFDO29CQUN4RyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztvQkFDckIsNkNBQTZDO2dCQUMvQyxDQUFDO2dCQUVELE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO2dCQUMzQixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztnQkFDdEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNyRCxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsUUFBUSxvQ0FBb0MsQ0FBQyxDQUFDO29CQUN4RyxTQUFTO2dCQUNYLENBQUM7Z0JBRUQsc0JBQXNCO2dCQUN0QixNQUFNLFlBQVksR0FBRyxJQUFBLHFCQUFhLEVBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzdDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRztvQkFDckIsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLG1CQUFtQixFQUFFLElBQUEsNEJBQVMsRUFBQyxjQUFxQixDQUFDO29CQUNyRCxJQUFJO29CQUNKLEdBQUcsRUFBRSxZQUFZO2lCQUNsQixDQUFDO1lBQ0osQ0FBQztZQUNELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVNLEtBQUssVUFBVSxZQUFZLENBQUMsR0FBdUI7SUFDeEQsTUFBTSxJQUFJLEdBQUc7UUFDWCxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztRQUM5RSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVM7S0FDakMsQ0FBQztJQUVGLE1BQU0sTUFBTSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sU0FBUyxHQUFHLEVBQXFDLENBQUM7SUFDeEQsTUFBTSxJQUFJLE1BQU0sQ0FBQztRQUNmLFNBQVMsRUFBRSxJQUFJO1FBQ2YsTUFBTSxFQUFFLFNBQVM7UUFDakIsTUFBTSxFQUFFLEdBQUc7S0FDWixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDekMsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyJ9
|
|
@@ -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,89 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Schedule = void 0;
|
|
4
|
-
const node_util_1 = require("node:util");
|
|
5
|
-
const load_schedule_js_1 = require("./load_schedule.js");
|
|
6
|
-
const debug = (0, node_util_1.debuglog)('@eggjs/schedule/lib/schedule');
|
|
7
|
-
class Schedule {
|
|
8
|
-
closed = false;
|
|
9
|
-
#agent;
|
|
10
|
-
#logger;
|
|
11
|
-
#strategyClassMap = new Map();
|
|
12
|
-
#strategyInstanceMap = new Map();
|
|
13
|
-
constructor(agent) {
|
|
14
|
-
this.#agent = agent;
|
|
15
|
-
this.#logger = agent.getLogger('scheduleLogger');
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* register a custom Schedule Strategy
|
|
19
|
-
* @param {String} type - strategy type
|
|
20
|
-
* @param {Strategy} clz - Strategy class
|
|
21
|
-
*/
|
|
22
|
-
use(type, clz) {
|
|
23
|
-
this.#strategyClassMap.set(type, clz);
|
|
24
|
-
debug('use type: %o', type);
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* load all schedule jobs, then initialize and register speical strategy
|
|
28
|
-
*/
|
|
29
|
-
async init() {
|
|
30
|
-
const scheduleItems = await (0, load_schedule_js_1.loadSchedule)(this.#agent);
|
|
31
|
-
for (const scheduleItem of Object.values(scheduleItems)) {
|
|
32
|
-
this.registerSchedule(scheduleItem);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
registerSchedule(scheduleItem) {
|
|
36
|
-
const { key, schedule } = scheduleItem;
|
|
37
|
-
const type = schedule.type;
|
|
38
|
-
if (schedule.disable) {
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
// find Strategy by type
|
|
42
|
-
const Strategy = this.#strategyClassMap.get(type);
|
|
43
|
-
if (!Strategy) {
|
|
44
|
-
const err = new Error(`schedule type [${type}] is not defined`);
|
|
45
|
-
err.name = 'EggScheduleError';
|
|
46
|
-
throw err;
|
|
47
|
-
}
|
|
48
|
-
// Initialize strategy and register
|
|
49
|
-
const instance = new Strategy(schedule, this.#agent, key);
|
|
50
|
-
this.#strategyInstanceMap.set(key, instance);
|
|
51
|
-
debug('registerSchedule type: %o, config: %o, key: %o', type, schedule, key);
|
|
52
|
-
}
|
|
53
|
-
unregisterSchedule(key) {
|
|
54
|
-
debug('unregisterSchedule key: %o', key);
|
|
55
|
-
return this.#strategyInstanceMap.delete(key);
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* job finish event handler
|
|
59
|
-
*
|
|
60
|
-
* @param {Object} info - { id, key, success, message, workerId }
|
|
61
|
-
*/
|
|
62
|
-
onJobFinish(info) {
|
|
63
|
-
this.#logger.debug(`[Job#${info.id}] ${info.key} finish event received by agent from worker#${info.workerId}`);
|
|
64
|
-
const instance = this.#strategyInstanceMap.get(info.key);
|
|
65
|
-
/* istanbul ignore else */
|
|
66
|
-
if (instance) {
|
|
67
|
-
instance.onJobFinish(info);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* start schedule
|
|
72
|
-
*/
|
|
73
|
-
start() {
|
|
74
|
-
debug('start');
|
|
75
|
-
this.closed = false;
|
|
76
|
-
for (const instance of this.#strategyInstanceMap.values()) {
|
|
77
|
-
instance.start();
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
close() {
|
|
81
|
-
this.closed = true;
|
|
82
|
-
for (const instance of this.#strategyInstanceMap.values()) {
|
|
83
|
-
instance.close();
|
|
84
|
-
}
|
|
85
|
-
debug('close');
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
exports.Schedule = Schedule;
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3NjaGVkdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUFxQztBQUVyQyx5REFBa0Q7QUFJbEQsTUFBTSxLQUFLLEdBQUcsSUFBQSxvQkFBUSxFQUFDLDhCQUE4QixDQUFDLENBQUM7QUFFdkQsTUFBYSxRQUFRO0lBQ25CLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFFZixNQUFNLENBQVE7SUFDZCxPQUFPLENBQVk7SUFDbkIsaUJBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7SUFDM0Qsb0JBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7SUFFdkQsWUFBWSxLQUFZO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsR0FBRyxDQUFDLElBQVksRUFBRSxHQUF3QjtRQUN4QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxLQUFLLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxJQUFJO1FBQ1IsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFBLCtCQUFZLEVBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELEtBQUssTUFBTSxZQUFZLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLFlBQTZCO1FBQzVDLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsWUFBWSxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDckIsT0FBTztRQUNULENBQUM7UUFFRCx3QkFBd0I7UUFDeEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFLLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxrQkFBa0IsQ0FBQyxDQUFDO1lBQ2hFLEdBQUcsQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUM7WUFDOUIsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO1FBRUQsbUNBQW1DO1FBQ25DLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzdDLEtBQUssQ0FBQyxnREFBZ0QsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxHQUFXO1FBQzVCLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN6QyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXLENBQUMsSUFBd0I7UUFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLCtDQUErQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMvRyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6RCwwQkFBMEI7UUFDMUIsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzFELFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzFELFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixDQUFDO1FBQ0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQTNGRCw0QkEyRkMifQ==
|
|
@@ -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,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ScheduleWorker = void 0;
|
|
4
|
-
const load_schedule_js_1 = require("./load_schedule.js");
|
|
5
|
-
class ScheduleWorker {
|
|
6
|
-
#app;
|
|
7
|
-
scheduleItems = {};
|
|
8
|
-
constructor(app) {
|
|
9
|
-
this.#app = app;
|
|
10
|
-
}
|
|
11
|
-
async init() {
|
|
12
|
-
this.scheduleItems = await (0, load_schedule_js_1.loadSchedule)(this.#app);
|
|
13
|
-
}
|
|
14
|
-
registerSchedule(scheduleItem) {
|
|
15
|
-
this.scheduleItems[scheduleItem.key] = scheduleItem;
|
|
16
|
-
}
|
|
17
|
-
unregisterSchedule(key) {
|
|
18
|
-
delete this.scheduleItems[key];
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
exports.ScheduleWorker = ScheduleWorker;
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZWR1bGVfd29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zY2hlZHVsZV93b3JrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseURBQWtEO0FBR2xELE1BQWEsY0FBYztJQUN6QixJQUFJLENBQWM7SUFDbEIsYUFBYSxHQUFvQyxFQUFFLENBQUM7SUFFcEQsWUFBWSxHQUFnQjtRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sSUFBQSwrQkFBWSxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsWUFBNkI7UUFDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDO0lBQ3RELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxHQUFXO1FBQzVCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFuQkQsd0NBbUJDIn0=
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AllStrategy = void 0;
|
|
4
|
-
const timer_js_1 = require("./timer.js");
|
|
5
|
-
class AllStrategy extends timer_js_1.TimerStrategy {
|
|
6
|
-
handler() {
|
|
7
|
-
this.sendAll();
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
exports.AllStrategy = AllStrategy;
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zdHJhdGVneS9hbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQTJDO0FBRTNDLE1BQWEsV0FBWSxTQUFRLHdCQUFhO0lBQzVDLE9BQU87UUFDTCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBSkQsa0NBSUMifQ==
|
|
@@ -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
|
-
}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BaseStrategy = void 0;
|
|
4
|
-
class BaseStrategy {
|
|
5
|
-
agent;
|
|
6
|
-
scheduleConfig;
|
|
7
|
-
key;
|
|
8
|
-
logger;
|
|
9
|
-
closed = false;
|
|
10
|
-
count = 0;
|
|
11
|
-
constructor(scheduleConfig, agent, key) {
|
|
12
|
-
this.agent = agent;
|
|
13
|
-
this.key = key;
|
|
14
|
-
this.scheduleConfig = scheduleConfig;
|
|
15
|
-
this.logger = this.agent.getLogger('scheduleLogger');
|
|
16
|
-
}
|
|
17
|
-
/** keep compatibility */
|
|
18
|
-
get schedule() {
|
|
19
|
-
return this.scheduleConfig;
|
|
20
|
-
}
|
|
21
|
-
start() {
|
|
22
|
-
// empty loop by default
|
|
23
|
-
}
|
|
24
|
-
close() {
|
|
25
|
-
this.closed = true;
|
|
26
|
-
}
|
|
27
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
28
|
-
onJobStart(_info) { }
|
|
29
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
30
|
-
onJobFinish(_info) { }
|
|
31
|
-
/**
|
|
32
|
-
* trigger one worker
|
|
33
|
-
*
|
|
34
|
-
* @param {...any} args - pass to job task
|
|
35
|
-
*/
|
|
36
|
-
sendOne(...args) {
|
|
37
|
-
/* istanbul ignore next */
|
|
38
|
-
if (this.agent.schedule.closed) {
|
|
39
|
-
this.logger.warn(`${this.key} skip due to schedule closed`);
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
this.count++;
|
|
43
|
-
const info = {
|
|
44
|
-
key: this.key,
|
|
45
|
-
id: this.getSeqId(),
|
|
46
|
-
args,
|
|
47
|
-
};
|
|
48
|
-
this.logger.info(`[Job#${info.id}] ${info.key} triggered, send random by agent`);
|
|
49
|
-
this.agent.messenger.sendRandom('egg-schedule', info);
|
|
50
|
-
this.onJobStart(info);
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* trigger all worker
|
|
54
|
-
*
|
|
55
|
-
* @param {...any} args - pass to job task
|
|
56
|
-
*/
|
|
57
|
-
sendAll(...args) {
|
|
58
|
-
/* istanbul ignore next */
|
|
59
|
-
if (this.agent.schedule.closed) {
|
|
60
|
-
this.logger.warn(`${this.key} skip due to schedule closed`);
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
this.count++;
|
|
64
|
-
const info = {
|
|
65
|
-
key: this.key,
|
|
66
|
-
id: this.getSeqId(),
|
|
67
|
-
args,
|
|
68
|
-
};
|
|
69
|
-
this.logger.info(`[Job#${info.id}] ${info.key} triggered, send all by agent`);
|
|
70
|
-
// send to all workers
|
|
71
|
-
this.agent.messenger.send('egg-schedule', info);
|
|
72
|
-
this.onJobStart(info);
|
|
73
|
-
}
|
|
74
|
-
getSeqId() {
|
|
75
|
-
return `${Date.now()}${process.hrtime().join('')}${this.count}`;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
exports.BaseStrategy = BaseStrategy;
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc3RyYXRlZ3kvYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSxNQUFhLFlBQVk7SUFDYixLQUFLLENBQVE7SUFDYixjQUFjLENBQW9CO0lBQ2xDLEdBQUcsQ0FBUztJQUNaLE1BQU0sQ0FBWTtJQUNsQixNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLEtBQUssR0FBRyxDQUFDLENBQUM7SUFFVixZQUFZLGNBQWlDLEVBQUUsS0FBWSxFQUFFLEdBQVc7UUFDdEUsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELEtBQUs7UUFDSCx3QkFBd0I7SUFDMUIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsNkRBQTZEO0lBQzdELFVBQVUsQ0FBQyxLQUF5QixJQUFHLENBQUM7SUFFeEMsNkRBQTZEO0lBQzdELFdBQVcsQ0FBQyxLQUF5QixJQUFHLENBQUM7SUFFekM7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxHQUFHLElBQVc7UUFDcEIsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyw4QkFBOEIsQ0FBQyxDQUFDO1lBQzVELE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWIsTUFBTSxJQUFJLEdBQUc7WUFDWCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNuQixJQUFJO1NBQ2lCLENBQUM7UUFFeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLGtDQUFrQyxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLEdBQUcsSUFBVztRQUNwQiwwQkFBMEI7UUFDMUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLDhCQUE4QixDQUFDLENBQUM7WUFDNUQsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFYixNQUFNLElBQUksR0FBRztZQUNYLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ25CLElBQUk7U0FDaUIsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsK0JBQStCLENBQUMsQ0FBQztRQUM5RSxzQkFBc0I7UUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0NBQ0Y7QUF2RkQsb0NBdUZDIn0=
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { CronExpression } from 'cron-parser';
|
|
2
|
-
import safeTimers from 'safe-timers';
|
|
3
|
-
import type { Agent } from 'egg';
|
|
4
|
-
import type { EggScheduleConfig } from '../types.js';
|
|
5
|
-
import { BaseStrategy } from './base.js';
|
|
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(): 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;
|
|
20
|
-
}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.TimerStrategy = void 0;
|
|
7
|
-
const node_assert_1 = __importDefault(require("node:assert"));
|
|
8
|
-
const cron_parser_1 = __importDefault(require("cron-parser"));
|
|
9
|
-
const humanize_ms_1 = require("humanize-ms");
|
|
10
|
-
const safe_timers_1 = __importDefault(require("safe-timers"));
|
|
11
|
-
const utility_1 = require("utility");
|
|
12
|
-
const base_js_1 = require("./base.js");
|
|
13
|
-
class TimerStrategy extends base_js_1.BaseStrategy {
|
|
14
|
-
cronInstance;
|
|
15
|
-
constructor(scheduleConfig, agent, key) {
|
|
16
|
-
super(scheduleConfig, agent, key);
|
|
17
|
-
const { interval, cron, cronOptions, immediate } = this.scheduleConfig;
|
|
18
|
-
(0, node_assert_1.default)(interval || cron || immediate, `[@eggjs/schedule] ${this.key} \`schedule.interval\` or \`schedule.cron\` or \`schedule.immediate\` must be present`);
|
|
19
|
-
// init cron parser
|
|
20
|
-
if (cron) {
|
|
21
|
-
try {
|
|
22
|
-
this.cronInstance = cron_parser_1.default.parseExpression(cron, cronOptions);
|
|
23
|
-
}
|
|
24
|
-
catch (err) {
|
|
25
|
-
throw new TypeError(`[@eggjs/schedule] ${this.key} parse cron instruction(${cron}) error: ${err.message}`, { cause: err });
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
handler() {
|
|
30
|
-
throw new TypeError(`[@eggjs/schedule] ${this.key} strategy should override \`handler()\` method`);
|
|
31
|
-
}
|
|
32
|
-
start() {
|
|
33
|
-
/* istanbul ignore next */
|
|
34
|
-
if (this.agent.schedule.closed)
|
|
35
|
-
return;
|
|
36
|
-
if (this.scheduleConfig.immediate) {
|
|
37
|
-
this.logger.info(`[Timer] ${this.key} next time will execute immediate`);
|
|
38
|
-
setImmediate(() => this.handler());
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
this.#scheduleNext();
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
#scheduleNext() {
|
|
45
|
-
/* istanbul ignore next */
|
|
46
|
-
if (this.agent.schedule.closed)
|
|
47
|
-
return;
|
|
48
|
-
// get next tick
|
|
49
|
-
const nextTick = this.getNextTick();
|
|
50
|
-
if (nextTick) {
|
|
51
|
-
this.logger.info(`[Timer] ${this.key} next time will execute after ${nextTick}ms at ${(0, utility_1.logDate)(new Date(Date.now() + nextTick))}`);
|
|
52
|
-
this.safeTimeout(() => this.handler(), nextTick);
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
this.logger.info(`[Timer] ${this.key} reach endDate, will stop`);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
onJobStart() {
|
|
59
|
-
// Next execution will trigger task at a fix rate, regardless of its execution time.
|
|
60
|
-
this.#scheduleNext();
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* calculate next tick
|
|
64
|
-
*
|
|
65
|
-
* @return {Number|undefined} time interval, if out of range then return `undefined`
|
|
66
|
-
*/
|
|
67
|
-
getNextTick() {
|
|
68
|
-
// interval-style
|
|
69
|
-
if (this.scheduleConfig.interval) {
|
|
70
|
-
return (0, humanize_ms_1.ms)(this.scheduleConfig.interval);
|
|
71
|
-
}
|
|
72
|
-
// cron-style
|
|
73
|
-
if (this.cronInstance) {
|
|
74
|
-
// calculate next cron tick
|
|
75
|
-
const now = Date.now();
|
|
76
|
-
let nextTick;
|
|
77
|
-
// loop to find next feature time
|
|
78
|
-
do {
|
|
79
|
-
try {
|
|
80
|
-
const nextInterval = this.cronInstance.next();
|
|
81
|
-
nextTick = nextInterval.getTime();
|
|
82
|
-
}
|
|
83
|
-
catch (err) {
|
|
84
|
-
// Error: Out of the timespan range
|
|
85
|
-
this.logger.info(`[Timer] ${this.key} cron out of the timespan range, error: %s`, err);
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
} while (now >= nextTick);
|
|
89
|
-
return nextTick - now;
|
|
90
|
-
}
|
|
91
|
-
// won\'t run here
|
|
92
|
-
}
|
|
93
|
-
safeTimeout(handler, delay, ...args) {
|
|
94
|
-
const fn = delay < safe_timers_1.default.maxInterval ? setTimeout : safe_timers_1.default.setTimeout;
|
|
95
|
-
return fn(handler, delay, ...args);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
exports.TimerStrategy = TimerStrategy;
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3N0cmF0ZWd5L3RpbWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDhEQUFpQztBQUVqQyw4REFBcUM7QUFDckMsNkNBQWlDO0FBQ2pDLDhEQUFxQztBQUNyQyxxQ0FBa0M7QUFHbEMsdUNBQXlDO0FBRXpDLE1BQXNCLGFBQWMsU0FBUSxzQkFBWTtJQUM1QyxZQUFZLENBQWtCO0lBRXhDLFlBQVksY0FBaUMsRUFBRSxLQUFZLEVBQUUsR0FBVztRQUN0RSxLQUFLLENBQUMsY0FBYyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVsQyxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUN2RSxJQUFBLHFCQUFNLEVBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxTQUFTLEVBQ2xDLHFCQUFxQixJQUFJLENBQUMsR0FBRyx1RkFBdUYsQ0FBQyxDQUFDO1FBRXhILG1CQUFtQjtRQUNuQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDO2dCQUNILElBQUksQ0FBQyxZQUFZLEdBQUcscUJBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO2dCQUNsQixNQUFNLElBQUksU0FBUyxDQUNqQixxQkFBcUIsSUFBSSxDQUFDLEdBQUcsMkJBQTJCLElBQUksWUFBWSxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQ3JGLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDcEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRVMsT0FBTztRQUNmLE1BQU0sSUFBSSxTQUFTLENBQUMscUJBQXFCLElBQUksQ0FBQyxHQUFHLGdEQUFnRCxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUdELEtBQUs7UUFDSCwwQkFBMEI7UUFDMUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUV2QyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsR0FBRyxtQ0FBbUMsQ0FBQyxDQUFDO1lBQ3pFLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNyQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWE7UUFDWCwwQkFBMEI7UUFDMUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUV2QyxnQkFBZ0I7UUFDaEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDZCxXQUFXLElBQUksQ0FBQyxHQUFHLGlDQUFpQyxRQUFRLFNBQVMsSUFBQSxpQkFBTyxFQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuSCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNuRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLEdBQUcsMkJBQTJCLENBQUMsQ0FBQztRQUNuRSxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixvRkFBb0Y7UUFDcEYsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sV0FBVztRQUNuQixpQkFBaUI7UUFDakIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sSUFBQSxnQkFBRSxFQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELGFBQWE7UUFDYixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QiwyQkFBMkI7WUFDM0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLElBQUksUUFBZ0IsQ0FBQztZQUVyQixpQ0FBaUM7WUFDakMsR0FBRyxDQUFDO2dCQUNGLElBQUksQ0FBQztvQkFDSCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUM5QyxRQUFRLEdBQUcsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNwQyxDQUFDO2dCQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7b0JBQ2IsbUNBQW1DO29CQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxHQUFHLDRDQUE0QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUN2RixPQUFPO2dCQUNULENBQUM7WUFDSCxDQUFDLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRTtZQUMxQixPQUFPLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFDeEIsQ0FBQztRQUNELGtCQUFrQjtJQUNwQixDQUFDO0lBRVMsV0FBVyxDQUFDLE9BQW1CLEVBQUUsS0FBYSxFQUFFLEdBQUcsSUFBVztRQUN0RSxNQUFNLEVBQUUsR0FBRyxLQUFLLEdBQUcscUJBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMscUJBQVUsQ0FBQyxVQUFVLENBQUM7UUFDL0UsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7Q0FDRjtBQWhHRCxzQ0FnR0MifQ==
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WorkerStrategy = void 0;
|
|
4
|
-
const timer_js_1 = require("./timer.js");
|
|
5
|
-
class WorkerStrategy extends timer_js_1.TimerStrategy {
|
|
6
|
-
handler() {
|
|
7
|
-
this.sendOne();
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
exports.WorkerStrategy = WorkerStrategy;
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zdHJhdGVneS93b3JrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQTJDO0FBRTNDLE1BQWEsY0FBZSxTQUFRLHdCQUFhO0lBQy9DLE9BQU87UUFDTCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztDQUNGO0FBSkQsd0NBSUMifQ==
|
|
@@ -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==
|