const defs = [ require("./setup"), require("./heartbeat") ] class Job { constructor({ jobName, timeout, interval }) { this.name = jobName this.timeout = timeout this.interval = interval } } class JobFactory { constructor() { this.jobs = [] this.addJobsFromDefs({ defs }) } /** * Force using of Job objects for validating */ createJob({ jobName, timeout, interval }) { return new Job({ jobName, timeout, interval }) } /** * Only store the job if it is * a valid Job instance */ addJobFromDef(jobDef) { const job = this.createJob(jobDef) if (job) { this.jobs.push(job) } } /** * Take in job definitions from accompanying * job files. Job files must include and * execute a jobRun() */ addJobsFromDefs({ defs }) { defs.forEach(def => this.addJobFromDef(def)) } } const jobFactory = new JobFactory() module.exports = jobFactory