import * as ops from "./service/ops.js"; import { type CronServiceDeps, createCronServiceState } from "./service/state.js"; import type { CronJobCreate, CronJobPatch } from "./types.js"; export type { CronEvent, CronServiceDeps } from "./service/state.js"; export class CronService { private readonly state; constructor(deps: CronServiceDeps) { this.state = createCronServiceState(deps); } async start() { await ops.start(this.state); } stop() { ops.stop(this.state); } async status() { return await ops.status(this.state); } async list(opts?: { includeDisabled?: boolean }) { return await ops.list(this.state, opts); } async add(input: CronJobCreate) { return await ops.add(this.state, input); } async update(id: string, patch: CronJobPatch) { return await ops.update(this.state, id, patch); } async remove(id: string) { return await ops.remove(this.state, id); } async run(id: string, mode?: "due" | "force") { return await ops.run(this.state, id, mode); } wake(opts: { mode: "now" | "next-heartbeat"; text: string }) { return ops.wakeNow(this.state, opts); } }