Files
skills/docs/networking/events/events-transport/README.md
2026-05-29 08:20:56 +01:00

54 lines
8.5 KiB
Markdown

# @suaveplan/events-transport - Cross-context event bridges for @suaveplan/events: MessageChannel (at-least-once with ack) and BroadcastChannel (at-most-once) transports with nonce dedup, W3C trace context, and AbortSignal support.
## Summary
Cross-context event bridges for `@suaveplan/events`: `MessageChannel` (at-least-once with ack/retry)
and `BroadcastChannel` (at-most-once, fan-out) transports with nonce deduplication and AbortSignal support.
<!-- begin:auto-docs -->
## Documentation tree
- [envelope](./src/core/envelope/envelope.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [envelope](./src/core/envelope/envelope.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [nonce-window](./src/core/nonce-window/nonce-window.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [nonce-window](./src/core/nonce-window/nonce-window.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [transport-interface](./src/core/transport-interface/transport-interface.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [transport-interface](./src/core/transport-interface/transport-interface.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [broadcast-channel](./src/transports/broadcast-channel/broadcast-channel-transport.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [broadcast-channel-transport](./src/transports/broadcast-channel/broadcast-channel-transport.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [message-channel](./src/transports/message-channel/message-channel-transport.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [message-channel-transport](./src/transports/message-channel/message-channel-transport.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [utils](./src/utils/structured-clone-check.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
- [structured-clone-check](./src/utils/structured-clone-check.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
<!-- end:auto-docs --> - [envelope](./src/core/envelope/envelope.md) — <!-- begin:auto-docs --> _(no submodules)_- [nonce-window](./src/core/nonce-window/nonce-window.md) — <!-- begin:auto-docs --> _(no submodules)_- [nonce-window](./src/core/nonce-window/nonce-window.md) — <!-- begin:auto-docs --> _(no submodules)_- [transport-interface](./src/core/transport-interface/transport-interface.md) — <!-- begin:auto-docs --> _(no submodules)_- [transport-interface](./src/core/transport-interface/transport-interface.md) — <!-- begin:auto-docs --> _(no submodules)_- [broadcast-channel](./src/transports/broadcast-channel/broadcast-channel-transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [broadcast-channel-transport](./src/transports/broadcast-channel/broadcast-channel-transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [message-channel](./src/transports/message-channel/message-channel-transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [message-channel-transport](./src/transports/message-channel/message-channel-transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [utils](./src/utils/structured-clone-check.md) — <!-- begin:auto-docs --> _(no submodules)_- [structured-clone-check](./src/utils/structured-clone-check.md) — <!-- begin:auto-docs --> _(no submodules)_- [envelope](./src/core/envelope/envelope.md) — <!-- begin:auto-docs --> _(no submodules)_- [nonce-window](./src/core/nonce-window/nonce-window.md) — <!-- begin:auto-docs --> _(no submodules)_- [nonce-window](./src/core/nonce-window/nonce-window.md) — <!-- begin:auto-docs --> _(no submodules)_- [transport-interface](./src/core/transport-interface/transport-interface.md) — <!-- begin:auto-docs --> _(no submodules)_- [transport-interface](./src/core/transport-interface/transport-interface.md) — <!-- begin:auto-docs --> _(no submodules)_- [broadcast-channel](./src/transports/broadcast-channel/broadcast-channel-transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [broadcast-channel-transport](./src/transports/broadcast-channel/broadcast-channel-transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [message-channel](./src/transports/message-channel/message-channel-transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [message-channel-transport](./src/transports/message-channel/message-channel-transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [utils](./src/utils/structured-clone-check.md) — <!-- begin:auto-docs --> _(no submodules)_- [structured-clone-check](./src/utils/structured-clone-check.md) — <!-- begin:auto-docs --> _(no submodules)_- [envelope](./src/core/envelope/envelope.md) — <!-- begin:auto-docs --> _(no submodules)_- [nonce-window](./src/core/nonce-window/nonce-window.md) — <!-- begin:auto-docs --> _(no submodules)_- [nonce-window](./src/core/nonce-window/nonce-window.md) — <!-- begin:auto-docs --> _(no submodules)_- [transport-interface](./src/core/transport-interface/transport-interface.md) — <!-- begin:auto-docs --> _(no submodules)_- [transport-interface](./src/core/transport-interface/transport-interface.md) — <!-- begin:auto-docs --> _(no submodules)_- [broadcast-channel](./src/transports/broadcast-channel/broadcast-channel-transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [broadcast-channel-transport](./src/transports/broadcast-channel/broadcast-channel-transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [message-channel](./src/transports/message-channel/message-channel-transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [message-channel-transport](./src/transports/message-channel/message-channel-transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [utils](./src/utils/structured-clone-check.md) — <!-- begin:auto-docs --> _(no submodules)_- [structured-clone-check](./src/utils/structured-clone-check.md) — <!-- begin:auto-docs --> _(no submodules)_- [envelope](./src/core/envelope/envelope.md) — <!-- begin:auto-docs --> _(no submodules)_- [nonce-window](./src/core/nonce-window/nonce-window.md) — <!-- begin:auto-docs --> _(no submodules)_ - [nonce-window](./src/core/nonce-window/nonce-window.md) — <!-- begin:auto-docs --> _(no submodules)_- [transport-interface](./src/core/transport-interface/transport-interface.md) — <!-- begin:auto-docs --> _(no submodules)_ - [transport-interface](./src/core/transport-interface/transport-interface.md) — <!-- begin:auto-docs --> _(no submodules)_- [broadcast-channel](./src/transports/broadcast-channel/broadcast-channel-transport.md) — <!-- begin:auto-docs --> _(no submodules)_ - [broadcast-channel-transport](./src/transports/broadcast-channel/broadcast-channel-transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [message-channel](./src/transports/message-channel/message-channel-transport.md) — <!-- begin:auto-docs --> _(no submodules)_ - [message-channel-transport](./src/transports/message-channel/message-channel-transport.md) — <!-- begin:auto-docs --> _(no submodules)_- [utils](./src/utils/structured-clone-check.md) — <!-- begin:auto-docs --> _(no submodules)_ - [structured-clone-check](./src/utils/structured-clone-check.md) — <!-- begin:auto-docs --> _(no submodules)_
## Packages
| Module | Description |
|--------|-------------|
| [message-channel-transport](src/transports/message-channel/message-channel-transport.md) | Bidirectional at-least-once bridge over `MessageChannel` |
| [broadcast-channel-transport](src/transports/broadcast-channel/broadcast-channel-transport.md) | Fan-out at-most-once bridge over `BroadcastChannel` |
| [envelope](src/core/envelope/envelope.md) | Transport envelope builder and parser |
| [nonce-window](src/core/nonce-window/nonce-window.md) | Sliding dedup window for nonce tracking |
| [transport-interface](src/core/transport-interface/transport-interface.md) | Core transport types and interfaces |
| [structured-clone-check](src/utils/structured-clone-check.md) | Payload cloneability utility |
## Quick Start
```ts
import { createMessageChannelTransport } from "@suaveplan/events-transport";
import { EventBus } from "@suaveplan/events";
const channel = new MessageChannel();
const bus = new EventBus<{ "data.sync": { id: string } }>();
const transport = createMessageChannelTransport({ channel, ackTimeoutMs: 3000 });
const handle = transport.connect(bus);
await bus.emitAsync("data.sync", { id: "x" });
console.log(handle.stats.sent); // 1
handle.disconnect();
```
## License
MIT