47 lines
1.8 KiB
TypeScript
47 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;
|
|
}
|