UNPKG

express-post-task-scheduler

Version:

A lightweight npm package to create and manage scheduled tasks using Express middleware. Configure tasks via POST requests and execute them at specified times seamlessly.

83 lines (82 loc) 3.06 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.DB = void 0; exports.postTaskScheduler = postTaskScheduler; exports.setTasks = setTasks; const express_1 = __importStar(require("express")); const dotenv_1 = require("dotenv"); const task_1 = require("./routes/task"); const jsonResponse_1 = require("./middleware/jsonResponse"); const secretGuard_1 = require("./middleware/secretGuard"); const tasks_1 = require("./tasks"); const db_1 = require("./utils/db"); Object.defineProperty(exports, "DB", { enumerable: true, get: function () { return db_1.DB; } }); const record_1 = require("./routes/record"); (0, dotenv_1.config)(); /** * To return the instance includes endpoint for schedule tasks and secret validate middleware * @param route The prefix of express route, default value is /scheduler */ function postTaskScheduler(route = "/scheduler") { return (req, res, next) => { try { const router = (0, express_1.Router)(); db_1.DB.init().loadUnfinshedTasks(); // Register Middleware router.use(express_1.default.json()); router.use(jsonResponse_1.jsonResponse); router.use(secretGuard_1.secretGuard); router.use(route, task_1.taskRoutes); router.use(route, record_1.recordRoutes); router(req, res, next); } catch (e) { next(e); } }; } /** * To prepare available tasks * @param tasks The task name and executor * @example * setTasks([{ * taskName: "Count", * executor: async (index) => console.log(`Count: ${index}`), * }]); */ function setTasks(tasks) { tasks_1.tasks.push(...tasks); }