Establishes the Scenario/Session/Logger/DashboardReporter contracts the rest of the harness builds on. Deferred is the building block for RoomCoordinator's host→joiners handoff. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
21 lines
517 B
TypeScript
21 lines
517 B
TypeScript
/**
|
|
* Promise deferred primitive — lets external code resolve or reject
|
|
* a promise. Used by RoomCoordinator for host→joiners handoff.
|
|
*/
|
|
|
|
export interface Deferred<T> {
|
|
promise: Promise<T>;
|
|
resolve(value: T): void;
|
|
reject(error: unknown): void;
|
|
}
|
|
|
|
export function deferred<T>(): Deferred<T> {
|
|
let resolve!: (value: T) => void;
|
|
let reject!: (error: unknown) => void;
|
|
const promise = new Promise<T>((res, rej) => {
|
|
resolve = res;
|
|
reject = rej;
|
|
});
|
|
return { promise, resolve, reject };
|
|
}
|