import { writeStructs } from './syncStep1.js' import { integrateRemoteStructs } from './integrateRemoteStructs.js' import { readDeleteSet, writeDeleteSet } from './deleteSet.js' import BinaryEncoder from '../Util/Binary/Encoder.js' /** * Read the Decoder and fill the Yjs instance with data in the decoder. * * @param {Y} y The Yjs instance * @param {BinaryDecoder} decoder The BinaryDecoder to read from. */ export function fromBinary (y, decoder) { y.transact(function () { integrateRemoteStructs(y, decoder) readDeleteSet(y, decoder) }) } /** * Encode the Yjs model to binary format. * * @param {Y} y The Yjs instance * @return {BinaryEncoder} The encoder instance that can be transformed * to ArrayBuffer or Buffer. */ export function toBinary (y) { let encoder = new BinaryEncoder() writeStructs(y, encoder, new Map()) writeDeleteSet(y, encoder) return encoder }