Class: JobScheduler
Defined in: packages/client/src/core/job-engine/scheduler.ts:168
Decides when the jobs an application has approved should run, and dispatches them.
Mounted at stack.jobScheduler, but never started by the stack: what may run
unattended is the application's decision.
Example
stack.jobScheduler.start({
jobs: ["Job-review-campaign", "Job-cross-sell"],
pinnedHashes: { "Job-review-campaign": "9f2c…" },
});
// Wake sources are the application's, because `core/` imports no DOM:
document.addEventListener("visibilitychange", () => {
if (document.visibilityState === "visible") void stack.jobScheduler.tick();
});
Constructors
Constructor
new JobScheduler(host): JobScheduler;
Defined in: packages/client/src/core/job-engine/scheduler.ts:184
Parameters
| Parameter | Type |
|---|---|
host | SchedulerHost |
Returns
JobScheduler
Accessors
isRunning
Get Signature
get isRunning(): boolean;
Defined in: packages/client/src/core/job-engine/scheduler.ts:230
Whether start is in effect.
Returns
boolean
Methods
drain()
drain(): Promise<void>;
Defined in: packages/client/src/core/job-engine/scheduler.ts:251
Resolves when every job this scheduler started has finished. For teardown and tests.
Returns
Promise<void>
start()
start(options): void;
Defined in: packages/client/src/core/job-engine/scheduler.ts:194
Begins scheduling, and evaluates once immediately.
The immediate evaluation is the point: a client's most reliable clock signal is "the app just opened", not a timer that was frozen while it was closed.
Parameters
| Parameter | Type |
|---|---|
options | SchedulerOptions |
Returns
void
status()
status(): object;
Defined in: packages/client/src/core/job-engine/scheduler.ts:258
What the scheduler believes, without touching the database.
Returns
object
| Name | Type | Defined in |
|---|---|---|
inFlight | string[] | packages/client/src/core/job-engine/scheduler.ts:258 |
jobs | Record<string, JobScheduleState> | packages/client/src/core/job-engine/scheduler.ts:258 |
running | boolean | packages/client/src/core/job-engine/scheduler.ts:258 |
stop()
stop(): void;
Defined in: packages/client/src/core/job-engine/scheduler.ts:220
Stops scheduling. Jobs already dispatched keep running — a hydrated new Function
has no cancellation, and pretending otherwise would leave a RUNNING run behind.
Returns
void
tick()
tick(): Promise<TickReport>;
Defined in: packages/client/src/core/job-engine/scheduler.ts:241
Evaluates every allowed job and dispatches those that are due.
Idempotent and safe to call from any wake signal. Concurrent calls share one evaluation. It returns once dispatch has started: a long job does not hold the tick open, because a tick that waits is a tick that stops the others.
Returns
Promise<TickReport>