@yjsync/serializers
v0.1.0
Published
Runtime-agnostic JSON serializers for Yjs docs (TipTap, root map, ProseMirror fragment, custom maps).
Downloads
120
Maintainers
Readme
@yjsync/serializers
Runtime-agnostic JSON serializers for Yjs docs. Plug them into exportJsonToApi from @yjsync/core (or any custom export pipeline) to get a stable JSON shape from a Y.Doc.
Install
bun add @yjsync/serializers yjsAvailable serializers
| Serializer | Use it for |
|------------|-----------|
| serializeTiptap | TipTap / @tiptap/extension-collaboration documents (XmlFragment under 'default', falls back to Y.Map('root') when empty). |
| serializeRootMap({ key }) | Single top-level Y.Map (default 'root'). Matches the legacy default in @yjsync/core. |
| serializeMaps({ keys }) | Multiple top-level maps merged into one object. |
| serializeProseMirrorFragment({ field }) | A specific Y.XmlFragment field; returns null when empty. |
Example with @yjsync/core
import { exportJsonToApi } from '@yjsync/core'
import { serializeTiptap } from '@yjsync/serializers'
await exportJsonToApi({
roomId: 'demo/doc-1',
doc: roomSession,
url: 'https://api.example.com/snapshots',
revision: roomSession.revision,
serialize: serializeTiptap,
})Example with multiple maps
import { serializeMaps } from '@yjsync/serializers'
const serialize = serializeMaps({ keys: ['profile', 'settings'] })
serialize(doc) // -> { profile: {...}, settings: {...} }Develop
bun run build
bun run typecheck