@mininjin/y-durable-objects
Version:
Cloudflare Workers Durable Objects for Yjs
66 lines (65 loc) • 1.7 kB
TypeScript
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 {};