UNPKG

fastify-cron

Version:

Run cron jobs alongside your Fastify server

50 lines (49 loc) 1.77 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const cron_1 = require("cron"); const fastify_plugin_1 = __importDefault(require("fastify-plugin")); const plugin = async function fastifyCronPlugin(server, opts) { const decorator = { jobs: [], createJob: function createJob(params) { const innerParams = { ...params, onTick: () => params.onTick(server), onComplete: () => typeof params.onComplete === 'function' ? () => params.onComplete(server) : undefined }; const job = Object.assign(new cron_1.CronJob(innerParams), { name: params.name }); if (params.startWhenReady === true) { server.ready(() => job.start()); } decorator.jobs.push(job); return job; }, getJobByName: function getJobByName(name) { return decorator.jobs.find(j => j.name === name); }, startAllJobs: function startAllJobs() { decorator.jobs.forEach(job => job.start()); }, stopAllJobs: function stopAllJobs() { decorator.jobs.forEach(job => job.stop()); } }; for (const params of opts.jobs || []) { if (params) { decorator.createJob(params); } } server.decorate('cron', decorator); server.addHook('onClose', () => decorator.stopAllJobs()); }; exports.default = (0, fastify_plugin_1.default)(plugin, { name: 'fastify-cron', fastify: '4.x || 5.x' });