@thuum/transport
Installation
Section titled “Installation”npm install @thuum/transportOverview
Section titled “Overview”@thuum/transport provides a MessageTransport interface for bidirectional message passing:
createTransport(options)— Factory that creates a transport of the specified typeMessageTransport— Interface withreceiver(subscribe) andsender(publish) sides
createTransport(options)
Section titled “createTransport(options)”Creates a MessageTransport instance of the specified type.
import { createTransport } from "@thuum/transport";
const transport = createTransport({ type: "window-custom-event", namespace: "my-app",});
// Subscribe to a topicconst unsubscribe = transport.receiver.on("greeting", (message) => { console.log("Received:", message);});
// Send a messagetransport.sender.send("greeting", { text: "Hello!" });
// Cleanupunsubscribe();MessageTransport Interface
Section titled “MessageTransport Interface”interface MessageTransport<R extends MessageMap, S extends MessageMap> { readonly receiver: MessageReceiver<R>; readonly sender: MessageSender<S>; readonly namespace: string;}
interface MessageReceiver<Map extends MessageMap> { on<K extends keyof Map & string>(topic: K, handler: (message: Map[K]) => void): () => void;}
interface MessageSender<Map extends MessageMap> { send<K extends keyof Map & string>(topic: K, message: Map[K]): void;}Supported Transport Types
Section titled “Supported Transport Types”| Type | Status |
|---|---|
window-custom-event | Available |
window-message-event | Planned |
broadcast-message-event | Planned |
Window CustomEvent Transport
Section titled “Window CustomEvent Transport”Uses window.addEventListener / window.dispatchEvent with CustomEvent. Events are scoped by namespace as "namespace:topic".
Messages are dispatched asynchronously via queueMicrotask and the transport object is frozen to prevent mutation.