Skip to content

WireEventManager

@blobs/sdk v0.1.0


@blobs/sdk / events / WireEventManager

Defined in: events/WireEventManager.ts:159

Unified subscription manager for server-pushed wire events.

WireEventManager is the single place every SDK service registers event subscriptions. It de-duplicates transport-level listeners (one underlying subscription per distinct event), supports prefix-wildcard patterns, buffers messages with no current subscribers in a small ring buffer for late mounts, and routes typed transport errors via onError.

Example

const off = events.on<BlobCreatedPayload>('blob.created', (payload, meta) => {
console.log('blob created on', meta.networkId, payload.id);
});
// later
off();

Constructors

Constructor

new WireEventManager(ctx, options?): WireEventManager

Defined in: events/WireEventManager.ts:173

Parameters

ctx

BlobsContext

The shared BlobsContext used to resolve transports.

options?

WireEventManagerOptions = {}

Optional WireEventManagerOptions overrides.

Returns

WireEventManager

Methods

on()

on<T>(pattern, handler, options?): Unsubscribe

Defined in: events/WireEventManager.ts:202

Subscribes to a wire event. The pattern can be exact ('blob.created'), prefix-wildcard ('blob.*'), or the global wildcard ('*'). For exact patterns, the manager opens an underlying transport subscription immediately; wildcard patterns piggyback on any subscriptions already opened by exact handlers.

Type Parameters

T

T = unknown

Expected payload shape; the SDK provides typed re-exports per event so consumers get inference at the call site.

Parameters

pattern

string

Event name or wildcard pattern to subscribe to.

handler

EventHandler<T>

Callback invoked for each matching event.

options?

SubscribeOptions

Optional SubscribeOptions overrides.

Returns

Unsubscribe

An unsubscribe function; calling it removes this handler and, when no handlers remain for the exact event, releases the transport-level subscription.

Example

const off = events.on<BlobUpdatedPayload>('blob.updated', (blob) => {
syncToCache(blob);
});

onError()

onError<E>(cls, handler): Unsubscribe

Defined in: events/WireEventManager.ts:257

Subscribes to transport errors of a specific ApiError subclass (or the base class to catch every error). Routing is instanceof based.

Type Parameters

E

E extends ApiError

The ApiError subclass to route on.

Parameters

cls

(…args) => E

The error class constructor to match.

handler

ErrorHandler<E>

Callback invoked when a matching error arrives.

Returns

Unsubscribe

An unsubscribe function.

Example

events.onError(PermissionError, err => toast('Permission denied'));
events.onError(ApiError, err => log(err));

emit()

emit(event, payload, extra?): void

Defined in: events/WireEventManager.ts:279

Emits a locally-produced event (e.g. the client optimistically marks a blob as deleted). Routed identically to a transport message, but tagged with source: 'local' in the EventMeta.

Parameters

event

string

The event name to dispatch.

payload

unknown

The payload delivered to subscribers.

extra?

Partial<EventMeta>

Optional EventMeta overrides (e.g. requestId).

Returns

void


receive()

receive(message): void

Defined in: events/WireEventManager.ts:295

Bridge entry point used by transports to push a wire message into the manager. Most consumers do not call this directly.

Parameters

message

IncomingMessage

The incoming message with event name, payload, and meta.

Returns

void


receiveError()

receiveError(raw, meta?): void

Defined in: events/WireEventManager.ts:308

Routes an error originating from a transport. Normalizes arbitrary error shapes into ApiError (falling back to TransportError) and delivers to matching onError subscribers.

Parameters

raw

unknown

The raw error value as received from the transport.

meta?

Partial<EventMeta> = {}

Optional EventMeta overrides.

Returns

void


dispose()

dispose(): void

Defined in: events/WireEventManager.ts:435

Releases every transport subscription, clears handler registries, and empties the replay buffers. Call when tearing down the SDK to avoid leaking transport listeners.

Returns

void