@textea/y-socket.io
Version:
Socket.io Connector for Yjs
29 lines (24 loc) • 1.42 kB
TypeScript
import { Mutate, StoreApi } from 'zustand';
interface DefaultClientData {
}
interface SocketState {
connecting: boolean;
connected: boolean;
synced: boolean;
error: string | null;
}
interface SocketIOProviderState<ClientData extends DefaultClientData = DefaultClientData> extends SocketState {
data: ClientData | null;
}
declare type ReadonlyStore<Store extends StoreApi<unknown>> = Omit<Store, 'setState'>;
declare type SocketIOProviderStore<ClientData extends DefaultClientData> = ReadonlyStore<Mutate<StoreApi<SocketIOProviderState<ClientData>>, [['zustand/subscribeWithSelector', never]]>>;
interface SocketIOProvider<ClientData extends DefaultClientData = DefaultClientData> extends SocketIOProviderStore<ClientData> {
connect: () => void;
closeRoom: () => void;
disconnect: () => void;
connectBroadcastChannel: () => void;
disconnectBroadcastChannel: () => void;
}
declare function useSocketIOProviderState<ClientData extends DefaultClientData>(provider: SocketIOProvider<ClientData> | null | undefined): SocketIOProviderState<ClientData>;
declare function useSocketIOProviderState<ClientData extends DefaultClientData, StateSlice>(provider: SocketIOProvider<ClientData> | null | undefined, selector: (state: SocketIOProviderState<ClientData>) => StateSlice, equalityFn?: (a: StateSlice, b: StateSlice) => boolean): StateSlice;
export { useSocketIOProviderState };