state-event-target
Version:
Primary state with event-driven replicas.
18 lines (14 loc) • 470 B
text/typescript
export interface BroadcastMessageType {
type: string;
namespace: string;
detail: unknown;
}
export abstract class Broadcast<MessageType extends BroadcastMessageType> {
protected controller = new AbortController();
protected signal = this.controller.signal;
abstract onMessage(handler: (event: MessageEvent<MessageType>) => void): void;
abstract postMessage(message: MessageType, options?: unknown): void;
detach() {
this.controller.abort();
}
}