function encodeMessage()

in src/spark_automerge_wrapper.js [8:28]


function encodeMessage(metaData, syncMessage) {
  const metaDataStr = JSON.stringify(metaData);
  const metaDataBuf = Uint8Array.from(metaDataStr, s => s.charCodeAt(0));
  const metaDataLength = metaDataBuf.length;
  const metaDataLengthSize = 1, nonZeroPaddingSize = 1;
  const totalSize = metaDataLengthSize + metaDataLength + syncMessage.length + nonZeroPaddingSize;

  let msg = new Uint8Array(totalSize);
  msg[0] = metaDataLength;
  // Set meta data buffer in the message
  msg.set(metaDataBuf, metaDataLengthSize);
  // Set sync message buffer in the message
  msg.set(syncMessage, metaDataLengthSize + metaDataLength);
  // append non zero byte at end of buffer
  // Currently messenger infrastructure is trimming all 0s in the buffer
  // Having last byte as 1 to avoid this
  // Will remove it once messenger team correct this trimming on their side
  msg[totalSize - 1] = 1;

  return msg
}