Skip to main content
Version: Next (2.x)

TypedPubSub<Engine, Map>

Creates a type-safe wrapper around a PubSub implementation.

This utility ensures that your subscription channels and their payloads are properly typed, helping catch potential errors at compile time.

Param

The PubSub engine instance (e.g., PubSub, RedisPubSub)

Param

Configuration options

Example

// Define your event map
type PubSubMap = {
"user-updated": User;
[c: `user-updated-${string}`]: User;
};

// Create typed PubSub instance
const pubsub = new TypedPubSub<PubSub, PubSubMap>(new PubSub());

// Usage with Redis
const pubsub = new TypedPubSub<RedisPubSub, PubSubMap>(
new RedisPubSub({
publisher: new Redis(options),
subscriber: new Redis(options),
}),
{
prefix: "feature-1:",
},
);

Type Parameters

Type Parameter

Engine extends PubSubEngine

Map extends PubSubMap

Constructors

Constructor

new TypedPubSub<Engine, Map>(pubsub, options?): TypedPubSub<Engine, Map>

Parameters

ParameterType

pubsub

Engine

options?

TypedPubSubOptions

Returns

TypedPubSub<Engine, Map>

Properties

PropertyModifierType

channelPrefix

protected

string

pubsub

protected

Engine

options?

protected

TypedPubSubOptions

Methods

asyncIterableIterator()

asyncIterableIterator<C>(triggers, ...rest): AsyncIterableIterator<Map[C], any, any>

Type Parameters

Type Parameter

C extends string | number | symbol

Parameters

ParameterType

triggers

C | C[]

...rest

RestAsyncIterableIteratorFnArgs<Engine["asyncIterableIterator"]>

Returns

AsyncIterableIterator<Map[C], any, any>


mapChannel()

protected mapChannel<C>(channel): string

Type Parameters

Type Parameter

C extends string | number | symbol

Parameters

ParameterType

channel

C

Returns

string


mapTriggers()

protected mapTriggers<C>(triggers): string | string[]

Type Parameters

Type Parameter

C extends string | number | symbol

Parameters

ParameterType

triggers

C | C[]

Returns

string | string[]


publish()

publish<C>(channel, message, ...rest): Promise<void>

Type Parameters

Type Parameter

C extends string | number | symbol

Parameters

ParameterType

channel

C

message

Map[C]

...rest

RestPayloadFnArgs<Engine["publish"]>

Returns

Promise<void>


subscribe()

subscribe<C>(channel, onMessage, ...rest): Promise<number>

Type Parameters

Type Parameter

C extends string | number | symbol

Parameters

ParameterType

channel

C

onMessage

OnMessage<Map[C]>

...rest

RestSubscribeFnArgs<Engine["subscribe"]>

Returns

Promise<number>


unsubscribe()

unsubscribe(subId, ...rest): void

Parameters

ParameterType

subId

number

...rest

RestUnsubscribeFnArgs<Engine["unsubscribe"]>

Returns

void