/
githubmirror
/
tldraw
Обзор
Документация
Войти
/
githubmirror
/
tldraw
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
apps/dotcom/sync-worker/src/snapshotUtils.ts
43 строки
934 B
Mitja Bezenšek
Chunked persist. (#6510)
29 июл 2025, 11:27
Не верифицирован
29 июл 2025, 11:27
d4fb9a9
Код
Авторство
О чём код?
import { RoomSnapshot } from '@tldraw/sync-core' function toJsonString(value: unknown): string { if (value === undefined) { return 'null' } return JSON.stringify(value) } export function* generateSnapshotChunks(snapshot: RoomSnapshot): Generator<Uint8Array> { const encoder = new TextEncoder() yield encoder.encode('{') const keys = Object.keys(snapshot) as Array<keyof RoomSnapshot> let isFirstKey = true for (const key of keys) { if (isFirstKey) { isFirstKey = false } else { yield encoder.encode(',') } yield encoder.encode(`"${key}":`) const value = snapshot[key] if (Array.isArray(value)) { yield encoder.encode('[') for (let i = 0; i < value.length; i++) { if (i > 0) { yield encoder.encode(',') } yield encoder.encode(toJsonString(value[i])) } yield encoder.encode(']') } else { yield encoder.encode(toJsonString(value)) } } yield encoder.encode('}') }