UNPKG

@fellas/adonisjs-resque

Version:
54 lines (53 loc) 1.4 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; } if (typeof job?.prototype?.then !== "function") { return false; } return true; }; const Jobs = Object.values(jobs).filter(isValidJob); return Jobs.reduce((accumulator, Job) => { const job = new 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; }, {}); } export { importAllJobs }; //# sourceMappingURL=chunk-NKW4PRQD.js.map