UNPKG

@textea/y-socket.io

Version:
43 lines (39 loc) 1.58 kB
import { Awareness } from 'y-protocols/awareness'; import * as Y from 'yjs'; import { Mutate, StoreApi } from 'zustand'; import { Room } from 'socket.io-adapter'; declare type RoomName = Room; interface DefaultClientData { } interface Options { awareness?: Awareness; /** * @default true */ autoConnect?: boolean; /** * @default true */ autoConnectBroadcastChannel?: boolean; } 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 type CreateSocketIOProvider = <ClientData extends DefaultClientData>(serverUrl: string, roomName: RoomName, doc: Y.Doc, options?: Options) => SocketIOProvider<ClientData>; declare const createSocketIOProvider: CreateSocketIOProvider; export { Options, SocketIOProvider, SocketIOProviderState, createSocketIOProvider };