UNPKG

adonis-resque

Version:
52 lines (51 loc) 1.42 kB
// jobs.ts import app from "@adonisjs/core/services/app"; import { fsImportAll } from "@poppinss/utils"; async function importAllJobs() { const jobs = await fsImportAll(app.makePath("app/jobs"), { ignoreMissingRoot: true }); const isValidJob = (job) => { if (!job) { return false; } if (typeof job?.prototype?.perform !== "function") { return false; } if (typeof job?.prototype?.enqueue !== "function") { return false; } return true; }; const Jobs = Object.values(jobs).filter(isValidJob); return Jobs.reduce(async (initlizedAccumulator, Job) => { let accumulator = await initlizedAccumulator; const job = await app.container.make(Job); if (!Array.isArray(job.plugins)) { job.plugins = []; } const plugins = job.plugins.map(([plugin]) => plugin); const pluginOptions = job.plugins.reduce((acc, [plugin, options]) => { acc[plugin.name] = options; return acc; }, {}); accumulator[Job.name] = { perform: async (...args) => { try { const jobResult = await job.perform.call(job, ...args); return jobResult; } catch (error) { return job.handleError.call(job, error); } }, job, plugins, pluginOptions }; return accumulator; }, Promise.resolve({})); } export { importAllJobs }; //# sourceMappingURL=chunk-TOHLWYYX.js.map