UNPKG

@instantdb/core

Version:

Instant's core local abstraction

45 lines 1.58 kB
export type RoomSchemaShape = { [k: string]: { presence?: { [k: string]: any; }; topics?: { [k: string]: { [k: string]: any; }; }; }; }; export type PresenceOpts<PresenceShape, Keys extends keyof PresenceShape> = { user?: boolean; peers?: string[]; keys?: Keys[]; initialData?: Partial<PresenceShape>; }; type PresencePeer<PresenceShape, Keys extends keyof PresenceShape> = Pick<PresenceShape, Keys> & { peerId: string; }; export type PresenceSlice<PresenceShape, Keys extends keyof PresenceShape> = { user?: PresencePeer<PresenceShape, Keys>; peers: { [peerId: string]: PresencePeer<PresenceShape, Keys>; }; }; export type PresenceResponse<PresenceShape, Keys extends keyof PresenceShape> = PresenceSlice<PresenceShape, Keys> & { isLoading: boolean; error?: string; }; export declare function buildPresenceSlice<PresenceShape, Keys extends keyof PresenceShape>(data: { user?: PresenceShape; peers: Record<string, PresenceShape>; }, opts: PresenceOpts<PresenceShape, Keys>, userPeerId: string): PresenceSlice<PresenceShape, Keys>; /** * Compare two presence slices * 0. compare isLoading and error * 1. shallow compare user * 2. compare peers keys * 3. shallow compare each peer */ export declare function hasPresenceResponseChanged<PresenceShape, Keys extends keyof PresenceShape>(a: PresenceResponse<PresenceShape, Keys>, b: PresenceResponse<PresenceShape, Keys>): boolean; export {}; //# sourceMappingURL=presence.d.ts.map