UNPKG

@eggjs/schedule

Version:

schedule plugin for egg, support corn job.

71 lines 6.71 kB
"use strict"; 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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