1 | import { Repeater } from '@repeaterjs/repeater';
|
2 | import type { TypedEventTarget } from '@graphql-yoga/typed-event-target';
|
3 | declare type PubSubPublishArgsByKey = {
|
4 | [key: string]: [] | [any] | [number | string, any];
|
5 | };
|
6 | export declare type PubSubEvent<TPubSubPublishArgsByKey extends PubSubPublishArgsByKey, TKey extends Extract<keyof TPubSubPublishArgsByKey, string>> = CustomEvent<TPubSubPublishArgsByKey[TKey][1] extends undefined ? TPubSubPublishArgsByKey[TKey][0] : TPubSubPublishArgsByKey[TKey][1]>;
|
7 | export declare type PubSubEventTarget<TPubSubPublishArgsByKey extends PubSubPublishArgsByKey> = TypedEventTarget<PubSubEvent<TPubSubPublishArgsByKey, Extract<keyof TPubSubPublishArgsByKey, string>>>;
|
8 | export declare type ChannelPubSubConfig<TPubSubPublishArgsByKey extends PubSubPublishArgsByKey> = {
|
9 | |
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 | eventTarget?: PubSubEventTarget<TPubSubPublishArgsByKey>;
|
16 | };
|
17 | export declare type PubSub<TPubSubPublishArgsByKey extends PubSubPublishArgsByKey> = {
|
18 | |
19 |
|
20 |
|
21 | publish<TKey extends Extract<keyof TPubSubPublishArgsByKey, string>>(routingKey: TKey, ...args: TPubSubPublishArgsByKey[TKey]): void;
|
22 | |
23 |
|
24 |
|
25 | subscribe<TKey extends Extract<keyof TPubSubPublishArgsByKey, string>>(...[routingKey, id]: TPubSubPublishArgsByKey[TKey][1] extends undefined ? [TKey] : [TKey, TPubSubPublishArgsByKey[TKey][0]]): Repeater<TPubSubPublishArgsByKey[TKey][1] extends undefined ? TPubSubPublishArgsByKey[TKey][0] : TPubSubPublishArgsByKey[TKey][1]>;
|
26 | };
|
27 |
|
28 |
|
29 |
|
30 | export declare const createPubSub: <TPubSubPublishArgsByKey extends PubSubPublishArgsByKey>(config?: ChannelPubSubConfig<TPubSubPublishArgsByKey> | undefined) => PubSub<TPubSubPublishArgsByKey>;
|
31 | export {};
|