@leancodepl/hook-pipe-client
Version:
React hooks for real-time data streaming and subscriptions using @leancodepl/pipe
30 lines • 1.26 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, ...onDataByType }: UseSubscriptionOptions<TNotifications>): {
data: NotificationsUnion<TNotifications> | undefined;
};
topic(topic: TTopic): import('rxjs').Observable<NotificationsUnion<TNotifications>>;
};
};
export type UseSubscriptionOptions<TNotifications extends Record<string, unknown>> = {
[K in NotificationsUnion<TNotifications>[0]]?: (data: Extract<NotificationsUnion<TNotifications>, [K, any]>[1]) => void;
} & {
onData?: (data: NotificationsUnion<TNotifications>) => void;
};
//# sourceMappingURL=mkPipeClient.d.ts.map