54 lines
8.5 KiB
Markdown
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
|