openpencil/tests/helpers/yjs-test-helper.d.ts
Danila Poyarkov b0ebe91ed6
perf(collab): skip unchanged Yjs node fields (#529)
* 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
2026-08-15 11:40:27 +03:00

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
}
}