@eggjs/schedule
Version:
schedule plugin for egg, support corn job.
71 lines • 6.71 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.loadSchedule = loadSchedule;
const node_path_1 = __importDefault(require("node:path"));
const node_assert_1 = __importDefault(require("node:assert"));
const node_querystring_1 = require("node:querystring");
const is_type_of_1 = require("is-type-of");
const utils_1 = require("@eggjs/utils");
function getScheduleLoader(app) {
return class ScheduleLoader extends app.loader.FileLoader {
async load() {
const target = this.options.target;
const items = await this.parse();
for (const item of items) {
const schedule = item.exports;
const fullpath = item.fullpath;
const scheduleConfig = schedule.schedule;
(0, node_assert_1.default)(scheduleConfig, `schedule(${fullpath}): must have "schedule" and "task" properties`);
(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`);
let task;
if ((0, is_type_of_1.isClass)(schedule)) {
(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`);
task = async (ctx, ...args) => {
const instance = new schedule(ctx);
// s.subscribe = app.toAsyncFunction(s.subscribe);
return instance.subscribe(...args);
};
}
else {
(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`);
task = schedule.task;
// task = app.toAsyncFunction(schedule.task);
}
const env = app.config.env;
const envList = schedule.schedule.env;
if (Array.isArray(envList) && !envList.includes(env)) {
app.coreLogger.info(`[@eggjs/schedule]: ignore schedule ${fullpath} due to \`schedule.env\` not match`);
continue;
}
// handle symlink case
const realFullpath = (0, utils_1.importResolve)(fullpath);
target[realFullpath] = {
schedule: scheduleConfig,
scheduleQueryString: (0, node_querystring_1.stringify)(scheduleConfig),
task,
key: realFullpath,
};
}
return target;
}
};
}
async function loadSchedule(app) {
const dirs = [
...app.loader.getLoadUnits().map(unit => node_path_1.default.join(unit.path, 'app/schedule')),
...app.config.schedule.directory,
];
const Loader = getScheduleLoader(app);
const schedules = {};
await new Loader({
directory: dirs,
target: schedules,
inject: app,
}).load();
Reflect.set(app, 'schedules', schedules);
return schedules;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZF9zY2hlZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbG9hZF9zY2hlZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQTBEQSxvQ0FlQztBQXpFRCwwREFBNkI7QUFDN0IsOERBQWlDO0FBQ2pDLHVEQUE2QztBQUM3QywyQ0FBc0U7QUFDdEUsd0NBQTZDO0FBSTdDLFNBQVMsaUJBQWlCLENBQUMsR0FBdUI7SUFDaEQsT0FBTyxNQUFNLGNBQWUsU0FBUSxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVU7UUFDdkQsS0FBSyxDQUFDLElBQUk7WUFDUixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQXlDLENBQUM7WUFDdEUsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDekIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQWlFLENBQUM7Z0JBQ3hGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQy9CLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7Z0JBQ3pDLElBQUEscUJBQU0sRUFBQyxjQUFjLEVBQUUsWUFBWSxRQUFRLCtDQUErQyxDQUFDLENBQUM7Z0JBQzVGLElBQUEscUJBQU0sRUFBQyxJQUFBLG9CQUFPLEVBQUMsUUFBUSxDQUFDLElBQUksSUFBQSx1QkFBVSxFQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFDbkQsWUFBWSxRQUFRLHdFQUF3RSxDQUFDLENBQUM7Z0JBRWhHLElBQUksSUFBcUIsQ0FBQztnQkFDMUIsSUFBSSxJQUFBLG9CQUFPLEVBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDdEIsSUFBQSxxQkFBTSxFQUFDLENBQUMsSUFBQSxnQ0FBbUIsRUFBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFNB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