{"version":3,"file":"hocuspocus-server.cjs","sources":["../../../node_modules/lib0/binary.js","../../../node_modules/lib0/math.js","../../../node_modules/lib0/number.js","../../../node_modules/lib0/set.js","../../../node_modules/lib0/array.js","../../../node_modules/lib0/string.js","../../../node_modules/lib0/error.js","../../../node_modules/lib0/encoding.js","../../../node_modules/lib0/decoding.js","../src/IncomingMessage.ts","../../../node_modules/lib0/time.js","../../../node_modules/lib0/map.js","../../../node_modules/lib0/observable.js","../../../node_modules/lib0/object.js","../../../node_modules/lib0/function.js","../../../node_modules/y-protocols/awareness.js","../../../node_modules/y-protocols/sync.js","../src/types.ts","../src/OutgoingMessage.ts","../src/MessageReceiver.ts","../src/Connection.ts","../src/Document.ts","../src/util/getParameters.ts","../src/ClientConnection.ts","../src/DirectConnection.ts","../src/util/debounce.ts","../src/Hocuspocus.ts","../src/Server.ts"],"sourcesContent":["/* eslint-env browser */\n\n/**\n * Binary data constants.\n *\n * @module binary\n */\n\n/**\n * n-th bit activated.\n *\n * @type {number}\n */\nexport const BIT1 = 1\nexport const BIT2 = 2\nexport const BIT3 = 4\nexport const BIT4 = 8\nexport const BIT5 = 16\nexport const BIT6 = 32\nexport const BIT7 = 64\nexport const BIT8 = 128\nexport const BIT9 = 256\nexport const BIT10 = 512\nexport const BIT11 = 1024\nexport const BIT12 = 2048\nexport const BIT13 = 4096\nexport const BIT14 = 8192\nexport const BIT15 = 16384\nexport const BIT16 = 32768\nexport const BIT17 = 65536\nexport const BIT18 = 1 << 17\nexport const BIT19 = 1 << 18\nexport const BIT20 = 1 << 19\nexport const BIT21 = 1 << 20\nexport const BIT22 = 1 << 21\nexport const BIT23 = 1 << 22\nexport const BIT24 = 1 << 23\nexport const BIT25 = 1 << 24\nexport const BIT26 = 1 << 25\nexport const BIT27 = 1 << 26\nexport const BIT28 = 1 << 27\nexport const BIT29 = 1 << 28\nexport const BIT30 = 1 << 29\nexport const BIT31 = 1 << 30\nexport const BIT32 = 1 << 31\n\n/**\n * First n bits activated.\n *\n * @type {number}\n */\nexport const BITS0 = 0\nexport const BITS1 = 1\nexport const BITS2 = 3\nexport const BITS3 = 7\nexport const BITS4 = 15\nexport const BITS5 = 31\nexport const BITS6 = 63\nexport const BITS7 = 127\nexport const BITS8 = 255\nexport const BITS9 = 511\nexport const BITS10 = 1023\nexport const BITS11 = 2047\nexport const BITS12 = 4095\nexport const BITS13 = 8191\nexport const BITS14 = 16383\nexport const BITS15 = 32767\nexport const BITS16 = 65535\nexport const BITS17 = BIT18 - 1\nexport const BITS18 = BIT19 - 1\nexport const BITS19 = BIT20 - 1\nexport const BITS20 = BIT21 - 1\nexport const BITS21 = BIT22 - 1\nexport const BITS22 = BIT23 - 1\nexport const BITS23 = BIT24 - 1\nexport const BITS24 = BIT25 - 1\nexport const BITS25 = BIT26 - 1\nexport const BITS26 = BIT27 - 1\nexport const BITS27 = BIT28 - 1\nexport const BITS28 = BIT29 - 1\nexport const BITS29 = BIT30 - 1\nexport const BITS30 = BIT31 - 1\n/**\n * @type {number}\n */\nexport const BITS31 = 0x7FFFFFFF\n/**\n * @type {number}\n */\nexport const BITS32 = 0xFFFFFFFF\n","/**\n * Common Math expressions.\n *\n * @module math\n */\n\nexport const floor = Math.floor\nexport const ceil = Math.ceil\nexport const abs = Math.abs\nexport const imul = Math.imul\nexport const round = Math.round\nexport const log10 = Math.log10\nexport const log2 = Math.log2\nexport const log = Math.log\nexport const sqrt = Math.sqrt\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The sum of a and b\n */\nexport const add = (a, b) => a + b\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The smaller element of a and b\n */\nexport const min = (a, b) => a < b ? a : b\n\n/**\n * @function\n * @param {number} a\n * @param {number} b\n * @return {number} The bigger element of a and b\n */\nexport const max = (a, b) => a > b ? a : b\n\nexport const isNaN = Number.isNaN\n\nexport const pow = Math.pow\n/**\n * Base 10 exponential function. Returns the value of 10 raised to the power of pow.\n *\n * @param {number} exp\n * @return {number}\n */\nexport const exp10 = exp => Math.pow(10, exp)\n\nexport const sign = Math.sign\n\n/**\n * @param {number} n\n * @return {boolean} Wether n is negative. This function also differentiates between -0 and +0\n */\nexport const isNegativeZero = n => n !== 0 ? n < 0 : 1 / n < 0\n","/**\n * Utility helpers for working with numbers.\n *\n * @module number\n */\n\nimport * as math from './math.js'\nimport * as binary from './binary.js'\n\nexport const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER\nexport const MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER\n\nexport const LOWEST_INT32 = 1 << 31\nexport const HIGHEST_INT32 = binary.BITS31\nexport const HIGHEST_UINT32 = binary.BITS32\n\n/* c8 ignore next */\nexport const isInteger = Number.isInteger || (num => typeof num === 'number' && isFinite(num) && math.floor(num) === num)\nexport const isNaN = Number.isNaN\nexport const parseInt = Number.parseInt\n\n/**\n * Count the number of \"1\" bits in an unsigned 32bit number.\n *\n * Super fun bitcount algorithm by Brian Kernighan.\n *\n * @param {number} n\n */\nexport const countBits = n => {\n  n &= binary.BITS32\n  let count = 0\n  while (n) {\n    n &= (n - 1)\n    count++\n  }\n  return count\n}\n","/**\n * Utility module to work with sets.\n *\n * @module set\n */\n\nexport const create = () => new Set()\n\n/**\n * @template T\n * @param {Set<T>} set\n * @return {Array<T>}\n */\nexport const toArray = set => Array.from(set)\n\n/**\n * @template T\n * @param {Set<T>} set\n * @return {T}\n */\nexport const first = set =>\n  set.values().next().value ?? undefined\n\n/**\n * @template T\n * @param {Iterable<T>} entries\n * @return {Set<T>}\n */\nexport const from = entries => new Set(entries)\n","/**\n * Utility module to work with Arrays.\n *\n * @module array\n */\n\nimport * as set from './set.js'\n\n/**\n * Return the last element of an array. The element must exist\n *\n * @template L\n * @param {ArrayLike<L>} arr\n * @return {L}\n */\nexport const last = arr => arr[arr.length - 1]\n\n/**\n * @template C\n * @return {Array<C>}\n */\nexport const create = () => /** @type {Array<C>} */ ([])\n\n/**\n * @template D\n * @param {Array<D>} a\n * @return {Array<D>}\n */\nexport const copy = a => /** @type {Array<D>} */ (a.slice())\n\n/**\n * Append elements from src to dest\n *\n * @template M\n * @param {Array<M>} dest\n * @param {Array<M>} src\n */\nexport const appendTo = (dest, src) => {\n  for (let i = 0; i < src.length; i++) {\n    dest.push(src[i])\n  }\n}\n\n/**\n * Transforms something array-like to an actual Array.\n *\n * @function\n * @template T\n * @param {ArrayLike<T>|Iterable<T>} arraylike\n * @return {T}\n */\nexport const from = Array.from\n\n/**\n * True iff condition holds on every element in the Array.\n *\n * @function\n * @template ITEM\n * @template {ArrayLike<ITEM>} ARR\n *\n * @param {ARR} arr\n * @param {function(ITEM, number, ARR):boolean} f\n * @return {boolean}\n */\nexport const every = (arr, f) => {\n  for (let i = 0; i < arr.length; i++) {\n    if (!f(arr[i], i, arr)) {\n      return false\n    }\n  }\n  return true\n}\n\n/**\n * True iff condition holds on some element in the Array.\n *\n * @function\n * @template S\n * @template {ArrayLike<S>} ARR\n * @param {ARR} arr\n * @param {function(S, number, ARR):boolean} f\n * @return {boolean}\n */\nexport const some = (arr, f) => {\n  for (let i = 0; i < arr.length; i++) {\n    if (f(arr[i], i, arr)) {\n      return true\n    }\n  }\n  return false\n}\n\n/**\n * @template ELEM\n *\n * @param {ArrayLike<ELEM>} a\n * @param {ArrayLike<ELEM>} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a.length === b.length && every(a, (item, index) => item === b[index])\n\n/**\n * @template ELEM\n * @param {Array<Array<ELEM>>} arr\n * @return {Array<ELEM>}\n */\nexport const flatten = arr => fold(arr, /** @type {Array<ELEM>} */ ([]), (acc, val) => acc.concat(val))\n\n/**\n * @template T\n * @param {number} len\n * @param {function(number, Array<T>):T} f\n * @return {Array<T>}\n */\nexport const unfold = (len, f) => {\n  const array = new Array(len)\n  for (let i = 0; i < len; i++) {\n    array[i] = f(i, array)\n  }\n  return array\n}\n\n/**\n * @template T\n * @template RESULT\n * @param {Array<T>} arr\n * @param {RESULT} seed\n * @param {function(RESULT, T, number):RESULT} folder\n */\nexport const fold = (arr, seed, folder) => arr.reduce(folder, seed)\n\nexport const isArray = Array.isArray\n\n/**\n * @template T\n * @param {Array<T>} arr\n * @return {Array<T>}\n */\nexport const unique = arr => from(set.from(arr))\n\n/**\n * @template T\n * @template M\n * @param {ArrayLike<T>} arr\n * @param {function(T):M} mapper\n * @return {Array<T>}\n */\nexport const uniqueBy = (arr, mapper) => {\n  /**\n   * @type {Set<M>}\n   */\n  const happened = set.create()\n  /**\n   * @type {Array<T>}\n   */\n  const result = []\n  for (let i = 0; i < arr.length; i++) {\n    const el = arr[i]\n    const mapped = mapper(el)\n    if (!happened.has(mapped)) {\n      happened.add(mapped)\n      result.push(el)\n    }\n  }\n  return result\n}\n\n/**\n * @template {ArrayLike<any>} ARR\n * @template {function(ARR extends ArrayLike<infer T> ? T : never, number, ARR):any} MAPPER\n * @param {ARR} arr\n * @param {MAPPER} mapper\n * @return {Array<MAPPER extends function(...any): infer M ? M : never>}\n */\nexport const map = (arr, mapper) => {\n  /**\n   * @type {Array<any>}\n   */\n  const res = Array(arr.length)\n  for (let i = 0; i < arr.length; i++) {\n    res[i] = mapper(/** @type {any} */ (arr[i]), i, /** @type {any} */ (arr))\n  }\n  return /** @type {any} */ (res)\n}\n\n/**\n * This function bubble-sorts a single item to the correct position. The sort happens in-place and\n * might be useful to ensure that a single item is at the correct position in an otherwise sorted\n * array.\n *\n * @example\n *  const arr = [3, 2, 5]\n *  arr.sort((a, b) => a - b)\n *  arr // => [2, 3, 5]\n *  arr.splice(1, 0, 7)\n *  array.bubbleSortItem(arr, 1, (a, b) => a - b)\n *  arr // => [2, 3, 5, 7]\n *\n * @template T\n * @param {Array<T>} arr\n * @param {number} i\n * @param {(a:T,b:T) => number} compareFn\n */\nexport const bubblesortItem = (arr, i, compareFn) => {\n  const n = arr[i]\n  let j = i\n  // try to sort to the right\n  while (j + 1 < arr.length && compareFn(n, arr[j + 1]) > 0) {\n    arr[j] = arr[j + 1]\n    arr[++j] = n\n  }\n  if (i === j && j > 0) { // no change yet\n    // sort to the left\n    while (j > 0 && compareFn(arr[j - 1], n) > 0) {\n      arr[j] = arr[j - 1]\n      arr[--j] = n\n    }\n  }\n  return j\n}\n","import * as array from './array.js'\n\n/**\n * Utility module to work with strings.\n *\n * @module string\n */\n\nexport const fromCharCode = String.fromCharCode\nexport const fromCodePoint = String.fromCodePoint\n\n/**\n * The largest utf16 character.\n * Corresponds to Uint8Array([255, 255]) or charcodeof(2x2^8)\n */\nexport const MAX_UTF16_CHARACTER = fromCharCode(65535)\n\n/**\n * @param {string} s\n * @return {string}\n */\nconst toLowerCase = s => s.toLowerCase()\n\nconst trimLeftRegex = /^\\s*/g\n\n/**\n * @param {string} s\n * @return {string}\n */\nexport const trimLeft = s => s.replace(trimLeftRegex, '')\n\nconst fromCamelCaseRegex = /([A-Z])/g\n\n/**\n * @param {string} s\n * @param {string} separator\n * @return {string}\n */\nexport const fromCamelCase = (s, separator) => trimLeft(s.replace(fromCamelCaseRegex, match => `${separator}${toLowerCase(match)}`))\n\n/**\n * Compute the utf8ByteLength\n * @param {string} str\n * @return {number}\n */\nexport const utf8ByteLength = str => unescape(encodeURIComponent(str)).length\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\nexport const _encodeUtf8Polyfill = str => {\n  const encodedString = unescape(encodeURIComponent(str))\n  const len = encodedString.length\n  const buf = new Uint8Array(len)\n  for (let i = 0; i < len; i++) {\n    buf[i] = /** @type {number} */ (encodedString.codePointAt(i))\n  }\n  return buf\n}\n\n/* c8 ignore next */\nexport const utf8TextEncoder = /** @type {TextEncoder} */ (typeof TextEncoder !== 'undefined' ? new TextEncoder() : null)\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\nexport const _encodeUtf8Native = str => utf8TextEncoder.encode(str)\n\n/**\n * @param {string} str\n * @return {Uint8Array}\n */\n/* c8 ignore next */\nexport const encodeUtf8 = utf8TextEncoder ? _encodeUtf8Native : _encodeUtf8Polyfill\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\nexport const _decodeUtf8Polyfill = buf => {\n  let remainingLen = buf.length\n  let encodedString = ''\n  let bufPos = 0\n  while (remainingLen > 0) {\n    const nextLen = remainingLen < 10000 ? remainingLen : 10000\n    const bytes = buf.subarray(bufPos, bufPos + nextLen)\n    bufPos += nextLen\n    // Starting with ES5.1 we can supply a generic array-like object as arguments\n    encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes))\n    remainingLen -= nextLen\n  }\n  return decodeURIComponent(escape(encodedString))\n}\n\n/* c8 ignore next */\nexport let utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8', { fatal: true, ignoreBOM: true })\n\n/* c8 ignore start */\nif (utf8TextDecoder && utf8TextDecoder.decode(new Uint8Array()).length === 1) {\n  // Safari doesn't handle BOM correctly.\n  // This fixes a bug in Safari 13.0.5 where it produces a BOM the first time it is called.\n  // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the first call and\n  // utf8TextDecoder.decode(new Uint8Array()).length === 1 on the second call\n  // Another issue is that from then on no BOM chars are recognized anymore\n  /* c8 ignore next */\n  utf8TextDecoder = null\n}\n/* c8 ignore stop */\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\nexport const _decodeUtf8Native = buf => /** @type {TextDecoder} */ (utf8TextDecoder).decode(buf)\n\n/**\n * @param {Uint8Array} buf\n * @return {string}\n */\n/* c8 ignore next */\nexport const decodeUtf8 = utf8TextDecoder ? _decodeUtf8Native : _decodeUtf8Polyfill\n\n/**\n * @param {string} str The initial string\n * @param {number} index Starting position\n * @param {number} remove Number of characters to remove\n * @param {string} insert New content to insert\n */\nexport const splice = (str, index, remove, insert = '') => str.slice(0, index) + insert + str.slice(index + remove)\n\n/**\n * @param {string} source\n * @param {number} n\n */\nexport const repeat = (source, n) => array.unfold(n, () => source).join('')\n","/**\n * Error helpers.\n *\n * @module error\n */\n\n/**\n * @param {string} s\n * @return {Error}\n */\n/* c8 ignore next */\nexport const create = s => new Error(s)\n\n/**\n * @throws {Error}\n * @return {never}\n */\n/* c8 ignore next 3 */\nexport const methodUnimplemented = () => {\n  throw create('Method unimplemented')\n}\n\n/**\n * @throws {Error}\n * @return {never}\n */\n/* c8 ignore next 3 */\nexport const unexpectedCase = () => {\n  throw create('Unexpected case')\n}\n","/**\n * Efficient schema-less binary encoding with support for variable length encoding.\n *\n * Use [lib0/encoding] with [lib0/decoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module encoding\n */\n\nimport * as math from './math.js'\nimport * as number from './number.js'\nimport * as binary from './binary.js'\nimport * as string from './string.js'\nimport * as array from './array.js'\n\n/**\n * A BinaryEncoder handles the encoding to an Uint8Array.\n */\nexport class Encoder {\n  constructor () {\n    this.cpos = 0\n    this.cbuf = new Uint8Array(100)\n    /**\n     * @type {Array<Uint8Array>}\n     */\n    this.bufs = []\n  }\n}\n\n/**\n * @function\n * @return {Encoder}\n */\nexport const createEncoder = () => new Encoder()\n\n/**\n * @param {function(Encoder):void} f\n */\nexport const encode = (f) => {\n  const encoder = createEncoder()\n  f(encoder)\n  return toUint8Array(encoder)\n}\n\n/**\n * The current length of the encoded data.\n *\n * @function\n * @param {Encoder} encoder\n * @return {number}\n */\nexport const length = encoder => {\n  let len = encoder.cpos\n  for (let i = 0; i < encoder.bufs.length; i++) {\n    len += encoder.bufs[i].length\n  }\n  return len\n}\n\n/**\n * Check whether encoder is empty.\n *\n * @function\n * @param {Encoder} encoder\n * @return {boolean}\n */\nexport const hasContent = encoder => encoder.cpos > 0 || encoder.bufs.length > 0\n\n/**\n * Transform to Uint8Array.\n *\n * @function\n * @param {Encoder} encoder\n * @return {Uint8Array} The created ArrayBuffer.\n */\nexport const toUint8Array = encoder => {\n  const uint8arr = new Uint8Array(length(encoder))\n  let curPos = 0\n  for (let i = 0; i < encoder.bufs.length; i++) {\n    const d = encoder.bufs[i]\n    uint8arr.set(d, curPos)\n    curPos += d.length\n  }\n  uint8arr.set(new Uint8Array(encoder.cbuf.buffer, 0, encoder.cpos), curPos)\n  return uint8arr\n}\n\n/**\n * Verify that it is possible to write `len` bytes wtihout checking. If\n * necessary, a new Buffer with the required length is attached.\n *\n * @param {Encoder} encoder\n * @param {number} len\n */\nexport const verifyLen = (encoder, len) => {\n  const bufferLen = encoder.cbuf.length\n  if (bufferLen - encoder.cpos < len) {\n    encoder.bufs.push(new Uint8Array(encoder.cbuf.buffer, 0, encoder.cpos))\n    encoder.cbuf = new Uint8Array(math.max(bufferLen, len) * 2)\n    encoder.cpos = 0\n  }\n}\n\n/**\n * Write one byte to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The byte that is to be encoded.\n */\nexport const write = (encoder, num) => {\n  const bufferLen = encoder.cbuf.length\n  if (encoder.cpos === bufferLen) {\n    encoder.bufs.push(encoder.cbuf)\n    encoder.cbuf = new Uint8Array(bufferLen * 2)\n    encoder.cpos = 0\n  }\n  encoder.cbuf[encoder.cpos++] = num\n}\n\n/**\n * Write one byte at a specific position.\n * Position must already be written (i.e. encoder.length > pos)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos Position to which to write data\n * @param {number} num Unsigned 8-bit integer\n */\nexport const set = (encoder, pos, num) => {\n  let buffer = null\n  // iterate all buffers and adjust position\n  for (let i = 0; i < encoder.bufs.length && buffer === null; i++) {\n    const b = encoder.bufs[i]\n    if (pos < b.length) {\n      buffer = b // found buffer\n    } else {\n      pos -= b.length\n    }\n  }\n  if (buffer === null) {\n    // use current buffer\n    buffer = encoder.cbuf\n  }\n  buffer[pos] = num\n}\n\n/**\n * Write one byte as an unsigned integer.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint8 = write\n\n/**\n * Write one byte as an unsigned Integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint8 = set\n\n/**\n * Write two bytes as an unsigned integer.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint16 = (encoder, num) => {\n  write(encoder, num & binary.BITS8)\n  write(encoder, (num >>> 8) & binary.BITS8)\n}\n/**\n * Write two bytes as an unsigned integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint16 = (encoder, pos, num) => {\n  set(encoder, pos, num & binary.BITS8)\n  set(encoder, pos + 1, (num >>> 8) & binary.BITS8)\n}\n\n/**\n * Write two bytes as an unsigned integer\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint32 = (encoder, num) => {\n  for (let i = 0; i < 4; i++) {\n    write(encoder, num & binary.BITS8)\n    num >>>= 8\n  }\n}\n\n/**\n * Write two bytes as an unsigned integer in big endian order.\n * (most significant byte first)\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeUint32BigEndian = (encoder, num) => {\n  for (let i = 3; i >= 0; i--) {\n    write(encoder, (num >>> (8 * i)) & binary.BITS8)\n  }\n}\n\n/**\n * Write two bytes as an unsigned integer at a specific location.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} pos The location where the data will be written.\n * @param {number} num The number that is to be encoded.\n */\nexport const setUint32 = (encoder, pos, num) => {\n  for (let i = 0; i < 4; i++) {\n    set(encoder, pos + i, num & binary.BITS8)\n    num >>>= 8\n  }\n}\n\n/**\n * Write a variable length unsigned integer. Max encodable integer is 2^53.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeVarUint = (encoder, num) => {\n  while (num > binary.BITS7) {\n    write(encoder, binary.BIT8 | (binary.BITS7 & num))\n    num = math.floor(num / 128) // shift >>> 7\n  }\n  write(encoder, binary.BITS7 & num)\n}\n\n/**\n * Write a variable length integer.\n *\n * We use the 7th bit instead for signaling that this is a negative number.\n *\n * @function\n * @param {Encoder} encoder\n * @param {number} num The number that is to be encoded.\n */\nexport const writeVarInt = (encoder, num) => {\n  const isNegative = math.isNegativeZero(num)\n  if (isNegative) {\n    num = -num\n  }\n  //             |- whether to continue reading         |- whether is negative     |- number\n  write(encoder, (num > binary.BITS6 ? binary.BIT8 : 0) | (isNegative ? binary.BIT7 : 0) | (binary.BITS6 & num))\n  num = math.floor(num / 64) // shift >>> 6\n  // We don't need to consider the case of num === 0 so we can use a different\n  // pattern here than above.\n  while (num > 0) {\n    write(encoder, (num > binary.BITS7 ? binary.BIT8 : 0) | (binary.BITS7 & num))\n    num = math.floor(num / 128) // shift >>> 7\n  }\n}\n\n/**\n * A cache to store strings temporarily\n */\nconst _strBuffer = new Uint8Array(30000)\nconst _maxStrBSize = _strBuffer.length / 3\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nexport const _writeVarStringNative = (encoder, str) => {\n  if (str.length < _maxStrBSize) {\n    // We can encode the string into the existing buffer\n    /* c8 ignore next */\n    const written = string.utf8TextEncoder.encodeInto(str, _strBuffer).written || 0\n    writeVarUint(encoder, written)\n    for (let i = 0; i < written; i++) {\n      write(encoder, _strBuffer[i])\n    }\n  } else {\n    writeVarUint8Array(encoder, string.encodeUtf8(str))\n  }\n}\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nexport const _writeVarStringPolyfill = (encoder, str) => {\n  const encodedString = unescape(encodeURIComponent(str))\n  const len = encodedString.length\n  writeVarUint(encoder, len)\n  for (let i = 0; i < len; i++) {\n    write(encoder, /** @type {number} */ (encodedString.codePointAt(i)))\n  }\n}\n\n/**\n * Write a variable length string.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\n/* c8 ignore next */\nexport const writeVarString = (string.utf8TextEncoder && /** @type {any} */ (string.utf8TextEncoder).encodeInto) ? _writeVarStringNative : _writeVarStringPolyfill\n\n/**\n * Write a string terminated by a special byte sequence. This is not very performant and is\n * generally discouraged. However, the resulting byte arrays are lexiographically ordered which\n * makes this a nice feature for databases.\n *\n * The string will be encoded using utf8 and then terminated and escaped using writeTerminatingUint8Array.\n *\n * @function\n * @param {Encoder} encoder\n * @param {String} str The string that is to be encoded.\n */\nexport const writeTerminatedString = (encoder, str) =>\n  writeTerminatedUint8Array(encoder, string.encodeUtf8(str))\n\n/**\n * Write a terminating Uint8Array. Note that this is not performant and is generally\n * discouraged. There are few situations when this is needed.\n *\n * We use 0x0 as a terminating character. 0x1 serves as an escape character for 0x0 and 0x1.\n *\n * Example: [0,1,2] is encoded to [1,0,1,1,2,0]. 0x0, and 0x1 needed to be escaped using 0x1. Then\n * the result is terminated using the 0x0 character.\n *\n * This is basically how many systems implement null terminated strings. However, we use an escape\n * character 0x1 to avoid issues and potenial attacks on our database (if this is used as a key\n * encoder for NoSql databases).\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} buf The string that is to be encoded.\n */\nexport const writeTerminatedUint8Array = (encoder, buf) => {\n  for (let i = 0; i < buf.length; i++) {\n    const b = buf[i]\n    if (b === 0 || b === 1) {\n      write(encoder, 1)\n    }\n    write(encoder, buf[i])\n  }\n  write(encoder, 0)\n}\n\n/**\n * Write the content of another Encoder.\n *\n * @TODO: can be improved!\n *        - Note: Should consider that when appending a lot of small Encoders, we should rather clone than referencing the old structure.\n *                Encoders start with a rather big initial buffer.\n *\n * @function\n * @param {Encoder} encoder The enUint8Arr\n * @param {Encoder} append The BinaryEncoder to be written.\n */\nexport const writeBinaryEncoder = (encoder, append) => writeUint8Array(encoder, toUint8Array(append))\n\n/**\n * Append fixed-length Uint8Array to the encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nexport const writeUint8Array = (encoder, uint8Array) => {\n  const bufferLen = encoder.cbuf.length\n  const cpos = encoder.cpos\n  const leftCopyLen = math.min(bufferLen - cpos, uint8Array.length)\n  const rightCopyLen = uint8Array.length - leftCopyLen\n  encoder.cbuf.set(uint8Array.subarray(0, leftCopyLen), cpos)\n  encoder.cpos += leftCopyLen\n  if (rightCopyLen > 0) {\n    // Still something to write, write right half..\n    // Append new buffer\n    encoder.bufs.push(encoder.cbuf)\n    // must have at least size of remaining buffer\n    encoder.cbuf = new Uint8Array(math.max(bufferLen * 2, rightCopyLen))\n    // copy array\n    encoder.cbuf.set(uint8Array.subarray(leftCopyLen))\n    encoder.cpos = rightCopyLen\n  }\n}\n\n/**\n * Append an Uint8Array to Encoder.\n *\n * @function\n * @param {Encoder} encoder\n * @param {Uint8Array} uint8Array\n */\nexport const writeVarUint8Array = (encoder, uint8Array) => {\n  writeVarUint(encoder, uint8Array.byteLength)\n  writeUint8Array(encoder, uint8Array)\n}\n\n/**\n * Create an DataView of the next `len` bytes. Use it to write data after\n * calling this function.\n *\n * ```js\n * // write float32 using DataView\n * const dv = writeOnDataView(encoder, 4)\n * dv.setFloat32(0, 1.1)\n * // read float32 using DataView\n * const dv = readFromDataView(encoder, 4)\n * dv.getFloat32(0) // => 1.100000023841858 (leaving it to the reader to find out why this is the correct result)\n * ```\n *\n * @param {Encoder} encoder\n * @param {number} len\n * @return {DataView}\n */\nexport const writeOnDataView = (encoder, len) => {\n  verifyLen(encoder, len)\n  const dview = new DataView(encoder.cbuf.buffer, encoder.cpos, len)\n  encoder.cpos += len\n  return dview\n}\n\n/**\n * @param {Encoder} encoder\n * @param {number} num\n */\nexport const writeFloat32 = (encoder, num) => writeOnDataView(encoder, 4).setFloat32(0, num, false)\n\n/**\n * @param {Encoder} encoder\n * @param {number} num\n */\nexport const writeFloat64 = (encoder, num) => writeOnDataView(encoder, 8).setFloat64(0, num, false)\n\n/**\n * @param {Encoder} encoder\n * @param {bigint} num\n */\nexport const writeBigInt64 = (encoder, num) => /** @type {any} */ (writeOnDataView(encoder, 8)).setBigInt64(0, num, false)\n\n/**\n * @param {Encoder} encoder\n * @param {bigint} num\n */\nexport const writeBigUint64 = (encoder, num) => /** @type {any} */ (writeOnDataView(encoder, 8)).setBigUint64(0, num, false)\n\nconst floatTestBed = new DataView(new ArrayBuffer(4))\n/**\n * Check if a number can be encoded as a 32 bit float.\n *\n * @param {number} num\n * @return {boolean}\n */\nconst isFloat32 = num => {\n  floatTestBed.setFloat32(0, num)\n  return floatTestBed.getFloat32(0) === num\n}\n\n/**\n * Encode data with efficient binary format.\n *\n * Differences to JSON:\n * • Transforms data to a binary format (not to a string)\n * • Encodes undefined, NaN, and ArrayBuffer (these can't be represented in JSON)\n * • Numbers are efficiently encoded either as a variable length integer, as a\n *   32 bit float, as a 64 bit float, or as a 64 bit bigint.\n *\n * Encoding table:\n *\n * | Data Type           | Prefix   | Encoding Method    | Comment |\n * | ------------------- | -------- | ------------------ | ------- |\n * | undefined           | 127      |                    | Functions, symbol, and everything that cannot be identified is encoded as undefined |\n * | null                | 126      |                    | |\n * | integer             | 125      | writeVarInt        | Only encodes 32 bit signed integers |\n * | float32             | 124      | writeFloat32       | |\n * | float64             | 123      | writeFloat64       | |\n * | bigint              | 122      | writeBigInt64      | |\n * | boolean (false)     | 121      |                    | True and false are different data types so we save the following byte |\n * | boolean (true)      | 120      |                    | - 0b01111000 so the last bit determines whether true or false |\n * | string              | 119      | writeVarString     | |\n * | object<string,any>  | 118      | custom             | Writes {length} then {length} key-value pairs |\n * | array<any>          | 117      | custom             | Writes {length} then {length} json values |\n * | Uint8Array          | 116      | writeVarUint8Array | We use Uint8Array for any kind of binary data |\n *\n * Reasons for the decreasing prefix:\n * We need the first bit for extendability (later we may want to encode the\n * prefix with writeVarUint). The remaining 7 bits are divided as follows:\n * [0-30]   the beginning of the data range is used for custom purposes\n *          (defined by the function that uses this library)\n * [31-127] the end of the data range is used for data encoding by\n *          lib0/encoding.js\n *\n * @param {Encoder} encoder\n * @param {undefined|null|number|bigint|boolean|string|Object<string,any>|Array<any>|Uint8Array} data\n */\nexport const writeAny = (encoder, data) => {\n  switch (typeof data) {\n    case 'string':\n      // TYPE 119: STRING\n      write(encoder, 119)\n      writeVarString(encoder, data)\n      break\n    case 'number':\n      if (number.isInteger(data) && math.abs(data) <= binary.BITS31) {\n        // TYPE 125: INTEGER\n        write(encoder, 125)\n        writeVarInt(encoder, data)\n      } else if (isFloat32(data)) {\n        // TYPE 124: FLOAT32\n        write(encoder, 124)\n        writeFloat32(encoder, data)\n      } else {\n        // TYPE 123: FLOAT64\n        write(encoder, 123)\n        writeFloat64(encoder, data)\n      }\n      break\n    case 'bigint':\n      // TYPE 122: BigInt\n      write(encoder, 122)\n      writeBigInt64(encoder, data)\n      break\n    case 'object':\n      if (data === null) {\n        // TYPE 126: null\n        write(encoder, 126)\n      } else if (array.isArray(data)) {\n        // TYPE 117: Array\n        write(encoder, 117)\n        writeVarUint(encoder, data.length)\n        for (let i = 0; i < data.length; i++) {\n          writeAny(encoder, data[i])\n        }\n      } else if (data instanceof Uint8Array) {\n        // TYPE 116: ArrayBuffer\n        write(encoder, 116)\n        writeVarUint8Array(encoder, data)\n      } else {\n        // TYPE 118: Object\n        write(encoder, 118)\n        const keys = Object.keys(data)\n        writeVarUint(encoder, keys.length)\n        for (let i = 0; i < keys.length; i++) {\n          const key = keys[i]\n          writeVarString(encoder, key)\n          writeAny(encoder, data[key])\n        }\n      }\n      break\n    case 'boolean':\n      // TYPE 120/121: boolean (true/false)\n      write(encoder, data ? 120 : 121)\n      break\n    default:\n      // TYPE 127: undefined\n      write(encoder, 127)\n  }\n}\n\n/**\n * Now come a few stateful encoder that have their own classes.\n */\n\n/**\n * Basic Run Length Encoder - a basic compression implementation.\n *\n * Encodes [1,1,1,7] to [1,3,7,1] (3 times 1, 1 time 7). This encoder might do more harm than good if there are a lot of values that are not repeated.\n *\n * It was originally used for image compression. Cool .. article http://csbruce.com/cbm/transactor/pdfs/trans_v7_i06.pdf\n *\n * @note T must not be null!\n *\n * @template T\n */\nexport class RleEncoder extends Encoder {\n  /**\n   * @param {function(Encoder, T):void} writer\n   */\n  constructor (writer) {\n    super()\n    /**\n     * The writer\n     */\n    this.w = writer\n    /**\n     * Current state\n     * @type {T|null}\n     */\n    this.s = null\n    this.count = 0\n  }\n\n  /**\n   * @param {T} v\n   */\n  write (v) {\n    if (this.s === v) {\n      this.count++\n    } else {\n      if (this.count > 0) {\n        // flush counter, unless this is the first value (count = 0)\n        writeVarUint(this, this.count - 1) // since count is always > 0, we can decrement by one. non-standard encoding ftw\n      }\n      this.count = 1\n      // write first value\n      this.w(this, v)\n      this.s = v\n    }\n  }\n}\n\n/**\n * Basic diff decoder using variable length encoding.\n *\n * Encodes the values [3, 1100, 1101, 1050, 0] to [3, 1097, 1, -51, -1050] using writeVarInt.\n */\nexport class IntDiffEncoder extends Encoder {\n  /**\n   * @param {number} start\n   */\n  constructor (start) {\n    super()\n    /**\n     * Current state\n     * @type {number}\n     */\n    this.s = start\n  }\n\n  /**\n   * @param {number} v\n   */\n  write (v) {\n    writeVarInt(this, v - this.s)\n    this.s = v\n  }\n}\n\n/**\n * A combination of IntDiffEncoder and RleEncoder.\n *\n * Basically first writes the IntDiffEncoder and then counts duplicate diffs using RleEncoding.\n *\n * Encodes the values [1,1,1,2,3,4,5,6] as [1,1,0,2,1,5] (RLE([1,0,0,1,1,1,1,1]) ⇒ RleIntDiff[1,1,0,2,1,5])\n */\nexport class RleIntDiffEncoder extends Encoder {\n  /**\n   * @param {number} start\n   */\n  constructor (start) {\n    super()\n    /**\n     * Current state\n     * @type {number}\n     */\n    this.s = start\n    this.count = 0\n  }\n\n  /**\n   * @param {number} v\n   */\n  write (v) {\n    if (this.s === v && this.count > 0) {\n      this.count++\n    } else {\n      if (this.count > 0) {\n        // flush counter, unless this is the first value (count = 0)\n        writeVarUint(this, this.count - 1) // since count is always > 0, we can decrement by one. non-standard encoding ftw\n      }\n      this.count = 1\n      // write first value\n      writeVarInt(this, v - this.s)\n      this.s = v\n    }\n  }\n}\n\n/**\n * @param {UintOptRleEncoder} encoder\n */\nconst flushUintOptRleEncoder = encoder => {\n  if (encoder.count > 0) {\n    // flush counter, unless this is the first value (count = 0)\n    // case 1: just a single value. set sign to positive\n    // case 2: write several values. set sign to negative to indicate that there is a length coming\n    writeVarInt(encoder.encoder, encoder.count === 1 ? encoder.s : -encoder.s)\n    if (encoder.count > 1) {\n      writeVarUint(encoder.encoder, encoder.count - 2) // since count is always > 1, we can decrement by one. non-standard encoding ftw\n    }\n  }\n}\n\n/**\n * Optimized Rle encoder that does not suffer from the mentioned problem of the basic Rle encoder.\n *\n * Internally uses VarInt encoder to write unsigned integers. If the input occurs multiple times, we write\n * write it as a negative number. The UintOptRleDecoder then understands that it needs to read a count.\n *\n * Encodes [1,2,3,3,3] as [1,2,-3,3] (once 1, once 2, three times 3)\n */\nexport class UintOptRleEncoder {\n  constructor () {\n    this.encoder = new Encoder()\n    /**\n     * @type {number}\n     */\n    this.s = 0\n    this.count = 0\n  }\n\n  /**\n   * @param {number} v\n   */\n  write (v) {\n    if (this.s === v) {\n      this.count++\n    } else {\n      flushUintOptRleEncoder(this)\n      this.count = 1\n      this.s = v\n    }\n  }\n\n  /**\n   * Flush the encoded state and transform this to a Uint8Array.\n   *\n   * Note that this should only be called once.\n   */\n  toUint8Array () {\n    flushUintOptRleEncoder(this)\n    return toUint8Array(this.encoder)\n  }\n}\n\n/**\n * Increasing Uint Optimized RLE Encoder\n *\n * The RLE encoder counts the number of same occurences of the same value.\n * The IncUintOptRle encoder counts if the value increases.\n * I.e. 7, 8, 9, 10 will be encoded as [-7, 4]. 1, 3, 5 will be encoded\n * as [1, 3, 5].\n */\nexport class IncUintOptRleEncoder {\n  constructor () {\n    this.encoder = new Encoder()\n    /**\n     * @type {number}\n     */\n    this.s = 0\n    this.count = 0\n  }\n\n  /**\n   * @param {number} v\n   */\n  write (v) {\n    if (this.s + this.count === v) {\n      this.count++\n    } else {\n      flushUintOptRleEncoder(this)\n      this.count = 1\n      this.s = v\n    }\n  }\n\n  /**\n   * Flush the encoded state and transform this to a Uint8Array.\n   *\n   * Note that this should only be called once.\n   */\n  toUint8Array () {\n    flushUintOptRleEncoder(this)\n    return toUint8Array(this.encoder)\n  }\n}\n\n/**\n * @param {IntDiffOptRleEncoder} encoder\n */\nconst flushIntDiffOptRleEncoder = encoder => {\n  if (encoder.count > 0) {\n    //          31 bit making up the diff | wether to write the counter\n    // const encodedDiff = encoder.diff << 1 | (encoder.count === 1 ? 0 : 1)\n    const encodedDiff = encoder.diff * 2 + (encoder.count === 1 ? 0 : 1)\n    // flush counter, unless this is the first value (count = 0)\n    // case 1: just a single value. set first bit to positive\n    // case 2: write several values. set first bit to negative to indicate that there is a length coming\n    writeVarInt(encoder.encoder, encodedDiff)\n    if (encoder.count > 1) {\n      writeVarUint(encoder.encoder, encoder.count - 2) // since count is always > 1, we can decrement by one. non-standard encoding ftw\n    }\n  }\n}\n\n/**\n * A combination of the IntDiffEncoder and the UintOptRleEncoder.\n *\n * The count approach is similar to the UintDiffOptRleEncoder, but instead of using the negative bitflag, it encodes\n * in the LSB whether a count is to be read. Therefore this Encoder only supports 31 bit integers!\n *\n * Encodes [1, 2, 3, 2] as [3, 1, 6, -1] (more specifically [(1 << 1) | 1, (3 << 0) | 0, -1])\n *\n * Internally uses variable length encoding. Contrary to normal UintVar encoding, the first byte contains:\n * * 1 bit that denotes whether the next value is a count (LSB)\n * * 1 bit that denotes whether this value is negative (MSB - 1)\n * * 1 bit that denotes whether to continue reading the variable length integer (MSB)\n *\n * Therefore, only five bits remain to encode diff ranges.\n *\n * Use this Encoder only when appropriate. In most cases, this is probably a bad idea.\n */\nexport class IntDiffOptRleEncoder {\n  constructor () {\n    this.encoder = new Encoder()\n    /**\n     * @type {number}\n     */\n    this.s = 0\n    this.count = 0\n    this.diff = 0\n  }\n\n  /**\n   * @param {number} v\n   */\n  write (v) {\n    if (this.diff === v - this.s) {\n      this.s = v\n      this.count++\n    } else {\n      flushIntDiffOptRleEncoder(this)\n      this.count = 1\n      this.diff = v - this.s\n      this.s = v\n    }\n  }\n\n  /**\n   * Flush the encoded state and transform this to a Uint8Array.\n   *\n   * Note that this should only be called once.\n   */\n  toUint8Array () {\n    flushIntDiffOptRleEncoder(this)\n    return toUint8Array(this.encoder)\n  }\n}\n\n/**\n * Optimized String Encoder.\n *\n * Encoding many small strings in a simple Encoder is not very efficient. The function call to decode a string takes some time and creates references that must be eventually deleted.\n * In practice, when decoding several million small strings, the GC will kick in more and more often to collect orphaned string objects (or maybe there is another reason?).\n *\n * This string encoder solves the above problem. All strings are concatenated and written as a single string using a single encoding call.\n *\n * The lengths are encoded using a UintOptRleEncoder.\n */\nexport class StringEncoder {\n  constructor () {\n    /**\n     * @type {Array<string>}\n     */\n    this.sarr = []\n    this.s = ''\n    this.lensE = new UintOptRleEncoder()\n  }\n\n  /**\n   * @param {string} string\n   */\n  write (string) {\n    this.s += string\n    if (this.s.length > 19) {\n      this.sarr.push(this.s)\n      this.s = ''\n    }\n    this.lensE.write(string.length)\n  }\n\n  toUint8Array () {\n    const encoder = new Encoder()\n    this.sarr.push(this.s)\n    this.s = ''\n    writeVarString(encoder, this.sarr.join(''))\n    writeUint8Array(encoder, this.lensE.toUint8Array())\n    return toUint8Array(encoder)\n  }\n}\n","/**\n * Efficient schema-less binary decoding with support for variable length encoding.\n *\n * Use [lib0/decoding] with [lib0/encoding]. Every encoding function has a corresponding decoding function.\n *\n * Encodes numbers in little-endian order (least to most significant byte order)\n * and is compatible with Golang's binary encoding (https://golang.org/pkg/encoding/binary/)\n * which is also used in Protocol Buffers.\n *\n * ```js\n * // encoding step\n * const encoder = encoding.createEncoder()\n * encoding.writeVarUint(encoder, 256)\n * encoding.writeVarString(encoder, 'Hello world!')\n * const buf = encoding.toUint8Array(encoder)\n * ```\n *\n * ```js\n * // decoding step\n * const decoder = decoding.createDecoder(buf)\n * decoding.readVarUint(decoder) // => 256\n * decoding.readVarString(decoder) // => 'Hello world!'\n * decoding.hasContent(decoder) // => false - all data is read\n * ```\n *\n * @module decoding\n */\n\nimport * as binary from './binary.js'\nimport * as math from './math.js'\nimport * as number from './number.js'\nimport * as string from './string.js'\nimport * as error from './error.js'\nimport * as encoding from './encoding.js'\n\nconst errorUnexpectedEndOfArray = error.create('Unexpected end of array')\nconst errorIntegerOutOfRange = error.create('Integer out of Range')\n\n/**\n * A Decoder handles the decoding of an Uint8Array.\n */\nexport class Decoder {\n  /**\n   * @param {Uint8Array} uint8Array Binary data to decode\n   */\n  constructor (uint8Array) {\n    /**\n     * Decoding target.\n     *\n     * @type {Uint8Array}\n     */\n    this.arr = uint8Array\n    /**\n     * Current decoding position.\n     *\n     * @type {number}\n     */\n    this.pos = 0\n  }\n}\n\n/**\n * @function\n * @param {Uint8Array} uint8Array\n * @return {Decoder}\n */\nexport const createDecoder = uint8Array => new Decoder(uint8Array)\n\n/**\n * @function\n * @param {Decoder} decoder\n * @return {boolean}\n */\nexport const hasContent = decoder => decoder.pos !== decoder.arr.length\n\n/**\n * Clone a decoder instance.\n * Optionally set a new position parameter.\n *\n * @function\n * @param {Decoder} decoder The decoder instance\n * @param {number} [newPos] Defaults to current position\n * @return {Decoder} A clone of `decoder`\n */\nexport const clone = (decoder, newPos = decoder.pos) => {\n  const _decoder = createDecoder(decoder.arr)\n  _decoder.pos = newPos\n  return _decoder\n}\n\n/**\n * Create an Uint8Array view of the next `len` bytes and advance the position by `len`.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n *            Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @param {Decoder} decoder The decoder instance\n * @param {number} len The length of bytes to read\n * @return {Uint8Array}\n */\nexport const readUint8Array = (decoder, len) => {\n  const view = new Uint8Array(decoder.arr.buffer, decoder.pos + decoder.arr.byteOffset, len)\n  decoder.pos += len\n  return view\n}\n\n/**\n * Read variable length Uint8Array.\n *\n * Important: The Uint8Array still points to the underlying ArrayBuffer. Make sure to discard the result as soon as possible to prevent any memory leaks.\n *            Use `buffer.copyUint8Array` to copy the result into a new Uint8Array.\n *\n * @function\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nexport const readVarUint8Array = decoder => readUint8Array(decoder, readVarUint(decoder))\n\n/**\n * Read the rest of the content as an ArrayBuffer\n * @function\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nexport const readTailAsUint8Array = decoder => readUint8Array(decoder, decoder.arr.length - decoder.pos)\n\n/**\n * Skip one byte, jump to the next position.\n * @function\n * @param {Decoder} decoder The decoder instance\n * @return {number} The next position\n */\nexport const skip8 = decoder => decoder.pos++\n\n/**\n * Read one byte as unsigned integer.\n * @function\n * @param {Decoder} decoder The decoder instance\n * @return {number} Unsigned 8-bit integer\n */\nexport const readUint8 = decoder => decoder.arr[decoder.pos++]\n\n/**\n * Read 2 bytes as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint16 = decoder => {\n  const uint =\n    decoder.arr[decoder.pos] +\n    (decoder.arr[decoder.pos + 1] << 8)\n  decoder.pos += 2\n  return uint\n}\n\n/**\n * Read 4 bytes as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint32 = decoder => {\n  const uint =\n    (decoder.arr[decoder.pos] +\n    (decoder.arr[decoder.pos + 1] << 8) +\n    (decoder.arr[decoder.pos + 2] << 16) +\n    (decoder.arr[decoder.pos + 3] << 24)) >>> 0\n  decoder.pos += 4\n  return uint\n}\n\n/**\n * Read 4 bytes as unsigned integer in big endian order.\n * (most significant byte first)\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const readUint32BigEndian = decoder => {\n  const uint =\n    (decoder.arr[decoder.pos + 3] +\n    (decoder.arr[decoder.pos + 2] << 8) +\n    (decoder.arr[decoder.pos + 1] << 16) +\n    (decoder.arr[decoder.pos] << 24)) >>> 0\n  decoder.pos += 4\n  return uint\n}\n\n/**\n * Look ahead without incrementing the position\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint8 = decoder => decoder.arr[decoder.pos]\n\n/**\n * Look ahead without incrementing the position\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint16 = decoder =>\n  decoder.arr[decoder.pos] +\n  (decoder.arr[decoder.pos + 1] << 8)\n\n/**\n * Look ahead without incrementing the position\n * to the next byte and read it as unsigned integer.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.\n */\nexport const peekUint32 = decoder => (\n  decoder.arr[decoder.pos] +\n  (decoder.arr[decoder.pos + 1] << 8) +\n  (decoder.arr[decoder.pos + 2] << 16) +\n  (decoder.arr[decoder.pos + 3] << 24)\n) >>> 0\n\n/**\n * Read unsigned integer (32bit) with variable length.\n * 1/8th of the storage is used as encoding overhead.\n *  * numbers < 2^7 is stored in one bytlength\n *  * numbers < 2^14 is stored in two bylength\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.length\n */\nexport const readVarUint = decoder => {\n  let num = 0\n  let mult = 1\n  const len = decoder.arr.length\n  while (decoder.pos < len) {\n    const r = decoder.arr[decoder.pos++]\n    // num = num | ((r & binary.BITS7) << len)\n    num = num + (r & binary.BITS7) * mult // shift $r << (7*#iterations) and add it to num\n    mult *= 128 // next iteration, shift 7 \"more\" to the left\n    if (r < binary.BIT8) {\n      return num\n    }\n    /* c8 ignore start */\n    if (num > number.MAX_SAFE_INTEGER) {\n      throw errorIntegerOutOfRange\n    }\n    /* c8 ignore stop */\n  }\n  throw errorUnexpectedEndOfArray\n}\n\n/**\n * Read signed integer (32bit) with variable length.\n * 1/8th of the storage is used as encoding overhead.\n *  * numbers < 2^7 is stored in one bytlength\n *  * numbers < 2^14 is stored in two bylength\n * @todo This should probably create the inverse ~num if number is negative - but this would be a breaking change.\n *\n * @function\n * @param {Decoder} decoder\n * @return {number} An unsigned integer.length\n */\nexport const readVarInt = decoder => {\n  let r = decoder.arr[decoder.pos++]\n  let num = r & binary.BITS6\n  let mult = 64\n  const sign = (r & binary.BIT7) > 0 ? -1 : 1\n  if ((r & binary.BIT8) === 0) {\n    // don't continue reading\n    return sign * num\n  }\n  const len = decoder.arr.length\n  while (decoder.pos < len) {\n    r = decoder.arr[decoder.pos++]\n    // num = num | ((r & binary.BITS7) << len)\n    num = num + (r & binary.BITS7) * mult\n    mult *= 128\n    if (r < binary.BIT8) {\n      return sign * num\n    }\n    /* c8 ignore start */\n    if (num > number.MAX_SAFE_INTEGER) {\n      throw errorIntegerOutOfRange\n    }\n    /* c8 ignore stop */\n  }\n  throw errorUnexpectedEndOfArray\n}\n\n/**\n * Look ahead and read varUint without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {number}\n */\nexport const peekVarUint = decoder => {\n  const pos = decoder.pos\n  const s = readVarUint(decoder)\n  decoder.pos = pos\n  return s\n}\n\n/**\n * Look ahead and read varUint without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {number}\n */\nexport const peekVarInt = decoder => {\n  const pos = decoder.pos\n  const s = readVarInt(decoder)\n  decoder.pos = pos\n  return s\n}\n\n/**\n * We don't test this function anymore as we use native decoding/encoding by default now.\n * Better not modify this anymore..\n *\n * Transforming utf8 to a string is pretty expensive. The code performs 10x better\n * when String.fromCodePoint is fed with all characters as arguments.\n * But most environments have a maximum number of arguments per functions.\n * For effiency reasons we apply a maximum of 10000 characters at once.\n *\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String.\n */\n/* c8 ignore start */\nexport const _readVarStringPolyfill = decoder => {\n  let remainingLen = readVarUint(decoder)\n  if (remainingLen === 0) {\n    return ''\n  } else {\n    let encodedString = String.fromCodePoint(readUint8(decoder)) // remember to decrease remainingLen\n    if (--remainingLen < 100) { // do not create a Uint8Array for small strings\n      while (remainingLen--) {\n        encodedString += String.fromCodePoint(readUint8(decoder))\n      }\n    } else {\n      while (remainingLen > 0) {\n        const nextLen = remainingLen < 10000 ? remainingLen : 10000\n        // this is dangerous, we create a fresh array view from the existing buffer\n        const bytes = decoder.arr.subarray(decoder.pos, decoder.pos + nextLen)\n        decoder.pos += nextLen\n        // Starting with ES5.1 we can supply a generic array-like object as arguments\n        encodedString += String.fromCodePoint.apply(null, /** @type {any} */ (bytes))\n        remainingLen -= nextLen\n      }\n    }\n    return decodeURIComponent(escape(encodedString))\n  }\n}\n/* c8 ignore stop */\n\n/**\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String\n */\nexport const _readVarStringNative = decoder =>\n  /** @type any */ (string.utf8TextDecoder).decode(readVarUint8Array(decoder))\n\n/**\n * Read string of variable length\n * * varUint is used to store the length of the string\n *\n * @function\n * @param {Decoder} decoder\n * @return {String} The read String\n *\n */\n/* c8 ignore next */\nexport const readVarString = string.utf8TextDecoder ? _readVarStringNative : _readVarStringPolyfill\n\n/**\n * @param {Decoder} decoder\n * @return {Uint8Array}\n */\nexport const readTerminatedUint8Array = decoder => {\n  const encoder = encoding.createEncoder()\n  let b\n  while (true) {\n    b = readUint8(decoder)\n    if (b === 0) {\n      return encoding.toUint8Array(encoder)\n    }\n    if (b === 1) {\n      b = readUint8(decoder)\n    }\n    encoding.write(encoder, b)\n  }\n}\n\n/**\n * @param {Decoder} decoder\n * @return {string}\n */\nexport const readTerminatedString = decoder => string.decodeUtf8(readTerminatedUint8Array(decoder))\n\n/**\n * Look ahead and read varString without incrementing position\n *\n * @function\n * @param {Decoder} decoder\n * @return {string}\n */\nexport const peekVarString = decoder => {\n  const pos = decoder.pos\n  const s = readVarString(decoder)\n  decoder.pos = pos\n  return s\n}\n\n/**\n * @param {Decoder} decoder\n * @param {number} len\n * @return {DataView}\n */\nexport const readFromDataView = (decoder, len) => {\n  const dv = new DataView(decoder.arr.buffer, decoder.arr.byteOffset + decoder.pos, len)\n  decoder.pos += len\n  return dv\n}\n\n/**\n * @param {Decoder} decoder\n */\nexport const readFloat32 = decoder => readFromDataView(decoder, 4).getFloat32(0, false)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readFloat64 = decoder => readFromDataView(decoder, 8).getFloat64(0, false)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readBigInt64 = decoder => /** @type {any} */ (readFromDataView(decoder, 8)).getBigInt64(0, false)\n\n/**\n * @param {Decoder} decoder\n */\nexport const readBigUint64 = decoder => /** @type {any} */ (readFromDataView(decoder, 8)).getBigUint64(0, false)\n\n/**\n * @type {Array<function(Decoder):any>}\n */\nconst readAnyLookupTable = [\n  decoder => undefined, // CASE 127: undefined\n  decoder => null, // CASE 126: null\n  readVarInt, // CASE 125: integer\n  readFloat32, // CASE 124: float32\n  readFloat64, // CASE 123: float64\n  readBigInt64, // CASE 122: bigint\n  decoder => false, // CASE 121: boolean (false)\n  decoder => true, // CASE 120: boolean (true)\n  readVarString, // CASE 119: string\n  decoder => { // CASE 118: object<string,any>\n    const len = readVarUint(decoder)\n    /**\n     * @type {Object<string,any>}\n     */\n    const obj = {}\n    for (let i = 0; i < len; i++) {\n      const key = readVarString(decoder)\n      obj[key] = readAny(decoder)\n    }\n    return obj\n  },\n  decoder => { // CASE 117: array<any>\n    const len = readVarUint(decoder)\n    const arr = []\n    for (let i = 0; i < len; i++) {\n      arr.push(readAny(decoder))\n    }\n    return arr\n  },\n  readVarUint8Array // CASE 116: Uint8Array\n]\n\n/**\n * @param {Decoder} decoder\n */\nexport const readAny = decoder => readAnyLookupTable[127 - readUint8(decoder)](decoder)\n\n/**\n * T must not be null.\n *\n * @template T\n */\nexport class RleDecoder extends Decoder {\n  /**\n   * @param {Uint8Array} uint8Array\n   * @param {function(Decoder):T} reader\n   */\n  constructor (uint8Array, reader) {\n    super(uint8Array)\n    /**\n     * The reader\n     */\n    this.reader = reader\n    /**\n     * Current state\n     * @type {T|null}\n     */\n    this.s = null\n    this.count = 0\n  }\n\n  read () {\n    if (this.count === 0) {\n      this.s = this.reader(this)\n      if (hasContent(this)) {\n        this.count = readVarUint(this) + 1 // see encoder implementation for the reason why this is incremented\n      } else {\n        this.count = -1 // read the current value forever\n      }\n    }\n    this.count--\n    return /** @type {T} */ (this.s)\n  }\n}\n\nexport class IntDiffDecoder extends Decoder {\n  /**\n   * @param {Uint8Array} uint8Array\n   * @param {number} start\n   */\n  constructor (uint8Array, start) {\n    super(uint8Array)\n    /**\n     * Current state\n     * @type {number}\n     */\n    this.s = start\n  }\n\n  /**\n   * @return {number}\n   */\n  read () {\n    this.s += readVarInt(this)\n    return this.s\n  }\n}\n\nexport class RleIntDiffDecoder extends Decoder {\n  /**\n   * @param {Uint8Array} uint8Array\n   * @param {number} start\n   */\n  constructor (uint8Array, start) {\n    super(uint8Array)\n    /**\n     * Current state\n     * @type {number}\n     */\n    this.s = start\n    this.count = 0\n  }\n\n  /**\n   * @return {number}\n   */\n  read () {\n    if (this.count === 0) {\n      this.s += readVarInt(this)\n      if (hasContent(this)) {\n        this.count = readVarUint(this) + 1 // see encoder implementation for the reason why this is incremented\n      } else {\n        this.count = -1 // read the current value forever\n      }\n    }\n    this.count--\n    return /** @type {number} */ (this.s)\n  }\n}\n\nexport class UintOptRleDecoder extends Decoder {\n  /**\n   * @param {Uint8Array} uint8Array\n   */\n  constructor (uint8Array) {\n    super(uint8Array)\n    /**\n     * @type {number}\n     */\n    this.s = 0\n    this.count = 0\n  }\n\n  read () {\n    if (this.count === 0) {\n      this.s = readVarInt(this)\n      // if the sign is negative, we read the count too, otherwise count is 1\n      const isNegative = math.isNegativeZero(this.s)\n      this.count = 1\n      if (isNegative) {\n        this.s = -this.s\n        this.count = readVarUint(this) + 2\n      }\n    }\n    this.count--\n    return /** @type {number} */ (this.s)\n  }\n}\n\nexport class IncUintOptRleDecoder extends Decoder {\n  /**\n   * @param {Uint8Array} uint8Array\n   */\n  constructor (uint8Array) {\n    super(uint8Array)\n    /**\n     * @type {number}\n     */\n    this.s = 0\n    this.count = 0\n  }\n\n  read () {\n    if (this.count === 0) {\n      this.s = readVarInt(this)\n      // if the sign is negative, we read the count too, otherwise count is 1\n      const isNegative = math.isNegativeZero(this.s)\n      this.count = 1\n      if (isNegative) {\n        this.s = -this.s\n        this.count = readVarUint(this) + 2\n      }\n    }\n    this.count--\n    return /** @type {number} */ (this.s++)\n  }\n}\n\nexport class IntDiffOptRleDecoder extends Decoder {\n  /**\n   * @param {Uint8Array} uint8Array\n   */\n  constructor (uint8Array) {\n    super(uint8Array)\n    /**\n     * @type {number}\n     */\n    this.s = 0\n    this.count = 0\n    this.diff = 0\n  }\n\n  /**\n   * @return {number}\n   */\n  read () {\n    if (this.count === 0) {\n      const diff = readVarInt(this)\n      // if the first bit is set, we read more data\n      const hasCount = diff & 1\n      this.diff = math.floor(diff / 2) // shift >> 1\n      this.count = 1\n      if (hasCount) {\n        this.count = readVarUint(this) + 2\n      }\n    }\n    this.s += this.diff\n    this.count--\n    return this.s\n  }\n}\n\nexport class StringDecoder {\n  /**\n   * @param {Uint8Array} uint8Array\n   */\n  constructor (uint8Array) {\n    this.decoder = new UintOptRleDecoder(uint8Array)\n    this.str = readVarString(this.decoder)\n    /**\n     * @type {number}\n     */\n    this.spos = 0\n  }\n\n  /**\n   * @return {string}\n   */\n  read () {\n    const end = this.spos + this.decoder.read()\n    const res = this.str.slice(this.spos, end)\n    this.spos = end\n    return res\n  }\n}\n",null,"/**\n * Utility module to work with time.\n *\n * @module time\n */\n\nimport * as metric from './metric.js'\nimport * as math from './math.js'\n\n/**\n * Return current time.\n *\n * @return {Date}\n */\nexport const getDate = () => new Date()\n\n/**\n * Return current unix time.\n *\n * @return {number}\n */\nexport const getUnixTime = Date.now\n\n/**\n * Transform time (in ms) to a human readable format. E.g. 1100 => 1.1s. 60s => 1min. .001 => 10μs.\n *\n * @param {number} d duration in milliseconds\n * @return {string} humanized approximation of time\n */\nexport const humanizeDuration = d => {\n  if (d < 60000) {\n    const p = metric.prefix(d, -1)\n    return math.round(p.n * 100) / 100 + p.prefix + 's'\n  }\n  d = math.floor(d / 1000)\n  const seconds = d % 60\n  const minutes = math.floor(d / 60) % 60\n  const hours = math.floor(d / 3600) % 24\n  const days = math.floor(d / 86400)\n  if (days > 0) {\n    return days + 'd' + ((hours > 0 || minutes > 30) ? ' ' + (minutes > 30 ? hours + 1 : hours) + 'h' : '')\n  }\n  if (hours > 0) {\n    /* c8 ignore next */\n    return hours + 'h' + ((minutes > 0 || seconds > 30) ? ' ' + (seconds > 30 ? minutes + 1 : minutes) + 'min' : '')\n  }\n  return minutes + 'min' + (seconds > 0 ? ' ' + seconds + 's' : '')\n}\n","/**\n * Utility module to work with key-value stores.\n *\n * @module map\n */\n\n/**\n * Creates a new Map instance.\n *\n * @function\n * @return {Map<any, any>}\n *\n * @function\n */\nexport const create = () => new Map()\n\n/**\n * Copy a Map object into a fresh Map object.\n *\n * @function\n * @template K,V\n * @param {Map<K,V>} m\n * @return {Map<K,V>}\n */\nexport const copy = m => {\n  const r = create()\n  m.forEach((v, k) => { r.set(k, v) })\n  return r\n}\n\n/**\n * Get map property. Create T if property is undefined and set T on map.\n *\n * ```js\n * const listeners = map.setIfUndefined(events, 'eventName', set.create)\n * listeners.add(listener)\n * ```\n *\n * @function\n * @template {Map<any, any>} MAP\n * @template {MAP extends Map<any,infer V> ? function():V : unknown} CF\n * @param {MAP} map\n * @param {MAP extends Map<infer K,any> ? K : unknown} key\n * @param {CF} createT\n * @return {ReturnType<CF>}\n */\nexport const setIfUndefined = (map, key, createT) => {\n  let set = map.get(key)\n  if (set === undefined) {\n    map.set(key, set = createT())\n  }\n  return set\n}\n\n/**\n * Creates an Array and populates it with the content of all key-value pairs using the `f(value, key)` function.\n *\n * @function\n * @template K\n * @template V\n * @template R\n * @param {Map<K,V>} m\n * @param {function(V,K):R} f\n * @return {Array<R>}\n */\nexport const map = (m, f) => {\n  const res = []\n  for (const [key, value] of m) {\n    res.push(f(value, key))\n  }\n  return res\n}\n\n/**\n * Tests whether any key-value pairs pass the test implemented by `f(value, key)`.\n *\n * @todo should rename to some - similarly to Array.some\n *\n * @function\n * @template K\n * @template V\n * @param {Map<K,V>} m\n * @param {function(V,K):boolean} f\n * @return {boolean}\n */\nexport const any = (m, f) => {\n  for (const [key, value] of m) {\n    if (f(value, key)) {\n      return true\n    }\n  }\n  return false\n}\n\n/**\n * Tests whether all key-value pairs pass the test implemented by `f(value, key)`.\n *\n * @function\n * @template K\n * @template V\n * @param {Map<K,V>} m\n * @param {function(V,K):boolean} f\n * @return {boolean}\n */\nexport const all = (m, f) => {\n  for (const [key, value] of m) {\n    if (!f(value, key)) {\n      return false\n    }\n  }\n  return true\n}\n","/**\n * Observable class prototype.\n *\n * @module observable\n */\n\nimport * as map from './map.js'\nimport * as set from './set.js'\nimport * as array from './array.js'\n\n/**\n * Handles named events.\n * @experimental\n *\n * This is basically a (better typed) duplicate of Observable, which will replace Observable in the\n * next release.\n *\n * @template {{[key in keyof EVENTS]: function(...any):void}} EVENTS\n */\nexport class ObservableV2 {\n  constructor () {\n    /**\n     * Some desc.\n     * @type {Map<string, Set<any>>}\n     */\n    this._observers = map.create()\n  }\n\n  /**\n   * @template {keyof EVENTS & string} NAME\n   * @param {NAME} name\n   * @param {EVENTS[NAME]} f\n   */\n  on (name, f) {\n    map.setIfUndefined(this._observers, /** @type {string} */ (name), set.create).add(f)\n    return f\n  }\n\n  /**\n   * @template {keyof EVENTS & string} NAME\n   * @param {NAME} name\n   * @param {EVENTS[NAME]} f\n   */\n  once (name, f) {\n    /**\n     * @param  {...any} args\n     */\n    const _f = (...args) => {\n      this.off(name, /** @type {any} */ (_f))\n      f(...args)\n    }\n    this.on(name, /** @type {any} */ (_f))\n  }\n\n  /**\n   * @template {keyof EVENTS & string} NAME\n   * @param {NAME} name\n   * @param {EVENTS[NAME]} f\n   */\n  off (name, f) {\n    const observers = this._observers.get(name)\n    if (observers !== undefined) {\n      observers.delete(f)\n      if (observers.size === 0) {\n        this._observers.delete(name)\n      }\n    }\n  }\n\n  /**\n   * Emit a named event. All registered event listeners that listen to the\n   * specified name will receive the event.\n   *\n   * @todo This should catch exceptions\n   *\n   * @template {keyof EVENTS & string} NAME\n   * @param {NAME} name The event name.\n   * @param {Parameters<EVENTS[NAME]>} args The arguments that are applied to the event listener.\n   */\n  emit (name, args) {\n    // copy all listeners to an array first to make sure that no event is emitted to listeners that are subscribed while the event handler is called.\n    return array.from((this._observers.get(name) || map.create()).values()).forEach(f => f(...args))\n  }\n\n  destroy () {\n    this._observers = map.create()\n  }\n}\n\n/* c8 ignore start */\n/**\n * Handles named events.\n *\n * @deprecated\n * @template N\n */\nexport class Observable {\n  constructor () {\n    /**\n     * Some desc.\n     * @type {Map<N, any>}\n     */\n    this._observers = map.create()\n  }\n\n  /**\n   * @param {N} name\n   * @param {function} f\n   */\n  on (name, f) {\n    map.setIfUndefined(this._observers, name, set.create).add(f)\n  }\n\n  /**\n   * @param {N} name\n   * @param {function} f\n   */\n  once (name, f) {\n    /**\n     * @param  {...any} args\n     */\n    const _f = (...args) => {\n      this.off(name, _f)\n      f(...args)\n    }\n    this.on(name, _f)\n  }\n\n  /**\n   * @param {N} name\n   * @param {function} f\n   */\n  off (name, f) {\n    const observers = this._observers.get(name)\n    if (observers !== undefined) {\n      observers.delete(f)\n      if (observers.size === 0) {\n        this._observers.delete(name)\n      }\n    }\n  }\n\n  /**\n   * Emit a named event. All registered event listeners that listen to the\n   * specified name will receive the event.\n   *\n   * @todo This should catch exceptions\n   *\n   * @param {N} name The event name.\n   * @param {Array<any>} args The arguments that are applied to the event listener.\n   */\n  emit (name, args) {\n    // copy all listeners to an array first to make sure that no event is emitted to listeners that are subscribed while the event handler is called.\n    return array.from((this._observers.get(name) || map.create()).values()).forEach(f => f(...args))\n  }\n\n  destroy () {\n    this._observers = map.create()\n  }\n}\n/* c8 ignore end */\n","/**\n * Utility functions for working with EcmaScript objects.\n *\n * @module object\n */\n\n/**\n * @return {Object<string,any>} obj\n */\nexport const create = () => Object.create(null)\n\n/**\n * Object.assign\n */\nexport const assign = Object.assign\n\n/**\n * @param {Object<string,any>} obj\n */\nexport const keys = Object.keys\n\n/**\n * @template V\n * @param {{[k:string]:V}} obj\n * @param {function(V,string):any} f\n */\nexport const forEach = (obj, f) => {\n  for (const key in obj) {\n    f(obj[key], key)\n  }\n}\n\n/**\n * @todo implement mapToArray & map\n *\n * @template R\n * @param {Object<string,any>} obj\n * @param {function(any,string):R} f\n * @return {Array<R>}\n */\nexport const map = (obj, f) => {\n  const results = []\n  for (const key in obj) {\n    results.push(f(obj[key], key))\n  }\n  return results\n}\n\n/**\n * @deprecated use object.size instead\n * @param {Object<string,any>} obj\n * @return {number}\n */\nexport const length = obj => keys(obj).length\n\n/**\n * @param {Object<string,any>} obj\n * @return {number}\n */\nexport const size = obj => keys(obj).length\n\n/**\n * @param {Object<string,any>} obj\n * @param {function(any,string):boolean} f\n * @return {boolean}\n */\nexport const some = (obj, f) => {\n  for (const key in obj) {\n    if (f(obj[key], key)) {\n      return true\n    }\n  }\n  return false\n}\n\n/**\n * @param {Object|undefined} obj\n */\nexport const isEmpty = obj => {\n  // eslint-disable-next-line\n  for (const _k in obj) {\n    return false\n  }\n  return true\n}\n\n/**\n * @param {Object<string,any>} obj\n * @param {function(any,string):boolean} f\n * @return {boolean}\n */\nexport const every = (obj, f) => {\n  for (const key in obj) {\n    if (!f(obj[key], key)) {\n      return false\n    }\n  }\n  return true\n}\n\n/**\n * Calls `Object.prototype.hasOwnProperty`.\n *\n * @param {any} obj\n * @param {string|symbol} key\n * @return {boolean}\n */\nexport const hasProperty = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key)\n\n/**\n * @param {Object<string,any>} a\n * @param {Object<string,any>} b\n * @return {boolean}\n */\nexport const equalFlat = (a, b) => a === b || (size(a) === size(b) && every(a, (val, key) => (val !== undefined || hasProperty(b, key)) && b[key] === val))\n\n/**\n * Make an object immutable. This hurts performance and is usually not needed if you perform good\n * coding practices.\n */\nexport const freeze = Object.freeze\n\n/**\n * Make an object and all its children immutable.\n * This *really* hurts performance and is usually not needed if you perform good coding practices.\n *\n * @template {any} T\n * @param {T} o\n * @return {Readonly<T>}\n */\nexport const deepFreeze = (o) => {\n  for (const key in o) {\n    const c = o[key]\n    if (typeof c === 'object' || typeof c === 'function') {\n      deepFreeze(o[key])\n    }\n  }\n  return freeze(o)\n}\n","/**\n * Common functions and function call helpers.\n *\n * @module function\n */\n\nimport * as array from './array.js'\nimport * as object from './object.js'\n\n/**\n * Calls all functions in `fs` with args. Only throws after all functions were called.\n *\n * @param {Array<function>} fs\n * @param {Array<any>} args\n */\nexport const callAll = (fs, args, i = 0) => {\n  try {\n    for (; i < fs.length; i++) {\n      fs[i](...args)\n    }\n  } finally {\n    if (i < fs.length) {\n      callAll(fs, args, i + 1)\n    }\n  }\n}\n\nexport const nop = () => {}\n\n/**\n * @template T\n * @param {function():T} f\n * @return {T}\n */\nexport const apply = f => f()\n\n/**\n * @template A\n *\n * @param {A} a\n * @return {A}\n */\nexport const id = a => a\n\n/**\n * @template T\n *\n * @param {T} a\n * @param {T} b\n * @return {boolean}\n */\nexport const equalityStrict = (a, b) => a === b\n\n/**\n * @template T\n *\n * @param {Array<T>|object} a\n * @param {Array<T>|object} b\n * @return {boolean}\n */\nexport const equalityFlat = (a, b) => a === b || (a != null && b != null && a.constructor === b.constructor && ((array.isArray(a) && array.equalFlat(a, /** @type {Array<T>} */ (b))) || (typeof a === 'object' && object.equalFlat(a, b))))\n\n/* c8 ignore start */\n\n/**\n * @param {any} a\n * @param {any} b\n * @return {boolean}\n */\nexport const equalityDeep = (a, b) => {\n  if (a == null || b == null) {\n    return equalityStrict(a, b)\n  }\n  if (a.constructor !== b.constructor) {\n    return false\n  }\n  if (a === b) {\n    return true\n  }\n  switch (a.constructor) {\n    case ArrayBuffer:\n      a = new Uint8Array(a)\n      b = new Uint8Array(b)\n    // eslint-disable-next-line no-fallthrough\n    case Uint8Array: {\n      if (a.byteLength !== b.byteLength) {\n        return false\n      }\n      for (let i = 0; i < a.length; i++) {\n        if (a[i] !== b[i]) {\n          return false\n        }\n      }\n      break\n    }\n    case Set: {\n      if (a.size !== b.size) {\n        return false\n      }\n      for (const value of a) {\n        if (!b.has(value)) {\n          return false\n        }\n      }\n      break\n    }\n    case Map: {\n      if (a.size !== b.size) {\n        return false\n      }\n      for (const key of a.keys()) {\n        if (!b.has(key) || !equalityDeep(a.get(key), b.get(key))) {\n          return false\n        }\n      }\n      break\n    }\n    case Object:\n      if (object.length(a) !== object.length(b)) {\n        return false\n      }\n      for (const key in a) {\n        if (!object.hasProperty(a, key) || !equalityDeep(a[key], b[key])) {\n          return false\n        }\n      }\n      break\n    case Array:\n      if (a.length !== b.length) {\n        return false\n      }\n      for (let i = 0; i < a.length; i++) {\n        if (!equalityDeep(a[i], b[i])) {\n          return false\n        }\n      }\n      break\n    default:\n      return false\n  }\n  return true\n}\n\n/**\n * @template V\n * @template {V} OPTS\n *\n * @param {V} value\n * @param {Array<OPTS>} options\n */\n// @ts-ignore\nexport const isOneOf = (value, options) => options.includes(value)\n/* c8 ignore stop */\n\nexport const isArray = array.isArray\n\n/**\n * @param {any} s\n * @return {s is String}\n */\nexport const isString = (s) => s && s.constructor === String\n\n/**\n * @param {any} n\n * @return {n is Number}\n */\nexport const isNumber = n => n != null && n.constructor === Number\n\n/**\n * @template {abstract new (...args: any) => any} TYPE\n * @param {any} n\n * @param {TYPE} T\n * @return {n is InstanceType<TYPE>}\n */\nexport const is = (n, T) => n && n.constructor === T\n\n/**\n * @template {abstract new (...args: any) => any} TYPE\n * @param {TYPE} T\n */\nexport const isTemplate = (T) =>\n  /**\n   * @param {any} n\n   * @return {n is InstanceType<TYPE>}\n   **/\n  n => n && n.constructor === T\n","/**\n * @module awareness-protocol\n */\n\nimport * as encoding from 'lib0/encoding'\nimport * as decoding from 'lib0/decoding'\nimport * as time from 'lib0/time'\nimport * as math from 'lib0/math'\nimport { Observable } from 'lib0/observable'\nimport * as f from 'lib0/function'\nimport * as Y from 'yjs' // eslint-disable-line\n\nexport const outdatedTimeout = 30000\n\n/**\n * @typedef {Object} MetaClientState\n * @property {number} MetaClientState.clock\n * @property {number} MetaClientState.lastUpdated unix timestamp\n */\n\n/**\n * The Awareness class implements a simple shared state protocol that can be used for non-persistent data like awareness information\n * (cursor, username, status, ..). Each client can update its own local state and listen to state changes of\n * remote clients. Every client may set a state of a remote peer to `null` to mark the client as offline.\n *\n * Each client is identified by a unique client id (something we borrow from `doc.clientID`). A client can override\n * its own state by propagating a message with an increasing timestamp (`clock`). If such a message is received, it is\n * applied if the known state of that client is older than the new state (`clock < newClock`). If a client thinks that\n * a remote client is offline, it may propagate a message with\n * `{ clock: currentClientClock, state: null, client: remoteClient }`. If such a\n * message is received, and the known clock of that client equals the received clock, it will override the state with `null`.\n *\n * Before a client disconnects, it should propagate a `null` state with an updated clock.\n *\n * Awareness states must be updated every 30 seconds. Otherwise the Awareness instance will delete the client state.\n *\n * @extends {Observable<string>}\n */\nexport class Awareness extends Observable {\n  /**\n   * @param {Y.Doc} doc\n   */\n  constructor (doc) {\n    super()\n    this.doc = doc\n    /**\n     * @type {number}\n     */\n    this.clientID = doc.clientID\n    /**\n     * Maps from client id to client state\n     * @type {Map<number, Object<string, any>>}\n     */\n    this.states = new Map()\n    /**\n     * @type {Map<number, MetaClientState>}\n     */\n    this.meta = new Map()\n    this._checkInterval = /** @type {any} */ (setInterval(() => {\n      const now = time.getUnixTime()\n      if (this.getLocalState() !== null && (outdatedTimeout / 2 <= now - /** @type {{lastUpdated:number}} */ (this.meta.get(this.clientID)).lastUpdated)) {\n        // renew local clock\n        this.setLocalState(this.getLocalState())\n      }\n      /**\n       * @type {Array<number>}\n       */\n      const remove = []\n      this.meta.forEach((meta, clientid) => {\n        if (clientid !== this.clientID && outdatedTimeout <= now - meta.lastUpdated && this.states.has(clientid)) {\n          remove.push(clientid)\n        }\n      })\n      if (remove.length > 0) {\n        removeAwarenessStates(this, remove, 'timeout')\n      }\n    }, math.floor(outdatedTimeout / 10)))\n    doc.on('destroy', () => {\n      this.destroy()\n    })\n    this.setLocalState({})\n  }\n\n  destroy () {\n    this.emit('destroy', [this])\n    this.setLocalState(null)\n    super.destroy()\n    clearInterval(this._checkInterval)\n  }\n\n  /**\n   * @return {Object<string,any>|null}\n   */\n  getLocalState () {\n    return this.states.get(this.clientID) || null\n  }\n\n  /**\n   * @param {Object<string,any>|null} state\n   */\n  setLocalState (state) {\n    const clientID = this.clientID\n    const currLocalMeta = this.meta.get(clientID)\n    const clock = currLocalMeta === undefined ? 0 : currLocalMeta.clock + 1\n    const prevState = this.states.get(clientID)\n    if (state === null) {\n      this.states.delete(clientID)\n    } else {\n      this.states.set(clientID, state)\n    }\n    this.meta.set(clientID, {\n      clock,\n      lastUpdated: time.getUnixTime()\n    })\n    const added = []\n    const updated = []\n    const filteredUpdated = []\n    const removed = []\n    if (state === null) {\n      removed.push(clientID)\n    } else if (prevState == null) {\n      if (state != null) {\n        added.push(clientID)\n      }\n    } else {\n      updated.push(clientID)\n      if (!f.equalityDeep(prevState, state)) {\n        filteredUpdated.push(clientID)\n      }\n    }\n    if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {\n      this.emit('change', [{ added, updated: filteredUpdated, removed }, 'local'])\n    }\n    this.emit('update', [{ added, updated, removed }, 'local'])\n  }\n\n  /**\n   * @param {string} field\n   * @param {any} value\n   */\n  setLocalStateField (field, value) {\n    const state = this.getLocalState()\n    if (state !== null) {\n      this.setLocalState({\n        ...state,\n        [field]: value\n      })\n    }\n  }\n\n  /**\n   * @return {Map<number,Object<string,any>>}\n   */\n  getStates () {\n    return this.states\n  }\n}\n\n/**\n * Mark (remote) clients as inactive and remove them from the list of active peers.\n * This change will be propagated to remote clients.\n *\n * @param {Awareness} awareness\n * @param {Array<number>} clients\n * @param {any} origin\n */\nexport const removeAwarenessStates = (awareness, clients, origin) => {\n  const removed = []\n  for (let i = 0; i < clients.length; i++) {\n    const clientID = clients[i]\n    if (awareness.states.has(clientID)) {\n      awareness.states.delete(clientID)\n      if (clientID === awareness.clientID) {\n        const curMeta = /** @type {MetaClientState} */ (awareness.meta.get(clientID))\n        awareness.meta.set(clientID, {\n          clock: curMeta.clock + 1,\n          lastUpdated: time.getUnixTime()\n        })\n      }\n      removed.push(clientID)\n    }\n  }\n  if (removed.length > 0) {\n    awareness.emit('change', [{ added: [], updated: [], removed }, origin])\n    awareness.emit('update', [{ added: [], updated: [], removed }, origin])\n  }\n}\n\n/**\n * @param {Awareness} awareness\n * @param {Array<number>} clients\n * @return {Uint8Array}\n */\nexport const encodeAwarenessUpdate = (awareness, clients, states = awareness.states) => {\n  const len = clients.length\n  const encoder = encoding.createEncoder()\n  encoding.writeVarUint(encoder, len)\n  for (let i = 0; i < len; i++) {\n    const clientID = clients[i]\n    const state = states.get(clientID) || null\n    const clock = /** @type {MetaClientState} */ (awareness.meta.get(clientID)).clock\n    encoding.writeVarUint(encoder, clientID)\n    encoding.writeVarUint(encoder, clock)\n    encoding.writeVarString(encoder, JSON.stringify(state))\n  }\n  return encoding.toUint8Array(encoder)\n}\n\n/**\n * Modify the content of an awareness update before re-encoding it to an awareness update.\n *\n * This might be useful when you have a central server that wants to ensure that clients\n * cant hijack somebody elses identity.\n *\n * @param {Uint8Array} update\n * @param {function(any):any} modify\n * @return {Uint8Array}\n */\nexport const modifyAwarenessUpdate = (update, modify) => {\n  const decoder = decoding.createDecoder(update)\n  const encoder = encoding.createEncoder()\n  const len = decoding.readVarUint(decoder)\n  encoding.writeVarUint(encoder, len)\n  for (let i = 0; i < len; i++) {\n    const clientID = decoding.readVarUint(decoder)\n    const clock = decoding.readVarUint(decoder)\n    const state = JSON.parse(decoding.readVarString(decoder))\n    const modifiedState = modify(state)\n    encoding.writeVarUint(encoder, clientID)\n    encoding.writeVarUint(encoder, clock)\n    encoding.writeVarString(encoder, JSON.stringify(modifiedState))\n  }\n  return encoding.toUint8Array(encoder)\n}\n\n/**\n * @param {Awareness} awareness\n * @param {Uint8Array} update\n * @param {any} origin This will be added to the emitted change event\n */\nexport const applyAwarenessUpdate = (awareness, update, origin) => {\n  const decoder = decoding.createDecoder(update)\n  const timestamp = time.getUnixTime()\n  const added = []\n  const updated = []\n  const filteredUpdated = []\n  const removed = []\n  const len = decoding.readVarUint(decoder)\n  for (let i = 0; i < len; i++) {\n    const clientID = decoding.readVarUint(decoder)\n    let clock = decoding.readVarUint(decoder)\n    const state = JSON.parse(decoding.readVarString(decoder))\n    const clientMeta = awareness.meta.get(clientID)\n    const prevState = awareness.states.get(clientID)\n    const currClock = clientMeta === undefined ? 0 : clientMeta.clock\n    if (currClock < clock || (currClock === clock && state === null && awareness.states.has(clientID))) {\n      if (state === null) {\n        // never let a remote client remove this local state\n        if (clientID === awareness.clientID && awareness.getLocalState() != null) {\n          // remote client removed the local state. Do not remote state. Broadcast a message indicating\n          // that this client still exists by increasing the clock\n          clock++\n        } else {\n          awareness.states.delete(clientID)\n        }\n      } else {\n        awareness.states.set(clientID, state)\n      }\n      awareness.meta.set(clientID, {\n        clock,\n        lastUpdated: timestamp\n      })\n      if (clientMeta === undefined && state !== null) {\n        added.push(clientID)\n      } else if (clientMeta !== undefined && state === null) {\n        removed.push(clientID)\n      } else if (state !== null) {\n        if (!f.equalityDeep(state, prevState)) {\n          filteredUpdated.push(clientID)\n        }\n        updated.push(clientID)\n      }\n    }\n  }\n  if (added.length > 0 || filteredUpdated.length > 0 || removed.length > 0) {\n    awareness.emit('change', [{\n      added, updated: filteredUpdated, removed\n    }, origin])\n  }\n  if (added.length > 0 || updated.length > 0 || removed.length > 0) {\n    awareness.emit('update', [{\n      added, updated, removed\n    }, origin])\n  }\n}\n","/**\n * @module sync-protocol\n */\n\nimport * as encoding from 'lib0/encoding'\nimport * as decoding from 'lib0/decoding'\nimport * as Y from 'yjs'\n\n/**\n * @typedef {Map<number, number>} StateMap\n */\n\n/**\n * Core Yjs defines two message types:\n * • YjsSyncStep1: Includes the State Set of the sending client. When received, the client should reply with YjsSyncStep2.\n * • YjsSyncStep2: Includes all missing structs and the complete delete set. When received, the client is assured that it\n *   received all information from the remote client.\n *\n * In a peer-to-peer network, you may want to introduce a SyncDone message type. Both parties should initiate the connection\n * with SyncStep1. When a client received SyncStep2, it should reply with SyncDone. When the local client received both\n * SyncStep2 and SyncDone, it is assured that it is synced to the remote client.\n *\n * In a client-server model, you want to handle this differently: The client should initiate the connection with SyncStep1.\n * When the server receives SyncStep1, it should reply with SyncStep2 immediately followed by SyncStep1. The client replies\n * with SyncStep2 when it receives SyncStep1. Optionally the server may send a SyncDone after it received SyncStep2, so the\n * client knows that the sync is finished.  There are two reasons for this more elaborated sync model: 1. This protocol can\n * easily be implemented on top of http and websockets. 2. The server should only reply to requests, and not initiate them.\n * Therefore it is necessary that the client initiates the sync.\n *\n * Construction of a message:\n * [messageType : varUint, message definition..]\n *\n * Note: A message does not include information about the room name. This must to be handled by the upper layer protocol!\n *\n * stringify[messageType] stringifies a message definition (messageType is already read from the bufffer)\n */\n\nexport const messageYjsSyncStep1 = 0\nexport const messageYjsSyncStep2 = 1\nexport const messageYjsUpdate = 2\n\n/**\n * Create a sync step 1 message based on the state of the current shared document.\n *\n * @param {encoding.Encoder} encoder\n * @param {Y.Doc} doc\n */\nexport const writeSyncStep1 = (encoder, doc) => {\n  encoding.writeVarUint(encoder, messageYjsSyncStep1)\n  const sv = Y.encodeStateVector(doc)\n  encoding.writeVarUint8Array(encoder, sv)\n}\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {Y.Doc} doc\n * @param {Uint8Array} [encodedStateVector]\n */\nexport const writeSyncStep2 = (encoder, doc, encodedStateVector) => {\n  encoding.writeVarUint(encoder, messageYjsSyncStep2)\n  encoding.writeVarUint8Array(encoder, Y.encodeStateAsUpdate(doc, encodedStateVector))\n}\n\n/**\n * Read SyncStep1 message and reply with SyncStep2.\n *\n * @param {decoding.Decoder} decoder The reply to the received message\n * @param {encoding.Encoder} encoder The received message\n * @param {Y.Doc} doc\n */\nexport const readSyncStep1 = (decoder, encoder, doc) =>\n  writeSyncStep2(encoder, doc, decoding.readVarUint8Array(decoder))\n\n/**\n * Read and apply Structs and then DeleteStore to a y instance.\n *\n * @param {decoding.Decoder} decoder\n * @param {Y.Doc} doc\n * @param {any} transactionOrigin\n */\nexport const readSyncStep2 = (decoder, doc, transactionOrigin) => {\n  try {\n    Y.applyUpdate(doc, decoding.readVarUint8Array(decoder), transactionOrigin)\n  } catch (error) {\n    // This catches errors that are thrown by event handlers\n    console.error('Caught error while handling a Yjs update', error)\n  }\n}\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {Uint8Array} update\n */\nexport const writeUpdate = (encoder, update) => {\n  encoding.writeVarUint(encoder, messageYjsUpdate)\n  encoding.writeVarUint8Array(encoder, update)\n}\n\n/**\n * Read and apply Structs and then DeleteStore to a y instance.\n *\n * @param {decoding.Decoder} decoder\n * @param {Y.Doc} doc\n * @param {any} transactionOrigin\n */\nexport const readUpdate = readSyncStep2\n\n/**\n * @param {decoding.Decoder} decoder A message received from another client\n * @param {encoding.Encoder} encoder The reply message. Does not need to be sent if empty.\n * @param {Y.Doc} doc\n * @param {any} transactionOrigin\n */\nexport const readSyncMessage = (decoder, encoder, doc, transactionOrigin) => {\n  const messageType = decoding.readVarUint(decoder)\n  switch (messageType) {\n    case messageYjsSyncStep1:\n      readSyncStep1(decoder, encoder, doc)\n      break\n    case messageYjsSyncStep2:\n      readSyncStep2(decoder, doc, transactionOrigin)\n      break\n    case messageYjsUpdate:\n      readUpdate(decoder, doc, transactionOrigin)\n      break\n    default:\n      throw new Error('Unknown message type')\n  }\n  return messageType\n}\n",null,null,null,null,null,null,null,null,null,null,null],"names":["create","length","binary.BITS7","binary.BIT8","math.floor","string.utf8TextEncoder","string.encodeUtf8","math.min","math.max","error.create","number.MAX_SAFE_INTEGER","string.utf8TextDecoder","map.create","map.setIfUndefined","set.create","array.from","object.length","object.hasProperty","time.getUnixTime","f.equalityDeep","encoding.createEncoder","encoding.writeVarUint","encoding.writeVarString","encoding.toUint8Array","decoding.createDecoder","decoding.readVarUint","decoding.readVarString","Y","encoding.writeVarUint8Array","decoding.readVarUint8Array","MessageType","writeAuthenticated","writePermissionDenied","WsReadyStates","ResetConnection","Doc","applyUpdate","encodeStateAsUpdate","URLSearchParams","uuid","ConnectionTimeout","SocketIncomingMessage","Forbidden","Unauthorized","awarenessStatesToArray","createServer","WebSocketServer"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,10,11,12,13,14,15,16]}