Skip to content

Bridge reference

createMswPanelBridgeServer({
controller,
transport,
});
const remoteController = createMswPanelBridgeClient({
initialSnapshot: controller.getSnapshot(),
transport,
});

The server listens for commands and publishes snapshots. The client exposes a controller-compatible interface backed by transport messages.

interface MswPanelBridgeTransport {
post(message: MswPanelBridgeMessage): void;
subscribe(listener: (message: MswPanelBridgeMessage) => void): () => void;
}
type MswPanelBridgeMessage =
| { source: "msw-panel"; type: "hello" }
| { source: "msw-panel"; type: "command"; command: MswPanelBridgeCommand }
| { source: "msw-panel"; type: "snapshot"; snapshot: MswPanelSnapshot };

Supported commands:

  • set-all-enabled
  • set-enabled
  • sync
  • toggle
  • createBroadcastChannelMswPanelBridgeTransport(channelName)
  • createPostMessageMswPanelBridgeTransport(options)
  • createInMemoryMswPanelBridgeTransportPair()
  • createWebSocketMswPanelBridgeTransport(options)

createPostMessageMswPanelBridgeTransport(options)

Section titled “createPostMessageMswPanelBridgeTransport(options)”
interface CreatePostMessageMswPanelBridgeTransportOptions {
expectedSource?: unknown;
listenWindow: MswPanelBridgePostMessageListenerHost;
targetOrigin: string;
targetWindow: MswPanelBridgePostMessageTarget;
validateOrigin?: (origin: string) => boolean;
}

createWebSocketMswPanelBridgeTransport(options)

Section titled “createWebSocketMswPanelBridgeTransport(options)”
interface CreateWebSocketMswPanelBridgeTransportOptions {
closeOnDispose?: boolean;
deserialize?: (value: string) => unknown;
serialize?: (message: MswPanelBridgeMessage) => string;
socket: MswPanelBridgeWebSocketLike;
}