Async Workflows and Source Panels
Callback Router Panel
Use a typed callback map to route work while replay keeps the panel in order.
Callback Router Panel
callback_router.ts
type Mode = "status" | "refresh" | "archive";
type Handler = (mode: Mode) => string;
const mode: Mode = ;
let access: string = "";
let handled: string = "";
const handlers: Record<Mode, Handler> = {
status: (current: Mode) => `handled:${current}`,
refresh: (current: Mode) => `cache:${current}`,
archive: (current: Mode) => `queue:${current}`
};
function checkAccess(current: Mode): void {
if (current === "archive") {
access = "review";
} else {
access = "ok";
}
}
checkAccess(mode);
handled = handlers[mode](mode);
console.log(`mode=${mode}`);
console.log(`access=${access}`);
console.log(handled);
type Mode = "status" | "refresh" | "archive";
type Handler = (mode: Mode) => string;
const mode: Mode = ;
let access: string = "";
let handled: string = "";
const handlers: Record<Mode, Handler> = {
status: (current: Mode) => `handled:${current}`,
refresh: (current: Mode) => `cache:${current}`,
archive: (current: Mode) => `queue:${current}`
};
function checkAccess(current: Mode): void {
if (current === "archive") {
access = "review";
} else {
access = "ok";
}
}
checkAccess(mode);
handled = handlers[mode](mode);
console.log(`mode=${mode}`);
console.log(`access=${access}`);
console.log(handled);
type Mode = "status" | "refresh" | "archive";
type Handler = (mode: Mode) => string;
const mode: Mode = ;
let access: string = "";
let handled: string = "";
const handlers: Record<Mode, Handler> = {
status: (current: Mode) => `handled:${current}`,
refresh: (current: Mode) => `cache:${current}`,
archive: (current: Mode) => `queue:${current}`
};
function checkAccess(current: Mode): void {
if (current === "archive") {
access = "review";
} else {
access = "ok";
}
}
checkAccess(mode);
handled = handlers[mode](mode);
console.log(`mode=${mode}`);
console.log(`access=${access}`);
console.log(handled);
callback router
A callback map keeps branch logic explicit and lets replay show which handler updated the result.