* perf(collab): skip unchanged Yjs node fields - Compare encoded node fields before writing to Y.Map - Cover unchanged sync, repeated drag-like updates, echo behavior, and concurrent convergence - Reduce 100 unchanged syncs from 13,700 updates to zero * test(collab): simulate queued Yjs convergence - Use the official Yjs TestConnector for deterministic queued delivery - Exercise offline concurrent edits, reconnect, random message flushing, and convergence
26 lines
627 B
TypeScript
26 lines
627 B
TypeScript
declare module 'yjs/testHelper' {
|
|
import type { PRNG } from 'lib0/prng'
|
|
import type * as Y from 'yjs'
|
|
|
|
export class TestYInstance extends Y.Doc {
|
|
tc: TestConnector
|
|
updates: Uint8Array[]
|
|
connect(): void
|
|
disconnect(): void
|
|
}
|
|
|
|
export class TestConnector {
|
|
constructor(prng: PRNG)
|
|
allConns: Set<TestYInstance>
|
|
onlineConns: Set<TestYInstance>
|
|
createY(clientId: number): TestYInstance
|
|
flushRandomMessage(): boolean
|
|
flushAllMessages(): boolean
|
|
reconnectAll(): void
|
|
disconnectAll(): void
|
|
reconnectRandom(): boolean
|
|
disconnectRandom(): boolean
|
|
syncAll(): void
|
|
}
|
|
}
|