UNPKG

@mininjin/y-durable-objects

Version:

Cloudflare Workers Durable Objects for Yjs

66 lines (65 loc) 1.7 kB
import { Doc } from "yjs"; import { Awareness } from "y-protocols/awareness"; type Listener<T> = (message: T) => void; export type Persistence<T extends Object> = { onUpdate?: (doc: WSSharedDoc<T>, update: Uint8Array) => Promise<void>; onCloseAll?: (doc: WSSharedDoc<T>) => Promise<void>; }; export declare const MESSAGE_TYPE: { UPDATE: number; AWARENESS: number; }; export declare class WSSharedDoc<T extends Object> extends Doc { awareness: Awareness; private conns; private persistence; constructor(gcEnabled?: boolean); /** * * @description Broadcasts the awareness update to all listeners */ private onAwarenessChanged; /** * * @description Broadcasts the update to all listeners */ private onUpdated; /** * @param conn Object * @param message Unit8Array * @description Broadcasts the message to all listeners */ private send; /** * * @param message Unit8Array * @description Broadcasts the message to all listeners */ private broadcast; /** * * @param message * * @returns message type. null if error. */ message(conn: T, message: Uint8Array): number | null; /** * * @param doc Object * @description Applies the update to the document */ applyUpdate(doc: Doc): void; /** * @param conn Object * @param sendMessage Unit8Array => void */ setupConn(conn: T, sendMessage: Listener<Uint8Array>): void; /** * * @param conn Object */ closeConn(conn: T): void; get connectionSize(): number; setPersistence(provider: Persistence<T>): void; } export {};