@sideband/transport
v0.5.0
Published
Transport ABI for Sideband: Transport interface, error taxonomy, and reference loopback transport.
Downloads
122
Maintainers
Readme
@sideband/transport
Transport ABI + shared helpers for Sideband. Defines the contract concrete transports must implement (WebSocket, loopback, custom TCP, etc.). No runtime/RPC coupling.
Install
bun add @sideband/transportQuick use
import {
LoopbackTransport,
unsafeAsTransportEndpoint,
} from "@sideband/transport";
// unsafeAsTransportEndpoint brands a raw string as TransportEndpoint with no
// URL validation — suitable for custom schemes and tests. For WebSocket URLs,
// use wsEndpoint() from @sideband/transport-ws instead.
const transport = new LoopbackTransport();
const endpoint = unsafeAsTransportEndpoint("loopback://test");
// Server side
await transport.listen(endpoint, async (conn) => {
for await (const bytes of conn.inbound) {
await conn.send(bytes); // echo back
}
});
// Client side
const conn = await transport.connect(endpoint);
await conn.send(new TextEncoder().encode("hello"));
for await (const bytes of conn.inbound) {
console.log(new TextDecoder().decode(bytes)); // "hello"
break;
}What it provides
Interfaces
Transport— connect (required) + listen (optional) contract all transports implementTransportConnection— single byte-level link:inbound,send(),close(),closed,stateTransportListener— returned bylisten(); holdsaddressandclose()ConnectionHandler—(conn: TransportConnection) => void | Promise<void>
Types
TransportEndpoint— branded string; useunsafeAsTransportEndpointor a transport-specific helperConnectionState—"connecting" | "open" | "closing" | "closed"ConnectOptions—timeoutMs,signal,headers(Node.js only), extensibleCloseOptions/CloseInfo— close codes, reason, graceful flag, optional errorListenOptions— extensible per-transport listen configurationConnectionId— re-exported from@sideband/protocol
Errors
TransportError— typed transport failure withkind: TransportErrorKindTransportErrorKind—connection_refused | dns_failure | tls_failure | timeout | network_offline | abnormal_close | message_too_large | buffer_overflow | policy_violation | authentication_failed | aborted | subprotocol_mismatch | transport_failureisRetryable(kind)— returns true for transient failures
Helpers
unsafeAsTransportEndpoint(value)— brands a raw string asTransportEndpointwith no validationasConnectionId(value)— brands a value asConnectionId(re-exported from@sideband/protocol)LoopbackTransport— in-process transport for tests and local loops
Depends only on @sideband/protocol; safe in browser, Node, and Bun environments.
License
Apache-2.0
