feat(crdt): Create AwarenessManager for multi-user awareness

This commit is contained in:
2026-06-22 07:21:07 +00:00
parent 211416bc90
commit 967a855aea
+40
View File
@@ -0,0 +1,40 @@
import { Awareness } from 'y-protocols/awareness';
import * as Y from 'yjs';
export class AwarenessManager {
awareness: Awareness;
constructor(doc: Y.Doc) {
this.awareness = new Awareness(doc);
}
setLocalState(state: Record<string, any>) {
this.awareness.setLocalState(state);
}
getStates(): Map<number, Record<string, any>> {
return this.awareness.getStates();
}
on(event: 'change', callback: (updates: AwarenessUpdate) => void): void;
on(event: 'update', callback: (updates: AwarenessUpdate) => void): void;
on(event: string, callback: (updates: AwarenessUpdate) => void): void {
this.awareness.on(event as any, callback);
}
off(event: 'change', callback: (updates: AwarenessUpdate) => void): void;
off(event: 'update', callback: (updates: AwarenessUpdate) => void): void;
off(event: string, callback: (updates: AwarenessUpdate) => void): void {
this.awareness.off(event as any, callback);
}
destroy() {
this.awareness.destroy();
}
}
type AwarenessUpdate = {
added: number[];
updated: number[];
removed: number[];
};