JSPM

@yjsync/serializers

0.1.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 8
  • Score
    100M100P100Q61078F
  • License MIT

Runtime-agnostic JSON serializers for Yjs docs (TipTap, root map, ProseMirror fragment, custom maps).

Package Exports

  • @yjsync/serializers

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 yjs

Available 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