@leancodepl/hook-pipe-client
Version:
React hooks for real-time data streaming and subscriptions using @leancodepl/pipe
28 lines (27 loc) • 1.07 kB
TypeScript
import { NotificationsUnion, Pipe } from "@leancodepl/pipe";
/**
* Creates React hooks for real-time data subscriptions using "@leancodepl/pipe".
*
* @param pipe - Pipe instance from "@leancodepl/pipe"
* @returns Object containing `createTopic` method for creating typed hooks
* @example
* ```typescript
* const pipe = createPipe({ url: 'wss://api.example.com/pipe' });
* const pipeClient = mkPipeClient({ pipe });
*
* const useChatTopic = pipeClient.createTopic('chat');
* ```
*/
export declare function mkPipeClient({ pipe }: {
pipe: Pipe;
}): {
createTopic<TTopic, TNotifications extends Record<string, unknown>>(topicType: string): {
(topic: TTopic, { onData }: UseSubscriptionOptions<TNotifications>): {
data: NotificationsUnion<TNotifications> | undefined;
};
topic(topic: TTopic): import("rxjs").Observable<NotificationsUnion<TNotifications>>;
};
};
export type UseSubscriptionOptions<TNotifications extends Record<string, unknown>> = {
onData?: (data: NotificationsUnion<TNotifications>) => void;
};