Download node_modules/@supabase/realtime-js/src/RealtimePresence.ts from metarm/QMetaRam: direct link, hf CLI and curl.
- Browser
- Download file 2.05 kB
-
https://huggingface.co/metarm/QMetaRam/resolve/main/node_modules/%40supabase/realtime-js/src/RealtimePresence.ts
- Command line
-
hf download hf://metarm/QMetaRam/node_modules/@supabase/realtime-js/src/RealtimePresence.ts
-
curl -L -o RealtimePresence.ts https://huggingface.co/metarm/QMetaRam/resolve/main/node_modules/%40supabase/realtime-js/src/RealtimePresence.ts
2.05 kB
| /* | |
| This file draws heavily from https://github.com/phoenixframework/phoenix/blob/d344ec0a732ab4ee204215b31de69cf4be72e3bf/assets/js/phoenix/presence.js | |
| License: https://github.com/phoenixframework/phoenix/blob/d344ec0a732ab4ee204215b31de69cf4be72e3bf/LICENSE.md | |
| */ | |
| import type RealtimeChannel from './RealtimeChannel' | |
| import PresenceAdapter from './phoenix/presenceAdapter' | |
| export type Presence<T extends { [key: string]: any } = {}> = { | |
| presence_ref: string | |
| } & T | |
| export type RealtimePresenceState<T extends { [key: string]: any } = {}> = { | |
| [key: string]: Presence<T>[] | |
| } | |
| export type RealtimePresenceJoinPayload<T extends { [key: string]: any }> = { | |
| event: `${REALTIME_PRESENCE_LISTEN_EVENTS.JOIN}` | |
| key: string | |
| currentPresences: Presence<T>[] | |
| newPresences: Presence<T>[] | |
| } | |
| export type RealtimePresenceLeavePayload<T extends { [key: string]: any }> = { | |
| event: `${REALTIME_PRESENCE_LISTEN_EVENTS.LEAVE}` | |
| key: string | |
| currentPresences: Presence<T>[] | |
| leftPresences: Presence<T>[] | |
| } | |
| export enum REALTIME_PRESENCE_LISTEN_EVENTS { | |
| SYNC = 'sync', | |
| JOIN = 'join', | |
| LEAVE = 'leave', | |
| } | |
| export type RealtimePresenceOptions = { | |
| events?: { state: string; diff: string } | |
| } | |
| export default class RealtimePresence { | |
| get state() { | |
| return this.presenceAdapter.state | |
| } | |
| private presenceAdapter: PresenceAdapter | |
| /** | |
| * Creates a Presence helper that keeps the local presence state in sync with the server. | |
| * | |
| * @param channel - The realtime channel to bind to. | |
| * @param opts - Optional custom event names, e.g. `{ events: { state: 'state', diff: 'diff' } }`. | |
| * | |
| * @category Realtime | |
| * | |
| * @example Example for a presence channel | |
| * ```ts | |
| * const presence = new RealtimePresence(channel) | |
| * | |
| * channel.on('presence', ({ event, key }) => { | |
| * console.log(`Presence ${event} on ${key}`) | |
| * }) | |
| * ``` | |
| */ | |
| constructor( | |
| public channel: RealtimeChannel, | |
| opts?: RealtimePresenceOptions | |
| ) { | |
| this.presenceAdapter = new PresenceAdapter(this.channel.channelAdapter, opts) | |
| } | |
| } | |