33 lines
1.8 KiB
TypeScript
33 lines
1.8 KiB
TypeScript
// Integration ticks reflect the production worker: callers submit/observe;
|
|
// Provisioning alone executes jobs between those reconciliation passes.
|
|
let campaignFlight: Promise<Awaited<ReturnType<typeof import('../../src/lib/server/pipeline/sweep.js').sweep>>> | null = null;
|
|
export function sweep() {
|
|
if (campaignFlight) return campaignFlight;
|
|
campaignFlight = (async () => {
|
|
const caller = await import('../../src/lib/server/pipeline/sweep.js');
|
|
const { processProvisioning } = await import('../../src/lib/server/provisioning/worker.js');
|
|
await caller.sweep(); await processProvisioning(); return caller.sweep();
|
|
})().finally(() => { campaignFlight = null; });
|
|
return campaignFlight;
|
|
}
|
|
let betaFlight: Promise<{ processed: number }> | null = null;
|
|
export function betaTick() {
|
|
if (betaFlight) return betaFlight;
|
|
betaFlight = (async () => {
|
|
const caller = await import('../../src/lib/server/pipeline/beta-runner.js');
|
|
const { processProvisioning } = await import('../../src/lib/server/provisioning/worker.js');
|
|
await caller.betaTick(); await processProvisioning(); return caller.betaTick();
|
|
})().finally(() => { betaFlight = null; });
|
|
return betaFlight;
|
|
}
|
|
let maintenanceFlight: Promise<void> | null = null;
|
|
export function maintenanceTick(): Promise<void> {
|
|
if (maintenanceFlight) return maintenanceFlight;
|
|
maintenanceFlight = (async () => {
|
|
const caller = await import('../../src/lib/server/fleet/plutonium.js');
|
|
const { processProvisioning } = await import('../../src/lib/server/provisioning/worker.js');
|
|
await caller.maintenanceTick(); await processProvisioning(); await caller.maintenanceTick();
|
|
})().finally(() => { maintenanceFlight = null; });
|
|
return maintenanceFlight;
|
|
}
|