30 lines
605 B
TypeScript
30 lines
605 B
TypeScript
import type { CronJob } from './schedules'
|
|
|
|
const jobs = new Map<string, CronJob>()
|
|
const listeners = new Set<() => void>()
|
|
|
|
export function setJobs(newJobs: CronJob[]) {
|
|
jobs.clear()
|
|
for (const job of newJobs) {
|
|
jobs.set(job.id, job)
|
|
}
|
|
broadcast()
|
|
}
|
|
|
|
export function getJob(id: string): CronJob | undefined {
|
|
return jobs.get(id)
|
|
}
|
|
|
|
export function getAllJobs(): CronJob[] {
|
|
return Array.from(jobs.values())
|
|
}
|
|
|
|
export function broadcast() {
|
|
listeners.forEach(cb => cb())
|
|
}
|
|
|
|
export function onChange(cb: () => void): () => void {
|
|
listeners.add(cb)
|
|
return () => listeners.delete(cb)
|
|
}
|