• Joined on 2026-04-02

@shade/transport-bridge (4.11.1)

Published 2026-05-21 13:30:30 +02:00 by Stian

Installation

@shade:registry=
npm install @shade/transport-bridge@4.11.1
"@shade/transport-bridge": "4.11.1"

About this package

@shade/transport-bridge

Transport-agnostic delivery for Shade: WS → SSE → long-poll, in priority order, behind a single IncomingMessage interface.

import {
  FallbackBridgeTransport,
  WsBridge,
  SseBridge,
  LongPollBridge,
} from '@shade/transport-bridge';

const auth = { crypto, signingPrivateKey, address: 'bob' };

const bridge = new FallbackBridgeTransport([
  new WsBridge({       baseUrl, auth }),
  new SseBridge({      baseUrl, auth }),
  new LongPollBridge({ baseUrl, auth }),
]);

await bridge.connect({
  onMessage: (msg) => {
    // msg: { from: string; bytes: Uint8Array; receivedAt: number; msgId?: string }
  },
});

console.log(bridge.activeKind); // "ws" | "sse" | "long-poll"

Pair with createBridgeRoutes in @shade/inbox-server to expose the matching /v1/bridge/{stream,poll,ws} endpoints. Full design + threat model in docs/transport.md.

What it solves

Browser extensions, strict corporate proxies, and edge runtimes routinely block long-lived WebSockets. Apps that already use the Shade inbox shouldn't have to write three custom delivery paths to handle the realistic mix of hostile networks they ship into. This package is the canonical answer.

Status

V3.7. Stable wire format, additive change to @shade/inbox-server. See CHANGELOG.

Dependencies

Dependencies

ID Version
@shade/core ^4.11.1
@shade/server ^4.11.1

Development Dependencies

ID Version
@shade/crypto-web workspace:*
@shade/inbox-server workspace:*
hono ^4.12.12

Peer Dependencies

ID Version
hono ^4

Optional Dependencies

ID Version
@shade/inbox-server ^4.11.1
Details
npm
2026-05-21 13:30:30 +02:00
0
latest
15 KiB
Assets (1)
Versions (22) View all
4.11.1 2026-05-21
4.11.0 2026-05-15
4.10.0 2026-05-09
4.9.0 2026-05-09
4.8.5 2026-05-08