1 line
1.1 MiB
1 line
1.1 MiB
{"version":3,"file":"tests.js","sources":["../node_modules/lib0/map.js","../node_modules/lib0/set.js","../node_modules/lib0/array.js","../node_modules/lib0/string.js","../node_modules/lib0/conditions.js","../node_modules/lib0/storage.js","../node_modules/lib0/object.js","../node_modules/lib0/function.js","../node_modules/lib0/environment.js","../node_modules/lib0/pair.js","../node_modules/lib0/dom.js","../node_modules/lib0/json.js","../node_modules/lib0/eventloop.js","../node_modules/lib0/math.js","../node_modules/lib0/symbol.js","../node_modules/lib0/metric.js","../node_modules/lib0/time.js","../node_modules/lib0/logging.common.js","../node_modules/lib0/logging.js","../node_modules/lib0/diff.js","../node_modules/lib0/binary.js","../node_modules/lib0/webcrypto.js","../node_modules/lib0/random.js","../node_modules/lib0/prng/Xorshift32.js","../node_modules/lib0/prng/Xoroshiro128plus.js","../node_modules/lib0/number.js","../node_modules/lib0/encoding.js","../node_modules/lib0/error.js","../node_modules/lib0/decoding.js","../node_modules/lib0/buffer.js","../node_modules/lib0/prng.js","../node_modules/lib0/statistics.js","../node_modules/lib0/promise.js","../node_modules/lib0/performance.js","../node_modules/lib0/testing.js","../node_modules/lib0/observable.js","../src/utils/AbstractConnector.js","../src/utils/DeleteSet.js","../src/utils/Doc.js","../src/utils/UpdateDecoder.js","../src/utils/UpdateEncoder.js","../src/utils/encoding.js","../src/utils/EventHandler.js","../src/utils/ID.js","../src/utils/isParentOf.js","../src/utils/logging.js","../src/utils/PermanentUserData.js","../src/utils/RelativePosition.js","../src/utils/Snapshot.js","../src/utils/StructStore.js","../src/utils/Transaction.js","../src/utils/UndoManager.js","../src/utils/updates.js","../src/utils/YEvent.js","../node_modules/lib0/iterator.js","../src/types/AbstractType.js","../src/types/YArray.js","../src/types/YMap.js","../src/types/YText.js","../src/types/YXmlFragment.js","../src/types/YXmlElement.js","../src/types/YXmlEvent.js","../src/types/YXmlHook.js","../src/types/YXmlText.js","../src/structs/AbstractStruct.js","../src/structs/GC.js","../src/structs/ContentBinary.js","../src/structs/ContentDeleted.js","../src/structs/ContentDoc.js","../src/structs/ContentEmbed.js","../src/structs/ContentFormat.js","../src/structs/ContentJSON.js","../src/structs/ContentAny.js","../src/structs/ContentString.js","../src/structs/ContentType.js","../src/structs/Item.js","../src/structs/Skip.js","../src/index.js","../node_modules/y-protocols/sync.js","../tests/testHelper.js","../tests/y-map.tests.js","../tests/y-array.tests.js","../tests/y-text.tests.js","../tests/y-xml.tests.js","../tests/encoding.tests.js","../tests/undo-redo.tests.js","../tests/compatibility.tests.js","../tests/doc.tests.js","../tests/snapshot.tests.js","../tests/updates.tests.js","../tests/relativePositions.tests.js","../tests/index.js"],"sourcesContent":["/**\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 X,Y\n * @param {Map<X,Y>} m\n * @return {Map<X,Y>}\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 V,K\n * @template {Map<K,V>} MAP\n * @param {MAP} map\n * @param {K} key\n * @param {function():V} createT\n * @return {V}\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 * 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","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 * @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 * Often used conditions.\n *\n * @module conditions\n */\n\n/**\n * @template T\n * @param {T|null|undefined} v\n * @return {T|null}\n */\n/* c8 ignore next */\nexport const undefinedToNull = v => v === undefined ? null : v\n","/* eslint-env browser */\n\n/**\n * Isomorphic variable storage.\n *\n * Uses LocalStorage in the browser and falls back to in-memory storage.\n *\n * @module storage\n */\n\n/* c8 ignore start */\nclass VarStoragePolyfill {\n constructor () {\n this.map = new Map()\n }\n\n /**\n * @param {string} key\n * @param {any} newValue\n */\n setItem (key, newValue) {\n this.map.set(key, newValue)\n }\n\n /**\n * @param {string} key\n */\n getItem (key) {\n return this.map.get(key)\n }\n}\n/* c8 ignore stop */\n\n/**\n * @type {any}\n */\nlet _localStorage = new VarStoragePolyfill()\nlet usePolyfill = true\n\n/* c8 ignore start */\ntry {\n // if the same-origin rule is violated, accessing localStorage might thrown an error\n if (typeof localStorage !== 'undefined') {\n _localStorage = localStorage\n usePolyfill = false\n }\n} catch (e) { }\n/* c8 ignore stop */\n\n/**\n * This is basically localStorage in browser, or a polyfill in nodejs\n */\n/* c8 ignore next */\nexport const varStorage = _localStorage\n\n/**\n * A polyfill for `addEventListener('storage', event => {..})` that does nothing if the polyfill is being used.\n *\n * @param {function({ key: string, newValue: string, oldValue: string }): void} eventHandler\n * @function\n */\n/* c8 ignore next */\nexport const onChange = eventHandler => usePolyfill || addEventListener('storage', /** @type {any} */ (eventHandler))\n\n/**\n * A polyfill for `removeEventListener('storage', event => {..})` that does nothing if the polyfill is being used.\n *\n * @param {function({ key: string, newValue: string, oldValue: string }): void} eventHandler\n * @function\n */\n/* c8 ignore next */\nexport const offChange = eventHandler => usePolyfill || removeEventListener('storage', /** @type {any} */ (eventHandler))\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 * @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 * @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 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 || (length(a) === length(b) && every(a, (val, key) => (val !== undefined || hasProperty(b, key)) && b[key] === val))\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","/**\n * Isomorphic module to work access the environment (query params, env variables).\n *\n * @module map\n */\n\nimport * as map from './map.js'\nimport * as string from './string.js'\nimport * as conditions from './conditions.js'\nimport * as storage from './storage.js'\nimport * as f from './function.js'\n\n/* c8 ignore next */\n// @ts-ignore\nexport const isNode = typeof process !== 'undefined' && process.release &&\n /node|io\\.js/.test(process.release.name)\n/* c8 ignore next */\nexport const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && !isNode\n/* c8 ignore next 3 */\nexport const isMac = typeof navigator !== 'undefined'\n ? /Mac/.test(navigator.platform)\n : false\n\n/**\n * @type {Map<string,string>}\n */\nlet params\nconst args = []\n\n/* c8 ignore start */\nconst computeParams = () => {\n if (params === undefined) {\n if (isNode) {\n params = map.create()\n const pargs = process.argv\n let currParamName = null\n for (let i = 0; i < pargs.length; i++) {\n const parg = pargs[i]\n if (parg[0] === '-') {\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n currParamName = parg\n } else {\n if (currParamName !== null) {\n params.set(currParamName, parg)\n currParamName = null\n } else {\n args.push(parg)\n }\n }\n }\n if (currParamName !== null) {\n params.set(currParamName, '')\n }\n // in ReactNative for example this would not be true (unless connected to the Remote Debugger)\n } else if (typeof location === 'object') {\n params = map.create(); // eslint-disable-next-line no-undef\n (location.search || '?').slice(1).split('&').forEach((kv) => {\n if (kv.length !== 0) {\n const [key, value] = kv.split('=')\n params.set(`--${string.fromCamelCase(key, '-')}`, value)\n params.set(`-${string.fromCamelCase(key, '-')}`, value)\n }\n })\n } else {\n params = map.create()\n }\n }\n return params\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* c8 ignore next */\nexport const hasParam = (name) => computeParams().has(name)\n\n/**\n * @param {string} name\n * @param {string} defaultVal\n * @return {string}\n */\n/* c8 ignore next 2 */\nexport const getParam = (name, defaultVal) =>\n computeParams().get(name) || defaultVal\n\n/**\n * @param {string} name\n * @return {string|null}\n */\n/* c8 ignore next 4 */\nexport const getVariable = (name) =>\n isNode\n ? conditions.undefinedToNull(process.env[name.toUpperCase()])\n : conditions.undefinedToNull(storage.varStorage.getItem(name))\n\n/**\n * @param {string} name\n * @return {string|null}\n */\n/* c8 ignore next 2 */\nexport const getConf = (name) =>\n computeParams().get('--' + name) || getVariable(name)\n\n/**\n * @param {string} name\n * @return {boolean}\n */\n/* c8 ignore next 2 */\nexport const hasConf = (name) =>\n hasParam('--' + name) || getVariable(name) !== null\n\n/* c8 ignore next */\nexport const production = hasConf('production')\n\n/* c8 ignore next 2 */\nconst forceColor = isNode &&\n f.isOneOf(process.env.FORCE_COLOR, ['true', '1', '2'])\n\n/* c8 ignore start */\nexport const supportsColor = !hasParam('no-colors') &&\n (!isNode || process.stdout.isTTY || forceColor) && (\n !isNode || hasParam('color') || forceColor ||\n getVariable('COLORTERM') !== null ||\n (getVariable('TERM') || '').includes('color')\n)\n/* c8 ignore stop */\n","/**\n * Working with value pairs.\n *\n * @module pair\n */\n\n/**\n * @template L,R\n */\nexport class Pair {\n /**\n * @param {L} left\n * @param {R} right\n */\n constructor (left, right) {\n this.left = left\n this.right = right\n }\n}\n\n/**\n * @template L,R\n * @param {L} left\n * @param {R} right\n * @return {Pair<L,R>}\n */\nexport const create = (left, right) => new Pair(left, right)\n\n/**\n * @template L,R\n * @param {R} right\n * @param {L} left\n * @return {Pair<L,R>}\n */\nexport const createReversed = (right, left) => new Pair(left, right)\n\n/**\n * @template L,R\n * @param {Array<Pair<L,R>>} arr\n * @param {function(L, R):any} f\n */\nexport const forEach = (arr, f) => arr.forEach(p => f(p.left, p.right))\n\n/**\n * @template L,R,X\n * @param {Array<Pair<L,R>>} arr\n * @param {function(L, R):X} f\n * @return {Array<X>}\n */\nexport const map = (arr, f) => arr.map(p => f(p.left, p.right))\n","/* eslint-env browser */\n\n/**\n * Utility module to work with the DOM.\n *\n * @module dom\n */\n\nimport * as pair from './pair.js'\nimport * as map from './map.js'\n\n/* c8 ignore start */\n/**\n * @type {Document}\n */\nexport const doc = /** @type {Document} */ (typeof document !== 'undefined' ? document : {})\n\n/**\n * @param {string} name\n * @return {HTMLElement}\n */\nexport const createElement = name => doc.createElement(name)\n\n/**\n * @return {DocumentFragment}\n */\nexport const createDocumentFragment = () => doc.createDocumentFragment()\n\n/**\n * @param {string} text\n * @return {Text}\n */\nexport const createTextNode = text => doc.createTextNode(text)\n\nexport const domParser = /** @type {DOMParser} */ (typeof DOMParser !== 'undefined' ? new DOMParser() : null)\n\n/**\n * @param {HTMLElement} el\n * @param {string} name\n * @param {Object} opts\n */\nexport const emitCustomEvent = (el, name, opts) => el.dispatchEvent(new CustomEvent(name, opts))\n\n/**\n * @param {Element} el\n * @param {Array<pair.Pair<string,string|boolean>>} attrs Array of key-value pairs\n * @return {Element}\n */\nexport const setAttributes = (el, attrs) => {\n pair.forEach(attrs, (key, value) => {\n if (value === false) {\n el.removeAttribute(key)\n } else if (value === true) {\n el.setAttribute(key, '')\n } else {\n // @ts-ignore\n el.setAttribute(key, value)\n }\n })\n return el\n}\n\n/**\n * @param {Element} el\n * @param {Map<string, string>} attrs Array of key-value pairs\n * @return {Element}\n */\nexport const setAttributesMap = (el, attrs) => {\n attrs.forEach((value, key) => { el.setAttribute(key, value) })\n return el\n}\n\n/**\n * @param {Array<Node>|HTMLCollection} children\n * @return {DocumentFragment}\n */\nexport const fragment = children => {\n const fragment = createDocumentFragment()\n for (let i = 0; i < children.length; i++) {\n appendChild(fragment, children[i])\n }\n return fragment\n}\n\n/**\n * @param {Element} parent\n * @param {Array<Node>} nodes\n * @return {Element}\n */\nexport const append = (parent, nodes) => {\n appendChild(parent, fragment(nodes))\n return parent\n}\n\n/**\n * @param {HTMLElement} el\n */\nexport const remove = el => el.remove()\n\n/**\n * @param {EventTarget} el\n * @param {string} name\n * @param {EventListener} f\n */\nexport const addEventListener = (el, name, f) => el.addEventListener(name, f)\n\n/**\n * @param {EventTarget} el\n * @param {string} name\n * @param {EventListener} f\n */\nexport const removeEventListener = (el, name, f) => el.removeEventListener(name, f)\n\n/**\n * @param {Node} node\n * @param {Array<pair.Pair<string,EventListener>>} listeners\n * @return {Node}\n */\nexport const addEventListeners = (node, listeners) => {\n pair.forEach(listeners, (name, f) => addEventListener(node, name, f))\n return node\n}\n\n/**\n * @param {Node} node\n * @param {Array<pair.Pair<string,EventListener>>} listeners\n * @return {Node}\n */\nexport const removeEventListeners = (node, listeners) => {\n pair.forEach(listeners, (name, f) => removeEventListener(node, name, f))\n return node\n}\n\n/**\n * @param {string} name\n * @param {Array<pair.Pair<string,string>|pair.Pair<string,boolean>>} attrs Array of key-value pairs\n * @param {Array<Node>} children\n * @return {Element}\n */\nexport const element = (name, attrs = [], children = []) =>\n append(setAttributes(createElement(name), attrs), children)\n\n/**\n * @param {number} width\n * @param {number} height\n */\nexport const canvas = (width, height) => {\n const c = /** @type {HTMLCanvasElement} */ (createElement('canvas'))\n c.height = height\n c.width = width\n return c\n}\n\n/**\n * @param {string} t\n * @return {Text}\n */\nexport const text = createTextNode\n\n/**\n * @param {pair.Pair<string,string>} pair\n */\nexport const pairToStyleString = pair => `${pair.left}:${pair.right};`\n\n/**\n * @param {Array<pair.Pair<string,string>>} pairs\n * @return {string}\n */\nexport const pairsToStyleString = pairs => pairs.map(pairToStyleString).join('')\n\n/**\n * @param {Map<string,string>} m\n * @return {string}\n */\nexport const mapToStyleString = m => map.map(m, (value, key) => `${key}:${value};`).join('')\n\n/**\n * @todo should always query on a dom element\n *\n * @param {HTMLElement|ShadowRoot} el\n * @param {string} query\n * @return {HTMLElement | null}\n */\nexport const querySelector = (el, query) => el.querySelector(query)\n\n/**\n * @param {HTMLElement|ShadowRoot} el\n * @param {string} query\n * @return {NodeListOf<HTMLElement>}\n */\nexport const querySelectorAll = (el, query) => el.querySelectorAll(query)\n\n/**\n * @param {string} id\n * @return {HTMLElement}\n */\nexport const getElementById = id => /** @type {HTMLElement} */ (doc.getElementById(id))\n\n/**\n * @param {string} html\n * @return {HTMLElement}\n */\nconst _parse = html => domParser.parseFromString(`<html><body>${html}</body></html>`, 'text/html').body\n\n/**\n * @param {string} html\n * @return {DocumentFragment}\n */\nexport const parseFragment = html => fragment(/** @type {any} */ (_parse(html).childNodes))\n\n/**\n * @param {string} html\n * @return {HTMLElement}\n */\nexport const parseElement = html => /** @type HTMLElement */ (_parse(html).firstElementChild)\n\n/**\n * @param {HTMLElement} oldEl\n * @param {HTMLElement|DocumentFragment} newEl\n */\nexport const replaceWith = (oldEl, newEl) => oldEl.replaceWith(newEl)\n\n/**\n * @param {HTMLElement} parent\n * @param {HTMLElement} el\n * @param {Node|null} ref\n * @return {HTMLElement}\n */\nexport const insertBefore = (parent, el, ref) => parent.insertBefore(el, ref)\n\n/**\n * @param {Node} parent\n * @param {Node} child\n * @return {Node}\n */\nexport const appendChild = (parent, child) => parent.appendChild(child)\n\nexport const ELEMENT_NODE = doc.ELEMENT_NODE\nexport const TEXT_NODE = doc.TEXT_NODE\nexport const CDATA_SECTION_NODE = doc.CDATA_SECTION_NODE\nexport const COMMENT_NODE = doc.COMMENT_NODE\nexport const DOCUMENT_NODE = doc.DOCUMENT_NODE\nexport const DOCUMENT_TYPE_NODE = doc.DOCUMENT_TYPE_NODE\nexport const DOCUMENT_FRAGMENT_NODE = doc.DOCUMENT_FRAGMENT_NODE\n\n/**\n * @param {any} node\n * @param {number} type\n */\nexport const checkNodeType = (node, type) => node.nodeType === type\n\n/**\n * @param {Node} parent\n * @param {HTMLElement} child\n */\nexport const isParentOf = (parent, child) => {\n let p = child.parentNode\n while (p && p !== parent) {\n p = p.parentNode\n }\n return p === parent\n}\n/* c8 ignore stop */\n","/**\n * JSON utility functions.\n *\n * @module json\n */\n\n/**\n * Transform JavaScript object to JSON.\n *\n * @param {any} object\n * @return {string}\n */\nexport const stringify = JSON.stringify\n\n/**\n * Parse JSON object.\n *\n * @param {string} json\n * @return {any}\n */\nexport const parse = JSON.parse\n","/* global requestIdleCallback, requestAnimationFrame, cancelIdleCallback, cancelAnimationFrame */\n\n/**\n * Utility module to work with EcmaScript's event loop.\n *\n * @module eventloop\n */\n\n/**\n * @type {Array<function>}\n */\nlet queue = []\n\nconst _runQueue = () => {\n for (let i = 0; i < queue.length; i++) {\n queue[i]()\n }\n queue = []\n}\n\n/**\n * @param {function():void} f\n */\nexport const enqueue = f => {\n queue.push(f)\n if (queue.length === 1) {\n setTimeout(_runQueue, 0)\n }\n}\n\n/**\n * @typedef {Object} TimeoutObject\n * @property {function} TimeoutObject.destroy\n */\n\n/**\n * @param {function(number):void} clearFunction\n */\nconst createTimeoutClass = clearFunction => class TT {\n /**\n * @param {number} timeoutId\n */\n constructor (timeoutId) {\n this._ = timeoutId\n }\n\n destroy () {\n clearFunction(this._)\n }\n}\n\nconst Timeout = createTimeoutClass(clearTimeout)\n\n/**\n * @param {number} timeout\n * @param {function} callback\n * @return {TimeoutObject}\n */\nexport const timeout = (timeout, callback) => new Timeout(setTimeout(callback, timeout))\n\nconst Interval = createTimeoutClass(clearInterval)\n\n/**\n * @param {number} timeout\n * @param {function} callback\n * @return {TimeoutObject}\n */\nexport const interval = (timeout, callback) => new Interval(setInterval(callback, timeout))\n\n/* c8 ignore next */\nexport const Animation = createTimeoutClass(arg => typeof requestAnimationFrame !== 'undefined' && cancelAnimationFrame(arg))\n\n/**\n * @param {function(number):void} cb\n * @return {TimeoutObject}\n */\n/* c8 ignore next */\nexport const animationFrame = cb => typeof requestAnimationFrame === 'undefined' ? timeout(0, cb) : new Animation(requestAnimationFrame(cb))\n\n/* c8 ignore next */\n// @ts-ignore\nconst Idle = createTimeoutClass(arg => typeof cancelIdleCallback !== 'undefined' && cancelIdleCallback(arg))\n\n/**\n * Note: this is experimental and is probably only useful in browsers.\n *\n * @param {function} cb\n * @return {TimeoutObject}\n */\n/* c8 ignore next 2 */\n// @ts-ignore\nexport const idleCallback = cb => typeof requestIdleCallback !== 'undefined' ? new Idle(requestIdleCallback(cb)) : timeout(1000, cb)\n\n/**\n * @param {number} timeout Timeout of the debounce action\n * @return {function(function():void):void}\n */\nexport const createDebouncer = timeout => {\n let timer = -1\n return f => {\n clearTimeout(timer)\n if (f) {\n timer = /** @type {any} */ (setTimeout(f, timeout))\n }\n }\n}\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 module to work with EcmaScript Symbols.\n *\n * @module symbol\n */\n\n/**\n * Return fresh symbol.\n *\n * @return {Symbol}\n */\nexport const create = Symbol\n\n/**\n * @param {any} s\n * @return {boolean}\n */\nexport const isSymbol = s => typeof s === 'symbol'\n","/**\n * Utility module to convert metric values.\n *\n * @module metric\n */\n\nimport * as math from './math.js'\n\nexport const yotta = 1e24\nexport const zetta = 1e21\nexport const exa = 1e18\nexport const peta = 1e15\nexport const tera = 1e12\nexport const giga = 1e9\nexport const mega = 1e6\nexport const kilo = 1e3\nexport const hecto = 1e2\nexport const deca = 10\nexport const deci = 0.1\nexport const centi = 0.01\nexport const milli = 1e-3\nexport const micro = 1e-6\nexport const nano = 1e-9\nexport const pico = 1e-12\nexport const femto = 1e-15\nexport const atto = 1e-18\nexport const zepto = 1e-21\nexport const yocto = 1e-24\n\nconst prefixUp = ['', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y']\nconst prefixDown = ['', 'm', 'μ', 'n', 'p', 'f', 'a', 'z', 'y']\n\n/**\n * Calculate the metric prefix for a number. Assumes E.g. `prefix(1000) = { n: 1, prefix: 'k' }`\n *\n * @param {number} n\n * @param {number} [baseMultiplier] Multiplier of the base (10^(3*baseMultiplier)). E.g. `convert(time, -3)` if time is already in milli seconds\n * @return {{n:number,prefix:string}}\n */\nexport const prefix = (n, baseMultiplier = 0) => {\n const nPow = n === 0 ? 0 : math.log10(n)\n let mult = 0\n while (nPow < mult * 3 && baseMultiplier > -8) {\n baseMultiplier--\n mult--\n }\n while (nPow >= 3 + mult * 3 && baseMultiplier < 8) {\n baseMultiplier++\n mult++\n }\n const prefix = baseMultiplier < 0 ? prefixDown[-baseMultiplier] : prefixUp[baseMultiplier]\n return {\n n: math.round((mult > 0 ? n / math.exp10(mult * 3) : n * math.exp10(mult * -3)) * 1e12) / 1e12,\n prefix\n }\n}\n","/**\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","import * as symbol from './symbol.js'\nimport * as time from './time.js'\nimport * as env from './environment.js'\nimport * as func from './function.js'\n\nexport const BOLD = symbol.create()\nexport const UNBOLD = symbol.create()\nexport const BLUE = symbol.create()\nexport const GREY = symbol.create()\nexport const GREEN = symbol.create()\nexport const RED = symbol.create()\nexport const PURPLE = symbol.create()\nexport const ORANGE = symbol.create()\nexport const UNCOLOR = symbol.create()\n\n/* c8 ignore start */\n/**\n * @param {Array<string|Symbol|Object|number>} args\n * @return {Array<string|object|number>}\n */\nexport const computeNoColorLoggingArgs = args => {\n const strBuilder = []\n const logArgs = []\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n const arg = args[i]\n if (arg.constructor === String || arg.constructor === Number) {\n strBuilder.push(arg)\n } else if (arg.constructor === Object) {\n logArgs.push(JSON.stringify(arg))\n }\n }\n return logArgs\n}\n/* c8 ignore stop */\n\nconst loggingColors = [GREEN, PURPLE, ORANGE, BLUE]\nlet nextColor = 0\nlet lastLoggingTime = time.getUnixTime()\n\n/* c8 ignore start */\n/**\n * @param {function(...any):void} _print\n * @param {string} moduleName\n * @return {function(...any):void}\n */\nexport const createModuleLogger = (_print, moduleName) => {\n const color = loggingColors[nextColor]\n const debugRegexVar = env.getVariable('log')\n const doLogging = debugRegexVar !== null &&\n (debugRegexVar === '*' || debugRegexVar === 'true' ||\n new RegExp(debugRegexVar, 'gi').test(moduleName))\n nextColor = (nextColor + 1) % loggingColors.length\n moduleName += ': '\n return !doLogging\n ? func.nop\n : (...args) => {\n const timeNow = time.getUnixTime()\n const timeDiff = timeNow - lastLoggingTime\n lastLoggingTime = timeNow\n _print(\n color,\n moduleName,\n UNCOLOR,\n ...args.map((arg) =>\n (typeof arg === 'string' || typeof arg === 'symbol')\n ? arg\n : JSON.stringify(arg)\n ),\n color,\n ' +' + timeDiff + 'ms'\n )\n }\n}\n/* c8 ignore stop */\n","/**\n * Isomorphic logging module with support for colors!\n *\n * @module logging\n */\n\nimport * as env from './environment.js'\nimport * as set from './set.js'\nimport * as pair from './pair.js'\nimport * as dom from './dom.js'\nimport * as json from './json.js'\nimport * as map from './map.js'\nimport * as eventloop from './eventloop.js'\nimport * as math from './math.js'\nimport * as common from './logging.common.js'\n\nexport { BOLD, UNBOLD, BLUE, GREY, GREEN, RED, PURPLE, ORANGE, UNCOLOR } from './logging.common.js'\n\n/**\n * @type {Object<Symbol,pair.Pair<string,string>>}\n */\nconst _browserStyleMap = {\n [common.BOLD]: pair.create('font-weight', 'bold'),\n [common.UNBOLD]: pair.create('font-weight', 'normal'),\n [common.BLUE]: pair.create('color', 'blue'),\n [common.GREEN]: pair.create('color', 'green'),\n [common.GREY]: pair.create('color', 'grey'),\n [common.RED]: pair.create('color', 'red'),\n [common.PURPLE]: pair.create('color', 'purple'),\n [common.ORANGE]: pair.create('color', 'orange'), // not well supported in chrome when debugging node with inspector - TODO: deprecate\n [common.UNCOLOR]: pair.create('color', 'black')\n}\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n * @return {Array<string|object|number>}\n */\n/* c8 ignore start */\nconst computeBrowserLoggingArgs = (args) => {\n const strBuilder = []\n const styles = []\n const currentStyle = map.create()\n /**\n * @type {Array<string|Object|number>}\n */\n let logArgs = []\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _browserStyleMap[arg]\n if (style !== undefined) {\n currentStyle.set(style.left, style.right)\n } else {\n if (arg.constructor === String || arg.constructor === Number) {\n const style = dom.mapToStyleString(currentStyle)\n if (i > 0 || style.length > 0) {\n strBuilder.push('%c' + arg)\n styles.push(style)\n } else {\n strBuilder.push(arg)\n }\n } else {\n break\n }\n }\n }\n if (i > 0) {\n // create logArgs with what we have so far\n logArgs = styles\n logArgs.unshift(strBuilder.join(''))\n }\n // append the rest\n for (; i < args.length; i++) {\n const arg = args[i]\n if (!(arg instanceof Symbol)) {\n logArgs.push(arg)\n }\n }\n return logArgs\n}\n/* c8 ignore stop */\n\n/* c8 ignore start */\nconst computeLoggingArgs = env.supportsColor\n ? computeBrowserLoggingArgs\n : common.computeNoColorLoggingArgs\n/* c8 ignore stop */\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const print = (...args) => {\n console.log(...computeLoggingArgs(args))\n /* c8 ignore next */\n vconsoles.forEach((vc) => vc.print(args))\n}\n\n/* c8 ignore start */\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const warn = (...args) => {\n console.warn(...computeLoggingArgs(args))\n args.unshift(common.ORANGE)\n vconsoles.forEach((vc) => vc.print(args))\n}\n/* c8 ignore stop */\n\n/**\n * @param {Error} err\n */\n/* c8 ignore start */\nexport const printError = (err) => {\n console.error(err)\n vconsoles.forEach((vc) => vc.printError(err))\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} url image location\n * @param {number} height height of the image in pixel\n */\n/* c8 ignore start */\nexport const printImg = (url, height) => {\n if (env.isBrowser) {\n console.log(\n '%c ',\n `font-size: ${height}px; background-size: contain; background-repeat: no-repeat; background-image: url(${url})`\n )\n // console.log('%c ', `font-size: ${height}x; background: url(${url}) no-repeat;`)\n }\n vconsoles.forEach((vc) => vc.printImg(url, height))\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} base64\n * @param {number} height\n */\n/* c8 ignore next 2 */\nexport const printImgBase64 = (base64, height) =>\n printImg(`data:image/gif;base64,${base64}`, height)\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const group = (...args) => {\n console.group(...computeLoggingArgs(args))\n /* c8 ignore next */\n vconsoles.forEach((vc) => vc.group(args))\n}\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n */\nexport const groupCollapsed = (...args) => {\n console.groupCollapsed(...computeLoggingArgs(args))\n /* c8 ignore next */\n vconsoles.forEach((vc) => vc.groupCollapsed(args))\n}\n\nexport const groupEnd = () => {\n console.groupEnd()\n /* c8 ignore next */\n vconsoles.forEach((vc) => vc.groupEnd())\n}\n\n/**\n * @param {function():Node} createNode\n */\n/* c8 ignore next 2 */\nexport const printDom = (createNode) =>\n vconsoles.forEach((vc) => vc.printDom(createNode()))\n\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {number} height\n */\n/* c8 ignore next 2 */\nexport const printCanvas = (canvas, height) =>\n printImg(canvas.toDataURL(), height)\n\nexport const vconsoles = set.create()\n\n/**\n * @param {Array<string|Symbol|Object|number>} args\n * @return {Array<Element>}\n */\n/* c8 ignore start */\nconst _computeLineSpans = (args) => {\n const spans = []\n const currentStyle = new Map()\n // try with formatting until we find something unsupported\n let i = 0\n for (; i < args.length; i++) {\n const arg = args[i]\n // @ts-ignore\n const style = _browserStyleMap[arg]\n if (style !== undefined) {\n currentStyle.set(style.left, style.right)\n } else {\n if (arg.constructor === String || arg.constructor === Number) {\n // @ts-ignore\n const span = dom.element('span', [\n pair.create('style', dom.mapToStyleString(currentStyle))\n ], [dom.text(arg.toString())])\n if (span.innerHTML === '') {\n span.innerHTML = ' '\n }\n spans.push(span)\n } else {\n break\n }\n }\n }\n // append the rest\n for (; i < args.length; i++) {\n let content = args[i]\n if (!(content instanceof Symbol)) {\n if (content.constructor !== String && content.constructor !== Number) {\n content = ' ' + json.stringify(content) + ' '\n }\n spans.push(\n dom.element('span', [], [dom.text(/** @type {string} */ (content))])\n )\n }\n }\n return spans\n}\n/* c8 ignore stop */\n\nconst lineStyle =\n 'font-family:monospace;border-bottom:1px solid #e2e2e2;padding:2px;'\n\n/* c8 ignore start */\nexport class VConsole {\n /**\n * @param {Element} dom\n */\n constructor (dom) {\n this.dom = dom\n /**\n * @type {Element}\n */\n this.ccontainer = this.dom\n this.depth = 0\n vconsoles.add(this)\n }\n\n /**\n * @param {Array<string|Symbol|Object|number>} args\n * @param {boolean} collapsed\n */\n group (args, collapsed = false) {\n eventloop.enqueue(() => {\n const triangleDown = dom.element('span', [\n pair.create('hidden', collapsed),\n pair.create('style', 'color:grey;font-size:120%;')\n ], [dom.text('▼')])\n const triangleRight = dom.element('span', [\n pair.create('hidden', !collapsed),\n pair.create('style', 'color:grey;font-size:125%;')\n ], [dom.text('▶')])\n const content = dom.element(\n 'div',\n [pair.create(\n 'style',\n `${lineStyle};padding-left:${this.depth * 10}px`\n )],\n [triangleDown, triangleRight, dom.text(' ')].concat(\n _computeLineSpans(args)\n )\n )\n const nextContainer = dom.element('div', [\n pair.create('hidden', collapsed)\n ])\n const nextLine = dom.element('div', [], [content, nextContainer])\n dom.append(this.ccontainer, [nextLine])\n this.ccontainer = nextContainer\n this.depth++\n // when header is clicked, collapse/uncollapse container\n dom.addEventListener(content, 'click', (_event) => {\n nextContainer.toggleAttribute('hidden')\n triangleDown.toggleAttribute('hidden')\n triangleRight.toggleAttribute('hidden')\n })\n })\n }\n\n /**\n * @param {Array<string|Symbol|Object|number>} args\n */\n groupCollapsed (args) {\n this.group(args, true)\n }\n\n groupEnd () {\n eventloop.enqueue(() => {\n if (this.depth > 0) {\n this.depth--\n // @ts-ignore\n this.ccontainer = this.ccontainer.parentElement.parentElement\n }\n })\n }\n\n /**\n * @param {Array<string|Symbol|Object|number>} args\n */\n print (args) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [\n dom.element('div', [\n pair.create(\n 'style',\n `${lineStyle};padding-left:${this.depth * 10}px`\n )\n ], _computeLineSpans(args))\n ])\n })\n }\n\n /**\n * @param {Error} err\n */\n printError (err) {\n this.print([common.RED, common.BOLD, err.toString()])\n }\n\n /**\n * @param {string} url\n * @param {number} height\n */\n printImg (url, height) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [\n dom.element('img', [\n pair.create('src', url),\n pair.create('height', `${math.round(height * 1.5)}px`)\n ])\n ])\n })\n }\n\n /**\n * @param {Node} node\n */\n printDom (node) {\n eventloop.enqueue(() => {\n dom.append(this.ccontainer, [node])\n })\n }\n\n destroy () {\n eventloop.enqueue(() => {\n vconsoles.delete(this)\n })\n }\n}\n/* c8 ignore stop */\n\n/**\n * @param {Element} dom\n */\n/* c8 ignore next */\nexport const createVConsole = (dom) => new VConsole(dom)\n\n/**\n * @param {string} moduleName\n * @return {function(...any):void}\n */\nexport const createModuleLogger = (moduleName) => common.createModuleLogger(print, moduleName)\n","/**\n * Efficient diffs.\n *\n * @module diff\n */\n\nimport { equalityStrict } from './function.js'\n\n/**\n * A SimpleDiff describes a change on a String.\n *\n * ```js\n * console.log(a) // the old value\n * console.log(b) // the updated value\n * // Apply changes of diff (pseudocode)\n * a.remove(diff.index, diff.remove) // Remove `diff.remove` characters\n * a.insert(diff.index, diff.insert) // Insert `diff.insert`\n * a === b // values match\n * ```\n *\n * @typedef {Object} SimpleDiff\n * @property {Number} index The index where changes were applied\n * @property {Number} remove The number of characters to delete starting\n * at `index`.\n * @property {T} insert The new text to insert at `index` after applying\n * `delete`\n *\n * @template T\n */\n\nconst highSurrogateRegex = /[\\uD800-\\uDBFF]/\nconst lowSurrogateRegex = /[\\uDC00-\\uDFFF]/\n\n/**\n * Create a diff between two strings. This diff implementation is highly\n * efficient, but not very sophisticated.\n *\n * @function\n *\n * @param {string} a The old version of the string\n * @param {string} b The updated version of the string\n * @return {SimpleDiff<string>} The diff description.\n */\nexport const simpleDiffString = (a, b) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n while (left < a.length && left < b.length && a[left] === b[left]) {\n left++\n }\n // If the last same character is a high surrogate, we need to rollback to the previous character\n if (left > 0 && highSurrogateRegex.test(a[left - 1])) left--\n while (right + left < a.length && right + left < b.length && a[a.length - right - 1] === b[b.length - right - 1]) {\n right++\n }\n // If the last same character is a low surrogate, we need to rollback to the previous character\n if (right > 0 && lowSurrogateRegex.test(a[a.length - right])) right--\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n\n/**\n * @todo Remove in favor of simpleDiffString\n * @deprecated\n */\nexport const simpleDiff = simpleDiffString\n\n/**\n * Create a diff between two arrays. This diff implementation is highly\n * efficient, but not very sophisticated.\n *\n * Note: This is basically the same function as above. Another function was created so that the runtime\n * can better optimize these function calls.\n *\n * @function\n * @template T\n *\n * @param {Array<T>} a The old version of the array\n * @param {Array<T>} b The updated version of the array\n * @param {function(T, T):boolean} [compare]\n * @return {SimpleDiff<Array<T>>} The diff description.\n */\nexport const simpleDiffArray = (a, b, compare = equalityStrict) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n while (left < a.length && left < b.length && compare(a[left], b[left])) {\n left++\n }\n while (right + left < a.length && right + left < b.length && compare(a[a.length - right - 1], b[b.length - right - 1])) {\n right++\n }\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n\n/**\n * Diff text and try to diff at the current cursor position.\n *\n * @param {string} a\n * @param {string} b\n * @param {number} cursor This should refer to the current left cursor-range position\n */\nexport const simpleDiffStringWithCursor = (a, b, cursor) => {\n let left = 0 // number of same characters counting from left\n let right = 0 // number of same characters counting from right\n // Iterate left to the right until we find a changed character\n // First iteration considers the current cursor position\n while (\n left < a.length &&\n left < b.length &&\n a[left] === b[left] &&\n left < cursor\n ) {\n left++\n }\n // If the last same character is a high surrogate, we need to rollback to the previous character\n if (left > 0 && highSurrogateRegex.test(a[left - 1])) left--\n // Iterate right to the left until we find a changed character\n while (\n right + left < a.length &&\n right + left < b.length &&\n a[a.length - right - 1] === b[b.length - right - 1]\n ) {\n right++\n }\n // If the last same character is a low surrogate, we need to rollback to the previous character\n if (right > 0 && lowSurrogateRegex.test(a[a.length - right])) right--\n // Try to iterate left further to the right without caring about the current cursor position\n while (\n right + left < a.length &&\n right + left < b.length &&\n a[left] === b[left]\n ) {\n left++\n }\n if (left > 0 && highSurrogateRegex.test(a[left - 1])) left--\n return {\n index: left,\n remove: a.length - left - right,\n insert: b.slice(left, b.length - right)\n }\n}\n","/* 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","/* eslint-env browser */\n\nexport const subtle = crypto.subtle\nexport const getRandomValues = crypto.getRandomValues.bind(crypto)\n","\n/**\n * Isomorphic module for true random numbers / buffers / uuids.\n *\n * Attention: falls back to Math.random if the browser does not support crypto.\n *\n * @module random\n */\n\nimport * as math from './math.js'\nimport * as binary from './binary.js'\nimport { getRandomValues } from 'lib0/webcrypto'\n\nexport const rand = Math.random\n\nexport const uint32 = () => getRandomValues(new Uint32Array(1))[0]\n\nexport const uint53 = () => {\n const arr = getRandomValues(new Uint32Array(8))\n return (arr[0] & binary.BITS21) * (binary.BITS32 + 1) + (arr[1] >>> 0)\n}\n\n/**\n * @template T\n * @param {Array<T>} arr\n * @return {T}\n */\nexport const oneOf = arr => arr[math.floor(rand() * arr.length)]\n\n// @ts-ignore\nconst uuidv4Template = [1e7] + -1e3 + -4e3 + -8e3 + -1e11\nexport const uuidv4 = () => uuidv4Template.replace(/[018]/g, /** @param {number} c */ c =>\n (c ^ uint32() & 15 >> c / 4).toString(16)\n)\n","/**\n * @module prng\n */\n\nimport * as binary from '../binary.js'\n\n/**\n * Xorshift32 is a very simple but elegang PRNG with a period of `2^32-1`.\n */\nexport class Xorshift32 {\n /**\n * @param {number} seed Unsigned 32 bit number\n */\n constructor (seed) {\n this.seed = seed\n /**\n * @type {number}\n */\n this._state = seed\n }\n\n /**\n * Generate a random signed integer.\n *\n * @return {Number} A 32 bit signed integer.\n */\n next () {\n let x = this._state\n x ^= x << 13\n x ^= x >> 17\n x ^= x << 5\n this._state = x\n return (x >>> 0) / (binary.BITS32 + 1)\n }\n}\n","/**\n * @module prng\n */\n\nimport { Xorshift32 } from './Xorshift32.js'\nimport * as binary from '../binary.js'\n\n/**\n * This is a variant of xoroshiro128plus - the fastest full-period generator passing BigCrush without systematic failures.\n *\n * This implementation follows the idea of the original xoroshiro128plus implementation,\n * but is optimized for the JavaScript runtime. I.e.\n * * The operations are performed on 32bit integers (the original implementation works with 64bit values).\n * * The initial 128bit state is computed based on a 32bit seed and Xorshift32.\n * * This implementation returns two 32bit values based on the 64bit value that is computed by xoroshiro128plus.\n * Caution: The last addition step works slightly different than in the original implementation - the add carry of the\n * first 32bit addition is not carried over to the last 32bit.\n *\n * [Reference implementation](http://vigna.di.unimi.it/xorshift/xoroshiro128plus.c)\n */\nexport class Xoroshiro128plus {\n /**\n * @param {number} seed Unsigned 32 bit number\n */\n constructor (seed) {\n this.seed = seed\n // This is a variant of Xoroshiro128plus to fill the initial state\n const xorshift32 = new Xorshift32(seed)\n this.state = new Uint32Array(4)\n for (let i = 0; i < 4; i++) {\n this.state[i] = xorshift32.next() * binary.BITS32\n }\n this._fresh = true\n }\n\n /**\n * @return {number} Float/Double in [0,1)\n */\n next () {\n const state = this.state\n if (this._fresh) {\n this._fresh = false\n return ((state[0] + state[2]) >>> 0) / (binary.BITS32 + 1)\n } else {\n this._fresh = true\n const s0 = state[0]\n const s1 = state[1]\n const s2 = state[2] ^ s0\n const s3 = state[3] ^ s1\n // function js_rotl (x, k) {\n // k = k - 32\n // const x1 = x[0]\n // const x2 = x[1]\n // x[0] = x2 << k | x1 >>> (32 - k)\n // x[1] = x1 << k | x2 >>> (32 - k)\n // }\n // rotl(s0, 55) // k = 23 = 55 - 32; j = 9 = 32 - 23\n state[0] = (s1 << 23 | s0 >>> 9) ^ s2 ^ (s2 << 14 | s3 >>> 18)\n state[1] = (s0 << 23 | s1 >>> 9) ^ s3 ^ (s3 << 14)\n // rol(s1, 36) // k = 4 = 36 - 32; j = 23 = 32 - 9\n state[2] = s3 << 4 | s2 >>> 28\n state[3] = s2 << 4 | s3 >>> 28\n return (((state[1] + state[3]) >>> 0) / (binary.BITS32 + 1))\n }\n }\n}\n\n/*\n// Reference implementation\n// Source: http://vigna.di.unimi.it/xorshift/xoroshiro128plus.c\n// By David Blackman and Sebastiano Vigna\n// Who published the reference implementation under Public Domain (CC0)\n\n#include <stdint.h>\n#include <stdio.h>\n\nuint64_t s[2];\n\nstatic inline uint64_t rotl(const uint64_t x, int k) {\n return (x << k) | (x >> (64 - k));\n}\n\nuint64_t next(void) {\n const uint64_t s0 = s[0];\n uint64_t s1 = s[1];\n s1 ^= s0;\n s[0] = rotl(s0, 55) ^ s1 ^ (s1 << 14); // a, b\n s[1] = rotl(s1, 36); // c\n return (s[0] + s[1]) & 0xFFFFFFFF;\n}\n\nint main(void)\n{\n int i;\n s[0] = 1111 | (1337ul << 32);\n s[1] = 1234 | (9999ul << 32);\n\n printf(\"1000 outputs of genrand_int31()\\n\");\n for (i=0; i<100; i++) {\n printf(\"%10lu \", i);\n printf(\"%10lu \", next());\n printf(\"- %10lu \", s[0] >> 32);\n printf(\"%10lu \", (s[0] << 32) >> 32);\n printf(\"%10lu \", s[1] >> 32);\n printf(\"%10lu \", (s[1] << 32) >> 32);\n printf(\"\\n\");\n // if (i%5==4) printf(\"\\n\");\n }\n return 0;\n}\n*/\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\n/**\n * @type {number}\n */\nexport const HIGHEST_INT32 = binary.BITS31\n\n/**\n * @module number\n */\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 * 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 buffer from './buffer.js'\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 * 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(buffer.createUint8ArrayViewFromArrayBuffer(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(buffer.createUint8ArrayViewFromArrayBuffer(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 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 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 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 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 * 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 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 buffer from './buffer.js'\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'\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 = buffer.createUint8ArrayViewFromArrayBuffer(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 * 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","/**\n * Utility functions to work with buffers (Uint8Array).\n *\n * @module buffer\n */\n\nimport * as string from './string.js'\nimport * as env from './environment.js'\nimport * as encoding from './encoding.js'\nimport * as decoding from './decoding.js'\n\n/**\n * @param {number} len\n */\nexport const createUint8ArrayFromLen = len => new Uint8Array(len)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n * @param {number} byteOffset\n * @param {number} length\n */\nexport const createUint8ArrayViewFromArrayBuffer = (buffer, byteOffset, length) => new Uint8Array(buffer, byteOffset, length)\n\n/**\n * Create Uint8Array with initial content from buffer\n *\n * @param {ArrayBuffer} buffer\n */\nexport const createUint8ArrayFromArrayBuffer = buffer => new Uint8Array(buffer)\n\n/* c8 ignore start */\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Browser = bytes => {\n let s = ''\n for (let i = 0; i < bytes.byteLength; i++) {\n s += string.fromCharCode(bytes[i])\n }\n // eslint-disable-next-line no-undef\n return btoa(s)\n}\n/* c8 ignore stop */\n\n/**\n * @param {Uint8Array} bytes\n * @return {string}\n */\nconst toBase64Node = bytes => Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString('base64')\n\n/* c8 ignore start */\n/**\n * @param {string} s\n * @return {Uint8Array}\n */\nconst fromBase64Browser = s => {\n // eslint-disable-next-line no-undef\n const a = atob(s)\n const bytes = createUint8ArrayFromLen(a.length)\n for (let i = 0; i < a.length; i++) {\n bytes[i] = a.charCodeAt(i)\n }\n return bytes\n}\n/* c8 ignore stop */\n\n/**\n * @param {string} s\n */\nconst fromBase64Node = s => {\n const buf = Buffer.from(s, 'base64')\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)\n}\n\n/* c8 ignore next */\nexport const toBase64 = env.isBrowser ? toBase64Browser : toBase64Node\n\n/* c8 ignore next */\nexport const fromBase64 = env.isBrowser ? fromBase64Browser : fromBase64Node\n\n/**\n * Copy the content of an Uint8Array view to a new ArrayBuffer.\n *\n * @param {Uint8Array} uint8Array\n * @return {Uint8Array}\n */\nexport const copyUint8Array = uint8Array => {\n const newBuf = createUint8ArrayFromLen(uint8Array.byteLength)\n newBuf.set(uint8Array)\n return newBuf\n}\n\n/**\n * Encode anything as a UInt8Array. It's a pun on typescripts's `any` type.\n * See encoding.writeAny for more information.\n *\n * @param {any} data\n * @return {Uint8Array}\n */\nexport const encodeAny = data => {\n const encoder = encoding.createEncoder()\n encoding.writeAny(encoder, data)\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * Decode an any-encoded value.\n *\n * @param {Uint8Array} buf\n * @return {any}\n */\nexport const decodeAny = buf => decoding.readAny(decoding.createDecoder(buf))\n","/**\n * Fast Pseudo Random Number Generators.\n *\n * Given a seed a PRNG generates a sequence of numbers that cannot be reasonably predicted.\n * Two PRNGs must generate the same random sequence of numbers if given the same seed.\n *\n * @module prng\n */\n\nimport * as binary from './binary.js'\nimport { fromCharCode, fromCodePoint } from './string.js'\nimport * as math from './math.js'\nimport { Xoroshiro128plus } from './prng/Xoroshiro128plus.js'\nimport * as buffer from './buffer.js'\n\n/**\n * Description of the function\n * @callback generatorNext\n * @return {number} A random float in the cange of [0,1)\n */\n\n/**\n * A random type generator.\n *\n * @typedef {Object} PRNG\n * @property {generatorNext} next Generate new number\n */\nexport const DefaultPRNG = Xoroshiro128plus\n\n/**\n * Create a Xoroshiro128plus Pseudo-Random-Number-Generator.\n * This is the fastest full-period generator passing BigCrush without systematic failures.\n * But there are more PRNGs available in ./PRNG/.\n *\n * @param {number} seed A positive 32bit integer. Do not use negative numbers.\n * @return {PRNG}\n */\nexport const create = seed => new DefaultPRNG(seed)\n\n/**\n * Generates a single random bool.\n *\n * @param {PRNG} gen A random number generator.\n * @return {Boolean} A random boolean\n */\nexport const bool = gen => (gen.next() >= 0.5)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const int53 = (gen, min, max) => math.floor(gen.next() * (max + 1 - min) + min)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const uint53 = (gen, min, max) => math.abs(int53(gen, min, max))\n\n/**\n * Generates a random integer with 32 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const int32 = (gen, min, max) => math.floor(gen.next() * (max + 1 - min) + min)\n\n/**\n * Generates a random integer with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive).\n * @return {Number} A random integer on [min, max]\n */\nexport const uint32 = (gen, min, max) => int32(gen, min, max) >>> 0\n\n/**\n * @deprecated\n * Optimized version of prng.int32. It has the same precision as prng.int32, but should be preferred when\n * openaring on smaller ranges.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Number} min The lower bound of the allowed return values (inclusive).\n * @param {Number} max The upper bound of the allowed return values (inclusive). The max inclusive number is `binary.BITS31-1`\n * @return {Number} A random integer on [min, max]\n */\nexport const int31 = (gen, min, max) => int32(gen, min, max)\n\n/**\n * Generates a random real on [0, 1) with 53 bit resolution.\n *\n * @param {PRNG} gen A random number generator.\n * @return {Number} A random real number on [0, 1).\n */\nexport const real53 = gen => gen.next() // (((gen.next() >>> 5) * binary.BIT26) + (gen.next() >>> 6)) / MAX_SAFE_INTEGER\n\n/**\n * Generates a random character from char code 32 - 126. I.e. Characters, Numbers, special characters, and Space:\n *\n * @param {PRNG} gen A random number generator.\n * @return {string}\n *\n * (Space)!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[/]^_`abcdefghijklmnopqrstuvwxyz{|}~\n */\nexport const char = gen => fromCharCode(int31(gen, 32, 126))\n\n/**\n * @param {PRNG} gen\n * @return {string} A single letter (a-z)\n */\nexport const letter = gen => fromCharCode(int31(gen, 97, 122))\n\n/**\n * @param {PRNG} gen\n * @param {number} [minLen=0]\n * @param {number} [maxLen=20]\n * @return {string} A random word (0-20 characters) without spaces consisting of letters (a-z)\n */\nexport const word = (gen, minLen = 0, maxLen = 20) => {\n const len = int31(gen, minLen, maxLen)\n let str = ''\n for (let i = 0; i < len; i++) {\n str += letter(gen)\n }\n return str\n}\n\n/**\n * TODO: this function produces invalid runes. Does not cover all of utf16!!\n *\n * @param {PRNG} gen\n * @return {string}\n */\nexport const utf16Rune = gen => {\n const codepoint = int31(gen, 0, 256)\n return fromCodePoint(codepoint)\n}\n\n/**\n * @param {PRNG} gen\n * @param {number} [maxlen = 20]\n */\nexport const utf16String = (gen, maxlen = 20) => {\n const len = int31(gen, 0, maxlen)\n let str = ''\n for (let i = 0; i < len; i++) {\n str += utf16Rune(gen)\n }\n return str\n}\n\n/**\n * Returns one element of a given array.\n *\n * @param {PRNG} gen A random number generator.\n * @param {Array<T>} array Non empty Array of possible values.\n * @return {T} One of the values of the supplied Array.\n * @template T\n */\nexport const oneOf = (gen, array) => array[int31(gen, 0, array.length - 1)]\n\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint8Array}\n */\nexport const uint8Array = (gen, len) => {\n const buf = buffer.createUint8ArrayFromLen(len)\n for (let i = 0; i < buf.length; i++) {\n buf[i] = int32(gen, 0, binary.BITS8)\n }\n return buf\n}\n\n/* c8 ignore start */\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint16Array}\n */\nexport const uint16Array = (gen, len) => new Uint16Array(uint8Array(gen, len * 2).buffer)\n\n/**\n * @param {PRNG} gen\n * @param {number} len\n * @return {Uint32Array}\n */\nexport const uint32Array = (gen, len) => new Uint32Array(uint8Array(gen, len * 4).buffer)\n/* c8 ignore stop */\n","/**\n * Utility helpers for generating statistics.\n *\n * @module statistics\n */\n\nimport * as math from './math.js'\n\n/**\n * @param {Array<number>} arr Array of values\n * @return {number} Returns null if the array is empty\n */\nexport const median = arr => arr.length === 0 ? NaN : (arr.length % 2 === 1 ? arr[(arr.length - 1) / 2] : (arr[math.floor((arr.length - 1) / 2)] + arr[math.ceil((arr.length - 1) / 2)]) / 2)\n\n/**\n * @param {Array<number>} arr\n * @return {number}\n */\nexport const average = arr => arr.reduce(math.add, 0) / arr.length\n","/**\n * Utility helpers to work with promises.\n *\n * @module promise\n */\n\nimport * as time from './time.js'\n\n/**\n * @template T\n * @callback PromiseResolve\n * @param {T|PromiseLike<T>} [result]\n */\n\n/**\n * @template T\n * @param {function(PromiseResolve<T>,function(Error):void):any} f\n * @return {Promise<T>}\n */\nexport const create = f => /** @type {Promise<T>} */ (new Promise(f))\n\n/**\n * @param {function(function():void,function(Error):void):void} f\n * @return {Promise<void>}\n */\nexport const createEmpty = f => new Promise(f)\n\n/**\n * `Promise.all` wait for all promises in the array to resolve and return the result\n * @template T\n * @param {Array<Promise<T>>} arrp\n * @return {Promise<Array<T>>}\n */\nexport const all = arrp => Promise.all(arrp)\n\n/**\n * @param {Error} [reason]\n * @return {Promise<never>}\n */\nexport const reject = reason => Promise.reject(reason)\n\n/**\n * @template T\n * @param {T|void} res\n * @return {Promise<T|void>}\n */\nexport const resolve = res => Promise.resolve(res)\n\n/**\n * @template T\n * @param {T} res\n * @return {Promise<T>}\n */\nexport const resolveWith = res => Promise.resolve(res)\n\n/**\n * @todo Next version, reorder parameters: check, [timeout, [intervalResolution]]\n *\n * @param {number} timeout\n * @param {function():boolean} check\n * @param {number} [intervalResolution]\n * @return {Promise<void>}\n */\nexport const until = (timeout, check, intervalResolution = 10) => create((resolve, reject) => {\n const startTime = time.getUnixTime()\n const hasTimeout = timeout > 0\n const untilInterval = () => {\n if (check()) {\n clearInterval(intervalHandle)\n resolve()\n } else if (hasTimeout) {\n /* c8 ignore else */\n if (time.getUnixTime() - startTime > timeout) {\n clearInterval(intervalHandle)\n reject(new Error('Timeout'))\n }\n }\n }\n const intervalHandle = setInterval(untilInterval, intervalResolution)\n})\n\n/**\n * @param {number} timeout\n * @return {Promise<undefined>}\n */\nexport const wait = timeout => create((resolve, reject) => setTimeout(resolve, timeout))\n\n/**\n * Checks if an object is a promise using ducktyping.\n *\n * Promises are often polyfilled, so it makes sense to add some additional guarantees if the user of this\n * library has some insane environment where global Promise objects are overwritten.\n *\n * @param {any} p\n * @return {boolean}\n */\nexport const isPromise = p => p instanceof Promise || (p && p.then && p.catch && p.finally)\n","/* eslint-env browser */\n\nexport const measure = performance.measure.bind(performance)\nexport const now = performance.now.bind(performance)\nexport const mark = performance.mark.bind(performance)\n","/**\n * Testing framework with support for generating tests.\n *\n * ```js\n * // test.js template for creating a test executable\n * import { runTests } from 'lib0/testing'\n * import * as log from 'lib0/logging'\n * import * as mod1 from './mod1.test.js'\n * import * as mod2 from './mod2.test.js'\n\n * import { isBrowser, isNode } from 'lib0/environment.js'\n *\n * if (isBrowser) {\n * // optional: if this is ran in the browser, attach a virtual console to the dom\n * log.createVConsole(document.body)\n * }\n *\n * runTests({\n * mod1,\n * mod2,\n * }).then(success => {\n * if (isNode) {\n * process.exit(success ? 0 : 1)\n * }\n * })\n * ```\n *\n * ```js\n * // mod1.test.js\n * /**\n * * runTests automatically tests all exported functions that start with \"test\".\n * * The name of the function should be in camelCase and is used for the logging output.\n * *\n * * @param {t.TestCase} tc\n * *\\/\n * export const testMyFirstTest = tc => {\n * t.compare({ a: 4 }, { a: 4 }, 'objects are equal')\n * }\n * ```\n *\n * Now you can simply run `node test.js` to run your test or run test.js in the browser.\n *\n * @module testing\n */\n\nimport * as log from 'lib0/logging'\nimport { simpleDiffString } from './diff.js'\nimport * as object from './object.js'\nimport * as string from './string.js'\nimport * as math from './math.js'\nimport * as random from './random.js'\nimport * as prng from './prng.js'\nimport * as statistics from './statistics.js'\nimport * as array from './array.js'\nimport * as env from './environment.js'\nimport * as json from './json.js'\nimport * as time from './time.js'\nimport * as promise from './promise.js'\nimport * as performance from 'lib0/performance'\n\nexport { production } from './environment.js'\n\nexport const extensive = env.hasConf('extensive')\n\n/* c8 ignore next */\nexport const envSeed = env.hasParam('--seed') ? Number.parseInt(env.getParam('--seed', '0')) : null\n\nexport class TestCase {\n /**\n * @param {string} moduleName\n * @param {string} testName\n */\n constructor (moduleName, testName) {\n /**\n * @type {string}\n */\n this.moduleName = moduleName\n /**\n * @type {string}\n */\n this.testName = testName\n this._seed = null\n this._prng = null\n }\n\n resetSeed () {\n this._seed = null\n this._prng = null\n }\n\n /**\n * @type {number}\n */\n /* c8 ignore next */\n get seed () {\n /* c8 ignore else */\n if (this._seed === null) {\n /* c8 ignore next */\n this._seed = envSeed === null ? random.uint32() : envSeed\n }\n return this._seed\n }\n\n /**\n * A PRNG for this test case. Use only this PRNG for randomness to make the test case reproducible.\n *\n * @type {prng.PRNG}\n */\n get prng () {\n /* c8 ignore else */\n if (this._prng === null) {\n this._prng = prng.create(this.seed)\n }\n return this._prng\n }\n}\n\nexport const repetitionTime = Number(env.getParam('--repetition-time', '50'))\n/* c8 ignore next */\nconst testFilter = env.hasParam('--filter') ? env.getParam('--filter', '') : null\n\n/* c8 ignore next */\nconst testFilterRegExp = testFilter !== null ? new RegExp(testFilter) : new RegExp('.*')\n\nconst repeatTestRegex = /^(repeat|repeating)\\s/\n\n/**\n * @param {string} moduleName\n * @param {string} name\n * @param {function(TestCase):void|Promise<any>} f\n * @param {number} i\n * @param {number} numberOfTests\n */\nexport const run = async (moduleName, name, f, i, numberOfTests) => {\n const uncamelized = string.fromCamelCase(name.slice(4), ' ')\n const filtered = !testFilterRegExp.test(`[${i + 1}/${numberOfTests}] ${moduleName}: ${uncamelized}`)\n /* c8 ignore next 3 */\n if (filtered) {\n return true\n }\n const tc = new TestCase(moduleName, name)\n const repeat = repeatTestRegex.test(uncamelized)\n const groupArgs = [log.GREY, `[${i + 1}/${numberOfTests}] `, log.PURPLE, `${moduleName}: `, log.BLUE, uncamelized]\n /* c8 ignore next 5 */\n if (testFilter === null) {\n log.groupCollapsed(...groupArgs)\n } else {\n log.group(...groupArgs)\n }\n const times = []\n const start = performance.now()\n let lastTime = start\n /**\n * @type {any}\n */\n let err = null\n performance.mark(`${name}-start`)\n do {\n try {\n const p = f(tc)\n if (promise.isPromise(p)) {\n await p\n }\n } catch (_err) {\n err = _err\n }\n const currTime = performance.now()\n times.push(currTime - lastTime)\n lastTime = currTime\n if (repeat && err === null && (lastTime - start) < repetitionTime) {\n tc.resetSeed()\n } else {\n break\n }\n } while (err === null && (lastTime - start) < repetitionTime)\n performance.mark(`${name}-end`)\n /* c8 ignore next 3 */\n if (err !== null && err.constructor !== SkipError) {\n log.printError(err)\n }\n performance.measure(name, `${name}-start`, `${name}-end`)\n log.groupEnd()\n const duration = lastTime - start\n let success = true\n times.sort((a, b) => a - b)\n /* c8 ignore next 3 */\n const againMessage = env.isBrowser\n ? ` - ${window.location.host + window.location.pathname}?filter=\\\\[${i + 1}/${tc._seed === null ? '' : `&seed=${tc._seed}`}`\n : `\\nrepeat: npm run test -- --filter \"\\\\[${i + 1}/\" ${tc._seed === null ? '' : `--seed ${tc._seed}`}`\n const timeInfo = (repeat && err === null)\n ? ` - ${times.length} repetitions in ${time.humanizeDuration(duration)} (best: ${time.humanizeDuration(times[0])}, worst: ${time.humanizeDuration(array.last(times))}, median: ${time.humanizeDuration(statistics.median(times))}, average: ${time.humanizeDuration(statistics.average(times))})`\n : ` in ${time.humanizeDuration(duration)}`\n if (err !== null) {\n /* c8 ignore start */\n if (err.constructor === SkipError) {\n log.print(log.GREY, log.BOLD, 'Skipped: ', log.UNBOLD, uncamelized)\n } else {\n success = false\n log.print(log.RED, log.BOLD, 'Failure: ', log.UNBOLD, log.UNCOLOR, uncamelized, log.GREY, timeInfo, againMessage)\n }\n /* c8 ignore stop */\n } else {\n log.print(log.GREEN, log.BOLD, 'Success: ', log.UNBOLD, log.UNCOLOR, uncamelized, log.GREY, timeInfo, againMessage)\n }\n return success\n}\n\n/**\n * Describe what you are currently testing. The message will be logged.\n *\n * ```js\n * export const testMyFirstTest = tc => {\n * t.describe('crunching numbers', 'already crunched 4 numbers!') // the optional second argument can describe the state.\n * }\n * ```\n *\n * @param {string} description\n * @param {string} info\n */\nexport const describe = (description, info = '') => log.print(log.BLUE, description, ' ', log.GREY, info)\n\n/**\n * Describe the state of the current computation.\n * ```js\n * export const testMyFirstTest = tc => {\n * t.info(already crunched 4 numbers!') // the optional second argument can describe the state.\n * }\n * ```\n *\n * @param {string} info\n */\nexport const info = info => describe('', info)\n\nexport const printDom = log.printDom\n\nexport const printCanvas = log.printCanvas\n\n/**\n * Group outputs in a collapsible category.\n *\n * ```js\n * export const testMyFirstTest = tc => {\n * t.group('subtest 1', () => {\n * t.describe('this message is part of a collapsible section')\n * })\n * await t.groupAsync('subtest async 2', async () => {\n * await someaction()\n * t.describe('this message is part of a collapsible section')\n * })\n * }\n * ```\n *\n * @param {string} description\n * @param {function(void):void} f\n */\nexport const group = (description, f) => {\n log.group(log.BLUE, description)\n try {\n f()\n } finally {\n log.groupEnd()\n }\n}\n\n/**\n * Group outputs in a collapsible category.\n *\n * ```js\n * export const testMyFirstTest = async tc => {\n * t.group('subtest 1', () => {\n * t.describe('this message is part of a collapsible section')\n * })\n * await t.groupAsync('subtest async 2', async () => {\n * await someaction()\n * t.describe('this message is part of a collapsible section')\n * })\n * }\n * ```\n *\n * @param {string} description\n * @param {function(void):Promise<any>} f\n */\nexport const groupAsync = async (description, f) => {\n log.group(log.BLUE, description)\n try {\n await f()\n } finally {\n log.groupEnd()\n }\n}\n\n/**\n * Measure the time that it takes to calculate something.\n *\n * ```js\n * export const testMyFirstTest = async tc => {\n * t.measureTime('measurement', () => {\n * heavyCalculation()\n * })\n * await t.groupAsync('async measurement', async () => {\n * await heavyAsyncCalculation()\n * })\n * }\n * ```\n *\n * @param {string} message\n * @param {function():void} f\n * @return {number} Returns a promise that resolves the measured duration to apply f\n */\nexport const measureTime = (message, f) => {\n let duration\n const start = performance.now()\n try {\n f()\n } finally {\n duration = performance.now() - start\n log.print(log.PURPLE, message, log.GREY, ` ${time.humanizeDuration(duration)}`)\n }\n return duration\n}\n\n/**\n * Measure the time that it takes to calculate something.\n *\n * ```js\n * export const testMyFirstTest = async tc => {\n * t.measureTimeAsync('measurement', async () => {\n * await heavyCalculation()\n * })\n * await t.groupAsync('async measurement', async () => {\n * await heavyAsyncCalculation()\n * })\n * }\n * ```\n *\n * @param {string} message\n * @param {function():Promise<any>} f\n * @return {Promise<number>} Returns a promise that resolves the measured duration to apply f\n */\nexport const measureTimeAsync = async (message, f) => {\n let duration\n const start = performance.now()\n try {\n await f()\n } finally {\n duration = performance.now() - start\n log.print(log.PURPLE, message, log.GREY, ` ${time.humanizeDuration(duration)}`)\n }\n return duration\n}\n\n/**\n * @template T\n * @param {Array<T>} as\n * @param {Array<T>} bs\n * @param {string} [m]\n * @return {boolean}\n */\nexport const compareArrays = (as, bs, m = 'Arrays match') => {\n if (as.length !== bs.length) {\n fail(m)\n }\n for (let i = 0; i < as.length; i++) {\n if (as[i] !== bs[i]) {\n fail(m)\n }\n }\n return true\n}\n\n/**\n * @param {string} a\n * @param {string} b\n * @param {string} [m]\n * @throws {TestError} Throws if tests fails\n */\nexport const compareStrings = (a, b, m = 'Strings match') => {\n if (a !== b) {\n const diff = simpleDiffString(a, b)\n log.print(log.GREY, a.slice(0, diff.index), log.RED, a.slice(diff.index, diff.remove), log.GREEN, diff.insert, log.GREY, a.slice(diff.index + diff.remove))\n fail(m)\n }\n}\n\n/**\n * @template K,V\n * @param {Object<K,V>} a\n * @param {Object<K,V>} b\n * @param {string} [m]\n * @throws {TestError} Throws if test fails\n */\nexport const compareObjects = (a, b, m = 'Objects match') => { object.equalFlat(a, b) || fail(m) }\n\n/**\n * @param {any} _constructor\n * @param {any} a\n * @param {any} b\n * @param {string} path\n * @throws {TestError}\n */\nconst compareValues = (_constructor, a, b, path) => {\n if (a !== b) {\n fail(`Values ${json.stringify(a)} and ${json.stringify(b)} don't match (${path})`)\n }\n return true\n}\n\n/**\n * @param {string?} message\n * @param {string} reason\n * @param {string} path\n * @throws {TestError}\n */\nconst _failMessage = (message, reason, path) => fail(\n message === null\n ? `${reason} ${path}`\n : `${message} (${reason}) ${path}`\n)\n\n/**\n * @param {any} a\n * @param {any} b\n * @param {string} path\n * @param {string?} message\n * @param {function(any,any,any,string,any):boolean} customCompare\n */\nconst _compare = (a, b, path, message, customCompare) => {\n // we don't use assert here because we want to test all branches (istanbul errors if one branch is not tested)\n if (a == null || b == null) {\n return compareValues(null, a, b, path)\n }\n if (a.constructor !== b.constructor) {\n _failMessage(message, 'Constructors don\\'t match', path)\n }\n let success = true\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 _failMessage(message, 'ArrayBuffer lengths match', path)\n }\n for (let i = 0; success && i < a.length; i++) {\n success = success && a[i] === b[i]\n }\n break\n }\n case Set: {\n if (a.size !== b.size) {\n _failMessage(message, 'Sets have different number of attributes', path)\n }\n // @ts-ignore\n a.forEach(value => {\n if (!b.has(value)) {\n _failMessage(message, `b.${path} does have ${value}`, path)\n }\n })\n break\n }\n case Map: {\n if (a.size !== b.size) {\n _failMessage(message, 'Maps have different number of attributes', path)\n }\n // @ts-ignore\n a.forEach((value, key) => {\n if (!b.has(key)) {\n _failMessage(message, `Property ${path}[\"${key}\"] does not exist on second argument`, path)\n }\n _compare(value, b.get(key), `${path}[\"${key}\"]`, message, customCompare)\n })\n break\n }\n case Object:\n if (object.length(a) !== object.length(b)) {\n _failMessage(message, 'Objects have a different number of attributes', path)\n }\n object.forEach(a, (value, key) => {\n if (!object.hasProperty(b, key)) {\n _failMessage(message, `Property ${path} does not exist on second argument`, path)\n }\n _compare(value, b[key], `${path}[\"${key}\"]`, message, customCompare)\n })\n break\n case Array:\n if (a.length !== b.length) {\n _failMessage(message, 'Arrays have a different number of attributes', path)\n }\n // @ts-ignore\n a.forEach((value, i) => _compare(value, b[i], `${path}[${i}]`, message, customCompare))\n break\n /* c8 ignore next 4 */\n default:\n if (!customCompare(a.constructor, a, b, path, compareValues)) {\n _failMessage(message, `Values ${json.stringify(a)} and ${json.stringify(b)} don't match`, path)\n }\n }\n assert(success, message)\n return true\n}\n\n/**\n * @template T\n * @param {T} a\n * @param {T} b\n * @param {string?} [message]\n * @param {function(any,T,T,string,any):boolean} [customCompare]\n */\nexport const compare = (a, b, message = null, customCompare = compareValues) => _compare(a, b, 'obj', message, customCompare)\n\n/**\n * @template T\n * @param {T} property\n * @param {string?} [message]\n * @return {asserts property is NonNullable<T>}\n * @throws {TestError}\n */\n/* c8 ignore next */\nexport const assert = (property, message = null) => { property || fail(`Assertion failed${message !== null ? `: ${message}` : ''}`) }\n\n/**\n * @param {function():Promise<any>} f\n */\nexport const promiseRejected = async f => {\n try {\n await f()\n } catch (err) {\n return\n }\n fail('Expected promise to fail')\n}\n\n/**\n * @param {function():void} f\n * @throws {TestError}\n */\nexport const fails = f => {\n try {\n f()\n } catch (_err) {\n log.print(log.GREEN, '⇖ This Error was expected')\n return\n }\n fail('Expected this to fail')\n}\n\n/**\n * @param {function():Promise<any>} f\n * @throws {TestError}\n */\nexport const failsAsync = async f => {\n try {\n await f()\n } catch (_err) {\n log.print(log.GREEN, '⇖ This Error was expected')\n return\n }\n fail('Expected this to fail')\n}\n\n/**\n * @param {Object<string, Object<string, function(TestCase):void|Promise<any>>>} tests\n */\nexport const runTests = async tests => {\n /**\n * @param {string} testname\n */\n const filterTest = testname => testname.startsWith('test') || testname.startsWith('benchmark')\n const numberOfTests = object.map(tests, mod => object.map(mod, (f, fname) => /* c8 ignore next */ f && filterTest(fname) ? 1 : 0).reduce(math.add, 0)).reduce(math.add, 0)\n let successfulTests = 0\n let testnumber = 0\n const start = performance.now()\n for (const modName in tests) {\n const mod = tests[modName]\n for (const fname in mod) {\n const f = mod[fname]\n /* c8 ignore else */\n if (f && filterTest(fname)) {\n const repeatEachTest = 1\n let success = true\n for (let i = 0; success && i < repeatEachTest; i++) {\n success = await run(modName, fname, f, testnumber, numberOfTests)\n }\n testnumber++\n /* c8 ignore else */\n if (success) {\n successfulTests++\n }\n }\n }\n }\n const end = performance.now()\n log.print('')\n const success = successfulTests === numberOfTests\n /* c8 ignore start */\n if (success) {\n log.print(log.GREEN, log.BOLD, 'All tests successful!', log.GREY, log.UNBOLD, ` in ${time.humanizeDuration(end - start)}`)\n log.printImgBase64(nyanCatImage, 50)\n } else {\n const failedTests = numberOfTests - successfulTests\n log.print(log.RED, log.BOLD, `> ${failedTests} test${failedTests > 1 ? 's' : ''} failed`)\n }\n /* c8 ignore stop */\n return success\n}\n\nclass TestError extends Error {}\n\n/**\n * @param {string} reason\n * @throws {TestError}\n */\nexport const fail = reason => {\n log.print(log.RED, log.BOLD, 'X ', log.UNBOLD, reason)\n throw new TestError('Test Failed')\n}\n\nclass SkipError extends Error {}\n\n/**\n * @param {boolean} cond If true, this tests will be skipped\n * @throws {SkipError}\n */\nexport const skip = (cond = true) => {\n if (cond) {\n throw new SkipError('skipping..')\n }\n}\n\n// eslint-disable-next-line\nconst nyanCatImage = 'R0lGODlhjABMAPcAAMiSE0xMTEzMzUKJzjQ0NFsoKPc7//FM/9mH/z9x0HIiIoKCgmBHN+frGSkZLdDQ0LCwsDk71g0KCUzDdrQQEOFz/8yYdelmBdTiHFxcXDU2erR/mLrTHCgoKK5szBQUFNgSCTk6ymfpCB9VZS2Bl+cGBt2N8kWm0uDcGXhZRUvGq94NCFPhDiwsLGVlZTgqIPMDA1g3aEzS5D6xAURERDtG9JmBjJsZGWs2AD1W6Hp6eswyDeJ4CFNTU1LcEoJRmTMzSd14CTg5ser2GmDzBd17/xkZGUzMvoSMDiEhIfKruCwNAJaWlvRzA8kNDXDrCfi0pe1U/+GS6SZrAB4eHpZwVhoabsx9oiYmJt/TGHFxcYyMjOid0+Zl/0rF6j09PeRr/0zU9DxO6j+z0lXtBtp8qJhMAEssLGhoaPL/GVn/AAsWJ/9/AE3Z/zs9/3cAAOlf/+aa2RIyADo85uhh/0i84WtrazQ0UyMlmDMzPwUFBe16BTMmHau0E03X+g8pMEAoS1MBAf++kkzO8pBaqSZoe9uB/zE0BUQ3Sv///4WFheuiyzo880gzNDIyNissBNqF/8RiAOF2qG5ubj0vL1z6Avl5ASsgGkgUSy8vL/8n/z4zJy8lOv96uEssV1csAN5ZCDQ0Wz1a3tbEGHLeDdYKCg4PATE7PiMVFSoqU83eHEi43gUPAOZ8reGogeKU5dBBC8faHEez2lHYF4bQFMukFtl4CzY3kkzBVJfMGZkAAMfSFf27mP0t//g4/9R6Dfsy/1DRIUnSAPRD/0fMAFQ0Q+l7rnbaD0vEntCDD6rSGtO8GNpUCU/MK07LPNEfC7RaABUWWkgtOst+71v9AfD7GfDw8P19ATtA/NJpAONgB9yL+fm6jzIxMdnNGJxht1/2A9x//9jHGOSX3+5tBP27l35+fk5OTvZ9AhYgTjo0PUhGSDs9+LZjCFf2Aw0IDwcVAA8PD5lwg9+Q7YaChC0kJP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpGNEM2MUEyMzE0QTRFMTExOUQzRkE3QTBCRDNBMjdBQyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpERjQ0NEY0QkI2MTcxMUUxOUJEQkUzNUNGQTkwRTU2MiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpERjQ0NEY0QUI2MTcxMUUxOUJEQkUzNUNGQTkwRTU2MiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1OEE3RTIwRjcyQTlFMTExOTQ1QkY2QTU5QzVCQjJBOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpGNEM2MUEyMzE0QTRFMTExOUQzRkE3QTBCRDNBMjdBQyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1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'\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 *\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","\nimport { Observable } from 'lib0/observable'\n\nimport {\n Doc // eslint-disable-line\n} from '../internals.js'\n\n/**\n * This is an abstract interface that all Connectors should implement to keep them interchangeable.\n *\n * @note This interface is experimental and it is not advised to actually inherit this class.\n * It just serves as typing information.\n *\n * @extends {Observable<any>}\n */\nexport class AbstractConnector extends Observable {\n /**\n * @param {Doc} ydoc\n * @param {any} awareness\n */\n constructor (ydoc, awareness) {\n super()\n this.doc = ydoc\n this.awareness = awareness\n }\n}\n","\nimport {\n findIndexSS,\n getState,\n splitItem,\n iterateStructs,\n UpdateEncoderV2,\n DSDecoderV1, DSEncoderV1, DSDecoderV2, DSEncoderV2, Item, GC, StructStore, Transaction, ID // eslint-disable-line\n} from '../internals.js'\n\nimport * as array from 'lib0/array'\nimport * as math from 'lib0/math'\nimport * as map from 'lib0/map'\nimport * as encoding from 'lib0/encoding'\nimport * as decoding from 'lib0/decoding'\n\nexport class DeleteItem {\n /**\n * @param {number} clock\n * @param {number} len\n */\n constructor (clock, len) {\n /**\n * @type {number}\n */\n this.clock = clock\n /**\n * @type {number}\n */\n this.len = len\n }\n}\n\n/**\n * We no longer maintain a DeleteStore. DeleteSet is a temporary object that is created when needed.\n * - When created in a transaction, it must only be accessed after sorting, and merging\n * - This DeleteSet is send to other clients\n * - We do not create a DeleteSet when we send a sync message. The DeleteSet message is created directly from StructStore\n * - We read a DeleteSet as part of a sync/update message. In this case the DeleteSet is already sorted and merged.\n */\nexport class DeleteSet {\n constructor () {\n /**\n * @type {Map<number,Array<DeleteItem>>}\n */\n this.clients = new Map()\n }\n}\n\n/**\n * Iterate over all structs that the DeleteSet gc's.\n *\n * @param {Transaction} transaction\n * @param {DeleteSet} ds\n * @param {function(GC|Item):void} f\n *\n * @function\n */\nexport const iterateDeletedStructs = (transaction, ds, f) =>\n ds.clients.forEach((deletes, clientid) => {\n const structs = /** @type {Array<GC|Item>} */ (transaction.doc.store.clients.get(clientid))\n for (let i = 0; i < deletes.length; i++) {\n const del = deletes[i]\n iterateStructs(transaction, structs, del.clock, del.len, f)\n }\n })\n\n/**\n * @param {Array<DeleteItem>} dis\n * @param {number} clock\n * @return {number|null}\n *\n * @private\n * @function\n */\nexport const findIndexDS = (dis, clock) => {\n let left = 0\n let right = dis.length - 1\n while (left <= right) {\n const midindex = math.floor((left + right) / 2)\n const mid = dis[midindex]\n const midclock = mid.clock\n if (midclock <= clock) {\n if (clock < midclock + mid.len) {\n return midindex\n }\n left = midindex + 1\n } else {\n right = midindex - 1\n }\n }\n return null\n}\n\n/**\n * @param {DeleteSet} ds\n * @param {ID} id\n * @return {boolean}\n *\n * @private\n * @function\n */\nexport const isDeleted = (ds, id) => {\n const dis = ds.clients.get(id.client)\n return dis !== undefined && findIndexDS(dis, id.clock) !== null\n}\n\n/**\n * @param {DeleteSet} ds\n *\n * @private\n * @function\n */\nexport const sortAndMergeDeleteSet = ds => {\n ds.clients.forEach(dels => {\n dels.sort((a, b) => a.clock - b.clock)\n // merge items without filtering or splicing the array\n // i is the current pointer\n // j refers to the current insert position for the pointed item\n // try to merge dels[i] into dels[j-1] or set dels[j]=dels[i]\n let i, j\n for (i = 1, j = 1; i < dels.length; i++) {\n const left = dels[j - 1]\n const right = dels[i]\n if (left.clock + left.len >= right.clock) {\n left.len = math.max(left.len, right.clock + right.len - left.clock)\n } else {\n if (j < i) {\n dels[j] = right\n }\n j++\n }\n }\n dels.length = j\n })\n}\n\n/**\n * @param {Array<DeleteSet>} dss\n * @return {DeleteSet} A fresh DeleteSet\n */\nexport const mergeDeleteSets = dss => {\n const merged = new DeleteSet()\n for (let dssI = 0; dssI < dss.length; dssI++) {\n dss[dssI].clients.forEach((delsLeft, client) => {\n if (!merged.clients.has(client)) {\n // Write all missing keys from current ds and all following.\n // If merged already contains `client` current ds has already been added.\n /**\n * @type {Array<DeleteItem>}\n */\n const dels = delsLeft.slice()\n for (let i = dssI + 1; i < dss.length; i++) {\n array.appendTo(dels, dss[i].clients.get(client) || [])\n }\n merged.clients.set(client, dels)\n }\n })\n }\n sortAndMergeDeleteSet(merged)\n return merged\n}\n\n/**\n * @param {DeleteSet} ds\n * @param {number} client\n * @param {number} clock\n * @param {number} length\n *\n * @private\n * @function\n */\nexport const addToDeleteSet = (ds, client, clock, length) => {\n map.setIfUndefined(ds.clients, client, () => /** @type {Array<DeleteItem>} */ ([])).push(new DeleteItem(clock, length))\n}\n\nexport const createDeleteSet = () => new DeleteSet()\n\n/**\n * @param {StructStore} ss\n * @return {DeleteSet} Merged and sorted DeleteSet\n *\n * @private\n * @function\n */\nexport const createDeleteSetFromStructStore = ss => {\n const ds = createDeleteSet()\n ss.clients.forEach((structs, client) => {\n /**\n * @type {Array<DeleteItem>}\n */\n const dsitems = []\n for (let i = 0; i < structs.length; i++) {\n const struct = structs[i]\n if (struct.deleted) {\n const clock = struct.id.clock\n let len = struct.length\n if (i + 1 < structs.length) {\n for (let next = structs[i + 1]; i + 1 < structs.length && next.deleted; next = structs[++i + 1]) {\n len += next.length\n }\n }\n dsitems.push(new DeleteItem(clock, len))\n }\n }\n if (dsitems.length > 0) {\n ds.clients.set(client, dsitems)\n }\n })\n return ds\n}\n\n/**\n * @param {DSEncoderV1 | DSEncoderV2} encoder\n * @param {DeleteSet} ds\n *\n * @private\n * @function\n */\nexport const writeDeleteSet = (encoder, ds) => {\n encoding.writeVarUint(encoder.restEncoder, ds.clients.size)\n\n // Ensure that the delete set is written in a deterministic order\n array.from(ds.clients.entries())\n .sort((a, b) => b[0] - a[0])\n .forEach(([client, dsitems]) => {\n encoder.resetDsCurVal()\n encoding.writeVarUint(encoder.restEncoder, client)\n const len = dsitems.length\n encoding.writeVarUint(encoder.restEncoder, len)\n for (let i = 0; i < len; i++) {\n const item = dsitems[i]\n encoder.writeDsClock(item.clock)\n encoder.writeDsLen(item.len)\n }\n })\n}\n\n/**\n * @param {DSDecoderV1 | DSDecoderV2} decoder\n * @return {DeleteSet}\n *\n * @private\n * @function\n */\nexport const readDeleteSet = decoder => {\n const ds = new DeleteSet()\n const numClients = decoding.readVarUint(decoder.restDecoder)\n for (let i = 0; i < numClients; i++) {\n decoder.resetDsCurVal()\n const client = decoding.readVarUint(decoder.restDecoder)\n const numberOfDeletes = decoding.readVarUint(decoder.restDecoder)\n if (numberOfDeletes > 0) {\n const dsField = map.setIfUndefined(ds.clients, client, () => /** @type {Array<DeleteItem>} */ ([]))\n for (let i = 0; i < numberOfDeletes; i++) {\n dsField.push(new DeleteItem(decoder.readDsClock(), decoder.readDsLen()))\n }\n }\n }\n return ds\n}\n\n/**\n * @todo YDecoder also contains references to String and other Decoders. Would make sense to exchange YDecoder.toUint8Array for YDecoder.DsToUint8Array()..\n */\n\n/**\n * @param {DSDecoderV1 | DSDecoderV2} decoder\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @return {Uint8Array|null} Returns a v2 update containing all deletes that couldn't be applied yet; or null if all deletes were applied successfully.\n *\n * @private\n * @function\n */\nexport const readAndApplyDeleteSet = (decoder, transaction, store) => {\n const unappliedDS = new DeleteSet()\n const numClients = decoding.readVarUint(decoder.restDecoder)\n for (let i = 0; i < numClients; i++) {\n decoder.resetDsCurVal()\n const client = decoding.readVarUint(decoder.restDecoder)\n const numberOfDeletes = decoding.readVarUint(decoder.restDecoder)\n const structs = store.clients.get(client) || []\n const state = getState(store, client)\n for (let i = 0; i < numberOfDeletes; i++) {\n const clock = decoder.readDsClock()\n const clockEnd = clock + decoder.readDsLen()\n if (clock < state) {\n if (state < clockEnd) {\n addToDeleteSet(unappliedDS, client, state, clockEnd - state)\n }\n let index = findIndexSS(structs, clock)\n /**\n * We can ignore the case of GC and Delete structs, because we are going to skip them\n * @type {Item}\n */\n // @ts-ignore\n let struct = structs[index]\n // split the first item if necessary\n if (!struct.deleted && struct.id.clock < clock) {\n structs.splice(index + 1, 0, splitItem(transaction, struct, clock - struct.id.clock))\n index++ // increase we now want to use the next struct\n }\n while (index < structs.length) {\n // @ts-ignore\n struct = structs[index++]\n if (struct.id.clock < clockEnd) {\n if (!struct.deleted) {\n if (clockEnd < struct.id.clock + struct.length) {\n structs.splice(index, 0, splitItem(transaction, struct, clockEnd - struct.id.clock))\n }\n struct.delete(transaction)\n }\n } else {\n break\n }\n }\n } else {\n addToDeleteSet(unappliedDS, client, clock, clockEnd - clock)\n }\n }\n }\n if (unappliedDS.clients.size > 0) {\n const ds = new UpdateEncoderV2()\n encoding.writeVarUint(ds.restEncoder, 0) // encode 0 structs\n writeDeleteSet(ds, unappliedDS)\n return ds.toUint8Array()\n }\n return null\n}\n","/**\n * @module Y\n */\n\nimport {\n StructStore,\n AbstractType,\n YArray,\n YText,\n YMap,\n YXmlFragment,\n transact,\n ContentDoc, Item, Transaction, YEvent // eslint-disable-line\n} from '../internals.js'\n\nimport { Observable } from 'lib0/observable'\nimport * as random from 'lib0/random'\nimport * as map from 'lib0/map'\nimport * as array from 'lib0/array'\nimport * as promise from 'lib0/promise'\n\nexport const generateNewClientId = random.uint32\n\n/**\n * @typedef {Object} DocOpts\n * @property {boolean} [DocOpts.gc=true] Disable garbage collection (default: gc=true)\n * @property {function(Item):boolean} [DocOpts.gcFilter] Will be called before an Item is garbage collected. Return false to keep the Item.\n * @property {string} [DocOpts.guid] Define a globally unique identifier for this document\n * @property {string | null} [DocOpts.collectionid] Associate this document with a collection. This only plays a role if your provider has a concept of collection.\n * @property {any} [DocOpts.meta] Any kind of meta information you want to associate with this document. If this is a subdocument, remote peers will store the meta information as well.\n * @property {boolean} [DocOpts.autoLoad] If a subdocument, automatically load document. If this is a subdocument, remote peers will load the document as well automatically.\n * @property {boolean} [DocOpts.shouldLoad] Whether the document should be synced by the provider now. This is toggled to true when you call ydoc.load()\n */\n\n/**\n * A Yjs instance handles the state of shared data.\n * @extends Observable<string>\n */\nexport class Doc extends Observable {\n /**\n * @param {DocOpts} opts configuration\n */\n constructor ({ guid = random.uuidv4(), collectionid = null, gc = true, gcFilter = () => true, meta = null, autoLoad = false, shouldLoad = true } = {}) {\n super()\n this.gc = gc\n this.gcFilter = gcFilter\n this.clientID = generateNewClientId()\n this.guid = guid\n this.collectionid = collectionid\n /**\n * @type {Map<string, AbstractType<YEvent<any>>>}\n */\n this.share = new Map()\n this.store = new StructStore()\n /**\n * @type {Transaction | null}\n */\n this._transaction = null\n /**\n * @type {Array<Transaction>}\n */\n this._transactionCleanups = []\n /**\n * @type {Set<Doc>}\n */\n this.subdocs = new Set()\n /**\n * If this document is a subdocument - a document integrated into another document - then _item is defined.\n * @type {Item?}\n */\n this._item = null\n this.shouldLoad = shouldLoad\n this.autoLoad = autoLoad\n this.meta = meta\n /**\n * This is set to true when the persistence provider loaded the document from the database or when the `sync` event fires.\n * Note that not all providers implement this feature. Provider authors are encouraged to fire the `load` event when the doc content is loaded from the database.\n *\n * @type {boolean}\n */\n this.isLoaded = false\n /**\n * This is set to true when the connection provider has successfully synced with a backend.\n * Note that when using peer-to-peer providers this event may not provide very useful.\n * Also note that not all providers implement this feature. Provider authors are encouraged to fire\n * the `sync` event when the doc has been synced (with `true` as a parameter) or if connection is\n * lost (with false as a parameter).\n */\n this.isSynced = false\n /**\n * Promise that resolves once the document has been loaded from a presistence provider.\n */\n this.whenLoaded = promise.create(resolve => {\n this.on('load', () => {\n this.isLoaded = true\n resolve(this)\n })\n })\n const provideSyncedPromise = () => promise.create(resolve => {\n /**\n * @param {boolean} isSynced\n */\n const eventHandler = (isSynced) => {\n if (isSynced === undefined || isSynced === true) {\n this.off('sync', eventHandler)\n resolve()\n }\n }\n this.on('sync', eventHandler)\n })\n this.on('sync', isSynced => {\n if (isSynced === false && this.isSynced) {\n this.whenSynced = provideSyncedPromise()\n }\n this.isSynced = isSynced === undefined || isSynced === true\n if (!this.isLoaded) {\n this.emit('load', [])\n }\n })\n /**\n * Promise that resolves once the document has been synced with a backend.\n * This promise is recreated when the connection is lost.\n * Note the documentation about the `isSynced` property.\n */\n this.whenSynced = provideSyncedPromise()\n }\n\n /**\n * Notify the parent document that you request to load data into this subdocument (if it is a subdocument).\n *\n * `load()` might be used in the future to request any provider to load the most current data.\n *\n * It is safe to call `load()` multiple times.\n */\n load () {\n const item = this._item\n if (item !== null && !this.shouldLoad) {\n transact(/** @type {any} */ (item.parent).doc, transaction => {\n transaction.subdocsLoaded.add(this)\n }, null, true)\n }\n this.shouldLoad = true\n }\n\n getSubdocs () {\n return this.subdocs\n }\n\n getSubdocGuids () {\n return new Set(array.from(this.subdocs).map(doc => doc.guid))\n }\n\n /**\n * Changes that happen inside of a transaction are bundled. This means that\n * the observer fires _after_ the transaction is finished and that all changes\n * that happened inside of the transaction are sent as one message to the\n * other peers.\n *\n * @template T\n * @param {function(Transaction):T} f The function that should be executed as a transaction\n * @param {any} [origin] Origin of who started the transaction. Will be stored on transaction.origin\n * @return T\n *\n * @public\n */\n transact (f, origin = null) {\n return transact(this, f, origin)\n }\n\n /**\n * Define a shared data type.\n *\n * Multiple calls of `y.get(name, TypeConstructor)` yield the same result\n * and do not overwrite each other. I.e.\n * `y.define(name, Y.Array) === y.define(name, Y.Array)`\n *\n * After this method is called, the type is also available on `y.share.get(name)`.\n *\n * *Best Practices:*\n * Define all types right after the Yjs instance is created and store them in a separate object.\n * Also use the typed methods `getText(name)`, `getArray(name)`, ..\n *\n * @example\n * const y = new Y(..)\n * const appState = {\n * document: y.getText('document')\n * comments: y.getArray('comments')\n * }\n *\n * @param {string} name\n * @param {Function} TypeConstructor The constructor of the type definition. E.g. Y.Text, Y.Array, Y.Map, ...\n * @return {AbstractType<any>} The created type. Constructed with TypeConstructor\n *\n * @public\n */\n get (name, TypeConstructor = AbstractType) {\n const type = map.setIfUndefined(this.share, name, () => {\n // @ts-ignore\n const t = new TypeConstructor()\n t._integrate(this, null)\n return t\n })\n const Constr = type.constructor\n if (TypeConstructor !== AbstractType && Constr !== TypeConstructor) {\n if (Constr === AbstractType) {\n // @ts-ignore\n const t = new TypeConstructor()\n t._map = type._map\n type._map.forEach(/** @param {Item?} n */ n => {\n for (; n !== null; n = n.left) {\n // @ts-ignore\n n.parent = t\n }\n })\n t._start = type._start\n for (let n = t._start; n !== null; n = n.right) {\n n.parent = t\n }\n t._length = type._length\n this.share.set(name, t)\n t._integrate(this, null)\n return t\n } else {\n throw new Error(`Type with the name ${name} has already been defined with a different constructor`)\n }\n }\n return type\n }\n\n /**\n * @template T\n * @param {string} [name]\n * @return {YArray<T>}\n *\n * @public\n */\n getArray (name = '') {\n // @ts-ignore\n return this.get(name, YArray)\n }\n\n /**\n * @param {string} [name]\n * @return {YText}\n *\n * @public\n */\n getText (name = '') {\n // @ts-ignore\n return this.get(name, YText)\n }\n\n /**\n * @template T\n * @param {string} [name]\n * @return {YMap<T>}\n *\n * @public\n */\n getMap (name = '') {\n // @ts-ignore\n return this.get(name, YMap)\n }\n\n /**\n * @param {string} [name]\n * @return {YXmlFragment}\n *\n * @public\n */\n getXmlFragment (name = '') {\n // @ts-ignore\n return this.get(name, YXmlFragment)\n }\n\n /**\n * Converts the entire document into a js object, recursively traversing each yjs type\n * Doesn't log types that have not been defined (using ydoc.getType(..)).\n *\n * @deprecated Do not use this method and rather call toJSON directly on the shared types.\n *\n * @return {Object<string, any>}\n */\n toJSON () {\n /**\n * @type {Object<string, any>}\n */\n const doc = {}\n\n this.share.forEach((value, key) => {\n doc[key] = value.toJSON()\n })\n\n return doc\n }\n\n /**\n * Emit `destroy` event and unregister all event handlers.\n */\n destroy () {\n array.from(this.subdocs).forEach(subdoc => subdoc.destroy())\n const item = this._item\n if (item !== null) {\n this._item = null\n const content = /** @type {ContentDoc} */ (item.content)\n content.doc = new Doc({ guid: this.guid, ...content.opts, shouldLoad: false })\n content.doc._item = item\n transact(/** @type {any} */ (item).parent.doc, transaction => {\n const doc = content.doc\n if (!item.deleted) {\n transaction.subdocsAdded.add(doc)\n }\n transaction.subdocsRemoved.add(this)\n }, null, true)\n }\n this.emit('destroyed', [true])\n this.emit('destroy', [this])\n super.destroy()\n }\n\n /**\n * @param {string} eventName\n * @param {function(...any):any} f\n */\n on (eventName, f) {\n super.on(eventName, f)\n }\n\n /**\n * @param {string} eventName\n * @param {function} f\n */\n off (eventName, f) {\n super.off(eventName, f)\n }\n}\n","import * as buffer from 'lib0/buffer'\nimport * as decoding from 'lib0/decoding'\nimport {\n ID, createID\n} from '../internals.js'\n\nexport class DSDecoderV1 {\n /**\n * @param {decoding.Decoder} decoder\n */\n constructor (decoder) {\n this.restDecoder = decoder\n }\n\n resetDsCurVal () {\n // nop\n }\n\n /**\n * @return {number}\n */\n readDsClock () {\n return decoding.readVarUint(this.restDecoder)\n }\n\n /**\n * @return {number}\n */\n readDsLen () {\n return decoding.readVarUint(this.restDecoder)\n }\n}\n\nexport class UpdateDecoderV1 extends DSDecoderV1 {\n /**\n * @return {ID}\n */\n readLeftID () {\n return createID(decoding.readVarUint(this.restDecoder), decoding.readVarUint(this.restDecoder))\n }\n\n /**\n * @return {ID}\n */\n readRightID () {\n return createID(decoding.readVarUint(this.restDecoder), decoding.readVarUint(this.restDecoder))\n }\n\n /**\n * Read the next client id.\n * Use this in favor of readID whenever possible to reduce the number of objects created.\n */\n readClient () {\n return decoding.readVarUint(this.restDecoder)\n }\n\n /**\n * @return {number} info An unsigned 8-bit integer\n */\n readInfo () {\n return decoding.readUint8(this.restDecoder)\n }\n\n /**\n * @return {string}\n */\n readString () {\n return decoding.readVarString(this.restDecoder)\n }\n\n /**\n * @return {boolean} isKey\n */\n readParentInfo () {\n return decoding.readVarUint(this.restDecoder) === 1\n }\n\n /**\n * @return {number} info An unsigned 8-bit integer\n */\n readTypeRef () {\n return decoding.readVarUint(this.restDecoder)\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @return {number} len\n */\n readLen () {\n return decoding.readVarUint(this.restDecoder)\n }\n\n /**\n * @return {any}\n */\n readAny () {\n return decoding.readAny(this.restDecoder)\n }\n\n /**\n * @return {Uint8Array}\n */\n readBuf () {\n return buffer.copyUint8Array(decoding.readVarUint8Array(this.restDecoder))\n }\n\n /**\n * Legacy implementation uses JSON parse. We use any-decoding in v2.\n *\n * @return {any}\n */\n readJSON () {\n return JSON.parse(decoding.readVarString(this.restDecoder))\n }\n\n /**\n * @return {string}\n */\n readKey () {\n return decoding.readVarString(this.restDecoder)\n }\n}\n\nexport class DSDecoderV2 {\n /**\n * @param {decoding.Decoder} decoder\n */\n constructor (decoder) {\n /**\n * @private\n */\n this.dsCurrVal = 0\n this.restDecoder = decoder\n }\n\n resetDsCurVal () {\n this.dsCurrVal = 0\n }\n\n /**\n * @return {number}\n */\n readDsClock () {\n this.dsCurrVal += decoding.readVarUint(this.restDecoder)\n return this.dsCurrVal\n }\n\n /**\n * @return {number}\n */\n readDsLen () {\n const diff = decoding.readVarUint(this.restDecoder) + 1\n this.dsCurrVal += diff\n return diff\n }\n}\n\nexport class UpdateDecoderV2 extends DSDecoderV2 {\n /**\n * @param {decoding.Decoder} decoder\n */\n constructor (decoder) {\n super(decoder)\n /**\n * List of cached keys. If the keys[id] does not exist, we read a new key\n * from stringEncoder and push it to keys.\n *\n * @type {Array<string>}\n */\n this.keys = []\n decoding.readVarUint(decoder) // read feature flag - currently unused\n this.keyClockDecoder = new decoding.IntDiffOptRleDecoder(decoding.readVarUint8Array(decoder))\n this.clientDecoder = new decoding.UintOptRleDecoder(decoding.readVarUint8Array(decoder))\n this.leftClockDecoder = new decoding.IntDiffOptRleDecoder(decoding.readVarUint8Array(decoder))\n this.rightClockDecoder = new decoding.IntDiffOptRleDecoder(decoding.readVarUint8Array(decoder))\n this.infoDecoder = new decoding.RleDecoder(decoding.readVarUint8Array(decoder), decoding.readUint8)\n this.stringDecoder = new decoding.StringDecoder(decoding.readVarUint8Array(decoder))\n this.parentInfoDecoder = new decoding.RleDecoder(decoding.readVarUint8Array(decoder), decoding.readUint8)\n this.typeRefDecoder = new decoding.UintOptRleDecoder(decoding.readVarUint8Array(decoder))\n this.lenDecoder = new decoding.UintOptRleDecoder(decoding.readVarUint8Array(decoder))\n }\n\n /**\n * @return {ID}\n */\n readLeftID () {\n return new ID(this.clientDecoder.read(), this.leftClockDecoder.read())\n }\n\n /**\n * @return {ID}\n */\n readRightID () {\n return new ID(this.clientDecoder.read(), this.rightClockDecoder.read())\n }\n\n /**\n * Read the next client id.\n * Use this in favor of readID whenever possible to reduce the number of objects created.\n */\n readClient () {\n return this.clientDecoder.read()\n }\n\n /**\n * @return {number} info An unsigned 8-bit integer\n */\n readInfo () {\n return /** @type {number} */ (this.infoDecoder.read())\n }\n\n /**\n * @return {string}\n */\n readString () {\n return this.stringDecoder.read()\n }\n\n /**\n * @return {boolean}\n */\n readParentInfo () {\n return this.parentInfoDecoder.read() === 1\n }\n\n /**\n * @return {number} An unsigned 8-bit integer\n */\n readTypeRef () {\n return this.typeRefDecoder.read()\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @return {number}\n */\n readLen () {\n return this.lenDecoder.read()\n }\n\n /**\n * @return {any}\n */\n readAny () {\n return decoding.readAny(this.restDecoder)\n }\n\n /**\n * @return {Uint8Array}\n */\n readBuf () {\n return decoding.readVarUint8Array(this.restDecoder)\n }\n\n /**\n * This is mainly here for legacy purposes.\n *\n * Initial we incoded objects using JSON. Now we use the much faster lib0/any-encoder. This method mainly exists for legacy purposes for the v1 encoder.\n *\n * @return {any}\n */\n readJSON () {\n return decoding.readAny(this.restDecoder)\n }\n\n /**\n * @return {string}\n */\n readKey () {\n const keyClock = this.keyClockDecoder.read()\n if (keyClock < this.keys.length) {\n return this.keys[keyClock]\n } else {\n const key = this.stringDecoder.read()\n this.keys.push(key)\n return key\n }\n }\n}\n","\nimport * as error from 'lib0/error'\nimport * as encoding from 'lib0/encoding'\n\nimport {\n ID // eslint-disable-line\n} from '../internals.js'\n\nexport class DSEncoderV1 {\n constructor () {\n this.restEncoder = encoding.createEncoder()\n }\n\n toUint8Array () {\n return encoding.toUint8Array(this.restEncoder)\n }\n\n resetDsCurVal () {\n // nop\n }\n\n /**\n * @param {number} clock\n */\n writeDsClock (clock) {\n encoding.writeVarUint(this.restEncoder, clock)\n }\n\n /**\n * @param {number} len\n */\n writeDsLen (len) {\n encoding.writeVarUint(this.restEncoder, len)\n }\n}\n\nexport class UpdateEncoderV1 extends DSEncoderV1 {\n /**\n * @param {ID} id\n */\n writeLeftID (id) {\n encoding.writeVarUint(this.restEncoder, id.client)\n encoding.writeVarUint(this.restEncoder, id.clock)\n }\n\n /**\n * @param {ID} id\n */\n writeRightID (id) {\n encoding.writeVarUint(this.restEncoder, id.client)\n encoding.writeVarUint(this.restEncoder, id.clock)\n }\n\n /**\n * Use writeClient and writeClock instead of writeID if possible.\n * @param {number} client\n */\n writeClient (client) {\n encoding.writeVarUint(this.restEncoder, client)\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeInfo (info) {\n encoding.writeUint8(this.restEncoder, info)\n }\n\n /**\n * @param {string} s\n */\n writeString (s) {\n encoding.writeVarString(this.restEncoder, s)\n }\n\n /**\n * @param {boolean} isYKey\n */\n writeParentInfo (isYKey) {\n encoding.writeVarUint(this.restEncoder, isYKey ? 1 : 0)\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeTypeRef (info) {\n encoding.writeVarUint(this.restEncoder, info)\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @param {number} len\n */\n writeLen (len) {\n encoding.writeVarUint(this.restEncoder, len)\n }\n\n /**\n * @param {any} any\n */\n writeAny (any) {\n encoding.writeAny(this.restEncoder, any)\n }\n\n /**\n * @param {Uint8Array} buf\n */\n writeBuf (buf) {\n encoding.writeVarUint8Array(this.restEncoder, buf)\n }\n\n /**\n * @param {any} embed\n */\n writeJSON (embed) {\n encoding.writeVarString(this.restEncoder, JSON.stringify(embed))\n }\n\n /**\n * @param {string} key\n */\n writeKey (key) {\n encoding.writeVarString(this.restEncoder, key)\n }\n}\n\nexport class DSEncoderV2 {\n constructor () {\n this.restEncoder = encoding.createEncoder() // encodes all the rest / non-optimized\n this.dsCurrVal = 0\n }\n\n toUint8Array () {\n return encoding.toUint8Array(this.restEncoder)\n }\n\n resetDsCurVal () {\n this.dsCurrVal = 0\n }\n\n /**\n * @param {number} clock\n */\n writeDsClock (clock) {\n const diff = clock - this.dsCurrVal\n this.dsCurrVal = clock\n encoding.writeVarUint(this.restEncoder, diff)\n }\n\n /**\n * @param {number} len\n */\n writeDsLen (len) {\n if (len === 0) {\n error.unexpectedCase()\n }\n encoding.writeVarUint(this.restEncoder, len - 1)\n this.dsCurrVal += len\n }\n}\n\nexport class UpdateEncoderV2 extends DSEncoderV2 {\n constructor () {\n super()\n /**\n * @type {Map<string,number>}\n */\n this.keyMap = new Map()\n /**\n * Refers to the next uniqe key-identifier to me used.\n * See writeKey method for more information.\n *\n * @type {number}\n */\n this.keyClock = 0\n this.keyClockEncoder = new encoding.IntDiffOptRleEncoder()\n this.clientEncoder = new encoding.UintOptRleEncoder()\n this.leftClockEncoder = new encoding.IntDiffOptRleEncoder()\n this.rightClockEncoder = new encoding.IntDiffOptRleEncoder()\n this.infoEncoder = new encoding.RleEncoder(encoding.writeUint8)\n this.stringEncoder = new encoding.StringEncoder()\n this.parentInfoEncoder = new encoding.RleEncoder(encoding.writeUint8)\n this.typeRefEncoder = new encoding.UintOptRleEncoder()\n this.lenEncoder = new encoding.UintOptRleEncoder()\n }\n\n toUint8Array () {\n const encoder = encoding.createEncoder()\n encoding.writeVarUint(encoder, 0) // this is a feature flag that we might use in the future\n encoding.writeVarUint8Array(encoder, this.keyClockEncoder.toUint8Array())\n encoding.writeVarUint8Array(encoder, this.clientEncoder.toUint8Array())\n encoding.writeVarUint8Array(encoder, this.leftClockEncoder.toUint8Array())\n encoding.writeVarUint8Array(encoder, this.rightClockEncoder.toUint8Array())\n encoding.writeVarUint8Array(encoder, encoding.toUint8Array(this.infoEncoder))\n encoding.writeVarUint8Array(encoder, this.stringEncoder.toUint8Array())\n encoding.writeVarUint8Array(encoder, encoding.toUint8Array(this.parentInfoEncoder))\n encoding.writeVarUint8Array(encoder, this.typeRefEncoder.toUint8Array())\n encoding.writeVarUint8Array(encoder, this.lenEncoder.toUint8Array())\n // @note The rest encoder is appended! (note the missing var)\n encoding.writeUint8Array(encoder, encoding.toUint8Array(this.restEncoder))\n return encoding.toUint8Array(encoder)\n }\n\n /**\n * @param {ID} id\n */\n writeLeftID (id) {\n this.clientEncoder.write(id.client)\n this.leftClockEncoder.write(id.clock)\n }\n\n /**\n * @param {ID} id\n */\n writeRightID (id) {\n this.clientEncoder.write(id.client)\n this.rightClockEncoder.write(id.clock)\n }\n\n /**\n * @param {number} client\n */\n writeClient (client) {\n this.clientEncoder.write(client)\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeInfo (info) {\n this.infoEncoder.write(info)\n }\n\n /**\n * @param {string} s\n */\n writeString (s) {\n this.stringEncoder.write(s)\n }\n\n /**\n * @param {boolean} isYKey\n */\n writeParentInfo (isYKey) {\n this.parentInfoEncoder.write(isYKey ? 1 : 0)\n }\n\n /**\n * @param {number} info An unsigned 8-bit integer\n */\n writeTypeRef (info) {\n this.typeRefEncoder.write(info)\n }\n\n /**\n * Write len of a struct - well suited for Opt RLE encoder.\n *\n * @param {number} len\n */\n writeLen (len) {\n this.lenEncoder.write(len)\n }\n\n /**\n * @param {any} any\n */\n writeAny (any) {\n encoding.writeAny(this.restEncoder, any)\n }\n\n /**\n * @param {Uint8Array} buf\n */\n writeBuf (buf) {\n encoding.writeVarUint8Array(this.restEncoder, buf)\n }\n\n /**\n * This is mainly here for legacy purposes.\n *\n * Initial we incoded objects using JSON. Now we use the much faster lib0/any-encoder. This method mainly exists for legacy purposes for the v1 encoder.\n *\n * @param {any} embed\n */\n writeJSON (embed) {\n encoding.writeAny(this.restEncoder, embed)\n }\n\n /**\n * Property keys are often reused. For example, in y-prosemirror the key `bold` might\n * occur very often. For a 3d application, the key `position` might occur very often.\n *\n * We cache these keys in a Map and refer to them via a unique number.\n *\n * @param {string} key\n */\n writeKey (key) {\n const clock = this.keyMap.get(key)\n if (clock === undefined) {\n /**\n * @todo uncomment to introduce this feature finally\n *\n * Background. The ContentFormat object was always encoded using writeKey, but the decoder used to use readString.\n * Furthermore, I forgot to set the keyclock. So everything was working fine.\n *\n * However, this feature here is basically useless as it is not being used (it actually only consumes extra memory).\n *\n * I don't know yet how to reintroduce this feature..\n *\n * Older clients won't be able to read updates when we reintroduce this feature. So this should probably be done using a flag.\n *\n */\n // this.keyMap.set(key, this.keyClock)\n this.keyClockEncoder.write(this.keyClock++)\n this.stringEncoder.write(key)\n } else {\n this.keyClockEncoder.write(clock)\n }\n }\n}\n","\n/**\n * @module encoding\n */\n/*\n * We use the first five bits in the info flag for determining the type of the struct.\n *\n * 0: GC\n * 1: Item with Deleted content\n * 2: Item with JSON content\n * 3: Item with Binary content\n * 4: Item with String content\n * 5: Item with Embed content (for richtext content)\n * 6: Item with Format content (a formatting marker for richtext content)\n * 7: Item with Type\n */\n\nimport {\n findIndexSS,\n getState,\n createID,\n getStateVector,\n readAndApplyDeleteSet,\n writeDeleteSet,\n createDeleteSetFromStructStore,\n transact,\n readItemContent,\n UpdateDecoderV1,\n UpdateDecoderV2,\n UpdateEncoderV1,\n UpdateEncoderV2,\n DSEncoderV2,\n DSDecoderV1,\n DSEncoderV1,\n mergeUpdates,\n mergeUpdatesV2,\n Skip,\n diffUpdateV2,\n convertUpdateFormatV2ToV1,\n DSDecoderV2, Doc, Transaction, GC, Item, StructStore // eslint-disable-line\n} from '../internals.js'\n\nimport * as encoding from 'lib0/encoding'\nimport * as decoding from 'lib0/decoding'\nimport * as binary from 'lib0/binary'\nimport * as map from 'lib0/map'\nimport * as math from 'lib0/math'\nimport * as array from 'lib0/array'\n\n/**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {Array<GC|Item>} structs All structs by `client`\n * @param {number} client\n * @param {number} clock write structs starting with `ID(client,clock)`\n *\n * @function\n */\nconst writeStructs = (encoder, structs, client, clock) => {\n // write first id\n clock = math.max(clock, structs[0].id.clock) // make sure the first id exists\n const startNewStructs = findIndexSS(structs, clock)\n // write # encoded structs\n encoding.writeVarUint(encoder.restEncoder, structs.length - startNewStructs)\n encoder.writeClient(client)\n encoding.writeVarUint(encoder.restEncoder, clock)\n const firstStruct = structs[startNewStructs]\n // write first struct with an offset\n firstStruct.write(encoder, clock - firstStruct.id.clock)\n for (let i = startNewStructs + 1; i < structs.length; i++) {\n structs[i].write(encoder, 0)\n }\n}\n\n/**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {StructStore} store\n * @param {Map<number,number>} _sm\n *\n * @private\n * @function\n */\nexport const writeClientsStructs = (encoder, store, _sm) => {\n // we filter all valid _sm entries into sm\n const sm = new Map()\n _sm.forEach((clock, client) => {\n // only write if new structs are available\n if (getState(store, client) > clock) {\n sm.set(client, clock)\n }\n })\n getStateVector(store).forEach((clock, client) => {\n if (!_sm.has(client)) {\n sm.set(client, 0)\n }\n })\n // write # states that were updated\n encoding.writeVarUint(encoder.restEncoder, sm.size)\n // Write items with higher client ids first\n // This heavily improves the conflict algorithm.\n array.from(sm.entries()).sort((a, b) => b[0] - a[0]).forEach(([client, clock]) => {\n // @ts-ignore\n writeStructs(encoder, store.clients.get(client), client, clock)\n })\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder The decoder object to read data from.\n * @param {Doc} doc\n * @return {Map<number, { i: number, refs: Array<Item | GC> }>}\n *\n * @private\n * @function\n */\nexport const readClientsStructRefs = (decoder, doc) => {\n /**\n * @type {Map<number, { i: number, refs: Array<Item | GC> }>}\n */\n const clientRefs = map.create()\n const numOfStateUpdates = decoding.readVarUint(decoder.restDecoder)\n for (let i = 0; i < numOfStateUpdates; i++) {\n const numberOfStructs = decoding.readVarUint(decoder.restDecoder)\n /**\n * @type {Array<GC|Item>}\n */\n const refs = new Array(numberOfStructs)\n const client = decoder.readClient()\n let clock = decoding.readVarUint(decoder.restDecoder)\n // const start = performance.now()\n clientRefs.set(client, { i: 0, refs })\n for (let i = 0; i < numberOfStructs; i++) {\n const info = decoder.readInfo()\n switch (binary.BITS5 & info) {\n case 0: { // GC\n const len = decoder.readLen()\n refs[i] = new GC(createID(client, clock), len)\n clock += len\n break\n }\n case 10: { // Skip Struct (nothing to apply)\n // @todo we could reduce the amount of checks by adding Skip struct to clientRefs so we know that something is missing.\n const len = decoding.readVarUint(decoder.restDecoder)\n refs[i] = new Skip(createID(client, clock), len)\n clock += len\n break\n }\n default: { // Item with content\n /**\n * The optimized implementation doesn't use any variables because inlining variables is faster.\n * Below a non-optimized version is shown that implements the basic algorithm with\n * a few comments\n */\n const cantCopyParentInfo = (info & (binary.BIT7 | binary.BIT8)) === 0\n // If parent = null and neither left nor right are defined, then we know that `parent` is child of `y`\n // and we read the next string as parentYKey.\n // It indicates how we store/retrieve parent from `y.share`\n // @type {string|null}\n const struct = new Item(\n createID(client, clock),\n null, // leftd\n (info & binary.BIT8) === binary.BIT8 ? decoder.readLeftID() : null, // origin\n null, // right\n (info & binary.BIT7) === binary.BIT7 ? decoder.readRightID() : null, // right origin\n cantCopyParentInfo ? (decoder.readParentInfo() ? doc.get(decoder.readString()) : decoder.readLeftID()) : null, // parent\n cantCopyParentInfo && (info & binary.BIT6) === binary.BIT6 ? decoder.readString() : null, // parentSub\n readItemContent(decoder, info) // item content\n )\n /* A non-optimized implementation of the above algorithm:\n\n // The item that was originally to the left of this item.\n const origin = (info & binary.BIT8) === binary.BIT8 ? decoder.readLeftID() : null\n // The item that was originally to the right of this item.\n const rightOrigin = (info & binary.BIT7) === binary.BIT7 ? decoder.readRightID() : null\n const cantCopyParentInfo = (info & (binary.BIT7 | binary.BIT8)) === 0\n const hasParentYKey = cantCopyParentInfo ? decoder.readParentInfo() : false\n // If parent = null and neither left nor right are defined, then we know that `parent` is child of `y`\n // and we read the next string as parentYKey.\n // It indicates how we store/retrieve parent from `y.share`\n // @type {string|null}\n const parentYKey = cantCopyParentInfo && hasParentYKey ? decoder.readString() : null\n\n const struct = new Item(\n createID(client, clock),\n null, // leftd\n origin, // origin\n null, // right\n rightOrigin, // right origin\n cantCopyParentInfo && !hasParentYKey ? decoder.readLeftID() : (parentYKey !== null ? doc.get(parentYKey) : null), // parent\n cantCopyParentInfo && (info & binary.BIT6) === binary.BIT6 ? decoder.readString() : null, // parentSub\n readItemContent(decoder, info) // item content\n )\n */\n refs[i] = struct\n clock += struct.length\n }\n }\n }\n // console.log('time to read: ', performance.now() - start) // @todo remove\n }\n return clientRefs\n}\n\n/**\n * Resume computing structs generated by struct readers.\n *\n * While there is something to do, we integrate structs in this order\n * 1. top element on stack, if stack is not empty\n * 2. next element from current struct reader (if empty, use next struct reader)\n *\n * If struct causally depends on another struct (ref.missing), we put next reader of\n * `ref.id.client` on top of stack.\n *\n * At some point we find a struct that has no causal dependencies,\n * then we start emptying the stack.\n *\n * It is not possible to have circles: i.e. struct1 (from client1) depends on struct2 (from client2)\n * depends on struct3 (from client1). Therefore the max stack size is eqaul to `structReaders.length`.\n *\n * This method is implemented in a way so that we can resume computation if this update\n * causally depends on another update.\n *\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @param {Map<number, { i: number, refs: (GC | Item)[] }>} clientsStructRefs\n * @return { null | { update: Uint8Array, missing: Map<number,number> } }\n *\n * @private\n * @function\n */\nconst integrateStructs = (transaction, store, clientsStructRefs) => {\n /**\n * @type {Array<Item | GC>}\n */\n const stack = []\n // sort them so that we take the higher id first, in case of conflicts the lower id will probably not conflict with the id from the higher user.\n let clientsStructRefsIds = array.from(clientsStructRefs.keys()).sort((a, b) => a - b)\n if (clientsStructRefsIds.length === 0) {\n return null\n }\n const getNextStructTarget = () => {\n if (clientsStructRefsIds.length === 0) {\n return null\n }\n let nextStructsTarget = /** @type {{i:number,refs:Array<GC|Item>}} */ (clientsStructRefs.get(clientsStructRefsIds[clientsStructRefsIds.length - 1]))\n while (nextStructsTarget.refs.length === nextStructsTarget.i) {\n clientsStructRefsIds.pop()\n if (clientsStructRefsIds.length > 0) {\n nextStructsTarget = /** @type {{i:number,refs:Array<GC|Item>}} */ (clientsStructRefs.get(clientsStructRefsIds[clientsStructRefsIds.length - 1]))\n } else {\n return null\n }\n }\n return nextStructsTarget\n }\n let curStructsTarget = getNextStructTarget()\n if (curStructsTarget === null && stack.length === 0) {\n return null\n }\n\n /**\n * @type {StructStore}\n */\n const restStructs = new StructStore()\n const missingSV = new Map()\n /**\n * @param {number} client\n * @param {number} clock\n */\n const updateMissingSv = (client, clock) => {\n const mclock = missingSV.get(client)\n if (mclock == null || mclock > clock) {\n missingSV.set(client, clock)\n }\n }\n /**\n * @type {GC|Item}\n */\n let stackHead = /** @type {any} */ (curStructsTarget).refs[/** @type {any} */ (curStructsTarget).i++]\n // caching the state because it is used very often\n const state = new Map()\n\n const addStackToRestSS = () => {\n for (const item of stack) {\n const client = item.id.client\n const unapplicableItems = clientsStructRefs.get(client)\n if (unapplicableItems) {\n // decrement because we weren't able to apply previous operation\n unapplicableItems.i--\n restStructs.clients.set(client, unapplicableItems.refs.slice(unapplicableItems.i))\n clientsStructRefs.delete(client)\n unapplicableItems.i = 0\n unapplicableItems.refs = []\n } else {\n // item was the last item on clientsStructRefs and the field was already cleared. Add item to restStructs and continue\n restStructs.clients.set(client, [item])\n }\n // remove client from clientsStructRefsIds to prevent users from applying the same update again\n clientsStructRefsIds = clientsStructRefsIds.filter(c => c !== client)\n }\n stack.length = 0\n }\n\n // iterate over all struct readers until we are done\n while (true) {\n if (stackHead.constructor !== Skip) {\n const localClock = map.setIfUndefined(state, stackHead.id.client, () => getState(store, stackHead.id.client))\n const offset = localClock - stackHead.id.clock\n if (offset < 0) {\n // update from the same client is missing\n stack.push(stackHead)\n updateMissingSv(stackHead.id.client, stackHead.id.clock - 1)\n // hid a dead wall, add all items from stack to restSS\n addStackToRestSS()\n } else {\n const missing = stackHead.getMissing(transaction, store)\n if (missing !== null) {\n stack.push(stackHead)\n // get the struct reader that has the missing struct\n /**\n * @type {{ refs: Array<GC|Item>, i: number }}\n */\n const structRefs = clientsStructRefs.get(/** @type {number} */ (missing)) || { refs: [], i: 0 }\n if (structRefs.refs.length === structRefs.i) {\n // This update message causally depends on another update message that doesn't exist yet\n updateMissingSv(/** @type {number} */ (missing), getState(store, missing))\n addStackToRestSS()\n } else {\n stackHead = structRefs.refs[structRefs.i++]\n continue\n }\n } else if (offset === 0 || offset < stackHead.length) {\n // all fine, apply the stackhead\n stackHead.integrate(transaction, offset)\n state.set(stackHead.id.client, stackHead.id.clock + stackHead.length)\n }\n }\n }\n // iterate to next stackHead\n if (stack.length > 0) {\n stackHead = /** @type {GC|Item} */ (stack.pop())\n } else if (curStructsTarget !== null && curStructsTarget.i < curStructsTarget.refs.length) {\n stackHead = /** @type {GC|Item} */ (curStructsTarget.refs[curStructsTarget.i++])\n } else {\n curStructsTarget = getNextStructTarget()\n if (curStructsTarget === null) {\n // we are done!\n break\n } else {\n stackHead = /** @type {GC|Item} */ (curStructsTarget.refs[curStructsTarget.i++])\n }\n }\n }\n if (restStructs.clients.size > 0) {\n const encoder = new UpdateEncoderV2()\n writeClientsStructs(encoder, restStructs, new Map())\n // write empty deleteset\n // writeDeleteSet(encoder, new DeleteSet())\n encoding.writeVarUint(encoder.restEncoder, 0) // => no need for an extra function call, just write 0 deletes\n return { missing: missingSV, update: encoder.toUint8Array() }\n }\n return null\n}\n\n/**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {Transaction} transaction\n *\n * @private\n * @function\n */\nexport const writeStructsFromTransaction = (encoder, transaction) => writeClientsStructs(encoder, transaction.doc.store, transaction.beforeState)\n\n/**\n * Read and apply a document update.\n *\n * This function has the same effect as `applyUpdate` but accepts an decoder.\n *\n * @param {decoding.Decoder} decoder\n * @param {Doc} ydoc\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n * @param {UpdateDecoderV1 | UpdateDecoderV2} [structDecoder]\n *\n * @function\n */\nexport const readUpdateV2 = (decoder, ydoc, transactionOrigin, structDecoder = new UpdateDecoderV2(decoder)) =>\n transact(ydoc, transaction => {\n // force that transaction.local is set to non-local\n transaction.local = false\n let retry = false\n const doc = transaction.doc\n const store = doc.store\n // let start = performance.now()\n const ss = readClientsStructRefs(structDecoder, doc)\n // console.log('time to read structs: ', performance.now() - start) // @todo remove\n // start = performance.now()\n // console.log('time to merge: ', performance.now() - start) // @todo remove\n // start = performance.now()\n const restStructs = integrateStructs(transaction, store, ss)\n const pending = store.pendingStructs\n if (pending) {\n // check if we can apply something\n for (const [client, clock] of pending.missing) {\n if (clock < getState(store, client)) {\n retry = true\n break\n }\n }\n if (restStructs) {\n // merge restStructs into store.pending\n for (const [client, clock] of restStructs.missing) {\n const mclock = pending.missing.get(client)\n if (mclock == null || mclock > clock) {\n pending.missing.set(client, clock)\n }\n }\n pending.update = mergeUpdatesV2([pending.update, restStructs.update])\n }\n } else {\n store.pendingStructs = restStructs\n }\n // console.log('time to integrate: ', performance.now() - start) // @todo remove\n // start = performance.now()\n const dsRest = readAndApplyDeleteSet(structDecoder, transaction, store)\n if (store.pendingDs) {\n // @todo we could make a lower-bound state-vector check as we do above\n const pendingDSUpdate = new UpdateDecoderV2(decoding.createDecoder(store.pendingDs))\n decoding.readVarUint(pendingDSUpdate.restDecoder) // read 0 structs, because we only encode deletes in pendingdsupdate\n const dsRest2 = readAndApplyDeleteSet(pendingDSUpdate, transaction, store)\n if (dsRest && dsRest2) {\n // case 1: ds1 != null && ds2 != null\n store.pendingDs = mergeUpdatesV2([dsRest, dsRest2])\n } else {\n // case 2: ds1 != null\n // case 3: ds2 != null\n // case 4: ds1 == null && ds2 == null\n store.pendingDs = dsRest || dsRest2\n }\n } else {\n // Either dsRest == null && pendingDs == null OR dsRest != null\n store.pendingDs = dsRest\n }\n // console.log('time to cleanup: ', performance.now() - start) // @todo remove\n // start = performance.now()\n\n // console.log('time to resume delete readers: ', performance.now() - start) // @todo remove\n // start = performance.now()\n if (retry) {\n const update = /** @type {{update: Uint8Array}} */ (store.pendingStructs).update\n store.pendingStructs = null\n applyUpdateV2(transaction.doc, update)\n }\n }, transactionOrigin, false)\n\n/**\n * Read and apply a document update.\n *\n * This function has the same effect as `applyUpdate` but accepts an decoder.\n *\n * @param {decoding.Decoder} decoder\n * @param {Doc} ydoc\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n *\n * @function\n */\nexport const readUpdate = (decoder, ydoc, transactionOrigin) => readUpdateV2(decoder, ydoc, transactionOrigin, new UpdateDecoderV1(decoder))\n\n/**\n * Apply a document update created by, for example, `y.on('update', update => ..)` or `update = encodeStateAsUpdate()`.\n *\n * This function has the same effect as `readUpdate` but accepts an Uint8Array instead of a Decoder.\n *\n * @param {Doc} ydoc\n * @param {Uint8Array} update\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n * @param {typeof UpdateDecoderV1 | typeof UpdateDecoderV2} [YDecoder]\n *\n * @function\n */\nexport const applyUpdateV2 = (ydoc, update, transactionOrigin, YDecoder = UpdateDecoderV2) => {\n const decoder = decoding.createDecoder(update)\n readUpdateV2(decoder, ydoc, transactionOrigin, new YDecoder(decoder))\n}\n\n/**\n * Apply a document update created by, for example, `y.on('update', update => ..)` or `update = encodeStateAsUpdate()`.\n *\n * This function has the same effect as `readUpdate` but accepts an Uint8Array instead of a Decoder.\n *\n * @param {Doc} ydoc\n * @param {Uint8Array} update\n * @param {any} [transactionOrigin] This will be stored on `transaction.origin` and `.on('update', (update, origin))`\n *\n * @function\n */\nexport const applyUpdate = (ydoc, update, transactionOrigin) => applyUpdateV2(ydoc, update, transactionOrigin, UpdateDecoderV1)\n\n/**\n * Write all the document as a single update message. If you specify the state of the remote client (`targetStateVector`) it will\n * only write the operations that are missing.\n *\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {Doc} doc\n * @param {Map<number,number>} [targetStateVector] The state of the target that receives the update. Leave empty to write all known structs\n *\n * @function\n */\nexport const writeStateAsUpdate = (encoder, doc, targetStateVector = new Map()) => {\n writeClientsStructs(encoder, doc.store, targetStateVector)\n writeDeleteSet(encoder, createDeleteSetFromStructStore(doc.store))\n}\n\n/**\n * Write all the document as a single update message that can be applied on the remote document. If you specify the state of the remote client (`targetState`) it will\n * only write the operations that are missing.\n *\n * Use `writeStateAsUpdate` instead if you are working with lib0/encoding.js#Encoder\n *\n * @param {Doc} doc\n * @param {Uint8Array} [encodedTargetStateVector] The state of the target that receives the update. Leave empty to write all known structs\n * @param {UpdateEncoderV1 | UpdateEncoderV2} [encoder]\n * @return {Uint8Array}\n *\n * @function\n */\nexport const encodeStateAsUpdateV2 = (doc, encodedTargetStateVector = new Uint8Array([0]), encoder = new UpdateEncoderV2()) => {\n const targetStateVector = decodeStateVector(encodedTargetStateVector)\n writeStateAsUpdate(encoder, doc, targetStateVector)\n const updates = [encoder.toUint8Array()]\n // also add the pending updates (if there are any)\n if (doc.store.pendingDs) {\n updates.push(doc.store.pendingDs)\n }\n if (doc.store.pendingStructs) {\n updates.push(diffUpdateV2(doc.store.pendingStructs.update, encodedTargetStateVector))\n }\n if (updates.length > 1) {\n if (encoder.constructor === UpdateEncoderV1) {\n return mergeUpdates(updates.map((update, i) => i === 0 ? update : convertUpdateFormatV2ToV1(update)))\n } else if (encoder.constructor === UpdateEncoderV2) {\n return mergeUpdatesV2(updates)\n }\n }\n return updates[0]\n}\n\n/**\n * Write all the document as a single update message that can be applied on the remote document. If you specify the state of the remote client (`targetState`) it will\n * only write the operations that are missing.\n *\n * Use `writeStateAsUpdate` instead if you are working with lib0/encoding.js#Encoder\n *\n * @param {Doc} doc\n * @param {Uint8Array} [encodedTargetStateVector] The state of the target that receives the update. Leave empty to write all known structs\n * @return {Uint8Array}\n *\n * @function\n */\nexport const encodeStateAsUpdate = (doc, encodedTargetStateVector) => encodeStateAsUpdateV2(doc, encodedTargetStateVector, new UpdateEncoderV1())\n\n/**\n * Read state vector from Decoder and return as Map\n *\n * @param {DSDecoderV1 | DSDecoderV2} decoder\n * @return {Map<number,number>} Maps `client` to the number next expected `clock` from that client.\n *\n * @function\n */\nexport const readStateVector = decoder => {\n const ss = new Map()\n const ssLength = decoding.readVarUint(decoder.restDecoder)\n for (let i = 0; i < ssLength; i++) {\n const client = decoding.readVarUint(decoder.restDecoder)\n const clock = decoding.readVarUint(decoder.restDecoder)\n ss.set(client, clock)\n }\n return ss\n}\n\n/**\n * Read decodedState and return State as Map.\n *\n * @param {Uint8Array} decodedState\n * @return {Map<number,number>} Maps `client` to the number next expected `clock` from that client.\n *\n * @function\n */\n// export const decodeStateVectorV2 = decodedState => readStateVector(new DSDecoderV2(decoding.createDecoder(decodedState)))\n\n/**\n * Read decodedState and return State as Map.\n *\n * @param {Uint8Array} decodedState\n * @return {Map<number,number>} Maps `client` to the number next expected `clock` from that client.\n *\n * @function\n */\nexport const decodeStateVector = decodedState => readStateVector(new DSDecoderV1(decoding.createDecoder(decodedState)))\n\n/**\n * @param {DSEncoderV1 | DSEncoderV2} encoder\n * @param {Map<number,number>} sv\n * @function\n */\nexport const writeStateVector = (encoder, sv) => {\n encoding.writeVarUint(encoder.restEncoder, sv.size)\n array.from(sv.entries()).sort((a, b) => b[0] - a[0]).forEach(([client, clock]) => {\n encoding.writeVarUint(encoder.restEncoder, client) // @todo use a special client decoder that is based on mapping\n encoding.writeVarUint(encoder.restEncoder, clock)\n })\n return encoder\n}\n\n/**\n * @param {DSEncoderV1 | DSEncoderV2} encoder\n * @param {Doc} doc\n *\n * @function\n */\nexport const writeDocumentStateVector = (encoder, doc) => writeStateVector(encoder, getStateVector(doc.store))\n\n/**\n * Encode State as Uint8Array.\n *\n * @param {Doc|Map<number,number>} doc\n * @param {DSEncoderV1 | DSEncoderV2} [encoder]\n * @return {Uint8Array}\n *\n * @function\n */\nexport const encodeStateVectorV2 = (doc, encoder = new DSEncoderV2()) => {\n if (doc instanceof Map) {\n writeStateVector(encoder, doc)\n } else {\n writeDocumentStateVector(encoder, doc)\n }\n return encoder.toUint8Array()\n}\n\n/**\n * Encode State as Uint8Array.\n *\n * @param {Doc|Map<number,number>} doc\n * @return {Uint8Array}\n *\n * @function\n */\nexport const encodeStateVector = doc => encodeStateVectorV2(doc, new DSEncoderV1())\n","import * as f from 'lib0/function'\n\n/**\n * General event handler implementation.\n *\n * @template ARG0, ARG1\n *\n * @private\n */\nexport class EventHandler {\n constructor () {\n /**\n * @type {Array<function(ARG0, ARG1):void>}\n */\n this.l = []\n }\n}\n\n/**\n * @template ARG0,ARG1\n * @returns {EventHandler<ARG0,ARG1>}\n *\n * @private\n * @function\n */\nexport const createEventHandler = () => new EventHandler()\n\n/**\n * Adds an event listener that is called when\n * {@link EventHandler#callEventListeners} is called.\n *\n * @template ARG0,ARG1\n * @param {EventHandler<ARG0,ARG1>} eventHandler\n * @param {function(ARG0,ARG1):void} f The event handler.\n *\n * @private\n * @function\n */\nexport const addEventHandlerListener = (eventHandler, f) =>\n eventHandler.l.push(f)\n\n/**\n * Removes an event listener.\n *\n * @template ARG0,ARG1\n * @param {EventHandler<ARG0,ARG1>} eventHandler\n * @param {function(ARG0,ARG1):void} f The event handler that was added with\n * {@link EventHandler#addEventListener}\n *\n * @private\n * @function\n */\nexport const removeEventHandlerListener = (eventHandler, f) => {\n const l = eventHandler.l\n const len = l.length\n eventHandler.l = l.filter(g => f !== g)\n if (len === eventHandler.l.length) {\n console.error('[yjs] Tried to remove event handler that doesn\\'t exist.')\n }\n}\n\n/**\n * Removes all event listeners.\n * @template ARG0,ARG1\n * @param {EventHandler<ARG0,ARG1>} eventHandler\n *\n * @private\n * @function\n */\nexport const removeAllEventHandlerListeners = eventHandler => {\n eventHandler.l.length = 0\n}\n\n/**\n * Call all event listeners that were added via\n * {@link EventHandler#addEventListener}.\n *\n * @template ARG0,ARG1\n * @param {EventHandler<ARG0,ARG1>} eventHandler\n * @param {ARG0} arg0\n * @param {ARG1} arg1\n *\n * @private\n * @function\n */\nexport const callEventHandlerListeners = (eventHandler, arg0, arg1) =>\n f.callAll(eventHandler.l, [arg0, arg1])\n","\nimport { AbstractType } from '../internals.js' // eslint-disable-line\n\nimport * as decoding from 'lib0/decoding'\nimport * as encoding from 'lib0/encoding'\nimport * as error from 'lib0/error'\n\nexport class ID {\n /**\n * @param {number} client client id\n * @param {number} clock unique per client id, continuous number\n */\n constructor (client, clock) {\n /**\n * Client id\n * @type {number}\n */\n this.client = client\n /**\n * unique per client id, continuous number\n * @type {number}\n */\n this.clock = clock\n }\n}\n\n/**\n * @param {ID | null} a\n * @param {ID | null} b\n * @return {boolean}\n *\n * @function\n */\nexport const compareIDs = (a, b) => a === b || (a !== null && b !== null && a.client === b.client && a.clock === b.clock)\n\n/**\n * @param {number} client\n * @param {number} clock\n *\n * @private\n * @function\n */\nexport const createID = (client, clock) => new ID(client, clock)\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {ID} id\n *\n * @private\n * @function\n */\nexport const writeID = (encoder, id) => {\n encoding.writeVarUint(encoder, id.client)\n encoding.writeVarUint(encoder, id.clock)\n}\n\n/**\n * Read ID.\n * * If first varUint read is 0xFFFFFF a RootID is returned.\n * * Otherwise an ID is returned\n *\n * @param {decoding.Decoder} decoder\n * @return {ID}\n *\n * @private\n * @function\n */\nexport const readID = decoder =>\n createID(decoding.readVarUint(decoder), decoding.readVarUint(decoder))\n\n/**\n * The top types are mapped from y.share.get(keyname) => type.\n * `type` does not store any information about the `keyname`.\n * This function finds the correct `keyname` for `type` and throws otherwise.\n *\n * @param {AbstractType<any>} type\n * @return {string}\n *\n * @private\n * @function\n */\nexport const findRootTypeKey = type => {\n // @ts-ignore _y must be defined, otherwise unexpected case\n for (const [key, value] of type.doc.share.entries()) {\n if (value === type) {\n return key\n }\n }\n throw error.unexpectedCase()\n}\n","\nimport { AbstractType, Item } from '../internals.js' // eslint-disable-line\n\n/**\n * Check if `parent` is a parent of `child`.\n *\n * @param {AbstractType<any>} parent\n * @param {Item|null} child\n * @return {Boolean} Whether `parent` is a parent of `child`.\n *\n * @private\n * @function\n */\nexport const isParentOf = (parent, child) => {\n while (child !== null) {\n if (child.parent === parent) {\n return true\n }\n child = /** @type {AbstractType<any>} */ (child.parent)._item\n }\n return false\n}\n","\nimport {\n AbstractType // eslint-disable-line\n} from '../internals.js'\n\n/**\n * Convenient helper to log type information.\n *\n * Do not use in productive systems as the output can be immense!\n *\n * @param {AbstractType<any>} type\n */\nexport const logType = type => {\n const res = []\n let n = type._start\n while (n) {\n res.push(n)\n n = n.right\n }\n console.log('Children: ', res)\n console.log('Children content: ', res.filter(m => !m.deleted).map(m => m.content))\n}\n","\nimport {\n YArray,\n YMap,\n readDeleteSet,\n writeDeleteSet,\n createDeleteSet,\n DSEncoderV1, DSDecoderV1, ID, DeleteSet, YArrayEvent, Transaction, Doc // eslint-disable-line\n} from '../internals.js'\n\nimport * as decoding from 'lib0/decoding'\n\nimport { mergeDeleteSets, isDeleted } from './DeleteSet.js'\n\nexport class PermanentUserData {\n /**\n * @param {Doc} doc\n * @param {YMap<any>} [storeType]\n */\n constructor (doc, storeType = doc.getMap('users')) {\n /**\n * @type {Map<string,DeleteSet>}\n */\n const dss = new Map()\n this.yusers = storeType\n this.doc = doc\n /**\n * Maps from clientid to userDescription\n *\n * @type {Map<number,string>}\n */\n this.clients = new Map()\n this.dss = dss\n /**\n * @param {YMap<any>} user\n * @param {string} userDescription\n */\n const initUser = (user, userDescription) => {\n /**\n * @type {YArray<Uint8Array>}\n */\n const ds = user.get('ds')\n const ids = user.get('ids')\n const addClientId = /** @param {number} clientid */ clientid => this.clients.set(clientid, userDescription)\n ds.observe(/** @param {YArrayEvent<any>} event */ event => {\n event.changes.added.forEach(item => {\n item.content.getContent().forEach(encodedDs => {\n if (encodedDs instanceof Uint8Array) {\n this.dss.set(userDescription, mergeDeleteSets([this.dss.get(userDescription) || createDeleteSet(), readDeleteSet(new DSDecoderV1(decoding.createDecoder(encodedDs)))]))\n }\n })\n })\n })\n this.dss.set(userDescription, mergeDeleteSets(ds.map(encodedDs => readDeleteSet(new DSDecoderV1(decoding.createDecoder(encodedDs))))))\n ids.observe(/** @param {YArrayEvent<any>} event */ event =>\n event.changes.added.forEach(item => item.content.getContent().forEach(addClientId))\n )\n ids.forEach(addClientId)\n }\n // observe users\n storeType.observe(event => {\n event.keysChanged.forEach(userDescription =>\n initUser(storeType.get(userDescription), userDescription)\n )\n })\n // add intial data\n storeType.forEach(initUser)\n }\n\n /**\n * @param {Doc} doc\n * @param {number} clientid\n * @param {string} userDescription\n * @param {Object} conf\n * @param {function(Transaction, DeleteSet):boolean} [conf.filter]\n */\n setUserMapping (doc, clientid, userDescription, { filter = () => true } = {}) {\n const users = this.yusers\n let user = users.get(userDescription)\n if (!user) {\n user = new YMap()\n user.set('ids', new YArray())\n user.set('ds', new YArray())\n users.set(userDescription, user)\n }\n user.get('ids').push([clientid])\n users.observe(_event => {\n setTimeout(() => {\n const userOverwrite = users.get(userDescription)\n if (userOverwrite !== user) {\n // user was overwritten, port all data over to the next user object\n // @todo Experiment with Y.Sets here\n user = userOverwrite\n // @todo iterate over old type\n this.clients.forEach((_userDescription, clientid) => {\n if (userDescription === _userDescription) {\n user.get('ids').push([clientid])\n }\n })\n const encoder = new DSEncoderV1()\n const ds = this.dss.get(userDescription)\n if (ds) {\n writeDeleteSet(encoder, ds)\n user.get('ds').push([encoder.toUint8Array()])\n }\n }\n }, 0)\n })\n doc.on('afterTransaction', /** @param {Transaction} transaction */ transaction => {\n setTimeout(() => {\n const yds = user.get('ds')\n const ds = transaction.deleteSet\n if (transaction.local && ds.clients.size > 0 && filter(transaction, ds)) {\n const encoder = new DSEncoderV1()\n writeDeleteSet(encoder, ds)\n yds.push([encoder.toUint8Array()])\n }\n })\n })\n }\n\n /**\n * @param {number} clientid\n * @return {any}\n */\n getUserByClientId (clientid) {\n return this.clients.get(clientid) || null\n }\n\n /**\n * @param {ID} id\n * @return {string | null}\n */\n getUserByDeletedId (id) {\n for (const [userDescription, ds] of this.dss.entries()) {\n if (isDeleted(ds, id)) {\n return userDescription\n }\n }\n return null\n }\n}\n","\nimport {\n writeID,\n readID,\n compareIDs,\n getState,\n findRootTypeKey,\n Item,\n createID,\n ContentType,\n followRedone,\n ID, Doc, AbstractType // eslint-disable-line\n} from '../internals.js'\n\nimport * as encoding from 'lib0/encoding'\nimport * as decoding from 'lib0/decoding'\nimport * as error from 'lib0/error'\n\n/**\n * A relative position is based on the Yjs model and is not affected by document changes.\n * E.g. If you place a relative position before a certain character, it will always point to this character.\n * If you place a relative position at the end of a type, it will always point to the end of the type.\n *\n * A numeric position is often unsuited for user selections, because it does not change when content is inserted\n * before or after.\n *\n * ```Insert(0, 'x')('a|bc') = 'xa|bc'``` Where | is the relative position.\n *\n * One of the properties must be defined.\n *\n * @example\n * // Current cursor position is at position 10\n * const relativePosition = createRelativePositionFromIndex(yText, 10)\n * // modify yText\n * yText.insert(0, 'abc')\n * yText.delete(3, 10)\n * // Compute the cursor position\n * const absolutePosition = createAbsolutePositionFromRelativePosition(y, relativePosition)\n * absolutePosition.type === yText // => true\n * console.log('cursor location is ' + absolutePosition.index) // => cursor location is 3\n *\n */\nexport class RelativePosition {\n /**\n * @param {ID|null} type\n * @param {string|null} tname\n * @param {ID|null} item\n * @param {number} assoc\n */\n constructor (type, tname, item, assoc = 0) {\n /**\n * @type {ID|null}\n */\n this.type = type\n /**\n * @type {string|null}\n */\n this.tname = tname\n /**\n * @type {ID | null}\n */\n this.item = item\n /**\n * A relative position is associated to a specific character. By default\n * assoc >= 0, the relative position is associated to the character\n * after the meant position.\n * I.e. position 1 in 'ab' is associated to character 'b'.\n *\n * If assoc < 0, then the relative position is associated to the caharacter\n * before the meant position.\n *\n * @type {number}\n */\n this.assoc = assoc\n }\n}\n\n/**\n * @param {RelativePosition} rpos\n * @return {any}\n */\nexport const relativePositionToJSON = rpos => {\n const json = {}\n if (rpos.type) {\n json.type = rpos.type\n }\n if (rpos.tname) {\n json.tname = rpos.tname\n }\n if (rpos.item) {\n json.item = rpos.item\n }\n if (rpos.assoc != null) {\n json.assoc = rpos.assoc\n }\n return json\n}\n\n/**\n * @param {any} json\n * @return {RelativePosition}\n *\n * @function\n */\nexport const createRelativePositionFromJSON = json => new RelativePosition(json.type == null ? null : createID(json.type.client, json.type.clock), json.tname || null, json.item == null ? null : createID(json.item.client, json.item.clock), json.assoc == null ? 0 : json.assoc)\n\nexport class AbsolutePosition {\n /**\n * @param {AbstractType<any>} type\n * @param {number} index\n * @param {number} [assoc]\n */\n constructor (type, index, assoc = 0) {\n /**\n * @type {AbstractType<any>}\n */\n this.type = type\n /**\n * @type {number}\n */\n this.index = index\n this.assoc = assoc\n }\n}\n\n/**\n * @param {AbstractType<any>} type\n * @param {number} index\n * @param {number} [assoc]\n *\n * @function\n */\nexport const createAbsolutePosition = (type, index, assoc = 0) => new AbsolutePosition(type, index, assoc)\n\n/**\n * @param {AbstractType<any>} type\n * @param {ID|null} item\n * @param {number} [assoc]\n *\n * @function\n */\nexport const createRelativePosition = (type, item, assoc) => {\n let typeid = null\n let tname = null\n if (type._item === null) {\n tname = findRootTypeKey(type)\n } else {\n typeid = createID(type._item.id.client, type._item.id.clock)\n }\n return new RelativePosition(typeid, tname, item, assoc)\n}\n\n/**\n * Create a relativePosition based on a absolute position.\n *\n * @param {AbstractType<any>} type The base type (e.g. YText or YArray).\n * @param {number} index The absolute position.\n * @param {number} [assoc]\n * @return {RelativePosition}\n *\n * @function\n */\nexport const createRelativePositionFromTypeIndex = (type, index, assoc = 0) => {\n let t = type._start\n if (assoc < 0) {\n // associated to the left character or the beginning of a type, increment index if possible.\n if (index === 0) {\n return createRelativePosition(type, null, assoc)\n }\n index--\n }\n while (t !== null) {\n if (!t.deleted && t.countable) {\n if (t.length > index) {\n // case 1: found position somewhere in the linked list\n return createRelativePosition(type, createID(t.id.client, t.id.clock + index), assoc)\n }\n index -= t.length\n }\n if (t.right === null && assoc < 0) {\n // left-associated position, return last available id\n return createRelativePosition(type, t.lastId, assoc)\n }\n t = t.right\n }\n return createRelativePosition(type, null, assoc)\n}\n\n/**\n * @param {encoding.Encoder} encoder\n * @param {RelativePosition} rpos\n *\n * @function\n */\nexport const writeRelativePosition = (encoder, rpos) => {\n const { type, tname, item, assoc } = rpos\n if (item !== null) {\n encoding.writeVarUint(encoder, 0)\n writeID(encoder, item)\n } else if (tname !== null) {\n // case 2: found position at the end of the list and type is stored in y.share\n encoding.writeUint8(encoder, 1)\n encoding.writeVarString(encoder, tname)\n } else if (type !== null) {\n // case 3: found position at the end of the list and type is attached to an item\n encoding.writeUint8(encoder, 2)\n writeID(encoder, type)\n } else {\n throw error.unexpectedCase()\n }\n encoding.writeVarInt(encoder, assoc)\n return encoder\n}\n\n/**\n * @param {RelativePosition} rpos\n * @return {Uint8Array}\n */\nexport const encodeRelativePosition = rpos => {\n const encoder = encoding.createEncoder()\n writeRelativePosition(encoder, rpos)\n return encoding.toUint8Array(encoder)\n}\n\n/**\n * @param {decoding.Decoder} decoder\n * @return {RelativePosition}\n *\n * @function\n */\nexport const readRelativePosition = decoder => {\n let type = null\n let tname = null\n let itemID = null\n switch (decoding.readVarUint(decoder)) {\n case 0:\n // case 1: found position somewhere in the linked list\n itemID = readID(decoder)\n break\n case 1:\n // case 2: found position at the end of the list and type is stored in y.share\n tname = decoding.readVarString(decoder)\n break\n case 2: {\n // case 3: found position at the end of the list and type is attached to an item\n type = readID(decoder)\n }\n }\n const assoc = decoding.hasContent(decoder) ? decoding.readVarInt(decoder) : 0\n return new RelativePosition(type, tname, itemID, assoc)\n}\n\n/**\n * @param {Uint8Array} uint8Array\n * @return {RelativePosition}\n */\nexport const decodeRelativePosition = uint8Array => readRelativePosition(decoding.createDecoder(uint8Array))\n\n/**\n * @param {RelativePosition} rpos\n * @param {Doc} doc\n * @return {AbsolutePosition|null}\n *\n * @function\n */\nexport const createAbsolutePositionFromRelativePosition = (rpos, doc) => {\n const store = doc.store\n const rightID = rpos.item\n const typeID = rpos.type\n const tname = rpos.tname\n const assoc = rpos.assoc\n let type = null\n let index = 0\n if (rightID !== null) {\n if (getState(store, rightID.client) <= rightID.clock) {\n return null\n }\n const res = followRedone(store, rightID)\n const right = res.item\n if (!(right instanceof Item)) {\n return null\n }\n type = /** @type {AbstractType<any>} */ (right.parent)\n if (type._item === null || !type._item.deleted) {\n index = (right.deleted || !right.countable) ? 0 : (res.diff + (assoc >= 0 ? 0 : 1)) // adjust position based on left association if necessary\n let n = right.left\n while (n !== null) {\n if (!n.deleted && n.countable) {\n index += n.length\n }\n n = n.left\n }\n }\n } else {\n if (tname !== null) {\n type = doc.get(tname)\n } else if (typeID !== null) {\n if (getState(store, typeID.client) <= typeID.clock) {\n // type does not exist yet\n return null\n }\n const { item } = followRedone(store, typeID)\n if (item instanceof Item && item.content instanceof ContentType) {\n type = item.content.type\n } else {\n // struct is garbage collected\n return null\n }\n } else {\n throw error.unexpectedCase()\n }\n if (assoc >= 0) {\n index = type._length\n } else {\n index = 0\n }\n }\n return createAbsolutePosition(type, index, rpos.assoc)\n}\n\n/**\n * @param {RelativePosition|null} a\n * @param {RelativePosition|null} b\n * @return {boolean}\n *\n * @function\n */\nexport const compareRelativePositions = (a, b) => a === b || (\n a !== null && b !== null && a.tname === b.tname && compareIDs(a.item, b.item) && compareIDs(a.type, b.type) && a.assoc === b.assoc\n)\n","\nimport {\n isDeleted,\n createDeleteSetFromStructStore,\n getStateVector,\n getItemCleanStart,\n iterateDeletedStructs,\n writeDeleteSet,\n writeStateVector,\n readDeleteSet,\n readStateVector,\n createDeleteSet,\n createID,\n getState,\n findIndexSS,\n UpdateEncoderV2,\n applyUpdateV2,\n DSEncoderV1, DSEncoderV2, DSDecoderV1, DSDecoderV2, Transaction, Doc, DeleteSet, Item // eslint-disable-line\n} from '../internals.js'\n\nimport * as map from 'lib0/map'\nimport * as set from 'lib0/set'\nimport * as decoding from 'lib0/decoding'\nimport * as encoding from 'lib0/encoding'\n\nexport class Snapshot {\n /**\n * @param {DeleteSet} ds\n * @param {Map<number,number>} sv state map\n */\n constructor (ds, sv) {\n /**\n * @type {DeleteSet}\n */\n this.ds = ds\n /**\n * State Map\n * @type {Map<number,number>}\n */\n this.sv = sv\n }\n}\n\n/**\n * @param {Snapshot} snap1\n * @param {Snapshot} snap2\n * @return {boolean}\n */\nexport const equalSnapshots = (snap1, snap2) => {\n const ds1 = snap1.ds.clients\n const ds2 = snap2.ds.clients\n const sv1 = snap1.sv\n const sv2 = snap2.sv\n if (sv1.size !== sv2.size || ds1.size !== ds2.size) {\n return false\n }\n for (const [key, value] of sv1.entries()) {\n if (sv2.get(key) !== value) {\n return false\n }\n }\n for (const [client, dsitems1] of ds1.entries()) {\n const dsitems2 = ds2.get(client) || []\n if (dsitems1.length !== dsitems2.length) {\n return false\n }\n for (let i = 0; i < dsitems1.length; i++) {\n const dsitem1 = dsitems1[i]\n const dsitem2 = dsitems2[i]\n if (dsitem1.clock !== dsitem2.clock || dsitem1.len !== dsitem2.len) {\n return false\n }\n }\n }\n return true\n}\n\n/**\n * @param {Snapshot} snapshot\n * @param {DSEncoderV1 | DSEncoderV2} [encoder]\n * @return {Uint8Array}\n */\nexport const encodeSnapshotV2 = (snapshot, encoder = new DSEncoderV2()) => {\n writeDeleteSet(encoder, snapshot.ds)\n writeStateVector(encoder, snapshot.sv)\n return encoder.toUint8Array()\n}\n\n/**\n * @param {Snapshot} snapshot\n * @return {Uint8Array}\n */\nexport const encodeSnapshot = snapshot => encodeSnapshotV2(snapshot, new DSEncoderV1())\n\n/**\n * @param {Uint8Array} buf\n * @param {DSDecoderV1 | DSDecoderV2} [decoder]\n * @return {Snapshot}\n */\nexport const decodeSnapshotV2 = (buf, decoder = new DSDecoderV2(decoding.createDecoder(buf))) => {\n return new Snapshot(readDeleteSet(decoder), readStateVector(decoder))\n}\n\n/**\n * @param {Uint8Array} buf\n * @return {Snapshot}\n */\nexport const decodeSnapshot = buf => decodeSnapshotV2(buf, new DSDecoderV1(decoding.createDecoder(buf)))\n\n/**\n * @param {DeleteSet} ds\n * @param {Map<number,number>} sm\n * @return {Snapshot}\n */\nexport const createSnapshot = (ds, sm) => new Snapshot(ds, sm)\n\nexport const emptySnapshot = createSnapshot(createDeleteSet(), new Map())\n\n/**\n * @param {Doc} doc\n * @return {Snapshot}\n */\nexport const snapshot = doc => createSnapshot(createDeleteSetFromStructStore(doc.store), getStateVector(doc.store))\n\n/**\n * @param {Item} item\n * @param {Snapshot|undefined} snapshot\n *\n * @protected\n * @function\n */\nexport const isVisible = (item, snapshot) => snapshot === undefined\n ? !item.deleted\n : snapshot.sv.has(item.id.client) && (snapshot.sv.get(item.id.client) || 0) > item.id.clock && !isDeleted(snapshot.ds, item.id)\n\n/**\n * @param {Transaction} transaction\n * @param {Snapshot} snapshot\n */\nexport const splitSnapshotAffectedStructs = (transaction, snapshot) => {\n const meta = map.setIfUndefined(transaction.meta, splitSnapshotAffectedStructs, set.create)\n const store = transaction.doc.store\n // check if we already split for this snapshot\n if (!meta.has(snapshot)) {\n snapshot.sv.forEach((clock, client) => {\n if (clock < getState(store, client)) {\n getItemCleanStart(transaction, createID(client, clock))\n }\n })\n iterateDeletedStructs(transaction, snapshot.ds, item => {})\n meta.add(snapshot)\n }\n}\n\n/**\n * @example\n * const ydoc = new Y.Doc({ gc: false })\n * ydoc.getText().insert(0, 'world!')\n * const snapshot = Y.snapshot(ydoc)\n * ydoc.getText().insert(0, 'hello ')\n * const restored = Y.createDocFromSnapshot(ydoc, snapshot)\n * assert(restored.getText().toString() === 'world!')\n *\n * @param {Doc} originDoc\n * @param {Snapshot} snapshot\n * @param {Doc} [newDoc] Optionally, you may define the Yjs document that receives the data from originDoc\n * @return {Doc}\n */\nexport const createDocFromSnapshot = (originDoc, snapshot, newDoc = new Doc()) => {\n if (originDoc.gc) {\n // we should not try to restore a GC-ed document, because some of the restored items might have their content deleted\n throw new Error('Garbage-collection must be disabled in `originDoc`!')\n }\n const { sv, ds } = snapshot\n\n const encoder = new UpdateEncoderV2()\n originDoc.transact(transaction => {\n let size = 0\n sv.forEach(clock => {\n if (clock > 0) {\n size++\n }\n })\n encoding.writeVarUint(encoder.restEncoder, size)\n // splitting the structs before writing them to the encoder\n for (const [client, clock] of sv) {\n if (clock === 0) {\n continue\n }\n if (clock < getState(originDoc.store, client)) {\n getItemCleanStart(transaction, createID(client, clock))\n }\n const structs = originDoc.store.clients.get(client) || []\n const lastStructIndex = findIndexSS(structs, clock - 1)\n // write # encoded structs\n encoding.writeVarUint(encoder.restEncoder, lastStructIndex + 1)\n encoder.writeClient(client)\n // first clock written is 0\n encoding.writeVarUint(encoder.restEncoder, 0)\n for (let i = 0; i <= lastStructIndex; i++) {\n structs[i].write(encoder, 0)\n }\n }\n writeDeleteSet(encoder, ds)\n })\n\n applyUpdateV2(newDoc, encoder.toUint8Array(), 'snapshot')\n return newDoc\n}\n","\nimport {\n GC,\n splitItem,\n Transaction, ID, Item, DSDecoderV2 // eslint-disable-line\n} from '../internals.js'\n\nimport * as math from 'lib0/math'\nimport * as error from 'lib0/error'\n\nexport class StructStore {\n constructor () {\n /**\n * @type {Map<number,Array<GC|Item>>}\n */\n this.clients = new Map()\n /**\n * @type {null | { missing: Map<number, number>, update: Uint8Array }}\n */\n this.pendingStructs = null\n /**\n * @type {null | Uint8Array}\n */\n this.pendingDs = null\n }\n}\n\n/**\n * Return the states as a Map<client,clock>.\n * Note that clock refers to the next expected clock id.\n *\n * @param {StructStore} store\n * @return {Map<number,number>}\n *\n * @public\n * @function\n */\nexport const getStateVector = store => {\n const sm = new Map()\n store.clients.forEach((structs, client) => {\n const struct = structs[structs.length - 1]\n sm.set(client, struct.id.clock + struct.length)\n })\n return sm\n}\n\n/**\n * @param {StructStore} store\n * @param {number} client\n * @return {number}\n *\n * @public\n * @function\n */\nexport const getState = (store, client) => {\n const structs = store.clients.get(client)\n if (structs === undefined) {\n return 0\n }\n const lastStruct = structs[structs.length - 1]\n return lastStruct.id.clock + lastStruct.length\n}\n\n/**\n * @param {StructStore} store\n *\n * @private\n * @function\n */\nexport const integretyCheck = store => {\n store.clients.forEach(structs => {\n for (let i = 1; i < structs.length; i++) {\n const l = structs[i - 1]\n const r = structs[i]\n if (l.id.clock + l.length !== r.id.clock) {\n throw new Error('StructStore failed integrety check')\n }\n }\n })\n}\n\n/**\n * @param {StructStore} store\n * @param {GC|Item} struct\n *\n * @private\n * @function\n */\nexport const addStruct = (store, struct) => {\n let structs = store.clients.get(struct.id.client)\n if (structs === undefined) {\n structs = []\n store.clients.set(struct.id.client, structs)\n } else {\n const lastStruct = structs[structs.length - 1]\n if (lastStruct.id.clock + lastStruct.length !== struct.id.clock) {\n throw error.unexpectedCase()\n }\n }\n structs.push(struct)\n}\n\n/**\n * Perform a binary search on a sorted array\n * @param {Array<Item|GC>} structs\n * @param {number} clock\n * @return {number}\n *\n * @private\n * @function\n */\nexport const findIndexSS = (structs, clock) => {\n let left = 0\n let right = structs.length - 1\n let mid = structs[right]\n let midclock = mid.id.clock\n if (midclock === clock) {\n return right\n }\n // @todo does it even make sense to pivot the search?\n // If a good split misses, it might actually increase the time to find the correct item.\n // Currently, the only advantage is that search with pivoting might find the item on the first try.\n let midindex = math.floor((clock / (midclock + mid.length - 1)) * right) // pivoting the search\n while (left <= right) {\n mid = structs[midindex]\n midclock = mid.id.clock\n if (midclock <= clock) {\n if (clock < midclock + mid.length) {\n return midindex\n }\n left = midindex + 1\n } else {\n right = midindex - 1\n }\n midindex = math.floor((left + right) / 2)\n }\n // Always check state before looking for a struct in StructStore\n // Therefore the case of not finding a struct is unexpected\n throw error.unexpectedCase()\n}\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n *\n * @param {StructStore} store\n * @param {ID} id\n * @return {GC|Item}\n *\n * @private\n * @function\n */\nexport const find = (store, id) => {\n /**\n * @type {Array<GC|Item>}\n */\n // @ts-ignore\n const structs = store.clients.get(id.client)\n return structs[findIndexSS(structs, id.clock)]\n}\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n * @private\n * @function\n */\nexport const getItem = /** @type {function(StructStore,ID):Item} */ (find)\n\n/**\n * @param {Transaction} transaction\n * @param {Array<Item|GC>} structs\n * @param {number} clock\n */\nexport const findIndexCleanStart = (transaction, structs, clock) => {\n const index = findIndexSS(structs, clock)\n const struct = structs[index]\n if (struct.id.clock < clock && struct instanceof Item) {\n structs.splice(index + 1, 0, splitItem(transaction, struct, clock - struct.id.clock))\n return index + 1\n }\n return index\n}\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n *\n * @param {Transaction} transaction\n * @param {ID} id\n * @return {Item}\n *\n * @private\n * @function\n */\nexport const getItemCleanStart = (transaction, id) => {\n const structs = /** @type {Array<Item>} */ (transaction.doc.store.clients.get(id.client))\n return structs[findIndexCleanStart(transaction, structs, id.clock)]\n}\n\n/**\n * Expects that id is actually in store. This function throws or is an infinite loop otherwise.\n *\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @param {ID} id\n * @return {Item}\n *\n * @private\n * @function\n */\nexport const getItemCleanEnd = (transaction, store, id) => {\n /**\n * @type {Array<Item>}\n */\n // @ts-ignore\n const structs = store.clients.get(id.client)\n const index = findIndexSS(structs, id.clock)\n const struct = structs[index]\n if (id.clock !== struct.id.clock + struct.length - 1 && struct.constructor !== GC) {\n structs.splice(index + 1, 0, splitItem(transaction, struct, id.clock - struct.id.clock + 1))\n }\n return struct\n}\n\n/**\n * Replace `item` with `newitem` in store\n * @param {StructStore} store\n * @param {GC|Item} struct\n * @param {GC|Item} newStruct\n *\n * @private\n * @function\n */\nexport const replaceStruct = (store, struct, newStruct) => {\n const structs = /** @type {Array<GC|Item>} */ (store.clients.get(struct.id.client))\n structs[findIndexSS(structs, struct.id.clock)] = newStruct\n}\n\n/**\n * Iterate over a range of structs\n *\n * @param {Transaction} transaction\n * @param {Array<Item|GC>} structs\n * @param {number} clockStart Inclusive start\n * @param {number} len\n * @param {function(GC|Item):void} f\n *\n * @function\n */\nexport const iterateStructs = (transaction, structs, clockStart, len, f) => {\n if (len === 0) {\n return\n }\n const clockEnd = clockStart + len\n let index = findIndexCleanStart(transaction, structs, clockStart)\n let struct\n do {\n struct = structs[index++]\n if (clockEnd < struct.id.clock + struct.length) {\n findIndexCleanStart(transaction, structs, clockEnd)\n }\n f(struct)\n } while (index < structs.length && structs[index].id.clock < clockEnd)\n}\n","\nimport {\n getState,\n writeStructsFromTransaction,\n writeDeleteSet,\n DeleteSet,\n sortAndMergeDeleteSet,\n getStateVector,\n findIndexSS,\n callEventHandlerListeners,\n Item,\n generateNewClientId,\n createID,\n UpdateEncoderV1, UpdateEncoderV2, GC, StructStore, AbstractType, AbstractStruct, YEvent, Doc // eslint-disable-line\n} from '../internals.js'\n\nimport * as map from 'lib0/map'\nimport * as math from 'lib0/math'\nimport * as set from 'lib0/set'\nimport * as logging from 'lib0/logging'\nimport { callAll } from 'lib0/function'\n\n/**\n * A transaction is created for every change on the Yjs model. It is possible\n * to bundle changes on the Yjs model in a single transaction to\n * minimize the number on messages sent and the number of observer calls.\n * If possible the user of this library should bundle as many changes as\n * possible. Here is an example to illustrate the advantages of bundling:\n *\n * @example\n * const map = y.define('map', YMap)\n * // Log content when change is triggered\n * map.observe(() => {\n * console.log('change triggered')\n * })\n * // Each change on the map type triggers a log message:\n * map.set('a', 0) // => \"change triggered\"\n * map.set('b', 0) // => \"change triggered\"\n * // When put in a transaction, it will trigger the log after the transaction:\n * y.transact(() => {\n * map.set('a', 1)\n * map.set('b', 1)\n * }) // => \"change triggered\"\n *\n * @public\n */\nexport class Transaction {\n /**\n * @param {Doc} doc\n * @param {any} origin\n * @param {boolean} local\n */\n constructor (doc, origin, local) {\n /**\n * The Yjs instance.\n * @type {Doc}\n */\n this.doc = doc\n /**\n * Describes the set of deleted items by ids\n * @type {DeleteSet}\n */\n this.deleteSet = new DeleteSet()\n /**\n * Holds the state before the transaction started.\n * @type {Map<Number,Number>}\n */\n this.beforeState = getStateVector(doc.store)\n /**\n * Holds the state after the transaction.\n * @type {Map<Number,Number>}\n */\n this.afterState = new Map()\n /**\n * All types that were directly modified (property added or child\n * inserted/deleted). New types are not included in this Set.\n * Maps from type to parentSubs (`item.parentSub = null` for YArray)\n * @type {Map<AbstractType<YEvent<any>>,Set<String|null>>}\n */\n this.changed = new Map()\n /**\n * Stores the events for the types that observe also child elements.\n * It is mainly used by `observeDeep`.\n * @type {Map<AbstractType<YEvent<any>>,Array<YEvent<any>>>}\n */\n this.changedParentTypes = new Map()\n /**\n * @type {Array<AbstractStruct>}\n */\n this._mergeStructs = []\n /**\n * @type {any}\n */\n this.origin = origin\n /**\n * Stores meta information on the transaction\n * @type {Map<any,any>}\n */\n this.meta = new Map()\n /**\n * Whether this change originates from this doc.\n * @type {boolean}\n */\n this.local = local\n /**\n * @type {Set<Doc>}\n */\n this.subdocsAdded = new Set()\n /**\n * @type {Set<Doc>}\n */\n this.subdocsRemoved = new Set()\n /**\n * @type {Set<Doc>}\n */\n this.subdocsLoaded = new Set()\n }\n}\n\n/**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {Transaction} transaction\n * @return {boolean} Whether data was written.\n */\nexport const writeUpdateMessageFromTransaction = (encoder, transaction) => {\n if (transaction.deleteSet.clients.size === 0 && !map.any(transaction.afterState, (clock, client) => transaction.beforeState.get(client) !== clock)) {\n return false\n }\n sortAndMergeDeleteSet(transaction.deleteSet)\n writeStructsFromTransaction(encoder, transaction)\n writeDeleteSet(encoder, transaction.deleteSet)\n return true\n}\n\n/**\n * @param {Transaction} transaction\n *\n * @private\n * @function\n */\nexport const nextID = transaction => {\n const y = transaction.doc\n return createID(y.clientID, getState(y.store, y.clientID))\n}\n\n/**\n * If `type.parent` was added in current transaction, `type` technically\n * did not change, it was just added and we should not fire events for `type`.\n *\n * @param {Transaction} transaction\n * @param {AbstractType<YEvent<any>>} type\n * @param {string|null} parentSub\n */\nexport const addChangedTypeToTransaction = (transaction, type, parentSub) => {\n const item = type._item\n if (item === null || (item.id.clock < (transaction.beforeState.get(item.id.client) || 0) && !item.deleted)) {\n map.setIfUndefined(transaction.changed, type, set.create).add(parentSub)\n }\n}\n\n/**\n * @param {Array<AbstractStruct>} structs\n * @param {number} pos\n */\nconst tryToMergeWithLeft = (structs, pos) => {\n const left = structs[pos - 1]\n const right = structs[pos]\n if (left.deleted === right.deleted && left.constructor === right.constructor) {\n if (left.mergeWith(right)) {\n structs.splice(pos, 1)\n if (right instanceof Item && right.parentSub !== null && /** @type {AbstractType<any>} */ (right.parent)._map.get(right.parentSub) === right) {\n /** @type {AbstractType<any>} */ (right.parent)._map.set(right.parentSub, /** @type {Item} */ (left))\n }\n }\n }\n}\n\n/**\n * @param {DeleteSet} ds\n * @param {StructStore} store\n * @param {function(Item):boolean} gcFilter\n */\nconst tryGcDeleteSet = (ds, store, gcFilter) => {\n for (const [client, deleteItems] of ds.clients.entries()) {\n const structs = /** @type {Array<GC|Item>} */ (store.clients.get(client))\n for (let di = deleteItems.length - 1; di >= 0; di--) {\n const deleteItem = deleteItems[di]\n const endDeleteItemClock = deleteItem.clock + deleteItem.len\n for (\n let si = findIndexSS(structs, deleteItem.clock), struct = structs[si];\n si < structs.length && struct.id.clock < endDeleteItemClock;\n struct = structs[++si]\n ) {\n const struct = structs[si]\n if (deleteItem.clock + deleteItem.len <= struct.id.clock) {\n break\n }\n if (struct instanceof Item && struct.deleted && !struct.keep && gcFilter(struct)) {\n struct.gc(store, false)\n }\n }\n }\n }\n}\n\n/**\n * @param {DeleteSet} ds\n * @param {StructStore} store\n */\nconst tryMergeDeleteSet = (ds, store) => {\n // try to merge deleted / gc'd items\n // merge from right to left for better efficiecy and so we don't miss any merge targets\n ds.clients.forEach((deleteItems, client) => {\n const structs = /** @type {Array<GC|Item>} */ (store.clients.get(client))\n for (let di = deleteItems.length - 1; di >= 0; di--) {\n const deleteItem = deleteItems[di]\n // start with merging the item next to the last deleted item\n const mostRightIndexToCheck = math.min(structs.length - 1, 1 + findIndexSS(structs, deleteItem.clock + deleteItem.len - 1))\n for (\n let si = mostRightIndexToCheck, struct = structs[si];\n si > 0 && struct.id.clock >= deleteItem.clock;\n struct = structs[--si]\n ) {\n tryToMergeWithLeft(structs, si)\n }\n }\n })\n}\n\n/**\n * @param {DeleteSet} ds\n * @param {StructStore} store\n * @param {function(Item):boolean} gcFilter\n */\nexport const tryGc = (ds, store, gcFilter) => {\n tryGcDeleteSet(ds, store, gcFilter)\n tryMergeDeleteSet(ds, store)\n}\n\n/**\n * @param {Array<Transaction>} transactionCleanups\n * @param {number} i\n */\nconst cleanupTransactions = (transactionCleanups, i) => {\n if (i < transactionCleanups.length) {\n const transaction = transactionCleanups[i]\n const doc = transaction.doc\n const store = doc.store\n const ds = transaction.deleteSet\n const mergeStructs = transaction._mergeStructs\n try {\n sortAndMergeDeleteSet(ds)\n transaction.afterState = getStateVector(transaction.doc.store)\n doc.emit('beforeObserverCalls', [transaction, doc])\n /**\n * An array of event callbacks.\n *\n * Each callback is called even if the other ones throw errors.\n *\n * @type {Array<function():void>}\n */\n const fs = []\n // observe events on changed types\n transaction.changed.forEach((subs, itemtype) =>\n fs.push(() => {\n if (itemtype._item === null || !itemtype._item.deleted) {\n itemtype._callObserver(transaction, subs)\n }\n })\n )\n fs.push(() => {\n // deep observe events\n transaction.changedParentTypes.forEach((events, type) =>\n fs.push(() => {\n // We need to think about the possibility that the user transforms the\n // Y.Doc in the event.\n if (type._item === null || !type._item.deleted) {\n events = events\n .filter(event =>\n event.target._item === null || !event.target._item.deleted\n )\n events\n .forEach(event => {\n event.currentTarget = type\n })\n // sort events by path length so that top-level events are fired first.\n events\n .sort((event1, event2) => event1.path.length - event2.path.length)\n // We don't need to check for events.length\n // because we know it has at least one element\n callEventHandlerListeners(type._dEH, events, transaction)\n }\n })\n )\n fs.push(() => doc.emit('afterTransaction', [transaction, doc]))\n })\n callAll(fs, [])\n } finally {\n // Replace deleted items with ItemDeleted / GC.\n // This is where content is actually remove from the Yjs Doc.\n if (doc.gc) {\n tryGcDeleteSet(ds, store, doc.gcFilter)\n }\n tryMergeDeleteSet(ds, store)\n\n // on all affected store.clients props, try to merge\n transaction.afterState.forEach((clock, client) => {\n const beforeClock = transaction.beforeState.get(client) || 0\n if (beforeClock !== clock) {\n const structs = /** @type {Array<GC|Item>} */ (store.clients.get(client))\n // we iterate from right to left so we can safely remove entries\n const firstChangePos = math.max(findIndexSS(structs, beforeClock), 1)\n for (let i = structs.length - 1; i >= firstChangePos; i--) {\n tryToMergeWithLeft(structs, i)\n }\n }\n })\n // try to merge mergeStructs\n // @todo: it makes more sense to transform mergeStructs to a DS, sort it, and merge from right to left\n // but at the moment DS does not handle duplicates\n for (let i = 0; i < mergeStructs.length; i++) {\n const { client, clock } = mergeStructs[i].id\n const structs = /** @type {Array<GC|Item>} */ (store.clients.get(client))\n const replacedStructPos = findIndexSS(structs, clock)\n if (replacedStructPos + 1 < structs.length) {\n tryToMergeWithLeft(structs, replacedStructPos + 1)\n }\n if (replacedStructPos > 0) {\n tryToMergeWithLeft(structs, replacedStructPos)\n }\n }\n if (!transaction.local && transaction.afterState.get(doc.clientID) !== transaction.beforeState.get(doc.clientID)) {\n logging.print(logging.ORANGE, logging.BOLD, '[yjs] ', logging.UNBOLD, logging.RED, 'Changed the client-id because another client seems to be using it.')\n doc.clientID = generateNewClientId()\n }\n // @todo Merge all the transactions into one and provide send the data as a single update message\n doc.emit('afterTransactionCleanup', [transaction, doc])\n if (doc._observers.has('update')) {\n const encoder = new UpdateEncoderV1()\n const hasContent = writeUpdateMessageFromTransaction(encoder, transaction)\n if (hasContent) {\n doc.emit('update', [encoder.toUint8Array(), transaction.origin, doc, transaction])\n }\n }\n if (doc._observers.has('updateV2')) {\n const encoder = new UpdateEncoderV2()\n const hasContent = writeUpdateMessageFromTransaction(encoder, transaction)\n if (hasContent) {\n doc.emit('updateV2', [encoder.toUint8Array(), transaction.origin, doc, transaction])\n }\n }\n const { subdocsAdded, subdocsLoaded, subdocsRemoved } = transaction\n if (subdocsAdded.size > 0 || subdocsRemoved.size > 0 || subdocsLoaded.size > 0) {\n subdocsAdded.forEach(subdoc => {\n subdoc.clientID = doc.clientID\n if (subdoc.collectionid == null) {\n subdoc.collectionid = doc.collectionid\n }\n doc.subdocs.add(subdoc)\n })\n subdocsRemoved.forEach(subdoc => doc.subdocs.delete(subdoc))\n doc.emit('subdocs', [{ loaded: subdocsLoaded, added: subdocsAdded, removed: subdocsRemoved }, doc, transaction])\n subdocsRemoved.forEach(subdoc => subdoc.destroy())\n }\n\n if (transactionCleanups.length <= i + 1) {\n doc._transactionCleanups = []\n doc.emit('afterAllTransactions', [doc, transactionCleanups])\n } else {\n cleanupTransactions(transactionCleanups, i + 1)\n }\n }\n }\n}\n\n/**\n * Implements the functionality of `y.transact(()=>{..})`\n *\n * @template T\n * @param {Doc} doc\n * @param {function(Transaction):T} f\n * @param {any} [origin=true]\n * @return {T}\n *\n * @function\n */\nexport const transact = (doc, f, origin = null, local = true) => {\n const transactionCleanups = doc._transactionCleanups\n let initialCall = false\n /**\n * @type {any}\n */\n let result = null\n if (doc._transaction === null) {\n initialCall = true\n doc._transaction = new Transaction(doc, origin, local)\n transactionCleanups.push(doc._transaction)\n if (transactionCleanups.length === 1) {\n doc.emit('beforeAllTransactions', [doc])\n }\n doc.emit('beforeTransaction', [doc._transaction, doc])\n }\n try {\n result = f(doc._transaction)\n } finally {\n if (initialCall) {\n const finishCleanup = doc._transaction === transactionCleanups[0]\n doc._transaction = null\n if (finishCleanup) {\n // The first transaction ended, now process observer calls.\n // Observer call may create new transactions for which we need to call the observers and do cleanup.\n // We don't want to nest these calls, so we execute these calls one after\n // another.\n // Also we need to ensure that all cleanups are called, even if the\n // observes throw errors.\n // This file is full of hacky try {} finally {} blocks to ensure that an\n // event can throw errors and also that the cleanup is called.\n cleanupTransactions(transactionCleanups, 0)\n }\n }\n }\n return result\n}\n","import {\n mergeDeleteSets,\n iterateDeletedStructs,\n keepItem,\n transact,\n createID,\n redoItem,\n isParentOf,\n followRedone,\n getItemCleanStart,\n isDeleted,\n addToDeleteSet,\n Transaction, Doc, Item, GC, DeleteSet, AbstractType // eslint-disable-line\n} from '../internals.js'\n\nimport * as time from 'lib0/time'\nimport * as array from 'lib0/array'\nimport { Observable } from 'lib0/observable'\n\nexport class StackItem {\n /**\n * @param {DeleteSet} deletions\n * @param {DeleteSet} insertions\n */\n constructor (deletions, insertions) {\n this.insertions = insertions\n this.deletions = deletions\n /**\n * Use this to save and restore metadata like selection range\n */\n this.meta = new Map()\n }\n}\n/**\n * @param {Transaction} tr\n * @param {UndoManager} um\n * @param {StackItem} stackItem\n */\nconst clearUndoManagerStackItem = (tr, um, stackItem) => {\n iterateDeletedStructs(tr, stackItem.deletions, item => {\n if (item instanceof Item && um.scope.some(type => isParentOf(type, item))) {\n keepItem(item, false)\n }\n })\n}\n\n/**\n * @param {UndoManager} undoManager\n * @param {Array<StackItem>} stack\n * @param {string} eventType\n * @return {StackItem?}\n */\nconst popStackItem = (undoManager, stack, eventType) => {\n /**\n * Whether a change happened\n * @type {StackItem?}\n */\n let result = null\n /**\n * Keep a reference to the transaction so we can fire the event with the changedParentTypes\n * @type {any}\n */\n let _tr = null\n const doc = undoManager.doc\n const scope = undoManager.scope\n transact(doc, transaction => {\n while (stack.length > 0 && result === null) {\n const store = doc.store\n const stackItem = /** @type {StackItem} */ (stack.pop())\n /**\n * @type {Set<Item>}\n */\n const itemsToRedo = new Set()\n /**\n * @type {Array<Item>}\n */\n const itemsToDelete = []\n let performedChange = false\n iterateDeletedStructs(transaction, stackItem.insertions, struct => {\n if (struct instanceof Item) {\n if (struct.redone !== null) {\n let { item, diff } = followRedone(store, struct.id)\n if (diff > 0) {\n item = getItemCleanStart(transaction, createID(item.id.client, item.id.clock + diff))\n }\n struct = item\n }\n if (!struct.deleted && scope.some(type => isParentOf(type, /** @type {Item} */ (struct)))) {\n itemsToDelete.push(struct)\n }\n }\n })\n iterateDeletedStructs(transaction, stackItem.deletions, struct => {\n if (\n struct instanceof Item &&\n scope.some(type => isParentOf(type, struct)) &&\n // Never redo structs in stackItem.insertions because they were created and deleted in the same capture interval.\n !isDeleted(stackItem.insertions, struct.id)\n ) {\n itemsToRedo.add(struct)\n }\n })\n itemsToRedo.forEach(struct => {\n performedChange = redoItem(transaction, struct, itemsToRedo, stackItem.insertions, undoManager.ignoreRemoteMapChanges, undoManager) !== null || performedChange\n })\n // We want to delete in reverse order so that children are deleted before\n // parents, so we have more information available when items are filtered.\n for (let i = itemsToDelete.length - 1; i >= 0; i--) {\n const item = itemsToDelete[i]\n if (undoManager.deleteFilter(item)) {\n item.delete(transaction)\n performedChange = true\n }\n }\n result = performedChange ? stackItem : null\n }\n transaction.changed.forEach((subProps, type) => {\n // destroy search marker if necessary\n if (subProps.has(null) && type._searchMarker) {\n type._searchMarker.length = 0\n }\n })\n _tr = transaction\n }, undoManager)\n if (result != null) {\n const changedParentTypes = _tr.changedParentTypes\n undoManager.emit('stack-item-popped', [{ stackItem: result, type: eventType, changedParentTypes }, undoManager])\n }\n return result\n}\n\n/**\n * @typedef {Object} UndoManagerOptions\n * @property {number} [UndoManagerOptions.captureTimeout=500]\n * @property {function(Transaction):boolean} [UndoManagerOptions.captureTransaction] Do not capture changes of a Transaction if result false.\n * @property {function(Item):boolean} [UndoManagerOptions.deleteFilter=()=>true] Sometimes\n * it is necessary to filter what an Undo/Redo operation can delete. If this\n * filter returns false, the type/item won't be deleted even it is in the\n * undo/redo scope.\n * @property {Set<any>} [UndoManagerOptions.trackedOrigins=new Set([null])]\n * @property {boolean} [ignoreRemoteMapChanges] Experimental. By default, the UndoManager will never overwrite remote changes. Enable this property to enable overwriting remote changes on key-value changes (Y.Map, properties on Y.Xml, etc..).\n * @property {Doc} [doc] The document that this UndoManager operates on. Only needed if typeScope is empty.\n */\n\n/**\n * Fires 'stack-item-added' event when a stack item was added to either the undo- or\n * the redo-stack. You may store additional stack information via the\n * metadata property on `event.stackItem.meta` (it is a `Map` of metadata properties).\n * Fires 'stack-item-popped' event when a stack item was popped from either the\n * undo- or the redo-stack. You may restore the saved stack information from `event.stackItem.meta`.\n *\n * @extends {Observable<'stack-item-added'|'stack-item-popped'|'stack-cleared'|'stack-item-updated'>}\n */\nexport class UndoManager extends Observable {\n /**\n * @param {AbstractType<any>|Array<AbstractType<any>>} typeScope Accepts either a single type, or an array of types\n * @param {UndoManagerOptions} options\n */\n constructor (typeScope, {\n captureTimeout = 500,\n captureTransaction = _tr => true,\n deleteFilter = () => true,\n trackedOrigins = new Set([null]),\n ignoreRemoteMapChanges = false,\n doc = /** @type {Doc} */ (array.isArray(typeScope) ? typeScope[0].doc : typeScope.doc)\n } = {}) {\n super()\n /**\n * @type {Array<AbstractType<any>>}\n */\n this.scope = []\n this.addToScope(typeScope)\n this.deleteFilter = deleteFilter\n trackedOrigins.add(this)\n this.trackedOrigins = trackedOrigins\n this.captureTransaction = captureTransaction\n /**\n * @type {Array<StackItem>}\n */\n this.undoStack = []\n /**\n * @type {Array<StackItem>}\n */\n this.redoStack = []\n /**\n * Whether the client is currently undoing (calling UndoManager.undo)\n *\n * @type {boolean}\n */\n this.undoing = false\n this.redoing = false\n this.doc = doc\n this.lastChange = 0\n this.ignoreRemoteMapChanges = ignoreRemoteMapChanges\n this.captureTimeout = captureTimeout\n /**\n * @param {Transaction} transaction\n */\n this.afterTransactionHandler = transaction => {\n // Only track certain transactions\n if (\n !this.captureTransaction(transaction) ||\n !this.scope.some(type => transaction.changedParentTypes.has(type)) ||\n (!this.trackedOrigins.has(transaction.origin) && (!transaction.origin || !this.trackedOrigins.has(transaction.origin.constructor)))\n ) {\n return\n }\n const undoing = this.undoing\n const redoing = this.redoing\n const stack = undoing ? this.redoStack : this.undoStack\n if (undoing) {\n this.stopCapturing() // next undo should not be appended to last stack item\n } else if (!redoing) {\n // neither undoing nor redoing: delete redoStack\n this.clear(false, true)\n }\n const insertions = new DeleteSet()\n transaction.afterState.forEach((endClock, client) => {\n const startClock = transaction.beforeState.get(client) || 0\n const len = endClock - startClock\n if (len > 0) {\n addToDeleteSet(insertions, client, startClock, len)\n }\n })\n const now = time.getUnixTime()\n let didAdd = false\n if (this.lastChange > 0 && now - this.lastChange < this.captureTimeout && stack.length > 0 && !undoing && !redoing) {\n // append change to last stack op\n const lastOp = stack[stack.length - 1]\n lastOp.deletions = mergeDeleteSets([lastOp.deletions, transaction.deleteSet])\n lastOp.insertions = mergeDeleteSets([lastOp.insertions, insertions])\n } else {\n // create a new stack op\n stack.push(new StackItem(transaction.deleteSet, insertions))\n didAdd = true\n }\n if (!undoing && !redoing) {\n this.lastChange = now\n }\n // make sure that deleted structs are not gc'd\n iterateDeletedStructs(transaction, transaction.deleteSet, /** @param {Item|GC} item */ item => {\n if (item instanceof Item && this.scope.some(type => isParentOf(type, item))) {\n keepItem(item, true)\n }\n })\n const changeEvent = [{ stackItem: stack[stack.length - 1], origin: transaction.origin, type: undoing ? 'redo' : 'undo', changedParentTypes: transaction.changedParentTypes }, this]\n if (didAdd) {\n this.emit('stack-item-added', changeEvent)\n } else {\n this.emit('stack-item-updated', changeEvent)\n }\n }\n this.doc.on('afterTransaction', this.afterTransactionHandler)\n this.doc.on('destroy', () => {\n this.destroy()\n })\n }\n\n /**\n * @param {Array<AbstractType<any>> | AbstractType<any>} ytypes\n */\n addToScope (ytypes) {\n ytypes = array.isArray(ytypes) ? ytypes : [ytypes]\n ytypes.forEach(ytype => {\n if (this.scope.every(yt => yt !== ytype)) {\n this.scope.push(ytype)\n }\n })\n }\n\n /**\n * @param {any} origin\n */\n addTrackedOrigin (origin) {\n this.trackedOrigins.add(origin)\n }\n\n /**\n * @param {any} origin\n */\n removeTrackedOrigin (origin) {\n this.trackedOrigins.delete(origin)\n }\n\n clear (clearUndoStack = true, clearRedoStack = true) {\n if ((clearUndoStack && this.canUndo()) || (clearRedoStack && this.canRedo())) {\n this.doc.transact(tr => {\n if (clearUndoStack) {\n this.undoStack.forEach(item => clearUndoManagerStackItem(tr, this, item))\n this.undoStack = []\n }\n if (clearRedoStack) {\n this.redoStack.forEach(item => clearUndoManagerStackItem(tr, this, item))\n this.redoStack = []\n }\n this.emit('stack-cleared', [{ undoStackCleared: clearUndoStack, redoStackCleared: clearRedoStack }])\n })\n }\n }\n\n /**\n * UndoManager merges Undo-StackItem if they are created within time-gap\n * smaller than `options.captureTimeout`. Call `um.stopCapturing()` so that the next\n * StackItem won't be merged.\n *\n *\n * @example\n * // without stopCapturing\n * ytext.insert(0, 'a')\n * ytext.insert(1, 'b')\n * um.undo()\n * ytext.toString() // => '' (note that 'ab' was removed)\n * // with stopCapturing\n * ytext.insert(0, 'a')\n * um.stopCapturing()\n * ytext.insert(0, 'b')\n * um.undo()\n * ytext.toString() // => 'a' (note that only 'b' was removed)\n *\n */\n stopCapturing () {\n this.lastChange = 0\n }\n\n /**\n * Undo last changes on type.\n *\n * @return {StackItem?} Returns StackItem if a change was applied\n */\n undo () {\n this.undoing = true\n let res\n try {\n res = popStackItem(this, this.undoStack, 'undo')\n } finally {\n this.undoing = false\n }\n return res\n }\n\n /**\n * Redo last undo operation.\n *\n * @return {StackItem?} Returns StackItem if a change was applied\n */\n redo () {\n this.redoing = true\n let res\n try {\n res = popStackItem(this, this.redoStack, 'redo')\n } finally {\n this.redoing = false\n }\n return res\n }\n\n /**\n * Are undo steps available?\n *\n * @return {boolean} `true` if undo is possible\n */\n canUndo () {\n return this.undoStack.length > 0\n }\n\n /**\n * Are redo steps available?\n *\n * @return {boolean} `true` if redo is possible\n */\n canRedo () {\n return this.redoStack.length > 0\n }\n\n destroy () {\n this.trackedOrigins.delete(this)\n this.doc.off('afterTransaction', this.afterTransactionHandler)\n super.destroy()\n }\n}\n","\nimport * as binary from 'lib0/binary'\nimport * as decoding from 'lib0/decoding'\nimport * as encoding from 'lib0/encoding'\nimport * as error from 'lib0/error'\nimport * as f from 'lib0/function'\nimport * as logging from 'lib0/logging'\nimport * as map from 'lib0/map'\nimport * as math from 'lib0/math'\nimport * as string from 'lib0/string'\n\nimport {\n ContentAny,\n ContentBinary,\n ContentDeleted,\n ContentDoc,\n ContentEmbed,\n ContentFormat,\n ContentJSON,\n ContentString,\n ContentType,\n createID,\n decodeStateVector,\n DSEncoderV1,\n DSEncoderV2,\n GC,\n Item,\n mergeDeleteSets,\n readDeleteSet,\n readItemContent,\n Skip,\n UpdateDecoderV1,\n UpdateDecoderV2,\n UpdateEncoderV1,\n UpdateEncoderV2,\n writeDeleteSet,\n YXmlElement,\n YXmlHook\n} from '../internals.js'\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n */\nfunction * lazyStructReaderGenerator (decoder) {\n const numOfStateUpdates = decoding.readVarUint(decoder.restDecoder)\n for (let i = 0; i < numOfStateUpdates; i++) {\n const numberOfStructs = decoding.readVarUint(decoder.restDecoder)\n const client = decoder.readClient()\n let clock = decoding.readVarUint(decoder.restDecoder)\n for (let i = 0; i < numberOfStructs; i++) {\n const info = decoder.readInfo()\n // @todo use switch instead of ifs\n if (info === 10) {\n const len = decoding.readVarUint(decoder.restDecoder)\n yield new Skip(createID(client, clock), len)\n clock += len\n } else if ((binary.BITS5 & info) !== 0) {\n const cantCopyParentInfo = (info & (binary.BIT7 | binary.BIT8)) === 0\n // If parent = null and neither left nor right are defined, then we know that `parent` is child of `y`\n // and we read the next string as parentYKey.\n // It indicates how we store/retrieve parent from `y.share`\n // @type {string|null}\n const struct = new Item(\n createID(client, clock),\n null, // left\n (info & binary.BIT8) === binary.BIT8 ? decoder.readLeftID() : null, // origin\n null, // right\n (info & binary.BIT7) === binary.BIT7 ? decoder.readRightID() : null, // right origin\n // @ts-ignore Force writing a string here.\n cantCopyParentInfo ? (decoder.readParentInfo() ? decoder.readString() : decoder.readLeftID()) : null, // parent\n cantCopyParentInfo && (info & binary.BIT6) === binary.BIT6 ? decoder.readString() : null, // parentSub\n readItemContent(decoder, info) // item content\n )\n yield struct\n clock += struct.length\n } else {\n const len = decoder.readLen()\n yield new GC(createID(client, clock), len)\n clock += len\n }\n }\n }\n}\n\nexport class LazyStructReader {\n /**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @param {boolean} filterSkips\n */\n constructor (decoder, filterSkips) {\n this.gen = lazyStructReaderGenerator(decoder)\n /**\n * @type {null | Item | Skip | GC}\n */\n this.curr = null\n this.done = false\n this.filterSkips = filterSkips\n this.next()\n }\n\n /**\n * @return {Item | GC | Skip |null}\n */\n next () {\n // ignore \"Skip\" structs\n do {\n this.curr = this.gen.next().value || null\n } while (this.filterSkips && this.curr !== null && this.curr.constructor === Skip)\n return this.curr\n }\n}\n\n/**\n * @param {Uint8Array} update\n *\n */\nexport const logUpdate = update => logUpdateV2(update, UpdateDecoderV1)\n\n/**\n * @param {Uint8Array} update\n * @param {typeof UpdateDecoderV2 | typeof UpdateDecoderV1} [YDecoder]\n *\n */\nexport const logUpdateV2 = (update, YDecoder = UpdateDecoderV2) => {\n const structs = []\n const updateDecoder = new YDecoder(decoding.createDecoder(update))\n const lazyDecoder = new LazyStructReader(updateDecoder, false)\n for (let curr = lazyDecoder.curr; curr !== null; curr = lazyDecoder.next()) {\n structs.push(curr)\n }\n logging.print('Structs: ', structs)\n const ds = readDeleteSet(updateDecoder)\n logging.print('DeleteSet: ', ds)\n}\n\n/**\n * @param {Uint8Array} update\n *\n */\nexport const decodeUpdate = (update) => decodeUpdateV2(update, UpdateDecoderV1)\n\n/**\n * @param {Uint8Array} update\n * @param {typeof UpdateDecoderV2 | typeof UpdateDecoderV1} [YDecoder]\n *\n */\nexport const decodeUpdateV2 = (update, YDecoder = UpdateDecoderV2) => {\n const structs = []\n const updateDecoder = new YDecoder(decoding.createDecoder(update))\n const lazyDecoder = new LazyStructReader(updateDecoder, false)\n for (let curr = lazyDecoder.curr; curr !== null; curr = lazyDecoder.next()) {\n structs.push(curr)\n }\n return {\n structs,\n ds: readDeleteSet(updateDecoder)\n }\n}\n\nexport class LazyStructWriter {\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n */\n constructor (encoder) {\n this.currClient = 0\n this.startClock = 0\n this.written = 0\n this.encoder = encoder\n /**\n * We want to write operations lazily, but also we need to know beforehand how many operations we want to write for each client.\n *\n * This kind of meta-information (#clients, #structs-per-client-written) is written to the restEncoder.\n *\n * We fragment the restEncoder and store a slice of it per-client until we know how many clients there are.\n * When we flush (toUint8Array) we write the restEncoder using the fragments and the meta-information.\n *\n * @type {Array<{ written: number, restEncoder: Uint8Array }>}\n */\n this.clientStructs = []\n }\n}\n\n/**\n * @param {Array<Uint8Array>} updates\n * @return {Uint8Array}\n */\nexport const mergeUpdates = updates => mergeUpdatesV2(updates, UpdateDecoderV1, UpdateEncoderV1)\n\n/**\n * @param {Uint8Array} update\n * @param {typeof DSEncoderV1 | typeof DSEncoderV2} YEncoder\n * @param {typeof UpdateDecoderV1 | typeof UpdateDecoderV2} YDecoder\n * @return {Uint8Array}\n */\nexport const encodeStateVectorFromUpdateV2 = (update, YEncoder = DSEncoderV2, YDecoder = UpdateDecoderV2) => {\n const encoder = new YEncoder()\n const updateDecoder = new LazyStructReader(new YDecoder(decoding.createDecoder(update)), false)\n let curr = updateDecoder.curr\n if (curr !== null) {\n let size = 0\n let currClient = curr.id.client\n let stopCounting = curr.id.clock !== 0 // must start at 0\n let currClock = stopCounting ? 0 : curr.id.clock + curr.length\n for (; curr !== null; curr = updateDecoder.next()) {\n if (currClient !== curr.id.client) {\n if (currClock !== 0) {\n size++\n // We found a new client\n // write what we have to the encoder\n encoding.writeVarUint(encoder.restEncoder, currClient)\n encoding.writeVarUint(encoder.restEncoder, currClock)\n }\n currClient = curr.id.client\n currClock = 0\n stopCounting = curr.id.clock !== 0\n }\n // we ignore skips\n if (curr.constructor === Skip) {\n stopCounting = true\n }\n if (!stopCounting) {\n currClock = curr.id.clock + curr.length\n }\n }\n // write what we have\n if (currClock !== 0) {\n size++\n encoding.writeVarUint(encoder.restEncoder, currClient)\n encoding.writeVarUint(encoder.restEncoder, currClock)\n }\n // prepend the size of the state vector\n const enc = encoding.createEncoder()\n encoding.writeVarUint(enc, size)\n encoding.writeBinaryEncoder(enc, encoder.restEncoder)\n encoder.restEncoder = enc\n return encoder.toUint8Array()\n } else {\n encoding.writeVarUint(encoder.restEncoder, 0)\n return encoder.toUint8Array()\n }\n}\n\n/**\n * @param {Uint8Array} update\n * @return {Uint8Array}\n */\nexport const encodeStateVectorFromUpdate = update => encodeStateVectorFromUpdateV2(update, DSEncoderV1, UpdateDecoderV1)\n\n/**\n * @param {Uint8Array} update\n * @param {typeof UpdateDecoderV1 | typeof UpdateDecoderV2} YDecoder\n * @return {{ from: Map<number,number>, to: Map<number,number> }}\n */\nexport const parseUpdateMetaV2 = (update, YDecoder = UpdateDecoderV2) => {\n /**\n * @type {Map<number, number>}\n */\n const from = new Map()\n /**\n * @type {Map<number, number>}\n */\n const to = new Map()\n const updateDecoder = new LazyStructReader(new YDecoder(decoding.createDecoder(update)), false)\n let curr = updateDecoder.curr\n if (curr !== null) {\n let currClient = curr.id.client\n let currClock = curr.id.clock\n // write the beginning to `from`\n from.set(currClient, currClock)\n for (; curr !== null; curr = updateDecoder.next()) {\n if (currClient !== curr.id.client) {\n // We found a new client\n // write the end to `to`\n to.set(currClient, currClock)\n // write the beginning to `from`\n from.set(curr.id.client, curr.id.clock)\n // update currClient\n currClient = curr.id.client\n }\n currClock = curr.id.clock + curr.length\n }\n // write the end to `to`\n to.set(currClient, currClock)\n }\n return { from, to }\n}\n\n/**\n * @param {Uint8Array} update\n * @return {{ from: Map<number,number>, to: Map<number,number> }}\n */\nexport const parseUpdateMeta = update => parseUpdateMetaV2(update, UpdateDecoderV1)\n\n/**\n * This method is intended to slice any kind of struct and retrieve the right part.\n * It does not handle side-effects, so it should only be used by the lazy-encoder.\n *\n * @param {Item | GC | Skip} left\n * @param {number} diff\n * @return {Item | GC}\n */\nconst sliceStruct = (left, diff) => {\n if (left.constructor === GC) {\n const { client, clock } = left.id\n return new GC(createID(client, clock + diff), left.length - diff)\n } else if (left.constructor === Skip) {\n const { client, clock } = left.id\n return new Skip(createID(client, clock + diff), left.length - diff)\n } else {\n const leftItem = /** @type {Item} */ (left)\n const { client, clock } = leftItem.id\n return new Item(\n createID(client, clock + diff),\n null,\n createID(client, clock + diff - 1),\n null,\n leftItem.rightOrigin,\n leftItem.parent,\n leftItem.parentSub,\n leftItem.content.splice(diff)\n )\n }\n}\n\n/**\n *\n * This function works similarly to `readUpdateV2`.\n *\n * @param {Array<Uint8Array>} updates\n * @param {typeof UpdateDecoderV1 | typeof UpdateDecoderV2} [YDecoder]\n * @param {typeof UpdateEncoderV1 | typeof UpdateEncoderV2} [YEncoder]\n * @return {Uint8Array}\n */\nexport const mergeUpdatesV2 = (updates, YDecoder = UpdateDecoderV2, YEncoder = UpdateEncoderV2) => {\n if (updates.length === 1) {\n return updates[0]\n }\n const updateDecoders = updates.map(update => new YDecoder(decoding.createDecoder(update)))\n let lazyStructDecoders = updateDecoders.map(decoder => new LazyStructReader(decoder, true))\n\n /**\n * @todo we don't need offset because we always slice before\n * @type {null | { struct: Item | GC | Skip, offset: number }}\n */\n let currWrite = null\n\n const updateEncoder = new YEncoder()\n // write structs lazily\n const lazyStructEncoder = new LazyStructWriter(updateEncoder)\n\n // Note: We need to ensure that all lazyStructDecoders are fully consumed\n // Note: Should merge document updates whenever possible - even from different updates\n // Note: Should handle that some operations cannot be applied yet ()\n\n while (true) {\n // Write higher clients first ⇒ sort by clientID & clock and remove decoders without content\n lazyStructDecoders = lazyStructDecoders.filter(dec => dec.curr !== null)\n lazyStructDecoders.sort(\n /** @type {function(any,any):number} */ (dec1, dec2) => {\n if (dec1.curr.id.client === dec2.curr.id.client) {\n const clockDiff = dec1.curr.id.clock - dec2.curr.id.clock\n if (clockDiff === 0) {\n // @todo remove references to skip since the structDecoders must filter Skips.\n return dec1.curr.constructor === dec2.curr.constructor\n ? 0\n : dec1.curr.constructor === Skip ? 1 : -1 // we are filtering skips anyway.\n } else {\n return clockDiff\n }\n } else {\n return dec2.curr.id.client - dec1.curr.id.client\n }\n }\n )\n if (lazyStructDecoders.length === 0) {\n break\n }\n const currDecoder = lazyStructDecoders[0]\n // write from currDecoder until the next operation is from another client or if filler-struct\n // then we need to reorder the decoders and find the next operation to write\n const firstClient = /** @type {Item | GC} */ (currDecoder.curr).id.client\n\n if (currWrite !== null) {\n let curr = /** @type {Item | GC | null} */ (currDecoder.curr)\n let iterated = false\n\n // iterate until we find something that we haven't written already\n // remember: first the high client-ids are written\n while (curr !== null && curr.id.clock + curr.length <= currWrite.struct.id.clock + currWrite.struct.length && curr.id.client >= currWrite.struct.id.client) {\n curr = currDecoder.next()\n iterated = true\n }\n if (\n curr === null || // current decoder is empty\n curr.id.client !== firstClient || // check whether there is another decoder that has has updates from `firstClient`\n (iterated && curr.id.clock > currWrite.struct.id.clock + currWrite.struct.length) // the above while loop was used and we are potentially missing updates\n ) {\n continue\n }\n\n if (firstClient !== currWrite.struct.id.client) {\n writeStructToLazyStructWriter(lazyStructEncoder, currWrite.struct, currWrite.offset)\n currWrite = { struct: curr, offset: 0 }\n currDecoder.next()\n } else {\n if (currWrite.struct.id.clock + currWrite.struct.length < curr.id.clock) {\n // @todo write currStruct & set currStruct = Skip(clock = currStruct.id.clock + currStruct.length, length = curr.id.clock - self.clock)\n if (currWrite.struct.constructor === Skip) {\n // extend existing skip\n currWrite.struct.length = curr.id.clock + curr.length - currWrite.struct.id.clock\n } else {\n writeStructToLazyStructWriter(lazyStructEncoder, currWrite.struct, currWrite.offset)\n const diff = curr.id.clock - currWrite.struct.id.clock - currWrite.struct.length\n /**\n * @type {Skip}\n */\n const struct = new Skip(createID(firstClient, currWrite.struct.id.clock + currWrite.struct.length), diff)\n currWrite = { struct, offset: 0 }\n }\n } else { // if (currWrite.struct.id.clock + currWrite.struct.length >= curr.id.clock) {\n const diff = currWrite.struct.id.clock + currWrite.struct.length - curr.id.clock\n if (diff > 0) {\n if (currWrite.struct.constructor === Skip) {\n // prefer to slice Skip because the other struct might contain more information\n currWrite.struct.length -= diff\n } else {\n curr = sliceStruct(curr, diff)\n }\n }\n if (!currWrite.struct.mergeWith(/** @type {any} */ (curr))) {\n writeStructToLazyStructWriter(lazyStructEncoder, currWrite.struct, currWrite.offset)\n currWrite = { struct: curr, offset: 0 }\n currDecoder.next()\n }\n }\n }\n } else {\n currWrite = { struct: /** @type {Item | GC} */ (currDecoder.curr), offset: 0 }\n currDecoder.next()\n }\n for (\n let next = currDecoder.curr;\n next !== null && next.id.client === firstClient && next.id.clock === currWrite.struct.id.clock + currWrite.struct.length && next.constructor !== Skip;\n next = currDecoder.next()\n ) {\n writeStructToLazyStructWriter(lazyStructEncoder, currWrite.struct, currWrite.offset)\n currWrite = { struct: next, offset: 0 }\n }\n }\n if (currWrite !== null) {\n writeStructToLazyStructWriter(lazyStructEncoder, currWrite.struct, currWrite.offset)\n currWrite = null\n }\n finishLazyStructWriting(lazyStructEncoder)\n\n const dss = updateDecoders.map(decoder => readDeleteSet(decoder))\n const ds = mergeDeleteSets(dss)\n writeDeleteSet(updateEncoder, ds)\n return updateEncoder.toUint8Array()\n}\n\n/**\n * @param {Uint8Array} update\n * @param {Uint8Array} sv\n * @param {typeof UpdateDecoderV1 | typeof UpdateDecoderV2} [YDecoder]\n * @param {typeof UpdateEncoderV1 | typeof UpdateEncoderV2} [YEncoder]\n */\nexport const diffUpdateV2 = (update, sv, YDecoder = UpdateDecoderV2, YEncoder = UpdateEncoderV2) => {\n const state = decodeStateVector(sv)\n const encoder = new YEncoder()\n const lazyStructWriter = new LazyStructWriter(encoder)\n const decoder = new YDecoder(decoding.createDecoder(update))\n const reader = new LazyStructReader(decoder, false)\n while (reader.curr) {\n const curr = reader.curr\n const currClient = curr.id.client\n const svClock = state.get(currClient) || 0\n if (reader.curr.constructor === Skip) {\n // the first written struct shouldn't be a skip\n reader.next()\n continue\n }\n if (curr.id.clock + curr.length > svClock) {\n writeStructToLazyStructWriter(lazyStructWriter, curr, math.max(svClock - curr.id.clock, 0))\n reader.next()\n while (reader.curr && reader.curr.id.client === currClient) {\n writeStructToLazyStructWriter(lazyStructWriter, reader.curr, 0)\n reader.next()\n }\n } else {\n // read until something new comes up\n while (reader.curr && reader.curr.id.client === currClient && reader.curr.id.clock + reader.curr.length <= svClock) {\n reader.next()\n }\n }\n }\n finishLazyStructWriting(lazyStructWriter)\n // write ds\n const ds = readDeleteSet(decoder)\n writeDeleteSet(encoder, ds)\n return encoder.toUint8Array()\n}\n\n/**\n * @param {Uint8Array} update\n * @param {Uint8Array} sv\n */\nexport const diffUpdate = (update, sv) => diffUpdateV2(update, sv, UpdateDecoderV1, UpdateEncoderV1)\n\n/**\n * @param {LazyStructWriter} lazyWriter\n */\nconst flushLazyStructWriter = lazyWriter => {\n if (lazyWriter.written > 0) {\n lazyWriter.clientStructs.push({ written: lazyWriter.written, restEncoder: encoding.toUint8Array(lazyWriter.encoder.restEncoder) })\n lazyWriter.encoder.restEncoder = encoding.createEncoder()\n lazyWriter.written = 0\n }\n}\n\n/**\n * @param {LazyStructWriter} lazyWriter\n * @param {Item | GC} struct\n * @param {number} offset\n */\nconst writeStructToLazyStructWriter = (lazyWriter, struct, offset) => {\n // flush curr if we start another client\n if (lazyWriter.written > 0 && lazyWriter.currClient !== struct.id.client) {\n flushLazyStructWriter(lazyWriter)\n }\n if (lazyWriter.written === 0) {\n lazyWriter.currClient = struct.id.client\n // write next client\n lazyWriter.encoder.writeClient(struct.id.client)\n // write startClock\n encoding.writeVarUint(lazyWriter.encoder.restEncoder, struct.id.clock + offset)\n }\n struct.write(lazyWriter.encoder, offset)\n lazyWriter.written++\n}\n/**\n * Call this function when we collected all parts and want to\n * put all the parts together. After calling this method,\n * you can continue using the UpdateEncoder.\n *\n * @param {LazyStructWriter} lazyWriter\n */\nconst finishLazyStructWriting = (lazyWriter) => {\n flushLazyStructWriter(lazyWriter)\n\n // this is a fresh encoder because we called flushCurr\n const restEncoder = lazyWriter.encoder.restEncoder\n\n /**\n * Now we put all the fragments together.\n * This works similarly to `writeClientsStructs`\n */\n\n // write # states that were updated - i.e. the clients\n encoding.writeVarUint(restEncoder, lazyWriter.clientStructs.length)\n\n for (let i = 0; i < lazyWriter.clientStructs.length; i++) {\n const partStructs = lazyWriter.clientStructs[i]\n /**\n * Works similarly to `writeStructs`\n */\n // write # encoded structs\n encoding.writeVarUint(restEncoder, partStructs.written)\n // write the rest of the fragment\n encoding.writeUint8Array(restEncoder, partStructs.restEncoder)\n }\n}\n\n/**\n * @param {Uint8Array} update\n * @param {function(Item|GC|Skip):Item|GC|Skip} blockTransformer\n * @param {typeof UpdateDecoderV2 | typeof UpdateDecoderV1} YDecoder\n * @param {typeof UpdateEncoderV2 | typeof UpdateEncoderV1 } YEncoder\n */\nexport const convertUpdateFormat = (update, blockTransformer, YDecoder, YEncoder) => {\n const updateDecoder = new YDecoder(decoding.createDecoder(update))\n const lazyDecoder = new LazyStructReader(updateDecoder, false)\n const updateEncoder = new YEncoder()\n const lazyWriter = new LazyStructWriter(updateEncoder)\n for (let curr = lazyDecoder.curr; curr !== null; curr = lazyDecoder.next()) {\n writeStructToLazyStructWriter(lazyWriter, blockTransformer(curr), 0)\n }\n finishLazyStructWriting(lazyWriter)\n const ds = readDeleteSet(updateDecoder)\n writeDeleteSet(updateEncoder, ds)\n return updateEncoder.toUint8Array()\n}\n\n/**\n * @typedef {Object} ObfuscatorOptions\n * @property {boolean} [ObfuscatorOptions.formatting=true]\n * @property {boolean} [ObfuscatorOptions.subdocs=true]\n * @property {boolean} [ObfuscatorOptions.yxml=true] Whether to obfuscate nodeName / hookName\n */\n\n/**\n * @param {ObfuscatorOptions} obfuscator\n */\nconst createObfuscator = ({ formatting = true, subdocs = true, yxml = true } = {}) => {\n let i = 0\n const mapKeyCache = map.create()\n const nodeNameCache = map.create()\n const formattingKeyCache = map.create()\n const formattingValueCache = map.create()\n formattingValueCache.set(null, null) // end of a formatting range should always be the end of a formatting range\n /**\n * @param {Item|GC|Skip} block\n * @return {Item|GC|Skip}\n */\n return block => {\n switch (block.constructor) {\n case GC:\n case Skip:\n return block\n case Item: {\n const item = /** @type {Item} */ (block)\n const content = item.content\n switch (content.constructor) {\n case ContentDeleted:\n break\n case ContentType: {\n if (yxml) {\n const type = /** @type {ContentType} */ (content).type\n if (type instanceof YXmlElement) {\n type.nodeName = map.setIfUndefined(nodeNameCache, type.nodeName, () => 'node-' + i)\n }\n if (type instanceof YXmlHook) {\n type.hookName = map.setIfUndefined(nodeNameCache, type.hookName, () => 'hook-' + i)\n }\n }\n break\n }\n case ContentAny: {\n const c = /** @type {ContentAny} */ (content)\n c.arr = c.arr.map(() => i)\n break\n }\n case ContentBinary: {\n const c = /** @type {ContentBinary} */ (content)\n c.content = new Uint8Array([i])\n break\n }\n case ContentDoc: {\n const c = /** @type {ContentDoc} */ (content)\n if (subdocs) {\n c.opts = {}\n c.doc.guid = i + ''\n }\n break\n }\n case ContentEmbed: {\n const c = /** @type {ContentEmbed} */ (content)\n c.embed = {}\n break\n }\n case ContentFormat: {\n const c = /** @type {ContentFormat} */ (content)\n if (formatting) {\n c.key = map.setIfUndefined(formattingKeyCache, c.key, () => i + '')\n c.value = map.setIfUndefined(formattingValueCache, c.value, () => ({ i }))\n }\n break\n }\n case ContentJSON: {\n const c = /** @type {ContentJSON} */ (content)\n c.arr = c.arr.map(() => i)\n break\n }\n case ContentString: {\n const c = /** @type {ContentString} */ (content)\n c.str = string.repeat((i % 10) + '', c.str.length)\n break\n }\n default:\n // unknown content type\n error.unexpectedCase()\n }\n if (item.parentSub) {\n item.parentSub = map.setIfUndefined(mapKeyCache, item.parentSub, () => i + '')\n }\n i++\n return block\n }\n default:\n // unknown block-type\n error.unexpectedCase()\n }\n }\n}\n\n/**\n * This function obfuscates the content of a Yjs update. This is useful to share\n * buggy Yjs documents while significantly limiting the possibility that a\n * developer can on the user. Note that it might still be possible to deduce\n * some information by analyzing the \"structure\" of the document or by analyzing\n * the typing behavior using the CRDT-related metadata that is still kept fully\n * intact.\n *\n * @param {Uint8Array} update\n * @param {ObfuscatorOptions} [opts]\n */\nexport const obfuscateUpdate = (update, opts) => convertUpdateFormat(update, createObfuscator(opts), UpdateDecoderV1, UpdateEncoderV1)\n\n/**\n * @param {Uint8Array} update\n * @param {ObfuscatorOptions} [opts]\n */\nexport const obfuscateUpdateV2 = (update, opts) => convertUpdateFormat(update, createObfuscator(opts), UpdateDecoderV2, UpdateEncoderV2)\n\n/**\n * @param {Uint8Array} update\n */\nexport const convertUpdateFormatV1ToV2 = update => convertUpdateFormat(update, f.id, UpdateDecoderV1, UpdateEncoderV2)\n\n/**\n * @param {Uint8Array} update\n */\nexport const convertUpdateFormatV2ToV1 = update => convertUpdateFormat(update, f.id, UpdateDecoderV2, UpdateEncoderV1)\n","\nimport {\n isDeleted,\n Item, AbstractType, Transaction, AbstractStruct // eslint-disable-line\n} from '../internals.js'\n\nimport * as set from 'lib0/set'\nimport * as array from 'lib0/array'\n\n/**\n * @template {AbstractType<any>} T\n * YEvent describes the changes on a YType.\n */\nexport class YEvent {\n /**\n * @param {T} target The changed type.\n * @param {Transaction} transaction\n */\n constructor (target, transaction) {\n /**\n * The type on which this event was created on.\n * @type {T}\n */\n this.target = target\n /**\n * The current target on which the observe callback is called.\n * @type {AbstractType<any>}\n */\n this.currentTarget = target\n /**\n * The transaction that triggered this event.\n * @type {Transaction}\n */\n this.transaction = transaction\n /**\n * @type {Object|null}\n */\n this._changes = null\n /**\n * @type {null | Map<string, { action: 'add' | 'update' | 'delete', oldValue: any, newValue: any }>}\n */\n this._keys = null\n /**\n * @type {null | Array<{ insert?: string | Array<any> | object | AbstractType<any>, retain?: number, delete?: number, attributes?: Object<string, any> }>}\n */\n this._delta = null\n }\n\n /**\n * Computes the path from `y` to the changed type.\n *\n * @todo v14 should standardize on path: Array<{parent, index}> because that is easier to work with.\n *\n * The following property holds:\n * @example\n * let type = y\n * event.path.forEach(dir => {\n * type = type.get(dir)\n * })\n * type === event.target // => true\n */\n get path () {\n // @ts-ignore _item is defined because target is integrated\n return getPathTo(this.currentTarget, this.target)\n }\n\n /**\n * Check if a struct is deleted by this event.\n *\n * In contrast to change.deleted, this method also returns true if the struct was added and then deleted.\n *\n * @param {AbstractStruct} struct\n * @return {boolean}\n */\n deletes (struct) {\n return isDeleted(this.transaction.deleteSet, struct.id)\n }\n\n /**\n * @type {Map<string, { action: 'add' | 'update' | 'delete', oldValue: any, newValue: any }>}\n */\n get keys () {\n if (this._keys === null) {\n const keys = new Map()\n const target = this.target\n const changed = /** @type Set<string|null> */ (this.transaction.changed.get(target))\n changed.forEach(key => {\n if (key !== null) {\n const item = /** @type {Item} */ (target._map.get(key))\n /**\n * @type {'delete' | 'add' | 'update'}\n */\n let action\n let oldValue\n if (this.adds(item)) {\n let prev = item.left\n while (prev !== null && this.adds(prev)) {\n prev = prev.left\n }\n if (this.deletes(item)) {\n if (prev !== null && this.deletes(prev)) {\n action = 'delete'\n oldValue = array.last(prev.content.getContent())\n } else {\n return\n }\n } else {\n if (prev !== null && this.deletes(prev)) {\n action = 'update'\n oldValue = array.last(prev.content.getContent())\n } else {\n action = 'add'\n oldValue = undefined\n }\n }\n } else {\n if (this.deletes(item)) {\n action = 'delete'\n oldValue = array.last(/** @type {Item} */ item.content.getContent())\n } else {\n return // nop\n }\n }\n keys.set(key, { action, oldValue })\n }\n })\n this._keys = keys\n }\n return this._keys\n }\n\n /**\n * This is a computed property. Note that this can only be safely computed during the\n * event call. Computing this property after other changes happened might result in\n * unexpected behavior (incorrect computation of deltas). A safe way to collect changes\n * is to store the `changes` or the `delta` object. Avoid storing the `transaction` object.\n *\n * @type {Array<{insert?: string | Array<any> | object | AbstractType<any>, retain?: number, delete?: number, attributes?: Object<string, any>}>}\n */\n get delta () {\n return this.changes.delta\n }\n\n /**\n * Check if a struct is added by this event.\n *\n * In contrast to change.deleted, this method also returns true if the struct was added and then deleted.\n *\n * @param {AbstractStruct} struct\n * @return {boolean}\n */\n adds (struct) {\n return struct.id.clock >= (this.transaction.beforeState.get(struct.id.client) || 0)\n }\n\n /**\n * This is a computed property. Note that this can only be safely computed during the\n * event call. Computing this property after other changes happened might result in\n * unexpected behavior (incorrect computation of deltas). A safe way to collect changes\n * is to store the `changes` or the `delta` object. Avoid storing the `transaction` object.\n *\n * @type {{added:Set<Item>,deleted:Set<Item>,keys:Map<string,{action:'add'|'update'|'delete',oldValue:any}>,delta:Array<{insert?:Array<any>|string, delete?:number, retain?:number}>}}\n */\n get changes () {\n let changes = this._changes\n if (changes === null) {\n const target = this.target\n const added = set.create()\n const deleted = set.create()\n /**\n * @type {Array<{insert:Array<any>}|{delete:number}|{retain:number}>}\n */\n const delta = []\n changes = {\n added,\n deleted,\n delta,\n keys: this.keys\n }\n const changed = /** @type Set<string|null> */ (this.transaction.changed.get(target))\n if (changed.has(null)) {\n /**\n * @type {any}\n */\n let lastOp = null\n const packOp = () => {\n if (lastOp) {\n delta.push(lastOp)\n }\n }\n for (let item = target._start; item !== null; item = item.right) {\n if (item.deleted) {\n if (this.deletes(item) && !this.adds(item)) {\n if (lastOp === null || lastOp.delete === undefined) {\n packOp()\n lastOp = { delete: 0 }\n }\n lastOp.delete += item.length\n deleted.add(item)\n } // else nop\n } else {\n if (this.adds(item)) {\n if (lastOp === null || lastOp.insert === undefined) {\n packOp()\n lastOp = { insert: [] }\n }\n lastOp.insert = lastOp.insert.concat(item.content.getContent())\n added.add(item)\n } else {\n if (lastOp === null || lastOp.retain === undefined) {\n packOp()\n lastOp = { retain: 0 }\n }\n lastOp.retain += item.length\n }\n }\n }\n if (lastOp !== null && lastOp.retain === undefined) {\n packOp()\n }\n }\n this._changes = changes\n }\n return /** @type {any} */ (changes)\n }\n}\n\n/**\n * Compute the path from this type to the specified target.\n *\n * @example\n * // `child` should be accessible via `type.get(path[0]).get(path[1])..`\n * const path = type.getPathTo(child)\n * // assuming `type instanceof YArray`\n * console.log(path) // might look like => [2, 'key1']\n * child === type.get(path[0]).get(path[1])\n *\n * @param {AbstractType<any>} parent\n * @param {AbstractType<any>} child target\n * @return {Array<string|number>} Path to the target\n *\n * @private\n * @function\n */\nconst getPathTo = (parent, child) => {\n const path = []\n while (child._item !== null && child !== parent) {\n if (child._item.parentSub !== null) {\n // parent is map-ish\n path.unshift(child._item.parentSub)\n } else {\n // parent is array-ish\n let i = 0\n let c = /** @type {AbstractType<any>} */ (child._item.parent)._start\n while (c !== child._item && c !== null) {\n if (!c.deleted) {\n i++\n }\n c = c.right\n }\n path.unshift(i)\n }\n child = /** @type {AbstractType<any>} */ (child._item.parent)\n }\n return path\n}\n","/**\n * Utility module to create and manipulate Iterators.\n *\n * @module iterator\n */\n\n/**\n * @template T,R\n * @param {Iterator<T>} iterator\n * @param {function(T):R} f\n * @return {IterableIterator<R>}\n */\nexport const mapIterator = (iterator, f) => ({\n [Symbol.iterator] () {\n return this\n },\n // @ts-ignore\n next () {\n const r = iterator.next()\n return { value: r.done ? undefined : f(r.value), done: r.done }\n }\n})\n\n/**\n * @template T\n * @param {function():IteratorResult<T>} next\n * @return {IterableIterator<T>}\n */\nexport const createIterator = next => ({\n /**\n * @return {IterableIterator<T>}\n */\n [Symbol.iterator] () {\n return this\n },\n // @ts-ignore\n next\n})\n\n/**\n * @template T\n * @param {Iterator<T>} iterator\n * @param {function(T):boolean} filter\n */\nexport const iteratorFilter = (iterator, filter) => createIterator(() => {\n let res\n do {\n res = iterator.next()\n } while (!res.done && !filter(res.value))\n return res\n})\n\n/**\n * @template T,M\n * @param {Iterator<T>} iterator\n * @param {function(T):M} fmap\n */\nexport const iteratorMap = (iterator, fmap) => createIterator(() => {\n const { done, value } = iterator.next()\n return { done, value: done ? undefined : fmap(value) }\n})\n","\nimport {\n removeEventHandlerListener,\n callEventHandlerListeners,\n addEventHandlerListener,\n createEventHandler,\n getState,\n isVisible,\n ContentType,\n createID,\n ContentAny,\n ContentBinary,\n getItemCleanStart,\n ContentDoc, YText, YArray, UpdateEncoderV1, UpdateEncoderV2, Doc, Snapshot, Transaction, EventHandler, YEvent, Item, // eslint-disable-line\n} from '../internals.js'\n\nimport * as map from 'lib0/map'\nimport * as iterator from 'lib0/iterator'\nimport * as error from 'lib0/error'\nimport * as math from 'lib0/math'\n\nconst maxSearchMarker = 80\n\n/**\n * A unique timestamp that identifies each marker.\n *\n * Time is relative,.. this is more like an ever-increasing clock.\n *\n * @type {number}\n */\nlet globalSearchMarkerTimestamp = 0\n\nexport class ArraySearchMarker {\n /**\n * @param {Item} p\n * @param {number} index\n */\n constructor (p, index) {\n p.marker = true\n this.p = p\n this.index = index\n this.timestamp = globalSearchMarkerTimestamp++\n }\n}\n\n/**\n * @param {ArraySearchMarker} marker\n */\nconst refreshMarkerTimestamp = marker => { marker.timestamp = globalSearchMarkerTimestamp++ }\n\n/**\n * This is rather complex so this function is the only thing that should overwrite a marker\n *\n * @param {ArraySearchMarker} marker\n * @param {Item} p\n * @param {number} index\n */\nconst overwriteMarker = (marker, p, index) => {\n marker.p.marker = false\n marker.p = p\n p.marker = true\n marker.index = index\n marker.timestamp = globalSearchMarkerTimestamp++\n}\n\n/**\n * @param {Array<ArraySearchMarker>} searchMarker\n * @param {Item} p\n * @param {number} index\n */\nconst markPosition = (searchMarker, p, index) => {\n if (searchMarker.length >= maxSearchMarker) {\n // override oldest marker (we don't want to create more objects)\n const marker = searchMarker.reduce((a, b) => a.timestamp < b.timestamp ? a : b)\n overwriteMarker(marker, p, index)\n return marker\n } else {\n // create new marker\n const pm = new ArraySearchMarker(p, index)\n searchMarker.push(pm)\n return pm\n }\n}\n\n/**\n * Search marker help us to find positions in the associative array faster.\n *\n * They speed up the process of finding a position without much bookkeeping.\n *\n * A maximum of `maxSearchMarker` objects are created.\n *\n * This function always returns a refreshed marker (updated timestamp)\n *\n * @param {AbstractType<any>} yarray\n * @param {number} index\n */\nexport const findMarker = (yarray, index) => {\n if (yarray._start === null || index === 0 || yarray._searchMarker === null) {\n return null\n }\n const marker = yarray._searchMarker.length === 0 ? null : yarray._searchMarker.reduce((a, b) => math.abs(index - a.index) < math.abs(index - b.index) ? a : b)\n let p = yarray._start\n let pindex = 0\n if (marker !== null) {\n p = marker.p\n pindex = marker.index\n refreshMarkerTimestamp(marker) // we used it, we might need to use it again\n }\n // iterate to right if possible\n while (p.right !== null && pindex < index) {\n if (!p.deleted && p.countable) {\n if (index < pindex + p.length) {\n break\n }\n pindex += p.length\n }\n p = p.right\n }\n // iterate to left if necessary (might be that pindex > index)\n while (p.left !== null && pindex > index) {\n p = p.left\n if (!p.deleted && p.countable) {\n pindex -= p.length\n }\n }\n // we want to make sure that p can't be merged with left, because that would screw up everything\n // in that cas just return what we have (it is most likely the best marker anyway)\n // iterate to left until p can't be merged with left\n while (p.left !== null && p.left.id.client === p.id.client && p.left.id.clock + p.left.length === p.id.clock) {\n p = p.left\n if (!p.deleted && p.countable) {\n pindex -= p.length\n }\n }\n\n // @todo remove!\n // assure position\n // {\n // let start = yarray._start\n // let pos = 0\n // while (start !== p) {\n // if (!start.deleted && start.countable) {\n // pos += start.length\n // }\n // start = /** @type {Item} */ (start.right)\n // }\n // if (pos !== pindex) {\n // debugger\n // throw new Error('Gotcha position fail!')\n // }\n // }\n // if (marker) {\n // if (window.lengthes == null) {\n // window.lengthes = []\n // window.getLengthes = () => window.lengthes.sort((a, b) => a - b)\n // }\n // window.lengthes.push(marker.index - pindex)\n // console.log('distance', marker.index - pindex, 'len', p && p.parent.length)\n // }\n if (marker !== null && math.abs(marker.index - pindex) < /** @type {YText|YArray<any>} */ (p.parent).length / maxSearchMarker) {\n // adjust existing marker\n overwriteMarker(marker, p, pindex)\n return marker\n } else {\n // create new marker\n return markPosition(yarray._searchMarker, p, pindex)\n }\n}\n\n/**\n * Update markers when a change happened.\n *\n * This should be called before doing a deletion!\n *\n * @param {Array<ArraySearchMarker>} searchMarker\n * @param {number} index\n * @param {number} len If insertion, len is positive. If deletion, len is negative.\n */\nexport const updateMarkerChanges = (searchMarker, index, len) => {\n for (let i = searchMarker.length - 1; i >= 0; i--) {\n const m = searchMarker[i]\n if (len > 0) {\n /**\n * @type {Item|null}\n */\n let p = m.p\n p.marker = false\n // Ideally we just want to do a simple position comparison, but this will only work if\n // search markers don't point to deleted items for formats.\n // Iterate marker to prev undeleted countable position so we know what to do when updating a position\n while (p && (p.deleted || !p.countable)) {\n p = p.left\n if (p && !p.deleted && p.countable) {\n // adjust position. the loop should break now\n m.index -= p.length\n }\n }\n if (p === null || p.marker === true) {\n // remove search marker if updated position is null or if position is already marked\n searchMarker.splice(i, 1)\n continue\n }\n m.p = p\n p.marker = true\n }\n if (index < m.index || (len > 0 && index === m.index)) { // a simple index <= m.index check would actually suffice\n m.index = math.max(index, m.index + len)\n }\n }\n}\n\n/**\n * Accumulate all (list) children of a type and return them as an Array.\n *\n * @param {AbstractType<any>} t\n * @return {Array<Item>}\n */\nexport const getTypeChildren = t => {\n let s = t._start\n const arr = []\n while (s) {\n arr.push(s)\n s = s.right\n }\n return arr\n}\n\n/**\n * Call event listeners with an event. This will also add an event to all\n * parents (for `.observeDeep` handlers).\n *\n * @template EventType\n * @param {AbstractType<EventType>} type\n * @param {Transaction} transaction\n * @param {EventType} event\n */\nexport const callTypeObservers = (type, transaction, event) => {\n const changedType = type\n const changedParentTypes = transaction.changedParentTypes\n while (true) {\n // @ts-ignore\n map.setIfUndefined(changedParentTypes, type, () => []).push(event)\n if (type._item === null) {\n break\n }\n type = /** @type {AbstractType<any>} */ (type._item.parent)\n }\n callEventHandlerListeners(changedType._eH, event, transaction)\n}\n\n/**\n * @template EventType\n * Abstract Yjs Type class\n */\nexport class AbstractType {\n constructor () {\n /**\n * @type {Item|null}\n */\n this._item = null\n /**\n * @type {Map<string,Item>}\n */\n this._map = new Map()\n /**\n * @type {Item|null}\n */\n this._start = null\n /**\n * @type {Doc|null}\n */\n this.doc = null\n this._length = 0\n /**\n * Event handlers\n * @type {EventHandler<EventType,Transaction>}\n */\n this._eH = createEventHandler()\n /**\n * Deep event handlers\n * @type {EventHandler<Array<YEvent<any>>,Transaction>}\n */\n this._dEH = createEventHandler()\n /**\n * @type {null | Array<ArraySearchMarker>}\n */\n this._searchMarker = null\n }\n\n /**\n * @return {AbstractType<any>|null}\n */\n get parent () {\n return this._item ? /** @type {AbstractType<any>} */ (this._item.parent) : null\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item|null} item\n */\n _integrate (y, item) {\n this.doc = y\n this._item = item\n }\n\n /**\n * @return {AbstractType<EventType>}\n */\n _copy () {\n throw error.methodUnimplemented()\n }\n\n /**\n * @return {AbstractType<EventType>}\n */\n clone () {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} _encoder\n */\n _write (_encoder) { }\n\n /**\n * The first non-deleted item\n */\n get _first () {\n let n = this._start\n while (n !== null && n.deleted) {\n n = n.right\n }\n return n\n }\n\n /**\n * Creates YEvent and calls all type observers.\n * Must be implemented by each type.\n *\n * @param {Transaction} transaction\n * @param {Set<null|string>} _parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, _parentSubs) {\n if (!transaction.local && this._searchMarker) {\n this._searchMarker.length = 0\n }\n }\n\n /**\n * Observe all events that are created on this type.\n *\n * @param {function(EventType, Transaction):void} f Observer function\n */\n observe (f) {\n addEventHandlerListener(this._eH, f)\n }\n\n /**\n * Observe all events that are created by this type and its children.\n *\n * @param {function(Array<YEvent<any>>,Transaction):void} f Observer function\n */\n observeDeep (f) {\n addEventHandlerListener(this._dEH, f)\n }\n\n /**\n * Unregister an observer function.\n *\n * @param {function(EventType,Transaction):void} f Observer function\n */\n unobserve (f) {\n removeEventHandlerListener(this._eH, f)\n }\n\n /**\n * Unregister an observer function.\n *\n * @param {function(Array<YEvent<any>>,Transaction):void} f Observer function\n */\n unobserveDeep (f) {\n removeEventHandlerListener(this._dEH, f)\n }\n\n /**\n * @abstract\n * @return {any}\n */\n toJSON () {}\n}\n\n/**\n * @param {AbstractType<any>} type\n * @param {number} start\n * @param {number} end\n * @return {Array<any>}\n *\n * @private\n * @function\n */\nexport const typeListSlice = (type, start, end) => {\n if (start < 0) {\n start = type._length + start\n }\n if (end < 0) {\n end = type._length + end\n }\n let len = end - start\n const cs = []\n let n = type._start\n while (n !== null && len > 0) {\n if (n.countable && !n.deleted) {\n const c = n.content.getContent()\n if (c.length <= start) {\n start -= c.length\n } else {\n for (let i = start; i < c.length && len > 0; i++) {\n cs.push(c[i])\n len--\n }\n start = 0\n }\n }\n n = n.right\n }\n return cs\n}\n\n/**\n * @param {AbstractType<any>} type\n * @return {Array<any>}\n *\n * @private\n * @function\n */\nexport const typeListToArray = type => {\n const cs = []\n let n = type._start\n while (n !== null) {\n if (n.countable && !n.deleted) {\n const c = n.content.getContent()\n for (let i = 0; i < c.length; i++) {\n cs.push(c[i])\n }\n }\n n = n.right\n }\n return cs\n}\n\n/**\n * @param {AbstractType<any>} type\n * @param {Snapshot} snapshot\n * @return {Array<any>}\n *\n * @private\n * @function\n */\nexport const typeListToArraySnapshot = (type, snapshot) => {\n const cs = []\n let n = type._start\n while (n !== null) {\n if (n.countable && isVisible(n, snapshot)) {\n const c = n.content.getContent()\n for (let i = 0; i < c.length; i++) {\n cs.push(c[i])\n }\n }\n n = n.right\n }\n return cs\n}\n\n/**\n * Executes a provided function on once on overy element of this YArray.\n *\n * @param {AbstractType<any>} type\n * @param {function(any,number,any):void} f A function to execute on every element of this YArray.\n *\n * @private\n * @function\n */\nexport const typeListForEach = (type, f) => {\n let index = 0\n let n = type._start\n while (n !== null) {\n if (n.countable && !n.deleted) {\n const c = n.content.getContent()\n for (let i = 0; i < c.length; i++) {\n f(c[i], index++, type)\n }\n }\n n = n.right\n }\n}\n\n/**\n * @template C,R\n * @param {AbstractType<any>} type\n * @param {function(C,number,AbstractType<any>):R} f\n * @return {Array<R>}\n *\n * @private\n * @function\n */\nexport const typeListMap = (type, f) => {\n /**\n * @type {Array<any>}\n */\n const result = []\n typeListForEach(type, (c, i) => {\n result.push(f(c, i, type))\n })\n return result\n}\n\n/**\n * @param {AbstractType<any>} type\n * @return {IterableIterator<any>}\n *\n * @private\n * @function\n */\nexport const typeListCreateIterator = type => {\n let n = type._start\n /**\n * @type {Array<any>|null}\n */\n let currentContent = null\n let currentContentIndex = 0\n return {\n [Symbol.iterator] () {\n return this\n },\n next: () => {\n // find some content\n if (currentContent === null) {\n while (n !== null && n.deleted) {\n n = n.right\n }\n // check if we reached the end, no need to check currentContent, because it does not exist\n if (n === null) {\n return {\n done: true,\n value: undefined\n }\n }\n // we found n, so we can set currentContent\n currentContent = n.content.getContent()\n currentContentIndex = 0\n n = n.right // we used the content of n, now iterate to next\n }\n const value = currentContent[currentContentIndex++]\n // check if we need to empty currentContent\n if (currentContent.length <= currentContentIndex) {\n currentContent = null\n }\n return {\n done: false,\n value\n }\n }\n }\n}\n\n/**\n * Executes a provided function on once on overy element of this YArray.\n * Operates on a snapshotted state of the document.\n *\n * @param {AbstractType<any>} type\n * @param {function(any,number,AbstractType<any>):void} f A function to execute on every element of this YArray.\n * @param {Snapshot} snapshot\n *\n * @private\n * @function\n */\nexport const typeListForEachSnapshot = (type, f, snapshot) => {\n let index = 0\n let n = type._start\n while (n !== null) {\n if (n.countable && isVisible(n, snapshot)) {\n const c = n.content.getContent()\n for (let i = 0; i < c.length; i++) {\n f(c[i], index++, type)\n }\n }\n n = n.right\n }\n}\n\n/**\n * @param {AbstractType<any>} type\n * @param {number} index\n * @return {any}\n *\n * @private\n * @function\n */\nexport const typeListGet = (type, index) => {\n const marker = findMarker(type, index)\n let n = type._start\n if (marker !== null) {\n n = marker.p\n index -= marker.index\n }\n for (; n !== null; n = n.right) {\n if (!n.deleted && n.countable) {\n if (index < n.length) {\n return n.content.getContent()[index]\n }\n index -= n.length\n }\n }\n}\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {Item?} referenceItem\n * @param {Array<Object<string,any>|Array<any>|boolean|number|null|string|Uint8Array>} content\n *\n * @private\n * @function\n */\nexport const typeListInsertGenericsAfter = (transaction, parent, referenceItem, content) => {\n let left = referenceItem\n const doc = transaction.doc\n const ownClientId = doc.clientID\n const store = doc.store\n const right = referenceItem === null ? parent._start : referenceItem.right\n /**\n * @type {Array<Object|Array<any>|number|null>}\n */\n let jsonContent = []\n const packJsonContent = () => {\n if (jsonContent.length > 0) {\n left = new Item(createID(ownClientId, getState(store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentAny(jsonContent))\n left.integrate(transaction, 0)\n jsonContent = []\n }\n }\n content.forEach(c => {\n if (c === null) {\n jsonContent.push(c)\n } else {\n switch (c.constructor) {\n case Number:\n case Object:\n case Boolean:\n case Array:\n case String:\n jsonContent.push(c)\n break\n default:\n packJsonContent()\n switch (c.constructor) {\n case Uint8Array:\n case ArrayBuffer:\n left = new Item(createID(ownClientId, getState(store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentBinary(new Uint8Array(/** @type {Uint8Array} */ (c))))\n left.integrate(transaction, 0)\n break\n case Doc:\n left = new Item(createID(ownClientId, getState(store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentDoc(/** @type {Doc} */ (c)))\n left.integrate(transaction, 0)\n break\n default:\n if (c instanceof AbstractType) {\n left = new Item(createID(ownClientId, getState(store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentType(c))\n left.integrate(transaction, 0)\n } else {\n throw new Error('Unexpected content type in insert operation')\n }\n }\n }\n }\n })\n packJsonContent()\n}\n\nconst lengthExceeded = error.create('Length exceeded!')\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {number} index\n * @param {Array<Object<string,any>|Array<any>|number|null|string|Uint8Array>} content\n *\n * @private\n * @function\n */\nexport const typeListInsertGenerics = (transaction, parent, index, content) => {\n if (index > parent._length) {\n throw lengthExceeded\n }\n if (index === 0) {\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, index, content.length)\n }\n return typeListInsertGenericsAfter(transaction, parent, null, content)\n }\n const startIndex = index\n const marker = findMarker(parent, index)\n let n = parent._start\n if (marker !== null) {\n n = marker.p\n index -= marker.index\n // we need to iterate one to the left so that the algorithm works\n if (index === 0) {\n // @todo refactor this as it actually doesn't consider formats\n n = n.prev // important! get the left undeleted item so that we can actually decrease index\n index += (n && n.countable && !n.deleted) ? n.length : 0\n }\n }\n for (; n !== null; n = n.right) {\n if (!n.deleted && n.countable) {\n if (index <= n.length) {\n if (index < n.length) {\n // insert in-between\n getItemCleanStart(transaction, createID(n.id.client, n.id.clock + index))\n }\n break\n }\n index -= n.length\n }\n }\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, startIndex, content.length)\n }\n return typeListInsertGenericsAfter(transaction, parent, n, content)\n}\n\n/**\n * Pushing content is special as we generally want to push after the last item. So we don't have to update\n * the serach marker.\n *\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {Array<Object<string,any>|Array<any>|number|null|string|Uint8Array>} content\n *\n * @private\n * @function\n */\nexport const typeListPushGenerics = (transaction, parent, content) => {\n // Use the marker with the highest index and iterate to the right.\n const marker = (parent._searchMarker || []).reduce((maxMarker, currMarker) => currMarker.index > maxMarker.index ? currMarker : maxMarker, { index: 0, p: parent._start })\n let n = marker.p\n if (n) {\n while (n.right) {\n n = n.right\n }\n }\n return typeListInsertGenericsAfter(transaction, parent, n, content)\n}\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {number} index\n * @param {number} length\n *\n * @private\n * @function\n */\nexport const typeListDelete = (transaction, parent, index, length) => {\n if (length === 0) { return }\n const startIndex = index\n const startLength = length\n const marker = findMarker(parent, index)\n let n = parent._start\n if (marker !== null) {\n n = marker.p\n index -= marker.index\n }\n // compute the first item to be deleted\n for (; n !== null && index > 0; n = n.right) {\n if (!n.deleted && n.countable) {\n if (index < n.length) {\n getItemCleanStart(transaction, createID(n.id.client, n.id.clock + index))\n }\n index -= n.length\n }\n }\n // delete all items until done\n while (length > 0 && n !== null) {\n if (!n.deleted) {\n if (length < n.length) {\n getItemCleanStart(transaction, createID(n.id.client, n.id.clock + length))\n }\n n.delete(transaction)\n length -= n.length\n }\n n = n.right\n }\n if (length > 0) {\n throw lengthExceeded\n }\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, startIndex, -startLength + length /* in case we remove the above exception */)\n }\n}\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {string} key\n *\n * @private\n * @function\n */\nexport const typeMapDelete = (transaction, parent, key) => {\n const c = parent._map.get(key)\n if (c !== undefined) {\n c.delete(transaction)\n }\n}\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {string} key\n * @param {Object|number|null|Array<any>|string|Uint8Array|AbstractType<any>} value\n *\n * @private\n * @function\n */\nexport const typeMapSet = (transaction, parent, key, value) => {\n const left = parent._map.get(key) || null\n const doc = transaction.doc\n const ownClientId = doc.clientID\n let content\n if (value == null) {\n content = new ContentAny([value])\n } else {\n switch (value.constructor) {\n case Number:\n case Object:\n case Boolean:\n case Array:\n case String:\n content = new ContentAny([value])\n break\n case Uint8Array:\n content = new ContentBinary(/** @type {Uint8Array} */ (value))\n break\n case Doc:\n content = new ContentDoc(/** @type {Doc} */ (value))\n break\n default:\n if (value instanceof AbstractType) {\n content = new ContentType(value)\n } else {\n throw new Error('Unexpected content type')\n }\n }\n }\n new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, null, null, parent, key, content).integrate(transaction, 0)\n}\n\n/**\n * @param {AbstractType<any>} parent\n * @param {string} key\n * @return {Object<string,any>|number|null|Array<any>|string|Uint8Array|AbstractType<any>|undefined}\n *\n * @private\n * @function\n */\nexport const typeMapGet = (parent, key) => {\n const val = parent._map.get(key)\n return val !== undefined && !val.deleted ? val.content.getContent()[val.length - 1] : undefined\n}\n\n/**\n * @param {AbstractType<any>} parent\n * @return {Object<string,Object<string,any>|number|null|Array<any>|string|Uint8Array|AbstractType<any>|undefined>}\n *\n * @private\n * @function\n */\nexport const typeMapGetAll = (parent) => {\n /**\n * @type {Object<string,any>}\n */\n const res = {}\n parent._map.forEach((value, key) => {\n if (!value.deleted) {\n res[key] = value.content.getContent()[value.length - 1]\n }\n })\n return res\n}\n\n/**\n * @param {AbstractType<any>} parent\n * @param {string} key\n * @return {boolean}\n *\n * @private\n * @function\n */\nexport const typeMapHas = (parent, key) => {\n const val = parent._map.get(key)\n return val !== undefined && !val.deleted\n}\n\n/**\n * @param {AbstractType<any>} parent\n * @param {string} key\n * @param {Snapshot} snapshot\n * @return {Object<string,any>|number|null|Array<any>|string|Uint8Array|AbstractType<any>|undefined}\n *\n * @private\n * @function\n */\nexport const typeMapGetSnapshot = (parent, key, snapshot) => {\n let v = parent._map.get(key) || null\n while (v !== null && (!snapshot.sv.has(v.id.client) || v.id.clock >= (snapshot.sv.get(v.id.client) || 0))) {\n v = v.left\n }\n return v !== null && isVisible(v, snapshot) ? v.content.getContent()[v.length - 1] : undefined\n}\n\n/**\n * @param {Map<string,Item>} map\n * @return {IterableIterator<Array<any>>}\n *\n * @private\n * @function\n */\nexport const createMapIterator = map => iterator.iteratorFilter(map.entries(), /** @param {any} entry */ entry => !entry[1].deleted)\n","/**\n * @module YArray\n */\n\nimport {\n YEvent,\n AbstractType,\n typeListGet,\n typeListToArray,\n typeListForEach,\n typeListCreateIterator,\n typeListInsertGenerics,\n typeListPushGenerics,\n typeListDelete,\n typeListMap,\n YArrayRefID,\n callTypeObservers,\n transact,\n ArraySearchMarker, UpdateDecoderV1, UpdateDecoderV2, UpdateEncoderV1, UpdateEncoderV2, Doc, Transaction, Item // eslint-disable-line\n} from '../internals.js'\nimport { typeListSlice } from './AbstractType.js'\n\n/**\n * Event that describes the changes on a YArray\n * @template T\n * @extends YEvent<YArray<T>>\n */\nexport class YArrayEvent extends YEvent {\n /**\n * @param {YArray<T>} yarray The changed type\n * @param {Transaction} transaction The transaction object\n */\n constructor (yarray, transaction) {\n super(yarray, transaction)\n this._transaction = transaction\n }\n}\n\n/**\n * A shared Array implementation.\n * @template T\n * @extends AbstractType<YArrayEvent<T>>\n * @implements {Iterable<T>}\n */\nexport class YArray extends AbstractType {\n constructor () {\n super()\n /**\n * @type {Array<any>?}\n * @private\n */\n this._prelimContent = []\n /**\n * @type {Array<ArraySearchMarker>}\n */\n this._searchMarker = []\n }\n\n /**\n * Construct a new YArray containing the specified items.\n * @template {Object<string,any>|Array<any>|number|null|string|Uint8Array} T\n * @param {Array<T>} items\n * @return {YArray<T>}\n */\n static from (items) {\n /**\n * @type {YArray<T>}\n */\n const a = new YArray()\n a.push(items)\n return a\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item)\n this.insert(0, /** @type {Array<any>} */ (this._prelimContent))\n this._prelimContent = null\n }\n\n /**\n * @return {YArray<T>}\n */\n _copy () {\n return new YArray()\n }\n\n /**\n * @return {YArray<T>}\n */\n clone () {\n /**\n * @type {YArray<T>}\n */\n const arr = new YArray()\n arr.insert(0, this.toArray().map(el =>\n el instanceof AbstractType ? /** @type {typeof el} */ (el.clone()) : el\n ))\n return arr\n }\n\n get length () {\n return this._prelimContent === null ? this._length : this._prelimContent.length\n }\n\n /**\n * Creates YArrayEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set<null|string>} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n super._callObserver(transaction, parentSubs)\n callTypeObservers(this, transaction, new YArrayEvent(this, transaction))\n }\n\n /**\n * Inserts new content at an index.\n *\n * Important: This function expects an array of content. Not just a content\n * object. The reason for this \"weirdness\" is that inserting several elements\n * is very efficient when it is done as a single operation.\n *\n * @example\n * // Insert character 'a' at position 0\n * yarray.insert(0, ['a'])\n * // Insert numbers 1, 2 at position 1\n * yarray.insert(1, [1, 2])\n *\n * @param {number} index The index to insert content at.\n * @param {Array<T>} content The array of content\n */\n insert (index, content) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListInsertGenerics(transaction, this, index, /** @type {any} */ (content))\n })\n } else {\n /** @type {Array<any>} */ (this._prelimContent).splice(index, 0, ...content)\n }\n }\n\n /**\n * Appends content to this YArray.\n *\n * @param {Array<T>} content Array of content to append.\n *\n * @todo Use the following implementation in all types.\n */\n push (content) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListPushGenerics(transaction, this, /** @type {any} */ (content))\n })\n } else {\n /** @type {Array<any>} */ (this._prelimContent).push(...content)\n }\n }\n\n /**\n * Preppends content to this YArray.\n *\n * @param {Array<T>} content Array of content to preppend.\n */\n unshift (content) {\n this.insert(0, content)\n }\n\n /**\n * Deletes elements starting from an index.\n *\n * @param {number} index Index at which to start deleting elements\n * @param {number} length The number of elements to remove. Defaults to 1.\n */\n delete (index, length = 1) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListDelete(transaction, this, index, length)\n })\n } else {\n /** @type {Array<any>} */ (this._prelimContent).splice(index, length)\n }\n }\n\n /**\n * Returns the i-th element from a YArray.\n *\n * @param {number} index The index of the element to return from the YArray\n * @return {T}\n */\n get (index) {\n return typeListGet(this, index)\n }\n\n /**\n * Transforms this YArray to a JavaScript Array.\n *\n * @return {Array<T>}\n */\n toArray () {\n return typeListToArray(this)\n }\n\n /**\n * Transforms this YArray to a JavaScript Array.\n *\n * @param {number} [start]\n * @param {number} [end]\n * @return {Array<T>}\n */\n slice (start = 0, end = this.length) {\n return typeListSlice(this, start, end)\n }\n\n /**\n * Transforms this Shared Type to a JSON object.\n *\n * @return {Array<any>}\n */\n toJSON () {\n return this.map(c => c instanceof AbstractType ? c.toJSON() : c)\n }\n\n /**\n * Returns an Array with the result of calling a provided function on every\n * element of this YArray.\n *\n * @template M\n * @param {function(T,number,YArray<T>):M} f Function that produces an element of the new Array\n * @return {Array<M>} A new array with each element being the result of the\n * callback function\n */\n map (f) {\n return typeListMap(this, /** @type {any} */ (f))\n }\n\n /**\n * Executes a provided function once on overy element of this YArray.\n *\n * @param {function(T,number,YArray<T>):void} f A function to execute on every element of this YArray.\n */\n forEach (f) {\n typeListForEach(this, f)\n }\n\n /**\n * @return {IterableIterator<T>}\n */\n [Symbol.iterator] () {\n return typeListCreateIterator(this)\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YArrayRefID)\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} _decoder\n *\n * @private\n * @function\n */\nexport const readYArray = _decoder => new YArray()\n","\n/**\n * @module YMap\n */\n\nimport {\n YEvent,\n AbstractType,\n typeMapDelete,\n typeMapSet,\n typeMapGet,\n typeMapHas,\n createMapIterator,\n YMapRefID,\n callTypeObservers,\n transact,\n UpdateDecoderV1, UpdateDecoderV2, UpdateEncoderV1, UpdateEncoderV2, Doc, Transaction, Item // eslint-disable-line\n} from '../internals.js'\n\nimport * as iterator from 'lib0/iterator'\n\n/**\n * @template T\n * @extends YEvent<YMap<T>>\n * Event that describes the changes on a YMap.\n */\nexport class YMapEvent extends YEvent {\n /**\n * @param {YMap<T>} ymap The YArray that changed.\n * @param {Transaction} transaction\n * @param {Set<any>} subs The keys that changed.\n */\n constructor (ymap, transaction, subs) {\n super(ymap, transaction)\n this.keysChanged = subs\n }\n}\n\n/**\n * @template MapType\n * A shared Map implementation.\n *\n * @extends AbstractType<YMapEvent<MapType>>\n * @implements {Iterable<MapType>}\n */\nexport class YMap extends AbstractType {\n /**\n *\n * @param {Iterable<readonly [string, any]>=} entries - an optional iterable to initialize the YMap\n */\n constructor (entries) {\n super()\n /**\n * @type {Map<string,any>?}\n * @private\n */\n this._prelimContent = null\n\n if (entries === undefined) {\n this._prelimContent = new Map()\n } else {\n this._prelimContent = new Map(entries)\n }\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item)\n ;/** @type {Map<string, any>} */ (this._prelimContent).forEach((value, key) => {\n this.set(key, value)\n })\n this._prelimContent = null\n }\n\n /**\n * @return {YMap<MapType>}\n */\n _copy () {\n return new YMap()\n }\n\n /**\n * @return {YMap<MapType>}\n */\n clone () {\n /**\n * @type {YMap<MapType>}\n */\n const map = new YMap()\n this.forEach((value, key) => {\n map.set(key, value instanceof AbstractType ? /** @type {typeof value} */ (value.clone()) : value)\n })\n return map\n }\n\n /**\n * Creates YMapEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set<null|string>} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n callTypeObservers(this, transaction, new YMapEvent(this, transaction, parentSubs))\n }\n\n /**\n * Transforms this Shared Type to a JSON object.\n *\n * @return {Object<string,any>}\n */\n toJSON () {\n /**\n * @type {Object<string,MapType>}\n */\n const map = {}\n this._map.forEach((item, key) => {\n if (!item.deleted) {\n const v = item.content.getContent()[item.length - 1]\n map[key] = v instanceof AbstractType ? v.toJSON() : v\n }\n })\n return map\n }\n\n /**\n * Returns the size of the YMap (count of key/value pairs)\n *\n * @return {number}\n */\n get size () {\n return [...createMapIterator(this._map)].length\n }\n\n /**\n * Returns the keys for each element in the YMap Type.\n *\n * @return {IterableIterator<string>}\n */\n keys () {\n return iterator.iteratorMap(createMapIterator(this._map), /** @param {any} v */ v => v[0])\n }\n\n /**\n * Returns the values for each element in the YMap Type.\n *\n * @return {IterableIterator<any>}\n */\n values () {\n return iterator.iteratorMap(createMapIterator(this._map), /** @param {any} v */ v => v[1].content.getContent()[v[1].length - 1])\n }\n\n /**\n * Returns an Iterator of [key, value] pairs\n *\n * @return {IterableIterator<any>}\n */\n entries () {\n return iterator.iteratorMap(createMapIterator(this._map), /** @param {any} v */ v => [v[0], v[1].content.getContent()[v[1].length - 1]])\n }\n\n /**\n * Executes a provided function on once on every key-value pair.\n *\n * @param {function(MapType,string,YMap<MapType>):void} f A function to execute on every element of this YArray.\n */\n forEach (f) {\n this._map.forEach((item, key) => {\n if (!item.deleted) {\n f(item.content.getContent()[item.length - 1], key, this)\n }\n })\n }\n\n /**\n * Returns an Iterator of [key, value] pairs\n *\n * @return {IterableIterator<any>}\n */\n [Symbol.iterator] () {\n return this.entries()\n }\n\n /**\n * Remove a specified element from this YMap.\n *\n * @param {string} key The key of the element to remove.\n */\n delete (key) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapDelete(transaction, this, key)\n })\n } else {\n /** @type {Map<string, any>} */ (this._prelimContent).delete(key)\n }\n }\n\n /**\n * Adds or updates an element with a specified key and value.\n * @template {MapType} VAL\n *\n * @param {string} key The key of the element to add to this YMap\n * @param {VAL} value The value of the element to add\n * @return {VAL}\n */\n set (key, value) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapSet(transaction, this, key, /** @type {any} */ (value))\n })\n } else {\n /** @type {Map<string, any>} */ (this._prelimContent).set(key, value)\n }\n return value\n }\n\n /**\n * Returns a specified element from this YMap.\n *\n * @param {string} key\n * @return {MapType|undefined}\n */\n get (key) {\n return /** @type {any} */ (typeMapGet(this, key))\n }\n\n /**\n * Returns a boolean indicating whether the specified key exists or not.\n *\n * @param {string} key The key to test.\n * @return {boolean}\n */\n has (key) {\n return typeMapHas(this, key)\n }\n\n /**\n * Removes all elements from this YMap.\n */\n clear () {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n this.forEach(function (_value, key, map) {\n typeMapDelete(transaction, map, key)\n })\n })\n } else {\n /** @type {Map<string, any>} */ (this._prelimContent).clear()\n }\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YMapRefID)\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} _decoder\n *\n * @private\n * @function\n */\nexport const readYMap = _decoder => new YMap()\n","\n/**\n * @module YText\n */\n\nimport {\n YEvent,\n AbstractType,\n getItemCleanStart,\n getState,\n isVisible,\n createID,\n YTextRefID,\n callTypeObservers,\n transact,\n ContentEmbed,\n GC,\n ContentFormat,\n ContentString,\n splitSnapshotAffectedStructs,\n iterateDeletedStructs,\n iterateStructs,\n findMarker,\n typeMapDelete,\n typeMapSet,\n typeMapGet,\n typeMapGetAll,\n updateMarkerChanges,\n ContentType,\n ArraySearchMarker, UpdateDecoderV1, UpdateDecoderV2, UpdateEncoderV1, UpdateEncoderV2, ID, Doc, Item, Snapshot, Transaction // eslint-disable-line\n} from '../internals.js'\n\nimport * as object from 'lib0/object'\nimport * as map from 'lib0/map'\nimport * as error from 'lib0/error'\n\n/**\n * @param {any} a\n * @param {any} b\n * @return {boolean}\n */\nconst equalAttrs = (a, b) => a === b || (typeof a === 'object' && typeof b === 'object' && a && b && object.equalFlat(a, b))\n\nexport class ItemTextListPosition {\n /**\n * @param {Item|null} left\n * @param {Item|null} right\n * @param {number} index\n * @param {Map<string,any>} currentAttributes\n */\n constructor (left, right, index, currentAttributes) {\n this.left = left\n this.right = right\n this.index = index\n this.currentAttributes = currentAttributes\n }\n\n /**\n * Only call this if you know that this.right is defined\n */\n forward () {\n if (this.right === null) {\n error.unexpectedCase()\n }\n switch (this.right.content.constructor) {\n case ContentFormat:\n if (!this.right.deleted) {\n updateCurrentAttributes(this.currentAttributes, /** @type {ContentFormat} */ (this.right.content))\n }\n break\n default:\n if (!this.right.deleted) {\n this.index += this.right.length\n }\n break\n }\n this.left = this.right\n this.right = this.right.right\n }\n}\n\n/**\n * @param {Transaction} transaction\n * @param {ItemTextListPosition} pos\n * @param {number} count steps to move forward\n * @return {ItemTextListPosition}\n *\n * @private\n * @function\n */\nconst findNextPosition = (transaction, pos, count) => {\n while (pos.right !== null && count > 0) {\n switch (pos.right.content.constructor) {\n case ContentFormat:\n if (!pos.right.deleted) {\n updateCurrentAttributes(pos.currentAttributes, /** @type {ContentFormat} */ (pos.right.content))\n }\n break\n default:\n if (!pos.right.deleted) {\n if (count < pos.right.length) {\n // split right\n getItemCleanStart(transaction, createID(pos.right.id.client, pos.right.id.clock + count))\n }\n pos.index += pos.right.length\n count -= pos.right.length\n }\n break\n }\n pos.left = pos.right\n pos.right = pos.right.right\n // pos.forward() - we don't forward because that would halve the performance because we already do the checks above\n }\n return pos\n}\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {number} index\n * @return {ItemTextListPosition}\n *\n * @private\n * @function\n */\nconst findPosition = (transaction, parent, index) => {\n const currentAttributes = new Map()\n const marker = findMarker(parent, index)\n if (marker) {\n const pos = new ItemTextListPosition(marker.p.left, marker.p, marker.index, currentAttributes)\n return findNextPosition(transaction, pos, index - marker.index)\n } else {\n const pos = new ItemTextListPosition(null, parent._start, 0, currentAttributes)\n return findNextPosition(transaction, pos, index)\n }\n}\n\n/**\n * Negate applied formats\n *\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {ItemTextListPosition} currPos\n * @param {Map<string,any>} negatedAttributes\n *\n * @private\n * @function\n */\nconst insertNegatedAttributes = (transaction, parent, currPos, negatedAttributes) => {\n // check if we really need to remove attributes\n while (\n currPos.right !== null && (\n currPos.right.deleted === true || (\n currPos.right.content.constructor === ContentFormat &&\n equalAttrs(negatedAttributes.get(/** @type {ContentFormat} */ (currPos.right.content).key), /** @type {ContentFormat} */ (currPos.right.content).value)\n )\n )\n ) {\n if (!currPos.right.deleted) {\n negatedAttributes.delete(/** @type {ContentFormat} */ (currPos.right.content).key)\n }\n currPos.forward()\n }\n const doc = transaction.doc\n const ownClientId = doc.clientID\n negatedAttributes.forEach((val, key) => {\n const left = currPos.left\n const right = currPos.right\n const nextFormat = new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentFormat(key, val))\n nextFormat.integrate(transaction, 0)\n currPos.right = nextFormat\n currPos.forward()\n })\n}\n\n/**\n * @param {Map<string,any>} currentAttributes\n * @param {ContentFormat} format\n *\n * @private\n * @function\n */\nconst updateCurrentAttributes = (currentAttributes, format) => {\n const { key, value } = format\n if (value === null) {\n currentAttributes.delete(key)\n } else {\n currentAttributes.set(key, value)\n }\n}\n\n/**\n * @param {ItemTextListPosition} currPos\n * @param {Object<string,any>} attributes\n *\n * @private\n * @function\n */\nconst minimizeAttributeChanges = (currPos, attributes) => {\n // go right while attributes[right.key] === right.value (or right is deleted)\n while (true) {\n if (currPos.right === null) {\n break\n } else if (currPos.right.deleted || (currPos.right.content.constructor === ContentFormat && equalAttrs(attributes[(/** @type {ContentFormat} */ (currPos.right.content)).key] || null, /** @type {ContentFormat} */ (currPos.right.content).value))) {\n //\n } else {\n break\n }\n currPos.forward()\n }\n}\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {ItemTextListPosition} currPos\n * @param {Object<string,any>} attributes\n * @return {Map<string,any>}\n *\n * @private\n * @function\n **/\nconst insertAttributes = (transaction, parent, currPos, attributes) => {\n const doc = transaction.doc\n const ownClientId = doc.clientID\n const negatedAttributes = new Map()\n // insert format-start items\n for (const key in attributes) {\n const val = attributes[key]\n const currentVal = currPos.currentAttributes.get(key) || null\n if (!equalAttrs(currentVal, val)) {\n // save negated attribute (set null if currentVal undefined)\n negatedAttributes.set(key, currentVal)\n const { left, right } = currPos\n currPos.right = new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, new ContentFormat(key, val))\n currPos.right.integrate(transaction, 0)\n currPos.forward()\n }\n }\n return negatedAttributes\n}\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {ItemTextListPosition} currPos\n * @param {string|object|AbstractType<any>} text\n * @param {Object<string,any>} attributes\n *\n * @private\n * @function\n **/\nconst insertText = (transaction, parent, currPos, text, attributes) => {\n currPos.currentAttributes.forEach((_val, key) => {\n if (attributes[key] === undefined) {\n attributes[key] = null\n }\n })\n const doc = transaction.doc\n const ownClientId = doc.clientID\n minimizeAttributeChanges(currPos, attributes)\n const negatedAttributes = insertAttributes(transaction, parent, currPos, attributes)\n // insert content\n const content = text.constructor === String ? new ContentString(/** @type {string} */ (text)) : (text instanceof AbstractType ? new ContentType(text) : new ContentEmbed(text))\n let { left, right, index } = currPos\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, currPos.index, content.getLength())\n }\n right = new Item(createID(ownClientId, getState(doc.store, ownClientId)), left, left && left.lastId, right, right && right.id, parent, null, content)\n right.integrate(transaction, 0)\n currPos.right = right\n currPos.index = index\n currPos.forward()\n insertNegatedAttributes(transaction, parent, currPos, negatedAttributes)\n}\n\n/**\n * @param {Transaction} transaction\n * @param {AbstractType<any>} parent\n * @param {ItemTextListPosition} currPos\n * @param {number} length\n * @param {Object<string,any>} attributes\n *\n * @private\n * @function\n */\nconst formatText = (transaction, parent, currPos, length, attributes) => {\n const doc = transaction.doc\n const ownClientId = doc.clientID\n minimizeAttributeChanges(currPos, attributes)\n const negatedAttributes = insertAttributes(transaction, parent, currPos, attributes)\n // iterate until first non-format or null is found\n // delete all formats with attributes[format.key] != null\n // also check the attributes after the first non-format as we do not want to insert redundant negated attributes there\n // eslint-disable-next-line no-labels\n iterationLoop: while (\n currPos.right !== null &&\n (length > 0 ||\n (\n negatedAttributes.size > 0 &&\n (currPos.right.deleted || currPos.right.content.constructor === ContentFormat)\n )\n )\n ) {\n if (!currPos.right.deleted) {\n switch (currPos.right.content.constructor) {\n case ContentFormat: {\n const { key, value } = /** @type {ContentFormat} */ (currPos.right.content)\n const attr = attributes[key]\n if (attr !== undefined) {\n if (equalAttrs(attr, value)) {\n negatedAttributes.delete(key)\n } else {\n if (length === 0) {\n // no need to further extend negatedAttributes\n // eslint-disable-next-line no-labels\n break iterationLoop\n }\n negatedAttributes.set(key, value)\n }\n currPos.right.delete(transaction)\n } else {\n currPos.currentAttributes.set(key, value)\n }\n break\n }\n default:\n if (length < currPos.right.length) {\n getItemCleanStart(transaction, createID(currPos.right.id.client, currPos.right.id.clock + length))\n }\n length -= currPos.right.length\n break\n }\n }\n currPos.forward()\n }\n // Quill just assumes that the editor starts with a newline and that it always\n // ends with a newline. We only insert that newline when a new newline is\n // inserted - i.e when length is bigger than type.length\n if (length > 0) {\n let newlines = ''\n for (; length > 0; length--) {\n newlines += '\\n'\n }\n currPos.right = new Item(createID(ownClientId, getState(doc.store, ownClientId)), currPos.left, currPos.left && currPos.left.lastId, currPos.right, currPos.right && currPos.right.id, parent, null, new ContentString(newlines))\n currPos.right.integrate(transaction, 0)\n currPos.forward()\n }\n insertNegatedAttributes(transaction, parent, currPos, negatedAttributes)\n}\n\n/**\n * Call this function after string content has been deleted in order to\n * clean up formatting Items.\n *\n * @param {Transaction} transaction\n * @param {Item} start\n * @param {Item|null} curr exclusive end, automatically iterates to the next Content Item\n * @param {Map<string,any>} startAttributes\n * @param {Map<string,any>} currAttributes\n * @return {number} The amount of formatting Items deleted.\n *\n * @function\n */\nconst cleanupFormattingGap = (transaction, start, curr, startAttributes, currAttributes) => {\n /**\n * @type {Item|null}\n */\n let end = start\n /**\n * @type {Map<string,ContentFormat>}\n */\n const endFormats = map.create()\n while (end && (!end.countable || end.deleted)) {\n if (!end.deleted && end.content.constructor === ContentFormat) {\n const cf = /** @type {ContentFormat} */ (end.content)\n endFormats.set(cf.key, cf)\n }\n end = end.right\n }\n let cleanups = 0\n let reachedCurr = false\n while (start !== end) {\n if (curr === start) {\n reachedCurr = true\n }\n if (!start.deleted) {\n const content = start.content\n switch (content.constructor) {\n case ContentFormat: {\n const { key, value } = /** @type {ContentFormat} */ (content)\n const startAttrValue = startAttributes.get(key) || null\n if (endFormats.get(key) !== content || startAttrValue === value) {\n // Either this format is overwritten or it is not necessary because the attribute already existed.\n start.delete(transaction)\n cleanups++\n if (!reachedCurr && (currAttributes.get(key) || null) === value && startAttrValue !== value) {\n if (startAttrValue === null) {\n currAttributes.delete(key)\n } else {\n currAttributes.set(key, startAttrValue)\n }\n }\n }\n if (!reachedCurr && !start.deleted) {\n updateCurrentAttributes(currAttributes, /** @type {ContentFormat} */ (content))\n }\n break\n }\n }\n }\n start = /** @type {Item} */ (start.right)\n }\n return cleanups\n}\n\n/**\n * @param {Transaction} transaction\n * @param {Item | null} item\n */\nconst cleanupContextlessFormattingGap = (transaction, item) => {\n // iterate until item.right is null or content\n while (item && item.right && (item.right.deleted || !item.right.countable)) {\n item = item.right\n }\n const attrs = new Set()\n // iterate back until a content item is found\n while (item && (item.deleted || !item.countable)) {\n if (!item.deleted && item.content.constructor === ContentFormat) {\n const key = /** @type {ContentFormat} */ (item.content).key\n if (attrs.has(key)) {\n item.delete(transaction)\n } else {\n attrs.add(key)\n }\n }\n item = item.left\n }\n}\n\n/**\n * This function is experimental and subject to change / be removed.\n *\n * Ideally, we don't need this function at all. Formatting attributes should be cleaned up\n * automatically after each change. This function iterates twice over the complete YText type\n * and removes unnecessary formatting attributes. This is also helpful for testing.\n *\n * This function won't be exported anymore as soon as there is confidence that the YText type works as intended.\n *\n * @param {YText} type\n * @return {number} How many formatting attributes have been cleaned up.\n */\nexport const cleanupYTextFormatting = type => {\n let res = 0\n transact(/** @type {Doc} */ (type.doc), transaction => {\n let start = /** @type {Item} */ (type._start)\n let end = type._start\n let startAttributes = map.create()\n const currentAttributes = map.copy(startAttributes)\n while (end) {\n if (end.deleted === false) {\n switch (end.content.constructor) {\n case ContentFormat:\n updateCurrentAttributes(currentAttributes, /** @type {ContentFormat} */ (end.content))\n break\n default:\n res += cleanupFormattingGap(transaction, start, end, startAttributes, currentAttributes)\n startAttributes = map.copy(currentAttributes)\n start = end\n break\n }\n }\n end = end.right\n }\n })\n return res\n}\n\n/**\n * @param {Transaction} transaction\n * @param {ItemTextListPosition} currPos\n * @param {number} length\n * @return {ItemTextListPosition}\n *\n * @private\n * @function\n */\nconst deleteText = (transaction, currPos, length) => {\n const startLength = length\n const startAttrs = map.copy(currPos.currentAttributes)\n const start = currPos.right\n while (length > 0 && currPos.right !== null) {\n if (currPos.right.deleted === false) {\n switch (currPos.right.content.constructor) {\n case ContentType:\n case ContentEmbed:\n case ContentString:\n if (length < currPos.right.length) {\n getItemCleanStart(transaction, createID(currPos.right.id.client, currPos.right.id.clock + length))\n }\n length -= currPos.right.length\n currPos.right.delete(transaction)\n break\n }\n }\n currPos.forward()\n }\n if (start) {\n cleanupFormattingGap(transaction, start, currPos.right, startAttrs, currPos.currentAttributes)\n }\n const parent = /** @type {AbstractType<any>} */ (/** @type {Item} */ (currPos.left || currPos.right).parent)\n if (parent._searchMarker) {\n updateMarkerChanges(parent._searchMarker, currPos.index, -startLength + length)\n }\n return currPos\n}\n\n/**\n * The Quill Delta format represents changes on a text document with\n * formatting information. For mor information visit {@link https://quilljs.com/docs/delta/|Quill Delta}\n *\n * @example\n * {\n * ops: [\n * { insert: 'Gandalf', attributes: { bold: true } },\n * { insert: ' the ' },\n * { insert: 'Grey', attributes: { color: '#cccccc' } }\n * ]\n * }\n *\n */\n\n/**\n * Attributes that can be assigned to a selection of text.\n *\n * @example\n * {\n * bold: true,\n * font-size: '40px'\n * }\n *\n * @typedef {Object} TextAttributes\n */\n\n/**\n * @extends YEvent<YText>\n * Event that describes the changes on a YText type.\n */\nexport class YTextEvent extends YEvent {\n /**\n * @param {YText} ytext\n * @param {Transaction} transaction\n * @param {Set<any>} subs The keys that changed\n */\n constructor (ytext, transaction, subs) {\n super(ytext, transaction)\n /**\n * Whether the children changed.\n * @type {Boolean}\n * @private\n */\n this.childListChanged = false\n /**\n * Set of all changed attributes.\n * @type {Set<string>}\n */\n this.keysChanged = new Set()\n subs.forEach((sub) => {\n if (sub === null) {\n this.childListChanged = true\n } else {\n this.keysChanged.add(sub)\n }\n })\n }\n\n /**\n * @type {{added:Set<Item>,deleted:Set<Item>,keys:Map<string,{action:'add'|'update'|'delete',oldValue:any}>,delta:Array<{insert?:Array<any>|string, delete?:number, retain?:number}>}}\n */\n get changes () {\n if (this._changes === null) {\n /**\n * @type {{added:Set<Item>,deleted:Set<Item>,keys:Map<string,{action:'add'|'update'|'delete',oldValue:any}>,delta:Array<{insert?:Array<any>|string|AbstractType<any>|object, delete?:number, retain?:number}>}}\n */\n const changes = {\n keys: this.keys,\n delta: this.delta,\n added: new Set(),\n deleted: new Set()\n }\n this._changes = changes\n }\n return /** @type {any} */ (this._changes)\n }\n\n /**\n * Compute the changes in the delta format.\n * A {@link https://quilljs.com/docs/delta/|Quill Delta}) that represents the changes on the document.\n *\n * @type {Array<{insert?:string|object|AbstractType<any>, delete?:number, retain?:number, attributes?: Object<string,any>}>}\n *\n * @public\n */\n get delta () {\n if (this._delta === null) {\n const y = /** @type {Doc} */ (this.target.doc)\n /**\n * @type {Array<{insert?:string|object|AbstractType<any>, delete?:number, retain?:number, attributes?: Object<string,any>}>}\n */\n const delta = []\n transact(y, transaction => {\n const currentAttributes = new Map() // saves all current attributes for insert\n const oldAttributes = new Map()\n let item = this.target._start\n /**\n * @type {string?}\n */\n let action = null\n /**\n * @type {Object<string,any>}\n */\n const attributes = {} // counts added or removed new attributes for retain\n /**\n * @type {string|object}\n */\n let insert = ''\n let retain = 0\n let deleteLen = 0\n const addOp = () => {\n if (action !== null) {\n /**\n * @type {any}\n */\n let op = null\n switch (action) {\n case 'delete':\n if (deleteLen > 0) {\n op = { delete: deleteLen }\n }\n deleteLen = 0\n break\n case 'insert':\n if (typeof insert === 'object' || insert.length > 0) {\n op = { insert }\n if (currentAttributes.size > 0) {\n op.attributes = {}\n currentAttributes.forEach((value, key) => {\n if (value !== null) {\n op.attributes[key] = value\n }\n })\n }\n }\n insert = ''\n break\n case 'retain':\n if (retain > 0) {\n op = { retain }\n if (!object.isEmpty(attributes)) {\n op.attributes = object.assign({}, attributes)\n }\n }\n retain = 0\n break\n }\n if (op) delta.push(op)\n action = null\n }\n }\n while (item !== null) {\n switch (item.content.constructor) {\n case ContentType:\n case ContentEmbed:\n if (this.adds(item)) {\n if (!this.deletes(item)) {\n addOp()\n action = 'insert'\n insert = item.content.getContent()[0]\n addOp()\n }\n } else if (this.deletes(item)) {\n if (action !== 'delete') {\n addOp()\n action = 'delete'\n }\n deleteLen += 1\n } else if (!item.deleted) {\n if (action !== 'retain') {\n addOp()\n action = 'retain'\n }\n retain += 1\n }\n break\n case ContentString:\n if (this.adds(item)) {\n if (!this.deletes(item)) {\n if (action !== 'insert') {\n addOp()\n action = 'insert'\n }\n insert += /** @type {ContentString} */ (item.content).str\n }\n } else if (this.deletes(item)) {\n if (action !== 'delete') {\n addOp()\n action = 'delete'\n }\n deleteLen += item.length\n } else if (!item.deleted) {\n if (action !== 'retain') {\n addOp()\n action = 'retain'\n }\n retain += item.length\n }\n break\n case ContentFormat: {\n const { key, value } = /** @type {ContentFormat} */ (item.content)\n if (this.adds(item)) {\n if (!this.deletes(item)) {\n const curVal = currentAttributes.get(key) || null\n if (!equalAttrs(curVal, value)) {\n if (action === 'retain') {\n addOp()\n }\n if (equalAttrs(value, (oldAttributes.get(key) || null))) {\n delete attributes[key]\n } else {\n attributes[key] = value\n }\n } else if (value !== null) {\n item.delete(transaction)\n }\n }\n } else if (this.deletes(item)) {\n oldAttributes.set(key, value)\n const curVal = currentAttributes.get(key) || null\n if (!equalAttrs(curVal, value)) {\n if (action === 'retain') {\n addOp()\n }\n attributes[key] = curVal\n }\n } else if (!item.deleted) {\n oldAttributes.set(key, value)\n const attr = attributes[key]\n if (attr !== undefined) {\n if (!equalAttrs(attr, value)) {\n if (action === 'retain') {\n addOp()\n }\n if (value === null) {\n delete attributes[key]\n } else {\n attributes[key] = value\n }\n } else if (attr !== null) { // this will be cleaned up automatically by the contextless cleanup function\n item.delete(transaction)\n }\n }\n }\n if (!item.deleted) {\n if (action === 'insert') {\n addOp()\n }\n updateCurrentAttributes(currentAttributes, /** @type {ContentFormat} */ (item.content))\n }\n break\n }\n }\n item = item.right\n }\n addOp()\n while (delta.length > 0) {\n const lastOp = delta[delta.length - 1]\n if (lastOp.retain !== undefined && lastOp.attributes === undefined) {\n // retain delta's if they don't assign attributes\n delta.pop()\n } else {\n break\n }\n }\n })\n this._delta = delta\n }\n return /** @type {any} */ (this._delta)\n }\n}\n\n/**\n * Type that represents text with formatting information.\n *\n * This type replaces y-richtext as this implementation is able to handle\n * block formats (format information on a paragraph), embeds (complex elements\n * like pictures and videos), and text formats (**bold**, *italic*).\n *\n * @extends AbstractType<YTextEvent>\n */\nexport class YText extends AbstractType {\n /**\n * @param {String} [string] The initial value of the YText.\n */\n constructor (string) {\n super()\n /**\n * Array of pending operations on this type\n * @type {Array<function():void>?}\n */\n this._pending = string !== undefined ? [() => this.insert(0, string)] : []\n /**\n * @type {Array<ArraySearchMarker>}\n */\n this._searchMarker = []\n }\n\n /**\n * Number of characters of this text type.\n *\n * @type {number}\n */\n get length () {\n return this._length\n }\n\n /**\n * @param {Doc} y\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item)\n try {\n /** @type {Array<function>} */ (this._pending).forEach(f => f())\n } catch (e) {\n console.error(e)\n }\n this._pending = null\n }\n\n _copy () {\n return new YText()\n }\n\n /**\n * @return {YText}\n */\n clone () {\n const text = new YText()\n text.applyDelta(this.toDelta())\n return text\n }\n\n /**\n * Creates YTextEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set<null|string>} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n super._callObserver(transaction, parentSubs)\n const event = new YTextEvent(this, transaction, parentSubs)\n const doc = transaction.doc\n callTypeObservers(this, transaction, event)\n // If a remote change happened, we try to cleanup potential formatting duplicates.\n if (!transaction.local) {\n // check if another formatting item was inserted\n let foundFormattingItem = false\n for (const [client, afterClock] of transaction.afterState.entries()) {\n const clock = transaction.beforeState.get(client) || 0\n if (afterClock === clock) {\n continue\n }\n iterateStructs(transaction, /** @type {Array<Item|GC>} */ (doc.store.clients.get(client)), clock, afterClock, item => {\n if (!item.deleted && /** @type {Item} */ (item).content.constructor === ContentFormat) {\n foundFormattingItem = true\n }\n })\n if (foundFormattingItem) {\n break\n }\n }\n if (!foundFormattingItem) {\n iterateDeletedStructs(transaction, transaction.deleteSet, item => {\n if (item instanceof GC || foundFormattingItem) {\n return\n }\n if (item.parent === this && item.content.constructor === ContentFormat) {\n foundFormattingItem = true\n }\n })\n }\n transact(doc, (t) => {\n if (foundFormattingItem) {\n // If a formatting item was inserted, we simply clean the whole type.\n // We need to compute currentAttributes for the current position anyway.\n cleanupYTextFormatting(this)\n } else {\n // If no formatting attribute was inserted, we can make due with contextless\n // formatting cleanups.\n // Contextless: it is not necessary to compute currentAttributes for the affected position.\n iterateDeletedStructs(t, t.deleteSet, item => {\n if (item instanceof GC) {\n return\n }\n if (item.parent === this) {\n cleanupContextlessFormattingGap(t, item)\n }\n })\n }\n })\n }\n }\n\n /**\n * Returns the unformatted string representation of this YText type.\n *\n * @public\n */\n toString () {\n let str = ''\n /**\n * @type {Item|null}\n */\n let n = this._start\n while (n !== null) {\n if (!n.deleted && n.countable && n.content.constructor === ContentString) {\n str += /** @type {ContentString} */ (n.content).str\n }\n n = n.right\n }\n return str\n }\n\n /**\n * Returns the unformatted string representation of this YText type.\n *\n * @return {string}\n * @public\n */\n toJSON () {\n return this.toString()\n }\n\n /**\n * Apply a {@link Delta} on this shared YText type.\n *\n * @param {any} delta The changes to apply on this element.\n * @param {object} opts\n * @param {boolean} [opts.sanitize] Sanitize input delta. Removes ending newlines if set to true.\n *\n *\n * @public\n */\n applyDelta (delta, { sanitize = true } = {}) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n const currPos = new ItemTextListPosition(null, this._start, 0, new Map())\n for (let i = 0; i < delta.length; i++) {\n const op = delta[i]\n if (op.insert !== undefined) {\n // Quill assumes that the content starts with an empty paragraph.\n // Yjs/Y.Text assumes that it starts empty. We always hide that\n // there is a newline at the end of the content.\n // If we omit this step, clients will see a different number of\n // paragraphs, but nothing bad will happen.\n const ins = (!sanitize && typeof op.insert === 'string' && i === delta.length - 1 && currPos.right === null && op.insert.slice(-1) === '\\n') ? op.insert.slice(0, -1) : op.insert\n if (typeof ins !== 'string' || ins.length > 0) {\n insertText(transaction, this, currPos, ins, op.attributes || {})\n }\n } else if (op.retain !== undefined) {\n formatText(transaction, this, currPos, op.retain, op.attributes || {})\n } else if (op.delete !== undefined) {\n deleteText(transaction, currPos, op.delete)\n }\n }\n })\n } else {\n /** @type {Array<function>} */ (this._pending).push(() => this.applyDelta(delta))\n }\n }\n\n /**\n * Returns the Delta representation of this YText type.\n *\n * @param {Snapshot} [snapshot]\n * @param {Snapshot} [prevSnapshot]\n * @param {function('removed' | 'added', ID):any} [computeYChange]\n * @return {any} The Delta representation of this type.\n *\n * @public\n */\n toDelta (snapshot, prevSnapshot, computeYChange) {\n /**\n * @type{Array<any>}\n */\n const ops = []\n const currentAttributes = new Map()\n const doc = /** @type {Doc} */ (this.doc)\n let str = ''\n let n = this._start\n function packStr () {\n if (str.length > 0) {\n // pack str with attributes to ops\n /**\n * @type {Object<string,any>}\n */\n const attributes = {}\n let addAttributes = false\n currentAttributes.forEach((value, key) => {\n addAttributes = true\n attributes[key] = value\n })\n /**\n * @type {Object<string,any>}\n */\n const op = { insert: str }\n if (addAttributes) {\n op.attributes = attributes\n }\n ops.push(op)\n str = ''\n }\n }\n const computeDelta = () => {\n while (n !== null) {\n if (isVisible(n, snapshot) || (prevSnapshot !== undefined && isVisible(n, prevSnapshot))) {\n switch (n.content.constructor) {\n case ContentString: {\n const cur = currentAttributes.get('ychange')\n if (snapshot !== undefined && !isVisible(n, snapshot)) {\n if (cur === undefined || cur.user !== n.id.client || cur.type !== 'removed') {\n packStr()\n currentAttributes.set('ychange', computeYChange ? computeYChange('removed', n.id) : { type: 'removed' })\n }\n } else if (prevSnapshot !== undefined && !isVisible(n, prevSnapshot)) {\n if (cur === undefined || cur.user !== n.id.client || cur.type !== 'added') {\n packStr()\n currentAttributes.set('ychange', computeYChange ? computeYChange('added', n.id) : { type: 'added' })\n }\n } else if (cur !== undefined) {\n packStr()\n currentAttributes.delete('ychange')\n }\n str += /** @type {ContentString} */ (n.content).str\n break\n }\n case ContentType:\n case ContentEmbed: {\n packStr()\n /**\n * @type {Object<string,any>}\n */\n const op = {\n insert: n.content.getContent()[0]\n }\n if (currentAttributes.size > 0) {\n const attrs = /** @type {Object<string,any>} */ ({})\n op.attributes = attrs\n currentAttributes.forEach((value, key) => {\n attrs[key] = value\n })\n }\n ops.push(op)\n break\n }\n case ContentFormat:\n if (isVisible(n, snapshot)) {\n packStr()\n updateCurrentAttributes(currentAttributes, /** @type {ContentFormat} */ (n.content))\n }\n break\n }\n }\n n = n.right\n }\n packStr()\n }\n if (snapshot || prevSnapshot) {\n // snapshots are merged again after the transaction, so we need to keep the\n // transaction alive until we are done\n transact(doc, transaction => {\n if (snapshot) {\n splitSnapshotAffectedStructs(transaction, snapshot)\n }\n if (prevSnapshot) {\n splitSnapshotAffectedStructs(transaction, prevSnapshot)\n }\n computeDelta()\n }, 'cleanup')\n } else {\n computeDelta()\n }\n return ops\n }\n\n /**\n * Insert text at a given index.\n *\n * @param {number} index The index at which to start inserting.\n * @param {String} text The text to insert at the specified position.\n * @param {TextAttributes} [attributes] Optionally define some formatting\n * information to apply on the inserted\n * Text.\n * @public\n */\n insert (index, text, attributes) {\n if (text.length <= 0) {\n return\n }\n const y = this.doc\n if (y !== null) {\n transact(y, transaction => {\n const pos = findPosition(transaction, this, index)\n if (!attributes) {\n attributes = {}\n // @ts-ignore\n pos.currentAttributes.forEach((v, k) => { attributes[k] = v })\n }\n insertText(transaction, this, pos, text, attributes)\n })\n } else {\n /** @type {Array<function>} */ (this._pending).push(() => this.insert(index, text, attributes))\n }\n }\n\n /**\n * Inserts an embed at a index.\n *\n * @param {number} index The index to insert the embed at.\n * @param {Object | AbstractType<any>} embed The Object that represents the embed.\n * @param {TextAttributes} attributes Attribute information to apply on the\n * embed\n *\n * @public\n */\n insertEmbed (index, embed, attributes = {}) {\n const y = this.doc\n if (y !== null) {\n transact(y, transaction => {\n const pos = findPosition(transaction, this, index)\n insertText(transaction, this, pos, embed, attributes)\n })\n } else {\n /** @type {Array<function>} */ (this._pending).push(() => this.insertEmbed(index, embed, attributes))\n }\n }\n\n /**\n * Deletes text starting from an index.\n *\n * @param {number} index Index at which to start deleting.\n * @param {number} length The number of characters to remove. Defaults to 1.\n *\n * @public\n */\n delete (index, length) {\n if (length === 0) {\n return\n }\n const y = this.doc\n if (y !== null) {\n transact(y, transaction => {\n deleteText(transaction, findPosition(transaction, this, index), length)\n })\n } else {\n /** @type {Array<function>} */ (this._pending).push(() => this.delete(index, length))\n }\n }\n\n /**\n * Assigns properties to a range of text.\n *\n * @param {number} index The position where to start formatting.\n * @param {number} length The amount of characters to assign properties to.\n * @param {TextAttributes} attributes Attribute information to apply on the\n * text.\n *\n * @public\n */\n format (index, length, attributes) {\n if (length === 0) {\n return\n }\n const y = this.doc\n if (y !== null) {\n transact(y, transaction => {\n const pos = findPosition(transaction, this, index)\n if (pos.right === null) {\n return\n }\n formatText(transaction, this, pos, length, attributes)\n })\n } else {\n /** @type {Array<function>} */ (this._pending).push(() => this.format(index, length, attributes))\n }\n }\n\n /**\n * Removes an attribute.\n *\n * @note Xml-Text nodes don't have attributes. You can use this feature to assign properties to complete text-blocks.\n *\n * @param {String} attributeName The attribute name that is to be removed.\n *\n * @public\n */\n removeAttribute (attributeName) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapDelete(transaction, this, attributeName)\n })\n } else {\n /** @type {Array<function>} */ (this._pending).push(() => this.removeAttribute(attributeName))\n }\n }\n\n /**\n * Sets or updates an attribute.\n *\n * @note Xml-Text nodes don't have attributes. You can use this feature to assign properties to complete text-blocks.\n *\n * @param {String} attributeName The attribute name that is to be set.\n * @param {any} attributeValue The attribute value that is to be set.\n *\n * @public\n */\n setAttribute (attributeName, attributeValue) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapSet(transaction, this, attributeName, attributeValue)\n })\n } else {\n /** @type {Array<function>} */ (this._pending).push(() => this.setAttribute(attributeName, attributeValue))\n }\n }\n\n /**\n * Returns an attribute value that belongs to the attribute name.\n *\n * @note Xml-Text nodes don't have attributes. You can use this feature to assign properties to complete text-blocks.\n *\n * @param {String} attributeName The attribute name that identifies the\n * queried value.\n * @return {any} The queried attribute value.\n *\n * @public\n */\n getAttribute (attributeName) {\n return /** @type {any} */ (typeMapGet(this, attributeName))\n }\n\n /**\n * Returns all attribute name/value pairs in a JSON Object.\n *\n * @note Xml-Text nodes don't have attributes. You can use this feature to assign properties to complete text-blocks.\n *\n * @return {Object<string, any>} A JSON Object that describes the attributes.\n *\n * @public\n */\n getAttributes () {\n return typeMapGetAll(this)\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YTextRefID)\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} _decoder\n * @return {YText}\n *\n * @private\n * @function\n */\nexport const readYText = _decoder => new YText()\n","/**\n * @module YXml\n */\n\nimport {\n YXmlEvent,\n YXmlElement,\n AbstractType,\n typeListMap,\n typeListForEach,\n typeListInsertGenerics,\n typeListInsertGenericsAfter,\n typeListDelete,\n typeListToArray,\n YXmlFragmentRefID,\n callTypeObservers,\n transact,\n typeListGet,\n typeListSlice,\n UpdateDecoderV1, UpdateDecoderV2, UpdateEncoderV1, UpdateEncoderV2, Doc, ContentType, Transaction, Item, YXmlText, YXmlHook // eslint-disable-line\n} from '../internals.js'\n\nimport * as error from 'lib0/error'\nimport * as array from 'lib0/array'\n\n/**\n * Define the elements to which a set of CSS queries apply.\n * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors|CSS_Selectors}\n *\n * @example\n * query = '.classSelector'\n * query = 'nodeSelector'\n * query = '#idSelector'\n *\n * @typedef {string} CSS_Selector\n */\n\n/**\n * Dom filter function.\n *\n * @callback domFilter\n * @param {string} nodeName The nodeName of the element\n * @param {Map} attributes The map of attributes.\n * @return {boolean} Whether to include the Dom node in the YXmlElement.\n */\n\n/**\n * Represents a subset of the nodes of a YXmlElement / YXmlFragment and a\n * position within them.\n *\n * Can be created with {@link YXmlFragment#createTreeWalker}\n *\n * @public\n * @implements {Iterable<YXmlElement|YXmlText|YXmlElement|YXmlHook>}\n */\nexport class YXmlTreeWalker {\n /**\n * @param {YXmlFragment | YXmlElement} root\n * @param {function(AbstractType<any>):boolean} [f]\n */\n constructor (root, f = () => true) {\n this._filter = f\n this._root = root\n /**\n * @type {Item}\n */\n this._currentNode = /** @type {Item} */ (root._start)\n this._firstCall = true\n }\n\n [Symbol.iterator] () {\n return this\n }\n\n /**\n * Get the next node.\n *\n * @return {IteratorResult<YXmlElement|YXmlText|YXmlHook>} The next node.\n *\n * @public\n */\n next () {\n /**\n * @type {Item|null}\n */\n let n = this._currentNode\n let type = n && n.content && /** @type {any} */ (n.content).type\n if (n !== null && (!this._firstCall || n.deleted || !this._filter(type))) { // if first call, we check if we can use the first item\n do {\n type = /** @type {any} */ (n.content).type\n if (!n.deleted && (type.constructor === YXmlElement || type.constructor === YXmlFragment) && type._start !== null) {\n // walk down in the tree\n n = type._start\n } else {\n // walk right or up in the tree\n while (n !== null) {\n if (n.right !== null) {\n n = n.right\n break\n } else if (n.parent === this._root) {\n n = null\n } else {\n n = /** @type {AbstractType<any>} */ (n.parent)._item\n }\n }\n }\n } while (n !== null && (n.deleted || !this._filter(/** @type {ContentType} */ (n.content).type)))\n }\n this._firstCall = false\n if (n === null) {\n // @ts-ignore\n return { value: undefined, done: true }\n }\n this._currentNode = n\n return { value: /** @type {any} */ (n.content).type, done: false }\n }\n}\n\n/**\n * Represents a list of {@link YXmlElement}.and {@link YXmlText} types.\n * A YxmlFragment is similar to a {@link YXmlElement}, but it does not have a\n * nodeName and it does not have attributes. Though it can be bound to a DOM\n * element - in this case the attributes and the nodeName are not shared.\n *\n * @public\n * @extends AbstractType<YXmlEvent>\n */\nexport class YXmlFragment extends AbstractType {\n constructor () {\n super()\n /**\n * @type {Array<any>|null}\n */\n this._prelimContent = []\n }\n\n /**\n * @type {YXmlElement|YXmlText|null}\n */\n get firstChild () {\n const first = this._first\n return first ? first.content.getContent()[0] : null\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item)\n this.insert(0, /** @type {Array<any>} */ (this._prelimContent))\n this._prelimContent = null\n }\n\n _copy () {\n return new YXmlFragment()\n }\n\n /**\n * @return {YXmlFragment}\n */\n clone () {\n const el = new YXmlFragment()\n // @ts-ignore\n el.insert(0, this.toArray().map(item => item instanceof AbstractType ? item.clone() : item))\n return el\n }\n\n get length () {\n return this._prelimContent === null ? this._length : this._prelimContent.length\n }\n\n /**\n * Create a subtree of childNodes.\n *\n * @example\n * const walker = elem.createTreeWalker(dom => dom.nodeName === 'div')\n * for (let node in walker) {\n * // `node` is a div node\n * nop(node)\n * }\n *\n * @param {function(AbstractType<any>):boolean} filter Function that is called on each child element and\n * returns a Boolean indicating whether the child\n * is to be included in the subtree.\n * @return {YXmlTreeWalker} A subtree and a position within it.\n *\n * @public\n */\n createTreeWalker (filter) {\n return new YXmlTreeWalker(this, filter)\n }\n\n /**\n * Returns the first YXmlElement that matches the query.\n * Similar to DOM's {@link querySelector}.\n *\n * Query support:\n * - tagname\n * TODO:\n * - id\n * - attribute\n *\n * @param {CSS_Selector} query The query on the children.\n * @return {YXmlElement|YXmlText|YXmlHook|null} The first element that matches the query or null.\n *\n * @public\n */\n querySelector (query) {\n query = query.toUpperCase()\n // @ts-ignore\n const iterator = new YXmlTreeWalker(this, element => element.nodeName && element.nodeName.toUpperCase() === query)\n const next = iterator.next()\n if (next.done) {\n return null\n } else {\n return next.value\n }\n }\n\n /**\n * Returns all YXmlElements that match the query.\n * Similar to Dom's {@link querySelectorAll}.\n *\n * @todo Does not yet support all queries. Currently only query by tagName.\n *\n * @param {CSS_Selector} query The query on the children\n * @return {Array<YXmlElement|YXmlText|YXmlHook|null>} The elements that match this query.\n *\n * @public\n */\n querySelectorAll (query) {\n query = query.toUpperCase()\n // @ts-ignore\n return array.from(new YXmlTreeWalker(this, element => element.nodeName && element.nodeName.toUpperCase() === query))\n }\n\n /**\n * Creates YXmlEvent and calls observers.\n *\n * @param {Transaction} transaction\n * @param {Set<null|string>} parentSubs Keys changed on this type. `null` if list was modified.\n */\n _callObserver (transaction, parentSubs) {\n callTypeObservers(this, transaction, new YXmlEvent(this, parentSubs, transaction))\n }\n\n /**\n * Get the string representation of all the children of this YXmlFragment.\n *\n * @return {string} The string representation of all children.\n */\n toString () {\n return typeListMap(this, xml => xml.toString()).join('')\n }\n\n /**\n * @return {string}\n */\n toJSON () {\n return this.toString()\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlElement.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object<string, any>} [hooks={}] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type.\n * @return {Node} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks = {}, binding) {\n const fragment = _document.createDocumentFragment()\n if (binding !== undefined) {\n binding._createAssociation(fragment, this)\n }\n typeListForEach(this, xmlType => {\n fragment.insertBefore(xmlType.toDOM(_document, hooks, binding), null)\n })\n return fragment\n }\n\n /**\n * Inserts new content at an index.\n *\n * @example\n * // Insert character 'a' at position 0\n * xml.insert(0, [new Y.XmlText('text')])\n *\n * @param {number} index The index to insert content at\n * @param {Array<YXmlElement|YXmlText>} content The array of content\n */\n insert (index, content) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListInsertGenerics(transaction, this, index, content)\n })\n } else {\n // @ts-ignore _prelimContent is defined because this is not yet integrated\n this._prelimContent.splice(index, 0, ...content)\n }\n }\n\n /**\n * Inserts new content at an index.\n *\n * @example\n * // Insert character 'a' at position 0\n * xml.insert(0, [new Y.XmlText('text')])\n *\n * @param {null|Item|YXmlElement|YXmlText} ref The index to insert content at\n * @param {Array<YXmlElement|YXmlText>} content The array of content\n */\n insertAfter (ref, content) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n const refItem = (ref && ref instanceof AbstractType) ? ref._item : ref\n typeListInsertGenericsAfter(transaction, this, refItem, content)\n })\n } else {\n const pc = /** @type {Array<any>} */ (this._prelimContent)\n const index = ref === null ? 0 : pc.findIndex(el => el === ref) + 1\n if (index === 0 && ref !== null) {\n throw error.create('Reference item not found')\n }\n pc.splice(index, 0, ...content)\n }\n }\n\n /**\n * Deletes elements starting from an index.\n *\n * @param {number} index Index at which to start deleting elements\n * @param {number} [length=1] The number of elements to remove. Defaults to 1.\n */\n delete (index, length = 1) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeListDelete(transaction, this, index, length)\n })\n } else {\n // @ts-ignore _prelimContent is defined because this is not yet integrated\n this._prelimContent.splice(index, length)\n }\n }\n\n /**\n * Transforms this YArray to a JavaScript Array.\n *\n * @return {Array<YXmlElement|YXmlText|YXmlHook>}\n */\n toArray () {\n return typeListToArray(this)\n }\n\n /**\n * Appends content to this YArray.\n *\n * @param {Array<YXmlElement|YXmlText>} content Array of content to append.\n */\n push (content) {\n this.insert(this.length, content)\n }\n\n /**\n * Preppends content to this YArray.\n *\n * @param {Array<YXmlElement|YXmlText>} content Array of content to preppend.\n */\n unshift (content) {\n this.insert(0, content)\n }\n\n /**\n * Returns the i-th element from a YArray.\n *\n * @param {number} index The index of the element to return from the YArray\n * @return {YXmlElement|YXmlText}\n */\n get (index) {\n return typeListGet(this, index)\n }\n\n /**\n * Transforms this YArray to a JavaScript Array.\n *\n * @param {number} [start]\n * @param {number} [end]\n * @return {Array<YXmlElement|YXmlText>}\n */\n slice (start = 0, end = this.length) {\n return typeListSlice(this, start, end)\n }\n\n /**\n * Executes a provided function on once on overy child element.\n *\n * @param {function(YXmlElement|YXmlText,number, typeof self):void} f A function to execute on every element of this YArray.\n */\n forEach (f) {\n typeListForEach(this, f)\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder The encoder to write data to.\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlFragmentRefID)\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} _decoder\n * @return {YXmlFragment}\n *\n * @private\n * @function\n */\nexport const readYXmlFragment = _decoder => new YXmlFragment()\n","import * as object from 'lib0/object'\n\nimport {\n YXmlFragment,\n transact,\n typeMapDelete,\n typeMapHas,\n typeMapSet,\n typeMapGet,\n typeMapGetAll,\n typeListForEach,\n YXmlElementRefID,\n YXmlText, ContentType, AbstractType, UpdateDecoderV1, UpdateDecoderV2, UpdateEncoderV1, UpdateEncoderV2, Doc, Item // eslint-disable-line\n} from '../internals.js'\n\n/**\n * @typedef {Object|number|null|Array<any>|string|Uint8Array|AbstractType<any>} ValueTypes\n */\n\n/**\n * An YXmlElement imitates the behavior of a\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}.\n *\n * * An YXmlElement has attributes (key value pairs)\n * * An YXmlElement has childElements that must inherit from YXmlElement\n *\n * @template {{ [key: string]: ValueTypes }} [KV={ [key: string]: string }]\n */\nexport class YXmlElement extends YXmlFragment {\n constructor (nodeName = 'UNDEFINED') {\n super()\n this.nodeName = nodeName\n /**\n * @type {Map<string, any>|null}\n */\n this._prelimAttrs = new Map()\n }\n\n /**\n * @type {YXmlElement|YXmlText|null}\n */\n get nextSibling () {\n const n = this._item ? this._item.next : null\n return n ? /** @type {YXmlElement|YXmlText} */ (/** @type {ContentType} */ (n.content).type) : null\n }\n\n /**\n * @type {YXmlElement|YXmlText|null}\n */\n get prevSibling () {\n const n = this._item ? this._item.prev : null\n return n ? /** @type {YXmlElement|YXmlText} */ (/** @type {ContentType} */ (n.content).type) : null\n }\n\n /**\n * Integrate this type into the Yjs instance.\n *\n * * Save this struct in the os\n * * This type is sent to other client\n * * Observer functions are fired\n *\n * @param {Doc} y The Yjs instance\n * @param {Item} item\n */\n _integrate (y, item) {\n super._integrate(y, item)\n ;(/** @type {Map<string, any>} */ (this._prelimAttrs)).forEach((value, key) => {\n this.setAttribute(key, value)\n })\n this._prelimAttrs = null\n }\n\n /**\n * Creates an Item with the same effect as this Item (without position effect)\n *\n * @return {YXmlElement}\n */\n _copy () {\n return new YXmlElement(this.nodeName)\n }\n\n /**\n * @return {YXmlElement<KV>}\n */\n clone () {\n /**\n * @type {YXmlElement<KV>}\n */\n const el = new YXmlElement(this.nodeName)\n const attrs = this.getAttributes()\n object.forEach(attrs, (value, key) => {\n if (typeof value === 'string') {\n el.setAttribute(key, value)\n }\n })\n // @ts-ignore\n el.insert(0, this.toArray().map(item => item instanceof AbstractType ? item.clone() : item))\n return el\n }\n\n /**\n * Returns the XML serialization of this YXmlElement.\n * The attributes are ordered by attribute-name, so you can easily use this\n * method to compare YXmlElements\n *\n * @return {string} The string representation of this type.\n *\n * @public\n */\n toString () {\n const attrs = this.getAttributes()\n const stringBuilder = []\n const keys = []\n for (const key in attrs) {\n keys.push(key)\n }\n keys.sort()\n const keysLen = keys.length\n for (let i = 0; i < keysLen; i++) {\n const key = keys[i]\n stringBuilder.push(key + '=\"' + attrs[key] + '\"')\n }\n const nodeName = this.nodeName.toLocaleLowerCase()\n const attrsString = stringBuilder.length > 0 ? ' ' + stringBuilder.join(' ') : ''\n return `<${nodeName}${attrsString}>${super.toString()}</${nodeName}>`\n }\n\n /**\n * Removes an attribute from this YXmlElement.\n *\n * @param {string} attributeName The attribute name that is to be removed.\n *\n * @public\n */\n removeAttribute (attributeName) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapDelete(transaction, this, attributeName)\n })\n } else {\n /** @type {Map<string,any>} */ (this._prelimAttrs).delete(attributeName)\n }\n }\n\n /**\n * Sets or updates an attribute.\n *\n * @template {keyof KV & string} KEY\n *\n * @param {KEY} attributeName The attribute name that is to be set.\n * @param {KV[KEY]} attributeValue The attribute value that is to be set.\n *\n * @public\n */\n setAttribute (attributeName, attributeValue) {\n if (this.doc !== null) {\n transact(this.doc, transaction => {\n typeMapSet(transaction, this, attributeName, attributeValue)\n })\n } else {\n /** @type {Map<string, any>} */ (this._prelimAttrs).set(attributeName, attributeValue)\n }\n }\n\n /**\n * Returns an attribute value that belongs to the attribute name.\n *\n * @template {keyof KV & string} KEY\n *\n * @param {KEY} attributeName The attribute name that identifies the\n * queried value.\n * @return {KV[KEY]|undefined} The queried attribute value.\n *\n * @public\n */\n getAttribute (attributeName) {\n return /** @type {any} */ (typeMapGet(this, attributeName))\n }\n\n /**\n * Returns whether an attribute exists\n *\n * @param {string} attributeName The attribute name to check for existence.\n * @return {boolean} whether the attribute exists.\n *\n * @public\n */\n hasAttribute (attributeName) {\n return /** @type {any} */ (typeMapHas(this, attributeName))\n }\n\n /**\n * Returns all attribute name/value pairs in a JSON Object.\n *\n * @return {{ [Key in Extract<keyof KV,string>]?: KV[Key]}} A JSON Object that describes the attributes.\n *\n * @public\n */\n getAttributes () {\n return /** @type {any} */ (typeMapGetAll(this))\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlElement.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object<string, any>} [hooks={}] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type.\n * @return {Node} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks = {}, binding) {\n const dom = _document.createElement(this.nodeName)\n const attrs = this.getAttributes()\n for (const key in attrs) {\n const value = attrs[key]\n if (typeof value === 'string') {\n dom.setAttribute(key, value)\n }\n }\n typeListForEach(this, yxml => {\n dom.appendChild(yxml.toDOM(_document, hooks, binding))\n })\n if (binding !== undefined) {\n binding._createAssociation(dom, this)\n }\n return dom\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder The encoder to write data to.\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlElementRefID)\n encoder.writeKey(this.nodeName)\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {YXmlElement}\n *\n * @function\n */\nexport const readYXmlElement = decoder => new YXmlElement(decoder.readKey())\n","\nimport {\n YEvent,\n YXmlText, YXmlElement, YXmlFragment, Transaction // eslint-disable-line\n} from '../internals.js'\n\n/**\n * @extends YEvent<YXmlElement|YXmlText|YXmlFragment>\n * An Event that describes changes on a YXml Element or Yxml Fragment\n */\nexport class YXmlEvent extends YEvent {\n /**\n * @param {YXmlElement|YXmlText|YXmlFragment} target The target on which the event is created.\n * @param {Set<string|null>} subs The set of changed attributes. `null` is included if the\n * child list changed.\n * @param {Transaction} transaction The transaction instance with wich the\n * change was created.\n */\n constructor (target, subs, transaction) {\n super(target, transaction)\n /**\n * Whether the children changed.\n * @type {Boolean}\n * @private\n */\n this.childListChanged = false\n /**\n * Set of all changed attributes.\n * @type {Set<string>}\n */\n this.attributesChanged = new Set()\n subs.forEach((sub) => {\n if (sub === null) {\n this.childListChanged = true\n } else {\n this.attributesChanged.add(sub)\n }\n })\n }\n}\n","\nimport {\n YMap,\n YXmlHookRefID,\n UpdateDecoderV1, UpdateDecoderV2, UpdateEncoderV1, UpdateEncoderV2 // eslint-disable-line\n} from '../internals.js'\n\n/**\n * You can manage binding to a custom type with YXmlHook.\n *\n * @extends {YMap<any>}\n */\nexport class YXmlHook extends YMap {\n /**\n * @param {string} hookName nodeName of the Dom Node.\n */\n constructor (hookName) {\n super()\n /**\n * @type {string}\n */\n this.hookName = hookName\n }\n\n /**\n * Creates an Item with the same effect as this Item (without position effect)\n */\n _copy () {\n return new YXmlHook(this.hookName)\n }\n\n /**\n * @return {YXmlHook}\n */\n clone () {\n const el = new YXmlHook(this.hookName)\n this.forEach((value, key) => {\n el.set(key, value)\n })\n return el\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlElement.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object.<string, any>} [hooks] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type\n * @return {Element} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks = {}, binding) {\n const hook = hooks[this.hookName]\n let dom\n if (hook !== undefined) {\n dom = hook.createDom(this)\n } else {\n dom = document.createElement(this.hookName)\n }\n dom.setAttribute('data-yjs-hook', this.hookName)\n if (binding !== undefined) {\n binding._createAssociation(dom, this)\n }\n return dom\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder The encoder to write data to.\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlHookRefID)\n encoder.writeKey(this.hookName)\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {YXmlHook}\n *\n * @private\n * @function\n */\nexport const readYXmlHook = decoder =>\n new YXmlHook(decoder.readKey())\n","\nimport {\n YText,\n YXmlTextRefID,\n ContentType, YXmlElement, UpdateDecoderV1, UpdateDecoderV2, UpdateEncoderV1, UpdateEncoderV2, // eslint-disable-line\n} from '../internals.js'\n\n/**\n * Represents text in a Dom Element. In the future this type will also handle\n * simple formatting information like bold and italic.\n */\nexport class YXmlText extends YText {\n /**\n * @type {YXmlElement|YXmlText|null}\n */\n get nextSibling () {\n const n = this._item ? this._item.next : null\n return n ? /** @type {YXmlElement|YXmlText} */ (/** @type {ContentType} */ (n.content).type) : null\n }\n\n /**\n * @type {YXmlElement|YXmlText|null}\n */\n get prevSibling () {\n const n = this._item ? this._item.prev : null\n return n ? /** @type {YXmlElement|YXmlText} */ (/** @type {ContentType} */ (n.content).type) : null\n }\n\n _copy () {\n return new YXmlText()\n }\n\n /**\n * @return {YXmlText}\n */\n clone () {\n const text = new YXmlText()\n text.applyDelta(this.toDelta())\n return text\n }\n\n /**\n * Creates a Dom Element that mirrors this YXmlText.\n *\n * @param {Document} [_document=document] The document object (you must define\n * this when calling this method in\n * nodejs)\n * @param {Object<string, any>} [hooks] Optional property to customize how hooks\n * are presented in the DOM\n * @param {any} [binding] You should not set this property. This is\n * used if DomBinding wants to create a\n * association to the created DOM type.\n * @return {Text} The {@link https://developer.mozilla.org/en-US/docs/Web/API/Element|Dom Element}\n *\n * @public\n */\n toDOM (_document = document, hooks, binding) {\n const dom = _document.createTextNode(this.toString())\n if (binding !== undefined) {\n binding._createAssociation(dom, this)\n }\n return dom\n }\n\n toString () {\n // @ts-ignore\n return this.toDelta().map(delta => {\n const nestedNodes = []\n for (const nodeName in delta.attributes) {\n const attrs = []\n for (const key in delta.attributes[nodeName]) {\n attrs.push({ key, value: delta.attributes[nodeName][key] })\n }\n // sort attributes to get a unique order\n attrs.sort((a, b) => a.key < b.key ? -1 : 1)\n nestedNodes.push({ nodeName, attrs })\n }\n // sort node order to get a unique order\n nestedNodes.sort((a, b) => a.nodeName < b.nodeName ? -1 : 1)\n // now convert to dom string\n let str = ''\n for (let i = 0; i < nestedNodes.length; i++) {\n const node = nestedNodes[i]\n str += `<${node.nodeName}`\n for (let j = 0; j < node.attrs.length; j++) {\n const attr = node.attrs[j]\n str += ` ${attr.key}=\"${attr.value}\"`\n }\n str += '>'\n }\n str += delta.insert\n for (let i = nestedNodes.length - 1; i >= 0; i--) {\n str += `</${nestedNodes[i].nodeName}>`\n }\n return str\n }).join('')\n }\n\n /**\n * @return {string}\n */\n toJSON () {\n return this.toString()\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n */\n _write (encoder) {\n encoder.writeTypeRef(YXmlTextRefID)\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {YXmlText}\n *\n * @private\n * @function\n */\nexport const readYXmlText = decoder => new YXmlText()\n","\nimport {\n UpdateEncoderV1, UpdateEncoderV2, ID, Transaction // eslint-disable-line\n} from '../internals.js'\n\nimport * as error from 'lib0/error'\n\nexport class AbstractStruct {\n /**\n * @param {ID} id\n * @param {number} length\n */\n constructor (id, length) {\n this.id = id\n this.length = length\n }\n\n /**\n * @type {boolean}\n */\n get deleted () {\n throw error.methodUnimplemented()\n }\n\n /**\n * Merge this struct with the item to the right.\n * This method is already assuming that `this.id.clock + this.length === this.id.clock`.\n * Also this method does *not* remove right from StructStore!\n * @param {AbstractStruct} right\n * @return {boolean} wether this merged with right\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder The encoder to write data to.\n * @param {number} offset\n * @param {number} encodingRef\n */\n write (encoder, offset, encodingRef) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {Transaction} transaction\n * @param {number} offset\n */\n integrate (transaction, offset) {\n throw error.methodUnimplemented()\n }\n}\n","\nimport {\n AbstractStruct,\n addStruct,\n UpdateDecoderV1, UpdateDecoderV2, UpdateEncoderV1, UpdateEncoderV2, StructStore, Transaction, ID // eslint-disable-line\n} from '../internals.js'\n\nexport const structGCRefNumber = 0\n\n/**\n * @private\n */\nexport class GC extends AbstractStruct {\n get deleted () {\n return true\n }\n\n delete () {}\n\n /**\n * @param {GC} right\n * @return {boolean}\n */\n mergeWith (right) {\n if (this.constructor !== right.constructor) {\n return false\n }\n this.length += right.length\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {number} offset\n */\n integrate (transaction, offset) {\n if (offset > 0) {\n this.id.clock += offset\n this.length -= offset\n }\n addStruct(transaction.doc.store, this)\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeInfo(structGCRefNumber)\n encoder.writeLen(this.length - offset)\n }\n\n /**\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @return {null | number}\n */\n getMissing (transaction, store) {\n return null\n }\n}\n","import {\n UpdateDecoderV1, UpdateDecoderV2, UpdateEncoderV1, UpdateEncoderV2, StructStore, Item, Transaction // eslint-disable-line\n} from '../internals.js'\n\nimport * as error from 'lib0/error'\n\nexport class ContentBinary {\n /**\n * @param {Uint8Array} content\n */\n constructor (content) {\n this.content = content\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array<any>}\n */\n getContent () {\n return [this.content]\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentBinary}\n */\n copy () {\n return new ContentBinary(this.content)\n }\n\n /**\n * @param {number} offset\n * @return {ContentBinary}\n */\n splice (offset) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {ContentBinary} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeBuf(this.content)\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 3\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2 } decoder\n * @return {ContentBinary}\n */\nexport const readContentBinary = decoder => new ContentBinary(decoder.readBuf())\n","\nimport {\n addToDeleteSet,\n UpdateDecoderV1, UpdateDecoderV2, UpdateEncoderV1, UpdateEncoderV2, StructStore, Item, Transaction // eslint-disable-line\n} from '../internals.js'\n\nexport class ContentDeleted {\n /**\n * @param {number} len\n */\n constructor (len) {\n this.len = len\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.len\n }\n\n /**\n * @return {Array<any>}\n */\n getContent () {\n return []\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return false\n }\n\n /**\n * @return {ContentDeleted}\n */\n copy () {\n return new ContentDeleted(this.len)\n }\n\n /**\n * @param {number} offset\n * @return {ContentDeleted}\n */\n splice (offset) {\n const right = new ContentDeleted(this.len - offset)\n this.len = offset\n return right\n }\n\n /**\n * @param {ContentDeleted} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.len += right.len\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {\n addToDeleteSet(transaction.deleteSet, item.id.client, item.id.clock, this.len)\n item.markDeleted()\n }\n\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeLen(this.len - offset)\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 1\n }\n}\n\n/**\n * @private\n *\n * @param {UpdateDecoderV1 | UpdateDecoderV2 } decoder\n * @return {ContentDeleted}\n */\nexport const readContentDeleted = decoder => new ContentDeleted(decoder.readLen())\n","\nimport {\n Doc, UpdateDecoderV1, UpdateDecoderV2, UpdateEncoderV1, UpdateEncoderV2, StructStore, Transaction, Item // eslint-disable-line\n} from '../internals.js'\n\nimport * as error from 'lib0/error'\n\n/**\n * @param {string} guid\n * @param {Object<string, any>} opts\n */\nconst createDocFromOpts = (guid, opts) => new Doc({ guid, ...opts, shouldLoad: opts.shouldLoad || opts.autoLoad || false })\n\n/**\n * @private\n */\nexport class ContentDoc {\n /**\n * @param {Doc} doc\n */\n constructor (doc) {\n if (doc._item) {\n console.error('This document was already integrated as a sub-document. You should create a second instance instead with the same guid.')\n }\n /**\n * @type {Doc}\n */\n this.doc = doc\n /**\n * @type {any}\n */\n const opts = {}\n this.opts = opts\n if (!doc.gc) {\n opts.gc = false\n }\n if (doc.autoLoad) {\n opts.autoLoad = true\n }\n if (doc.meta !== null) {\n opts.meta = doc.meta\n }\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array<any>}\n */\n getContent () {\n return [this.doc]\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentDoc}\n */\n copy () {\n return new ContentDoc(createDocFromOpts(this.doc.guid, this.opts))\n }\n\n /**\n * @param {number} offset\n * @return {ContentDoc}\n */\n splice (offset) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {ContentDoc} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {\n // this needs to be reflected in doc.destroy as well\n this.doc._item = item\n transaction.subdocsAdded.add(this.doc)\n if (this.doc.shouldLoad) {\n transaction.subdocsLoaded.add(this.doc)\n }\n }\n\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {\n if (transaction.subdocsAdded.has(this.doc)) {\n transaction.subdocsAdded.delete(this.doc)\n } else {\n transaction.subdocsRemoved.add(this.doc)\n }\n }\n\n /**\n * @param {StructStore} store\n */\n gc (store) { }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeString(this.doc.guid)\n encoder.writeAny(this.opts)\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 9\n }\n}\n\n/**\n * @private\n *\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {ContentDoc}\n */\nexport const readContentDoc = decoder => new ContentDoc(createDocFromOpts(decoder.readString(), decoder.readAny()))\n","\nimport {\n UpdateDecoderV1, UpdateDecoderV2, UpdateEncoderV1, UpdateEncoderV2, StructStore, Item, Transaction // eslint-disable-line\n} from '../internals.js'\n\nimport * as error from 'lib0/error'\n\n/**\n * @private\n */\nexport class ContentEmbed {\n /**\n * @param {Object} embed\n */\n constructor (embed) {\n this.embed = embed\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array<any>}\n */\n getContent () {\n return [this.embed]\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentEmbed}\n */\n copy () {\n return new ContentEmbed(this.embed)\n }\n\n /**\n * @param {number} offset\n * @return {ContentEmbed}\n */\n splice (offset) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {ContentEmbed} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeJSON(this.embed)\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 5\n }\n}\n\n/**\n * @private\n *\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {ContentEmbed}\n */\nexport const readContentEmbed = decoder => new ContentEmbed(decoder.readJSON())\n","\nimport {\n AbstractType, UpdateDecoderV1, UpdateDecoderV2, UpdateEncoderV1, UpdateEncoderV2, Item, StructStore, Transaction // eslint-disable-line\n} from '../internals.js'\n\nimport * as error from 'lib0/error'\n\n/**\n * @private\n */\nexport class ContentFormat {\n /**\n * @param {string} key\n * @param {Object} value\n */\n constructor (key, value) {\n this.key = key\n this.value = value\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array<any>}\n */\n getContent () {\n return []\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return false\n }\n\n /**\n * @return {ContentFormat}\n */\n copy () {\n return new ContentFormat(this.key, this.value)\n }\n\n /**\n * @param {number} offset\n * @return {ContentFormat}\n */\n splice (offset) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {ContentFormat} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {\n // @todo searchmarker are currently unsupported for rich text documents\n /** @type {AbstractType<any>} */ (item.parent)._searchMarker = null\n }\n\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeKey(this.key)\n encoder.writeJSON(this.value)\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 6\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {ContentFormat}\n */\nexport const readContentFormat = decoder => new ContentFormat(decoder.readKey(), decoder.readJSON())\n","import {\n UpdateDecoderV1, UpdateDecoderV2, UpdateEncoderV1, UpdateEncoderV2, Transaction, Item, StructStore // eslint-disable-line\n} from '../internals.js'\n\n/**\n * @private\n */\nexport class ContentJSON {\n /**\n * @param {Array<any>} arr\n */\n constructor (arr) {\n /**\n * @type {Array<any>}\n */\n this.arr = arr\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.arr.length\n }\n\n /**\n * @return {Array<any>}\n */\n getContent () {\n return this.arr\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentJSON}\n */\n copy () {\n return new ContentJSON(this.arr)\n }\n\n /**\n * @param {number} offset\n * @return {ContentJSON}\n */\n splice (offset) {\n const right = new ContentJSON(this.arr.slice(offset))\n this.arr = this.arr.slice(0, offset)\n return right\n }\n\n /**\n * @param {ContentJSON} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.arr = this.arr.concat(right.arr)\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n const len = this.arr.length\n encoder.writeLen(len - offset)\n for (let i = offset; i < len; i++) {\n const c = this.arr[i]\n encoder.writeString(c === undefined ? 'undefined' : JSON.stringify(c))\n }\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 2\n }\n}\n\n/**\n * @private\n *\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {ContentJSON}\n */\nexport const readContentJSON = decoder => {\n const len = decoder.readLen()\n const cs = []\n for (let i = 0; i < len; i++) {\n const c = decoder.readString()\n if (c === 'undefined') {\n cs.push(undefined)\n } else {\n cs.push(JSON.parse(c))\n }\n }\n return new ContentJSON(cs)\n}\n","import {\n UpdateEncoderV1, UpdateEncoderV2, UpdateDecoderV1, UpdateDecoderV2, Transaction, Item, StructStore // eslint-disable-line\n} from '../internals.js'\n\nexport class ContentAny {\n /**\n * @param {Array<any>} arr\n */\n constructor (arr) {\n /**\n * @type {Array<any>}\n */\n this.arr = arr\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.arr.length\n }\n\n /**\n * @return {Array<any>}\n */\n getContent () {\n return this.arr\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentAny}\n */\n copy () {\n return new ContentAny(this.arr)\n }\n\n /**\n * @param {number} offset\n * @return {ContentAny}\n */\n splice (offset) {\n const right = new ContentAny(this.arr.slice(offset))\n this.arr = this.arr.slice(0, offset)\n return right\n }\n\n /**\n * @param {ContentAny} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.arr = this.arr.concat(right.arr)\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n const len = this.arr.length\n encoder.writeLen(len - offset)\n for (let i = offset; i < len; i++) {\n const c = this.arr[i]\n encoder.writeAny(c)\n }\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 8\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {ContentAny}\n */\nexport const readContentAny = decoder => {\n const len = decoder.readLen()\n const cs = []\n for (let i = 0; i < len; i++) {\n cs.push(decoder.readAny())\n }\n return new ContentAny(cs)\n}\n","import {\n UpdateDecoderV1, UpdateDecoderV2, UpdateEncoderV1, UpdateEncoderV2, Transaction, Item, StructStore // eslint-disable-line\n} from '../internals.js'\n\n/**\n * @private\n */\nexport class ContentString {\n /**\n * @param {string} str\n */\n constructor (str) {\n /**\n * @type {string}\n */\n this.str = str\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return this.str.length\n }\n\n /**\n * @return {Array<any>}\n */\n getContent () {\n return this.str.split('')\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentString}\n */\n copy () {\n return new ContentString(this.str)\n }\n\n /**\n * @param {number} offset\n * @return {ContentString}\n */\n splice (offset) {\n const right = new ContentString(this.str.slice(offset))\n this.str = this.str.slice(0, offset)\n\n // Prevent encoding invalid documents because of splitting of surrogate pairs: https://github.com/yjs/yjs/issues/248\n const firstCharCode = this.str.charCodeAt(offset - 1)\n if (firstCharCode >= 0xD800 && firstCharCode <= 0xDBFF) {\n // Last character of the left split is the start of a surrogate utf16/ucs2 pair.\n // We don't support splitting of surrogate pairs because this may lead to invalid documents.\n // Replace the invalid character with a unicode replacement character (<28> / U+FFFD)\n this.str = this.str.slice(0, offset - 1) + '<27>'\n // replace right as well\n right.str = '<27>' + right.str.slice(1)\n }\n return right\n }\n\n /**\n * @param {ContentString} right\n * @return {boolean}\n */\n mergeWith (right) {\n this.str += right.str\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {}\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {}\n /**\n * @param {StructStore} store\n */\n gc (store) {}\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeString(offset === 0 ? this.str : this.str.slice(offset))\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 4\n }\n}\n\n/**\n * @private\n *\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {ContentString}\n */\nexport const readContentString = decoder => new ContentString(decoder.readString())\n","\nimport {\n readYArray,\n readYMap,\n readYText,\n readYXmlElement,\n readYXmlFragment,\n readYXmlHook,\n readYXmlText,\n UpdateDecoderV1, UpdateDecoderV2, UpdateEncoderV1, UpdateEncoderV2, StructStore, Transaction, Item, YEvent, AbstractType // eslint-disable-line\n} from '../internals.js'\n\nimport * as error from 'lib0/error'\n\n/**\n * @type {Array<function(UpdateDecoderV1 | UpdateDecoderV2):AbstractType<any>>}\n * @private\n */\nexport const typeRefs = [\n readYArray,\n readYMap,\n readYText,\n readYXmlElement,\n readYXmlFragment,\n readYXmlHook,\n readYXmlText\n]\n\nexport const YArrayRefID = 0\nexport const YMapRefID = 1\nexport const YTextRefID = 2\nexport const YXmlElementRefID = 3\nexport const YXmlFragmentRefID = 4\nexport const YXmlHookRefID = 5\nexport const YXmlTextRefID = 6\n\n/**\n * @private\n */\nexport class ContentType {\n /**\n * @param {AbstractType<any>} type\n */\n constructor (type) {\n /**\n * @type {AbstractType<any>}\n */\n this.type = type\n }\n\n /**\n * @return {number}\n */\n getLength () {\n return 1\n }\n\n /**\n * @return {Array<any>}\n */\n getContent () {\n return [this.type]\n }\n\n /**\n * @return {boolean}\n */\n isCountable () {\n return true\n }\n\n /**\n * @return {ContentType}\n */\n copy () {\n return new ContentType(this.type._copy())\n }\n\n /**\n * @param {number} offset\n * @return {ContentType}\n */\n splice (offset) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {ContentType} right\n * @return {boolean}\n */\n mergeWith (right) {\n return false\n }\n\n /**\n * @param {Transaction} transaction\n * @param {Item} item\n */\n integrate (transaction, item) {\n this.type._integrate(transaction.doc, item)\n }\n\n /**\n * @param {Transaction} transaction\n */\n delete (transaction) {\n let item = this.type._start\n while (item !== null) {\n if (!item.deleted) {\n item.delete(transaction)\n } else {\n // This will be gc'd later and we want to merge it if possible\n // We try to merge all deleted items after each transaction,\n // but we have no knowledge about that this needs to be merged\n // since it is not in transaction.ds. Hence we add it to transaction._mergeStructs\n transaction._mergeStructs.push(item)\n }\n item = item.right\n }\n this.type._map.forEach(item => {\n if (!item.deleted) {\n item.delete(transaction)\n } else {\n // same as above\n transaction._mergeStructs.push(item)\n }\n })\n transaction.changed.delete(this.type)\n }\n\n /**\n * @param {StructStore} store\n */\n gc (store) {\n let item = this.type._start\n while (item !== null) {\n item.gc(store, true)\n item = item.right\n }\n this.type._start = null\n this.type._map.forEach(/** @param {Item | null} item */ (item) => {\n while (item !== null) {\n item.gc(store, true)\n item = item.left\n }\n })\n this.type._map = new Map()\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n this.type._write(encoder)\n }\n\n /**\n * @return {number}\n */\n getRef () {\n return 7\n }\n}\n\n/**\n * @private\n *\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @return {ContentType}\n */\nexport const readContentType = decoder => new ContentType(typeRefs[decoder.readTypeRef()](decoder))\n","\nimport {\n GC,\n getState,\n AbstractStruct,\n replaceStruct,\n addStruct,\n addToDeleteSet,\n findRootTypeKey,\n compareIDs,\n getItem,\n getItemCleanEnd,\n getItemCleanStart,\n readContentDeleted,\n readContentBinary,\n readContentJSON,\n readContentAny,\n readContentString,\n readContentEmbed,\n readContentDoc,\n createID,\n readContentFormat,\n readContentType,\n addChangedTypeToTransaction,\n isDeleted,\n StackItem, DeleteSet, UpdateDecoderV1, UpdateDecoderV2, UpdateEncoderV1, UpdateEncoderV2, ContentType, ContentDeleted, StructStore, ID, AbstractType, Transaction // eslint-disable-line\n} from '../internals.js'\n\nimport * as error from 'lib0/error'\nimport * as binary from 'lib0/binary'\nimport * as array from 'lib0/array'\n\n/**\n * @todo This should return several items\n *\n * @param {StructStore} store\n * @param {ID} id\n * @return {{item:Item, diff:number}}\n */\nexport const followRedone = (store, id) => {\n /**\n * @type {ID|null}\n */\n let nextID = id\n let diff = 0\n let item\n do {\n if (diff > 0) {\n nextID = createID(nextID.client, nextID.clock + diff)\n }\n item = getItem(store, nextID)\n diff = nextID.clock - item.id.clock\n nextID = item.redone\n } while (nextID !== null && item instanceof Item)\n return {\n item, diff\n }\n}\n\n/**\n * Make sure that neither item nor any of its parents is ever deleted.\n *\n * This property does not persist when storing it into a database or when\n * sending it to other peers\n *\n * @param {Item|null} item\n * @param {boolean} keep\n */\nexport const keepItem = (item, keep) => {\n while (item !== null && item.keep !== keep) {\n item.keep = keep\n item = /** @type {AbstractType<any>} */ (item.parent)._item\n }\n}\n\n/**\n * Split leftItem into two items\n * @param {Transaction} transaction\n * @param {Item} leftItem\n * @param {number} diff\n * @return {Item}\n *\n * @function\n * @private\n */\nexport const splitItem = (transaction, leftItem, diff) => {\n // create rightItem\n const { client, clock } = leftItem.id\n const rightItem = new Item(\n createID(client, clock + diff),\n leftItem,\n createID(client, clock + diff - 1),\n leftItem.right,\n leftItem.rightOrigin,\n leftItem.parent,\n leftItem.parentSub,\n leftItem.content.splice(diff)\n )\n if (leftItem.deleted) {\n rightItem.markDeleted()\n }\n if (leftItem.keep) {\n rightItem.keep = true\n }\n if (leftItem.redone !== null) {\n rightItem.redone = createID(leftItem.redone.client, leftItem.redone.clock + diff)\n }\n // update left (do not set leftItem.rightOrigin as it will lead to problems when syncing)\n leftItem.right = rightItem\n // update right\n if (rightItem.right !== null) {\n rightItem.right.left = rightItem\n }\n // right is more specific.\n transaction._mergeStructs.push(rightItem)\n // update parent._map\n if (rightItem.parentSub !== null && rightItem.right === null) {\n /** @type {AbstractType<any>} */ (rightItem.parent)._map.set(rightItem.parentSub, rightItem)\n }\n leftItem.length = diff\n return rightItem\n}\n\n/**\n * @param {Array<StackItem>} stack\n * @param {ID} id\n */\nconst isDeletedByUndoStack = (stack, id) => array.some(stack, /** @param {StackItem} s */ s => isDeleted(s.deletions, id))\n\n/**\n * Redoes the effect of this operation.\n *\n * @param {Transaction} transaction The Yjs instance.\n * @param {Item} item\n * @param {Set<Item>} redoitems\n * @param {DeleteSet} itemsToDelete\n * @param {boolean} ignoreRemoteMapChanges\n * @param {import('../utils/UndoManager.js').UndoManager} um\n *\n * @return {Item|null}\n *\n * @private\n */\nexport const redoItem = (transaction, item, redoitems, itemsToDelete, ignoreRemoteMapChanges, um) => {\n const doc = transaction.doc\n const store = doc.store\n const ownClientID = doc.clientID\n const redone = item.redone\n if (redone !== null) {\n return getItemCleanStart(transaction, redone)\n }\n let parentItem = /** @type {AbstractType<any>} */ (item.parent)._item\n /**\n * @type {Item|null}\n */\n let left = null\n /**\n * @type {Item|null}\n */\n let right\n // make sure that parent is redone\n if (parentItem !== null && parentItem.deleted === true) {\n // try to undo parent if it will be undone anyway\n if (parentItem.redone === null && (!redoitems.has(parentItem) || redoItem(transaction, parentItem, redoitems, itemsToDelete, ignoreRemoteMapChanges, um) === null)) {\n return null\n }\n while (parentItem.redone !== null) {\n parentItem = getItemCleanStart(transaction, parentItem.redone)\n }\n }\n const parentType = parentItem === null ? /** @type {AbstractType<any>} */ (item.parent) : /** @type {ContentType} */ (parentItem.content).type\n\n if (item.parentSub === null) {\n // Is an array item. Insert at the old position\n left = item.left\n right = item\n // find next cloned_redo items\n while (left !== null) {\n /**\n * @type {Item|null}\n */\n let leftTrace = left\n // trace redone until parent matches\n while (leftTrace !== null && /** @type {AbstractType<any>} */ (leftTrace.parent)._item !== parentItem) {\n leftTrace = leftTrace.redone === null ? null : getItemCleanStart(transaction, leftTrace.redone)\n }\n if (leftTrace !== null && /** @type {AbstractType<any>} */ (leftTrace.parent)._item === parentItem) {\n left = leftTrace\n break\n }\n left = left.left\n }\n while (right !== null) {\n /**\n * @type {Item|null}\n */\n let rightTrace = right\n // trace redone until parent matches\n while (rightTrace !== null && /** @type {AbstractType<any>} */ (rightTrace.parent)._item !== parentItem) {\n rightTrace = rightTrace.redone === null ? null : getItemCleanStart(transaction, rightTrace.redone)\n }\n if (rightTrace !== null && /** @type {AbstractType<any>} */ (rightTrace.parent)._item === parentItem) {\n right = rightTrace\n break\n }\n right = right.right\n }\n } else {\n right = null\n if (item.right && !ignoreRemoteMapChanges) {\n left = item\n // Iterate right while right is in itemsToDelete\n // If it is intended to delete right while item is redone, we can expect that item should replace right.\n while (left !== null && left.right !== null && (left.right.redone || isDeleted(itemsToDelete, left.right.id) || isDeletedByUndoStack(um.undoStack, left.right.id) || isDeletedByUndoStack(um.redoStack, left.right.id))) {\n left = left.right\n // follow redone\n while (left.redone) left = getItemCleanStart(transaction, left.redone)\n }\n if (left && left.right !== null) {\n // It is not possible to redo this item because it conflicts with a\n // change from another client\n return null\n }\n } else {\n left = parentType._map.get(item.parentSub) || null\n }\n }\n const nextClock = getState(store, ownClientID)\n const nextId = createID(ownClientID, nextClock)\n const redoneItem = new Item(\n nextId,\n left, left && left.lastId,\n right, right && right.id,\n parentType,\n item.parentSub,\n item.content.copy()\n )\n item.redone = nextId\n keepItem(redoneItem, true)\n redoneItem.integrate(transaction, 0)\n return redoneItem\n}\n\n/**\n * Abstract class that represents any content.\n */\nexport class Item extends AbstractStruct {\n /**\n * @param {ID} id\n * @param {Item | null} left\n * @param {ID | null} origin\n * @param {Item | null} right\n * @param {ID | null} rightOrigin\n * @param {AbstractType<any>|ID|null} parent Is a type if integrated, is null if it is possible to copy parent from left or right, is ID before integration to search for it.\n * @param {string | null} parentSub\n * @param {AbstractContent} content\n */\n constructor (id, left, origin, right, rightOrigin, parent, parentSub, content) {\n super(id, content.getLength())\n /**\n * The item that was originally to the left of this item.\n * @type {ID | null}\n */\n this.origin = origin\n /**\n * The item that is currently to the left of this item.\n * @type {Item | null}\n */\n this.left = left\n /**\n * The item that is currently to the right of this item.\n * @type {Item | null}\n */\n this.right = right\n /**\n * The item that was originally to the right of this item.\n * @type {ID | null}\n */\n this.rightOrigin = rightOrigin\n /**\n * @type {AbstractType<any>|ID|null}\n */\n this.parent = parent\n /**\n * If the parent refers to this item with some kind of key (e.g. YMap, the\n * key is specified here. The key is then used to refer to the list in which\n * to insert this item. If `parentSub = null` type._start is the list in\n * which to insert to. Otherwise it is `parent._map`.\n * @type {String | null}\n */\n this.parentSub = parentSub\n /**\n * If this type's effect is redone this type refers to the type that undid\n * this operation.\n * @type {ID | null}\n */\n this.redone = null\n /**\n * @type {AbstractContent}\n */\n this.content = content\n /**\n * bit1: keep\n * bit2: countable\n * bit3: deleted\n * bit4: mark - mark node as fast-search-marker\n * @type {number} byte\n */\n this.info = this.content.isCountable() ? binary.BIT2 : 0\n }\n\n /**\n * This is used to mark the item as an indexed fast-search marker\n *\n * @type {boolean}\n */\n set marker (isMarked) {\n if (((this.info & binary.BIT4) > 0) !== isMarked) {\n this.info ^= binary.BIT4\n }\n }\n\n get marker () {\n return (this.info & binary.BIT4) > 0\n }\n\n /**\n * If true, do not garbage collect this Item.\n */\n get keep () {\n return (this.info & binary.BIT1) > 0\n }\n\n set keep (doKeep) {\n if (this.keep !== doKeep) {\n this.info ^= binary.BIT1\n }\n }\n\n get countable () {\n return (this.info & binary.BIT2) > 0\n }\n\n /**\n * Whether this item was deleted or not.\n * @type {Boolean}\n */\n get deleted () {\n return (this.info & binary.BIT3) > 0\n }\n\n set deleted (doDelete) {\n if (this.deleted !== doDelete) {\n this.info ^= binary.BIT3\n }\n }\n\n markDeleted () {\n this.info |= binary.BIT3\n }\n\n /**\n * Return the creator clientID of the missing op or define missing items and return null.\n *\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @return {null | number}\n */\n getMissing (transaction, store) {\n if (this.origin && this.origin.client !== this.id.client && this.origin.clock >= getState(store, this.origin.client)) {\n return this.origin.client\n }\n if (this.rightOrigin && this.rightOrigin.client !== this.id.client && this.rightOrigin.clock >= getState(store, this.rightOrigin.client)) {\n return this.rightOrigin.client\n }\n if (this.parent && this.parent.constructor === ID && this.id.client !== this.parent.client && this.parent.clock >= getState(store, this.parent.client)) {\n return this.parent.client\n }\n\n // We have all missing ids, now find the items\n\n if (this.origin) {\n this.left = getItemCleanEnd(transaction, store, this.origin)\n this.origin = this.left.lastId\n }\n if (this.rightOrigin) {\n this.right = getItemCleanStart(transaction, this.rightOrigin)\n this.rightOrigin = this.right.id\n }\n if ((this.left && this.left.constructor === GC) || (this.right && this.right.constructor === GC)) {\n this.parent = null\n }\n // only set parent if this shouldn't be garbage collected\n if (!this.parent) {\n if (this.left && this.left.constructor === Item) {\n this.parent = this.left.parent\n this.parentSub = this.left.parentSub\n }\n if (this.right && this.right.constructor === Item) {\n this.parent = this.right.parent\n this.parentSub = this.right.parentSub\n }\n } else if (this.parent.constructor === ID) {\n const parentItem = getItem(store, this.parent)\n if (parentItem.constructor === GC) {\n this.parent = null\n } else {\n this.parent = /** @type {ContentType} */ (parentItem.content).type\n }\n }\n return null\n }\n\n /**\n * @param {Transaction} transaction\n * @param {number} offset\n */\n integrate (transaction, offset) {\n if (offset > 0) {\n this.id.clock += offset\n this.left = getItemCleanEnd(transaction, transaction.doc.store, createID(this.id.client, this.id.clock - 1))\n this.origin = this.left.lastId\n this.content = this.content.splice(offset)\n this.length -= offset\n }\n\n if (this.parent) {\n if ((!this.left && (!this.right || this.right.left !== null)) || (this.left && this.left.right !== this.right)) {\n /**\n * @type {Item|null}\n */\n let left = this.left\n\n /**\n * @type {Item|null}\n */\n let o\n // set o to the first conflicting item\n if (left !== null) {\n o = left.right\n } else if (this.parentSub !== null) {\n o = /** @type {AbstractType<any>} */ (this.parent)._map.get(this.parentSub) || null\n while (o !== null && o.left !== null) {\n o = o.left\n }\n } else {\n o = /** @type {AbstractType<any>} */ (this.parent)._start\n }\n // TODO: use something like DeleteSet here (a tree implementation would be best)\n // @todo use global set definitions\n /**\n * @type {Set<Item>}\n */\n const conflictingItems = new Set()\n /**\n * @type {Set<Item>}\n */\n const itemsBeforeOrigin = new Set()\n // Let c in conflictingItems, b in itemsBeforeOrigin\n // ***{origin}bbbb{this}{c,b}{c,b}{o}***\n // Note that conflictingItems is a subset of itemsBeforeOrigin\n while (o !== null && o !== this.right) {\n itemsBeforeOrigin.add(o)\n conflictingItems.add(o)\n if (compareIDs(this.origin, o.origin)) {\n // case 1\n if (o.id.client < this.id.client) {\n left = o\n conflictingItems.clear()\n } else if (compareIDs(this.rightOrigin, o.rightOrigin)) {\n // this and o are conflicting and point to the same integration points. The id decides which item comes first.\n // Since this is to the left of o, we can break here\n break\n } // else, o might be integrated before an item that this conflicts with. If so, we will find it in the next iterations\n } else if (o.origin !== null && itemsBeforeOrigin.has(getItem(transaction.doc.store, o.origin))) { // use getItem instead of getItemCleanEnd because we don't want / need to split items.\n // case 2\n if (!conflictingItems.has(getItem(transaction.doc.store, o.origin))) {\n left = o\n conflictingItems.clear()\n }\n } else {\n break\n }\n o = o.right\n }\n this.left = left\n }\n // reconnect left/right + update parent map/start if necessary\n if (this.left !== null) {\n const right = this.left.right\n this.right = right\n this.left.right = this\n } else {\n let r\n if (this.parentSub !== null) {\n r = /** @type {AbstractType<any>} */ (this.parent)._map.get(this.parentSub) || null\n while (r !== null && r.left !== null) {\n r = r.left\n }\n } else {\n r = /** @type {AbstractType<any>} */ (this.parent)._start\n ;/** @type {AbstractType<any>} */ (this.parent)._start = this\n }\n this.right = r\n }\n if (this.right !== null) {\n this.right.left = this\n } else if (this.parentSub !== null) {\n // set as current parent value if right === null and this is parentSub\n /** @type {AbstractType<any>} */ (this.parent)._map.set(this.parentSub, this)\n if (this.left !== null) {\n // this is the current attribute value of parent. delete right\n this.left.delete(transaction)\n }\n }\n // adjust length of parent\n if (this.parentSub === null && this.countable && !this.deleted) {\n /** @type {AbstractType<any>} */ (this.parent)._length += this.length\n }\n addStruct(transaction.doc.store, this)\n this.content.integrate(transaction, this)\n // add parent to transaction.changed\n addChangedTypeToTransaction(transaction, /** @type {AbstractType<any>} */ (this.parent), this.parentSub)\n if ((/** @type {AbstractType<any>} */ (this.parent)._item !== null && /** @type {AbstractType<any>} */ (this.parent)._item.deleted) || (this.parentSub !== null && this.right !== null)) {\n // delete if parent is deleted or if this is not the current attribute value of parent\n this.delete(transaction)\n }\n } else {\n // parent is not defined. Integrate GC struct instead\n new GC(this.id, this.length).integrate(transaction, 0)\n }\n }\n\n /**\n * Returns the next non-deleted item\n */\n get next () {\n let n = this.right\n while (n !== null && n.deleted) {\n n = n.right\n }\n return n\n }\n\n /**\n * Returns the previous non-deleted item\n */\n get prev () {\n let n = this.left\n while (n !== null && n.deleted) {\n n = n.left\n }\n return n\n }\n\n /**\n * Computes the last content address of this Item.\n */\n get lastId () {\n // allocating ids is pretty costly because of the amount of ids created, so we try to reuse whenever possible\n return this.length === 1 ? this.id : createID(this.id.client, this.id.clock + this.length - 1)\n }\n\n /**\n * Try to merge two items\n *\n * @param {Item} right\n * @return {boolean}\n */\n mergeWith (right) {\n if (\n this.constructor === right.constructor &&\n compareIDs(right.origin, this.lastId) &&\n this.right === right &&\n compareIDs(this.rightOrigin, right.rightOrigin) &&\n this.id.client === right.id.client &&\n this.id.clock + this.length === right.id.clock &&\n this.deleted === right.deleted &&\n this.redone === null &&\n right.redone === null &&\n this.content.constructor === right.content.constructor &&\n this.content.mergeWith(right.content)\n ) {\n const searchMarker = /** @type {AbstractType<any>} */ (this.parent)._searchMarker\n if (searchMarker) {\n searchMarker.forEach(marker => {\n if (marker.p === right) {\n // right is going to be \"forgotten\" so we need to update the marker\n marker.p = this\n // adjust marker index\n if (!this.deleted && this.countable) {\n marker.index -= this.length\n }\n }\n })\n }\n if (right.keep) {\n this.keep = true\n }\n this.right = right.right\n if (this.right !== null) {\n this.right.left = this\n }\n this.length += right.length\n return true\n }\n return false\n }\n\n /**\n * Mark this Item as deleted.\n *\n * @param {Transaction} transaction\n */\n delete (transaction) {\n if (!this.deleted) {\n const parent = /** @type {AbstractType<any>} */ (this.parent)\n // adjust the length of parent\n if (this.countable && this.parentSub === null) {\n parent._length -= this.length\n }\n this.markDeleted()\n addToDeleteSet(transaction.deleteSet, this.id.client, this.id.clock, this.length)\n addChangedTypeToTransaction(transaction, parent, this.parentSub)\n this.content.delete(transaction)\n }\n }\n\n /**\n * @param {StructStore} store\n * @param {boolean} parentGCd\n */\n gc (store, parentGCd) {\n if (!this.deleted) {\n throw error.unexpectedCase()\n }\n this.content.gc(store)\n if (parentGCd) {\n replaceStruct(store, this, new GC(this.id, this.length))\n } else {\n this.content = new ContentDeleted(this.length)\n }\n }\n\n /**\n * Transform the properties of this type to binary and write it to an\n * BinaryEncoder.\n *\n * This is called when this Item is sent to a remote peer.\n *\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder The encoder to write data to.\n * @param {number} offset\n */\n write (encoder, offset) {\n const origin = offset > 0 ? createID(this.id.client, this.id.clock + offset - 1) : this.origin\n const rightOrigin = this.rightOrigin\n const parentSub = this.parentSub\n const info = (this.content.getRef() & binary.BITS5) |\n (origin === null ? 0 : binary.BIT8) | // origin is defined\n (rightOrigin === null ? 0 : binary.BIT7) | // right origin is defined\n (parentSub === null ? 0 : binary.BIT6) // parentSub is non-null\n encoder.writeInfo(info)\n if (origin !== null) {\n encoder.writeLeftID(origin)\n }\n if (rightOrigin !== null) {\n encoder.writeRightID(rightOrigin)\n }\n if (origin === null && rightOrigin === null) {\n const parent = /** @type {AbstractType<any>} */ (this.parent)\n if (parent._item !== undefined) {\n const parentItem = parent._item\n if (parentItem === null) {\n // parent type on y._map\n // find the correct key\n const ykey = findRootTypeKey(parent)\n encoder.writeParentInfo(true) // write parentYKey\n encoder.writeString(ykey)\n } else {\n encoder.writeParentInfo(false) // write parent id\n encoder.writeLeftID(parentItem.id)\n }\n } else if (parent.constructor === String) { // this edge case was added by differential updates\n encoder.writeParentInfo(true) // write parentYKey\n encoder.writeString(parent)\n } else if (parent.constructor === ID) {\n encoder.writeParentInfo(false) // write parent id\n encoder.writeLeftID(parent)\n } else {\n error.unexpectedCase()\n }\n if (parentSub !== null) {\n encoder.writeString(parentSub)\n }\n }\n this.content.write(encoder, offset)\n }\n}\n\n/**\n * @param {UpdateDecoderV1 | UpdateDecoderV2} decoder\n * @param {number} info\n */\nexport const readItemContent = (decoder, info) => contentRefs[info & binary.BITS5](decoder)\n\n/**\n * A lookup map for reading Item content.\n *\n * @type {Array<function(UpdateDecoderV1 | UpdateDecoderV2):AbstractContent>}\n */\nexport const contentRefs = [\n () => { error.unexpectedCase() }, // GC is not ItemContent\n readContentDeleted, // 1\n readContentJSON, // 2\n readContentBinary, // 3\n readContentString, // 4\n readContentEmbed, // 5\n readContentFormat, // 6\n readContentType, // 7\n readContentAny, // 8\n readContentDoc, // 9\n () => { error.unexpectedCase() } // 10 - Skip is not ItemContent\n]\n\n/**\n * Do not implement this class!\n */\nexport class AbstractContent {\n /**\n * @return {number}\n */\n getLength () {\n throw error.methodUnimplemented()\n }\n\n /**\n * @return {Array<any>}\n */\n getContent () {\n throw error.methodUnimplemented()\n }\n\n /**\n * Should return false if this Item is some kind of meta information\n * (e.g. format information).\n *\n * * Whether this Item should be addressable via `yarray.get(i)`\n * * Whether this Item should be counted when computing yarray.length\n *\n * @return {boolean}\n */\n isCountable () {\n throw error.methodUnimplemented()\n }\n\n /**\n * @return {AbstractContent}\n */\n copy () {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {number} _offset\n * @return {AbstractContent}\n */\n splice (_offset) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {AbstractContent} _right\n * @return {boolean}\n */\n mergeWith (_right) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {Transaction} _transaction\n * @param {Item} _item\n */\n integrate (_transaction, _item) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {Transaction} _transaction\n */\n delete (_transaction) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {StructStore} _store\n */\n gc (_store) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} _encoder\n * @param {number} _offset\n */\n write (_encoder, _offset) {\n throw error.methodUnimplemented()\n }\n\n /**\n * @return {number}\n */\n getRef () {\n throw error.methodUnimplemented()\n }\n}\n","\nimport {\n AbstractStruct,\n UpdateEncoderV1, UpdateEncoderV2, StructStore, Transaction, ID // eslint-disable-line\n} from '../internals.js'\nimport * as error from 'lib0/error'\nimport * as encoding from 'lib0/encoding'\n\nexport const structSkipRefNumber = 10\n\n/**\n * @private\n */\nexport class Skip extends AbstractStruct {\n get deleted () {\n return true\n }\n\n delete () {}\n\n /**\n * @param {Skip} right\n * @return {boolean}\n */\n mergeWith (right) {\n if (this.constructor !== right.constructor) {\n return false\n }\n this.length += right.length\n return true\n }\n\n /**\n * @param {Transaction} transaction\n * @param {number} offset\n */\n integrate (transaction, offset) {\n // skip structs cannot be integrated\n error.unexpectedCase()\n }\n\n /**\n * @param {UpdateEncoderV1 | UpdateEncoderV2} encoder\n * @param {number} offset\n */\n write (encoder, offset) {\n encoder.writeInfo(structSkipRefNumber)\n // write as VarUint because Skips can't make use of predictable length-encoding\n encoding.writeVarUint(encoder.restEncoder, this.length - offset)\n }\n\n /**\n * @param {Transaction} transaction\n * @param {StructStore} store\n * @return {null | number}\n */\n getMissing (transaction, store) {\n return null\n }\n}\n","/** eslint-env browser */\n\nexport {\n Doc,\n Transaction,\n YArray as Array,\n YMap as Map,\n YText as Text,\n YXmlText as XmlText,\n YXmlHook as XmlHook,\n YXmlElement as XmlElement,\n YXmlFragment as XmlFragment,\n YXmlEvent,\n YMapEvent,\n YArrayEvent,\n YTextEvent,\n YEvent,\n Item,\n AbstractStruct,\n GC,\n ContentBinary,\n ContentDeleted,\n ContentEmbed,\n ContentFormat,\n ContentJSON,\n ContentAny,\n ContentString,\n ContentType,\n AbstractType,\n getTypeChildren,\n createRelativePositionFromTypeIndex,\n createRelativePositionFromJSON,\n createAbsolutePositionFromRelativePosition,\n compareRelativePositions,\n AbsolutePosition,\n RelativePosition,\n ID,\n createID,\n compareIDs,\n getState,\n Snapshot,\n createSnapshot,\n createDeleteSet,\n createDeleteSetFromStructStore,\n cleanupYTextFormatting,\n snapshot,\n emptySnapshot,\n findRootTypeKey,\n findIndexSS,\n getItem,\n typeListToArraySnapshot,\n typeMapGetSnapshot,\n createDocFromSnapshot,\n iterateDeletedStructs,\n applyUpdate,\n applyUpdateV2,\n readUpdate,\n readUpdateV2,\n encodeStateAsUpdate,\n encodeStateAsUpdateV2,\n encodeStateVector,\n UndoManager,\n decodeSnapshot,\n encodeSnapshot,\n decodeSnapshotV2,\n encodeSnapshotV2,\n decodeStateVector,\n logUpdate,\n logUpdateV2,\n decodeUpdate,\n decodeUpdateV2,\n relativePositionToJSON,\n isDeleted,\n isParentOf,\n equalSnapshots,\n PermanentUserData, // @TODO experimental\n tryGc,\n transact,\n AbstractConnector,\n logType,\n mergeUpdates,\n mergeUpdatesV2,\n parseUpdateMeta,\n parseUpdateMetaV2,\n encodeStateVectorFromUpdate,\n encodeStateVectorFromUpdateV2,\n encodeRelativePosition,\n decodeRelativePosition,\n diffUpdate,\n diffUpdateV2,\n convertUpdateFormatV1ToV2,\n convertUpdateFormatV2ToV1,\n obfuscateUpdate,\n obfuscateUpdateV2,\n UpdateEncoderV1\n} from './internals.js'\n\nconst glo = /** @type {any} */ (typeof globalThis !== 'undefined'\n ? globalThis\n : typeof window !== 'undefined'\n ? window\n // @ts-ignore\n : typeof global !== 'undefined' ? global : {})\n\nconst importIdentifier = '__ $YJS$ __'\n\nif (glo[importIdentifier] === true) {\n /**\n * Dear reader of this message. Please take this seriously.\n *\n * If you see this message, make sure that you only import one version of Yjs. In many cases,\n * your package manager installs two versions of Yjs that are used by different packages within your project.\n * Another reason for this message is that some parts of your project use the commonjs version of Yjs\n * and others use the EcmaScript version of Yjs.\n *\n * This often leads to issues that are hard to debug. We often need to perform constructor checks,\n * e.g. `struct instanceof GC`. If you imported different versions of Yjs, it is impossible for us to\n * do the constructor checks anymore - which might break the CRDT algorithm.\n *\n * https://github.com/yjs/yjs/issues/438\n */\n console.error('Yjs was already imported. This breaks constructor checks and will lead to issues! - https://github.com/yjs/yjs/issues/438')\n}\nglo[importIdentifier] = true\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 shoul only reply to requests, and not initiate them.\n * Therefore it is necesarry 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. Will not 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","\nimport * as t from 'lib0/testing'\nimport * as prng from 'lib0/prng'\nimport * as encoding from 'lib0/encoding'\nimport * as decoding from 'lib0/decoding'\nimport * as syncProtocol from 'y-protocols/sync'\nimport * as object from 'lib0/object'\nimport * as map from 'lib0/map'\nimport * as Y from '../src/index.js'\nexport * from '../src/index.js'\n\nif (typeof window !== 'undefined') {\n // @ts-ignore\n window.Y = Y // eslint-disable-line\n}\n\n/**\n * @param {TestYInstance} y // publish message created by `y` to all other online clients\n * @param {Uint8Array} m\n */\nconst broadcastMessage = (y, m) => {\n if (y.tc.onlineConns.has(y)) {\n y.tc.onlineConns.forEach(remoteYInstance => {\n if (remoteYInstance !== y) {\n remoteYInstance._receive(m, y)\n }\n })\n }\n}\n\nexport let useV2 = false\n\nexport const encV1 = {\n encodeStateAsUpdate: Y.encodeStateAsUpdate,\n mergeUpdates: Y.mergeUpdates,\n applyUpdate: Y.applyUpdate,\n logUpdate: Y.logUpdate,\n updateEventName: 'update',\n diffUpdate: Y.diffUpdate\n}\n\nexport const encV2 = {\n encodeStateAsUpdate: Y.encodeStateAsUpdateV2,\n mergeUpdates: Y.mergeUpdatesV2,\n applyUpdate: Y.applyUpdateV2,\n logUpdate: Y.logUpdateV2,\n updateEventName: 'updateV2',\n diffUpdate: Y.diffUpdateV2\n}\n\nexport let enc = encV1\n\nconst useV1Encoding = () => {\n useV2 = false\n enc = encV1\n}\n\nconst useV2Encoding = () => {\n console.error('sync protocol doesnt support v2 protocol yet, fallback to v1 encoding') // @Todo\n useV2 = false\n enc = encV1\n}\n\nexport class TestYInstance extends Y.Doc {\n /**\n * @param {TestConnector} testConnector\n * @param {number} clientID\n */\n constructor (testConnector, clientID) {\n super()\n this.userID = clientID // overwriting clientID\n /**\n * @type {TestConnector}\n */\n this.tc = testConnector\n /**\n * @type {Map<TestYInstance, Array<Uint8Array>>}\n */\n this.receiving = new Map()\n testConnector.allConns.add(this)\n /**\n * The list of received updates.\n * We are going to merge them later using Y.mergeUpdates and check if the resulting document is correct.\n * @type {Array<Uint8Array>}\n */\n this.updates = []\n // set up observe on local model\n this.on(enc.updateEventName, /** @param {Uint8Array} update @param {any} origin */ (update, origin) => {\n if (origin !== testConnector) {\n const encoder = encoding.createEncoder()\n syncProtocol.writeUpdate(encoder, update)\n broadcastMessage(this, encoding.toUint8Array(encoder))\n }\n this.updates.push(update)\n })\n this.connect()\n }\n\n /**\n * Disconnect from TestConnector.\n */\n disconnect () {\n this.receiving = new Map()\n this.tc.onlineConns.delete(this)\n }\n\n /**\n * Append yourself to the list of known Y instances in testconnector.\n * Also initiate sync with all clients.\n */\n connect () {\n if (!this.tc.onlineConns.has(this)) {\n this.tc.onlineConns.add(this)\n const encoder = encoding.createEncoder()\n syncProtocol.writeSyncStep1(encoder, this)\n // publish SyncStep1\n broadcastMessage(this, encoding.toUint8Array(encoder))\n this.tc.onlineConns.forEach(remoteYInstance => {\n if (remoteYInstance !== this) {\n // remote instance sends instance to this instance\n const encoder = encoding.createEncoder()\n syncProtocol.writeSyncStep1(encoder, remoteYInstance)\n this._receive(encoding.toUint8Array(encoder), remoteYInstance)\n }\n })\n }\n }\n\n /**\n * Receive a message from another client. This message is only appended to the list of receiving messages.\n * TestConnector decides when this client actually reads this message.\n *\n * @param {Uint8Array} message\n * @param {TestYInstance} remoteClient\n */\n _receive (message, remoteClient) {\n map.setIfUndefined(this.receiving, remoteClient, () => /** @type {Array<Uint8Array>} */ ([])).push(message)\n }\n}\n\n/**\n * Keeps track of TestYInstances.\n *\n * The TestYInstances add/remove themselves from the list of connections maiained in this object.\n * I think it makes sense. Deal with it.\n */\nexport class TestConnector {\n /**\n * @param {prng.PRNG} gen\n */\n constructor (gen) {\n /**\n * @type {Set<TestYInstance>}\n */\n this.allConns = new Set()\n /**\n * @type {Set<TestYInstance>}\n */\n this.onlineConns = new Set()\n /**\n * @type {prng.PRNG}\n */\n this.prng = gen\n }\n\n /**\n * Create a new Y instance and add it to the list of connections\n * @param {number} clientID\n */\n createY (clientID) {\n return new TestYInstance(this, clientID)\n }\n\n /**\n * Choose random connection and flush a random message from a random sender.\n *\n * If this function was unable to flush a message, because there are no more messages to flush, it returns false. true otherwise.\n * @return {boolean}\n */\n flushRandomMessage () {\n const gen = this.prng\n const conns = Array.from(this.onlineConns).filter(conn => conn.receiving.size > 0)\n if (conns.length > 0) {\n const receiver = prng.oneOf(gen, conns)\n const [sender, messages] = prng.oneOf(gen, Array.from(receiver.receiving))\n const m = messages.shift()\n if (messages.length === 0) {\n receiver.receiving.delete(sender)\n }\n if (m === undefined) {\n return this.flushRandomMessage()\n }\n const encoder = encoding.createEncoder()\n // console.log('receive (' + sender.userID + '->' + receiver.userID + '):\\n', syncProtocol.stringifySyncMessage(decoding.createDecoder(m), receiver))\n // do not publish data created when this function is executed (could be ss2 or update message)\n syncProtocol.readSyncMessage(decoding.createDecoder(m), encoder, receiver, receiver.tc)\n if (encoding.length(encoder) > 0) {\n // send reply message\n sender._receive(encoding.toUint8Array(encoder), receiver)\n }\n return true\n }\n return false\n }\n\n /**\n * @return {boolean} True iff this function actually flushed something\n */\n flushAllMessages () {\n let didSomething = false\n while (this.flushRandomMessage()) {\n didSomething = true\n }\n return didSomething\n }\n\n reconnectAll () {\n this.allConns.forEach(conn => conn.connect())\n }\n\n disconnectAll () {\n this.allConns.forEach(conn => conn.disconnect())\n }\n\n syncAll () {\n this.reconnectAll()\n this.flushAllMessages()\n }\n\n /**\n * @return {boolean} Whether it was possible to disconnect a randon connection.\n */\n disconnectRandom () {\n if (this.onlineConns.size === 0) {\n return false\n }\n prng.oneOf(this.prng, Array.from(this.onlineConns)).disconnect()\n return true\n }\n\n /**\n * @return {boolean} Whether it was possible to reconnect a random connection.\n */\n reconnectRandom () {\n /**\n * @type {Array<TestYInstance>}\n */\n const reconnectable = []\n this.allConns.forEach(conn => {\n if (!this.onlineConns.has(conn)) {\n reconnectable.push(conn)\n }\n })\n if (reconnectable.length === 0) {\n return false\n }\n prng.oneOf(this.prng, reconnectable).connect()\n return true\n }\n}\n\n/**\n * @template T\n * @param {t.TestCase} tc\n * @param {{users?:number}} conf\n * @param {InitTestObjectCallback<T>} [initTestObject]\n * @return {{testObjects:Array<any>,testConnector:TestConnector,users:Array<TestYInstance>,array0:Y.Array<any>,array1:Y.Array<any>,array2:Y.Array<any>,map0:Y.Map<any>,map1:Y.Map<any>,map2:Y.Map<any>,map3:Y.Map<any>,text0:Y.Text,text1:Y.Text,text2:Y.Text,xml0:Y.XmlElement,xml1:Y.XmlElement,xml2:Y.XmlElement}}\n */\nexport const init = (tc, { users = 5 } = {}, initTestObject) => {\n /**\n * @type {Object<string,any>}\n */\n const result = {\n users: []\n }\n const gen = tc.prng\n // choose an encoding approach at random\n if (prng.bool(gen)) {\n useV2Encoding()\n } else {\n useV1Encoding()\n }\n\n const testConnector = new TestConnector(gen)\n result.testConnector = testConnector\n for (let i = 0; i < users; i++) {\n const y = testConnector.createY(i)\n y.clientID = i\n result.users.push(y)\n result['array' + i] = y.getArray('array')\n result['map' + i] = y.getMap('map')\n result['xml' + i] = y.get('xml', Y.XmlElement)\n result['text' + i] = y.getText('text')\n }\n testConnector.syncAll()\n result.testObjects = result.users.map(initTestObject || (() => null))\n useV1Encoding()\n return /** @type {any} */ (result)\n}\n\n/**\n * 1. reconnect and flush all\n * 2. user 0 gc\n * 3. get type content\n * 4. disconnect & reconnect all (so gc is propagated)\n * 5. compare os, ds, ss\n *\n * @param {Array<TestYInstance>} users\n */\nexport const compare = users => {\n users.forEach(u => u.connect())\n while (users[0].tc.flushAllMessages()) {} // eslint-disable-line\n // For each document, merge all received document updates with Y.mergeUpdates and create a new document which will be added to the list of \"users\"\n // This ensures that mergeUpdates works correctly\n const mergedDocs = users.map(user => {\n const ydoc = new Y.Doc()\n enc.applyUpdate(ydoc, enc.mergeUpdates(user.updates))\n return ydoc\n })\n users.push(.../** @type {any} */(mergedDocs))\n const userArrayValues = users.map(u => u.getArray('array').toJSON())\n const userMapValues = users.map(u => u.getMap('map').toJSON())\n const userXmlValues = users.map(u => u.get('xml', Y.XmlElement).toString())\n const userTextValues = users.map(u => u.getText('text').toDelta())\n for (const u of users) {\n t.assert(u.store.pendingDs === null)\n t.assert(u.store.pendingStructs === null)\n }\n // Test Array iterator\n t.compare(users[0].getArray('array').toArray(), Array.from(users[0].getArray('array')))\n // Test Map iterator\n const ymapkeys = Array.from(users[0].getMap('map').keys())\n t.assert(ymapkeys.length === Object.keys(userMapValues[0]).length)\n ymapkeys.forEach(key => t.assert(object.hasProperty(userMapValues[0], key)))\n /**\n * @type {Object<string,any>}\n */\n const mapRes = {}\n for (const [k, v] of users[0].getMap('map')) {\n mapRes[k] = v instanceof Y.AbstractType ? v.toJSON() : v\n }\n t.compare(userMapValues[0], mapRes)\n // Compare all users\n for (let i = 0; i < users.length - 1; i++) {\n t.compare(userArrayValues[i].length, users[i].getArray('array').length)\n t.compare(userArrayValues[i], userArrayValues[i + 1])\n t.compare(userMapValues[i], userMapValues[i + 1])\n t.compare(userXmlValues[i], userXmlValues[i + 1])\n t.compare(userTextValues[i].map(/** @param {any} a */ a => typeof a.insert === 'string' ? a.insert : ' ').join('').length, users[i].getText('text').length)\n t.compare(userTextValues[i], userTextValues[i + 1], '', (_constructor, a, b) => {\n if (a instanceof Y.AbstractType) {\n t.compare(a.toJSON(), b.toJSON())\n } else if (a !== b) {\n t.fail('Deltas dont match')\n }\n return true\n })\n t.compare(Y.encodeStateVector(users[i]), Y.encodeStateVector(users[i + 1]))\n compareDS(Y.createDeleteSetFromStructStore(users[i].store), Y.createDeleteSetFromStructStore(users[i + 1].store))\n compareStructStores(users[i].store, users[i + 1].store)\n }\n users.map(u => u.destroy())\n}\n\n/**\n * @param {Y.Item?} a\n * @param {Y.Item?} b\n * @return {boolean}\n */\nexport const compareItemIDs = (a, b) => a === b || (a !== null && b != null && Y.compareIDs(a.id, b.id))\n\n/**\n * @param {import('../src/internals.js').StructStore} ss1\n * @param {import('../src/internals.js').StructStore} ss2\n */\nexport const compareStructStores = (ss1, ss2) => {\n t.assert(ss1.clients.size === ss2.clients.size)\n for (const [client, structs1] of ss1.clients) {\n const structs2 = /** @type {Array<Y.AbstractStruct>} */ (ss2.clients.get(client))\n t.assert(structs2 !== undefined && structs1.length === structs2.length)\n for (let i = 0; i < structs1.length; i++) {\n const s1 = structs1[i]\n const s2 = structs2[i]\n // checks for abstract struct\n if (\n s1.constructor !== s2.constructor ||\n !Y.compareIDs(s1.id, s2.id) ||\n s1.deleted !== s2.deleted ||\n // @ts-ignore\n s1.length !== s2.length\n ) {\n t.fail('Structs dont match')\n }\n if (s1 instanceof Y.Item) {\n if (\n !(s2 instanceof Y.Item) ||\n !((s1.left === null && s2.left === null) || (s1.left !== null && s2.left !== null && Y.compareIDs(s1.left.lastId, s2.left.lastId))) ||\n !compareItemIDs(s1.right, s2.right) ||\n !Y.compareIDs(s1.origin, s2.origin) ||\n !Y.compareIDs(s1.rightOrigin, s2.rightOrigin) ||\n s1.parentSub !== s2.parentSub\n ) {\n return t.fail('Items dont match')\n }\n // make sure that items are connected correctly\n t.assert(s1.left === null || s1.left.right === s1)\n t.assert(s1.right === null || s1.right.left === s1)\n t.assert(s2.left === null || s2.left.right === s2)\n t.assert(s2.right === null || s2.right.left === s2)\n }\n }\n }\n}\n\n/**\n * @param {import('../src/internals.js').DeleteSet} ds1\n * @param {import('../src/internals.js').DeleteSet} ds2\n */\nexport const compareDS = (ds1, ds2) => {\n t.assert(ds1.clients.size === ds2.clients.size)\n ds1.clients.forEach((deleteItems1, client) => {\n const deleteItems2 = /** @type {Array<import('../src/internals.js').DeleteItem>} */ (ds2.clients.get(client))\n t.assert(deleteItems2 !== undefined && deleteItems1.length === deleteItems2.length)\n for (let i = 0; i < deleteItems1.length; i++) {\n const di1 = deleteItems1[i]\n const di2 = deleteItems2[i]\n if (di1.clock !== di2.clock || di1.len !== di2.len) {\n t.fail('DeleteSets dont match')\n }\n }\n })\n}\n\n/**\n * @template T\n * @callback InitTestObjectCallback\n * @param {TestYInstance} y\n * @return {T}\n */\n\n/**\n * @template T\n * @param {t.TestCase} tc\n * @param {Array<function(Y.Doc,prng.PRNG,T):void>} mods\n * @param {number} iterations\n * @param {InitTestObjectCallback<T>} [initTestObject]\n */\nexport const applyRandomTests = (tc, mods, iterations, initTestObject) => {\n const gen = tc.prng\n const result = init(tc, { users: 5 }, initTestObject)\n const { testConnector, users } = result\n for (let i = 0; i < iterations; i++) {\n if (prng.int32(gen, 0, 100) <= 2) {\n // 2% chance to disconnect/reconnect a random user\n if (prng.bool(gen)) {\n testConnector.disconnectRandom()\n } else {\n testConnector.reconnectRandom()\n }\n } else if (prng.int32(gen, 0, 100) <= 1) {\n // 1% chance to flush all\n testConnector.flushAllMessages()\n } else if (prng.int32(gen, 0, 100) <= 50) {\n // 50% chance to flush a random message\n testConnector.flushRandomMessage()\n }\n const user = prng.int32(gen, 0, users.length - 1)\n const test = prng.oneOf(gen, mods)\n test(users[user], gen, result.testObjects[user])\n }\n compare(users)\n return result\n}\n","import { init, compare, applyRandomTests, Doc } from './testHelper.js' // eslint-disable-line\n\nimport {\n compareIDs\n} from '../src/internals.js'\n\nimport * as Y from '../src/index.js'\nimport * as t from 'lib0/testing'\nimport * as prng from 'lib0/prng'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testMapHavingIterableAsConstructorParamTests = tc => {\n const { map0 } = init(tc, { users: 1 })\n\n const m1 = new Y.Map(Object.entries({ number: 1, string: 'hello' }))\n map0.set('m1', m1)\n t.assert(m1.get('number') === 1)\n t.assert(m1.get('string') === 'hello')\n\n const m2 = new Y.Map([\n ['object', { x: 1 }],\n ['boolean', true]\n ])\n map0.set('m2', m2)\n t.assert(m2.get('object').x === 1)\n t.assert(m2.get('boolean') === true)\n\n const m3 = new Y.Map([...m1, ...m2])\n map0.set('m3', m3)\n t.assert(m3.get('number') === 1)\n t.assert(m3.get('string') === 'hello')\n t.assert(m3.get('object').x === 1)\n t.assert(m3.get('boolean') === true)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testBasicMapTests = tc => {\n const { testConnector, users, map0, map1, map2 } = init(tc, { users: 3 })\n users[2].disconnect()\n\n map0.set('null', null)\n map0.set('number', 1)\n map0.set('string', 'hello Y')\n map0.set('object', { key: { key2: 'value' } })\n map0.set('y-map', new Y.Map())\n map0.set('boolean1', true)\n map0.set('boolean0', false)\n const map = map0.get('y-map')\n map.set('y-array', new Y.Array())\n const array = map.get('y-array')\n array.insert(0, [0])\n array.insert(0, [-1])\n\n t.assert(map0.get('null') === null, 'client 0 computed the change (null)')\n t.assert(map0.get('number') === 1, 'client 0 computed the change (number)')\n t.assert(map0.get('string') === 'hello Y', 'client 0 computed the change (string)')\n t.assert(map0.get('boolean0') === false, 'client 0 computed the change (boolean)')\n t.assert(map0.get('boolean1') === true, 'client 0 computed the change (boolean)')\n t.compare(map0.get('object'), { key: { key2: 'value' } }, 'client 0 computed the change (object)')\n t.assert(map0.get('y-map').get('y-array').get(0) === -1, 'client 0 computed the change (type)')\n t.assert(map0.size === 7, 'client 0 map has correct size')\n\n users[2].connect()\n testConnector.flushAllMessages()\n\n t.assert(map1.get('null') === null, 'client 1 received the update (null)')\n t.assert(map1.get('number') === 1, 'client 1 received the update (number)')\n t.assert(map1.get('string') === 'hello Y', 'client 1 received the update (string)')\n t.assert(map1.get('boolean0') === false, 'client 1 computed the change (boolean)')\n t.assert(map1.get('boolean1') === true, 'client 1 computed the change (boolean)')\n t.compare(map1.get('object'), { key: { key2: 'value' } }, 'client 1 received the update (object)')\n t.assert(map1.get('y-map').get('y-array').get(0) === -1, 'client 1 received the update (type)')\n t.assert(map1.size === 7, 'client 1 map has correct size')\n\n // compare disconnected user\n t.assert(map2.get('null') === null, 'client 2 received the update (null) - was disconnected')\n t.assert(map2.get('number') === 1, 'client 2 received the update (number) - was disconnected')\n t.assert(map2.get('string') === 'hello Y', 'client 2 received the update (string) - was disconnected')\n t.assert(map2.get('boolean0') === false, 'client 2 computed the change (boolean)')\n t.assert(map2.get('boolean1') === true, 'client 2 computed the change (boolean)')\n t.compare(map2.get('object'), { key: { key2: 'value' } }, 'client 2 received the update (object) - was disconnected')\n t.assert(map2.get('y-map').get('y-array').get(0) === -1, 'client 2 received the update (type) - was disconnected')\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testGetAndSetOfMapProperty = tc => {\n const { testConnector, users, map0 } = init(tc, { users: 2 })\n map0.set('stuff', 'stuffy')\n map0.set('undefined', undefined)\n map0.set('null', null)\n t.compare(map0.get('stuff'), 'stuffy')\n\n testConnector.flushAllMessages()\n\n for (const user of users) {\n const u = user.getMap('map')\n t.compare(u.get('stuff'), 'stuffy')\n t.assert(u.get('undefined') === undefined, 'undefined')\n t.compare(u.get('null'), null, 'null')\n }\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testYmapSetsYmap = tc => {\n const { users, map0 } = init(tc, { users: 2 })\n const map = map0.set('Map', new Y.Map())\n t.assert(map0.get('Map') === map)\n map.set('one', 1)\n t.compare(map.get('one'), 1)\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testYmapSetsYarray = tc => {\n const { users, map0 } = init(tc, { users: 2 })\n const array = map0.set('Array', new Y.Array())\n t.assert(array === map0.get('Array'))\n array.insert(0, [1, 2, 3])\n // @ts-ignore\n t.compare(map0.toJSON(), { Array: [1, 2, 3] })\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testGetAndSetOfMapPropertySyncs = tc => {\n const { testConnector, users, map0 } = init(tc, { users: 2 })\n map0.set('stuff', 'stuffy')\n t.compare(map0.get('stuff'), 'stuffy')\n testConnector.flushAllMessages()\n for (const user of users) {\n const u = user.getMap('map')\n t.compare(u.get('stuff'), 'stuffy')\n }\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testGetAndSetOfMapPropertyWithConflict = tc => {\n const { testConnector, users, map0, map1 } = init(tc, { users: 3 })\n map0.set('stuff', 'c0')\n map1.set('stuff', 'c1')\n testConnector.flushAllMessages()\n for (const user of users) {\n const u = user.getMap('map')\n t.compare(u.get('stuff'), 'c1')\n }\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testSizeAndDeleteOfMapProperty = tc => {\n const { map0 } = init(tc, { users: 1 })\n map0.set('stuff', 'c0')\n map0.set('otherstuff', 'c1')\n t.assert(map0.size === 2, `map size is ${map0.size} expected 2`)\n map0.delete('stuff')\n t.assert(map0.size === 1, `map size after delete is ${map0.size}, expected 1`)\n map0.delete('otherstuff')\n t.assert(map0.size === 0, `map size after delete is ${map0.size}, expected 0`)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testGetAndSetAndDeleteOfMapProperty = tc => {\n const { testConnector, users, map0, map1 } = init(tc, { users: 3 })\n map0.set('stuff', 'c0')\n map1.set('stuff', 'c1')\n map1.delete('stuff')\n testConnector.flushAllMessages()\n for (const user of users) {\n const u = user.getMap('map')\n t.assert(u.get('stuff') === undefined)\n }\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testSetAndClearOfMapProperties = tc => {\n const { testConnector, users, map0 } = init(tc, { users: 1 })\n map0.set('stuff', 'c0')\n map0.set('otherstuff', 'c1')\n map0.clear()\n testConnector.flushAllMessages()\n for (const user of users) {\n const u = user.getMap('map')\n t.assert(u.get('stuff') === undefined)\n t.assert(u.get('otherstuff') === undefined)\n t.assert(u.size === 0, `map size after clear is ${u.size}, expected 0`)\n }\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testSetAndClearOfMapPropertiesWithConflicts = tc => {\n const { testConnector, users, map0, map1, map2, map3 } = init(tc, { users: 4 })\n map0.set('stuff', 'c0')\n map1.set('stuff', 'c1')\n map1.set('stuff', 'c2')\n map2.set('stuff', 'c3')\n testConnector.flushAllMessages()\n map0.set('otherstuff', 'c0')\n map1.set('otherstuff', 'c1')\n map2.set('otherstuff', 'c2')\n map3.set('otherstuff', 'c3')\n map3.clear()\n testConnector.flushAllMessages()\n for (const user of users) {\n const u = user.getMap('map')\n t.assert(u.get('stuff') === undefined)\n t.assert(u.get('otherstuff') === undefined)\n t.assert(u.size === 0, `map size after clear is ${u.size}, expected 0`)\n }\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testGetAndSetOfMapPropertyWithThreeConflicts = tc => {\n const { testConnector, users, map0, map1, map2 } = init(tc, { users: 3 })\n map0.set('stuff', 'c0')\n map1.set('stuff', 'c1')\n map1.set('stuff', 'c2')\n map2.set('stuff', 'c3')\n testConnector.flushAllMessages()\n for (const user of users) {\n const u = user.getMap('map')\n t.compare(u.get('stuff'), 'c3')\n }\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testGetAndSetAndDeleteOfMapPropertyWithThreeConflicts = tc => {\n const { testConnector, users, map0, map1, map2, map3 } = init(tc, { users: 4 })\n map0.set('stuff', 'c0')\n map1.set('stuff', 'c1')\n map1.set('stuff', 'c2')\n map2.set('stuff', 'c3')\n testConnector.flushAllMessages()\n map0.set('stuff', 'deleteme')\n map1.set('stuff', 'c1')\n map2.set('stuff', 'c2')\n map3.set('stuff', 'c3')\n map3.delete('stuff')\n testConnector.flushAllMessages()\n for (const user of users) {\n const u = user.getMap('map')\n t.assert(u.get('stuff') === undefined)\n }\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testObserveDeepProperties = tc => {\n const { testConnector, users, map1, map2, map3 } = init(tc, { users: 4 })\n const _map1 = map1.set('map', new Y.Map())\n let calls = 0\n let dmapid\n map1.observeDeep(events => {\n events.forEach(event => {\n calls++\n // @ts-ignore\n t.assert(event.keysChanged.has('deepmap'))\n t.assert(event.path.length === 1)\n t.assert(event.path[0] === 'map')\n // @ts-ignore\n dmapid = event.target.get('deepmap')._item.id\n })\n })\n testConnector.flushAllMessages()\n const _map3 = map3.get('map')\n _map3.set('deepmap', new Y.Map())\n testConnector.flushAllMessages()\n const _map2 = map2.get('map')\n _map2.set('deepmap', new Y.Map())\n testConnector.flushAllMessages()\n const dmap1 = _map1.get('deepmap')\n const dmap2 = _map2.get('deepmap')\n const dmap3 = _map3.get('deepmap')\n t.assert(calls > 0)\n t.assert(compareIDs(dmap1._item.id, dmap2._item.id))\n t.assert(compareIDs(dmap1._item.id, dmap3._item.id))\n // @ts-ignore we want the possibility of dmapid being undefined\n t.assert(compareIDs(dmap1._item.id, dmapid))\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testObserversUsingObservedeep = tc => {\n const { users, map0 } = init(tc, { users: 2 })\n /**\n * @type {Array<Array<string|number>>}\n */\n const pathes = []\n let calls = 0\n map0.observeDeep(events => {\n events.forEach(event => {\n pathes.push(event.path)\n })\n calls++\n })\n map0.set('map', new Y.Map())\n map0.get('map').set('array', new Y.Array())\n map0.get('map').get('array').insert(0, ['content'])\n t.assert(calls === 3)\n t.compare(pathes, [[], ['map'], ['map', 'array']])\n compare(users)\n}\n\n// TODO: Test events in Y.Map\n/**\n * @param {Object<string,any>} is\n * @param {Object<string,any>} should\n */\nconst compareEvent = (is, should) => {\n for (const key in should) {\n t.compare(should[key], is[key])\n }\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testThrowsAddAndUpdateAndDeleteEvents = tc => {\n const { users, map0 } = init(tc, { users: 2 })\n /**\n * @type {Object<string,any>}\n */\n let event = {}\n map0.observe(e => {\n event = e // just put it on event, should be thrown synchronously anyway\n })\n map0.set('stuff', 4)\n compareEvent(event, {\n target: map0,\n keysChanged: new Set(['stuff'])\n })\n // update, oldValue is in contents\n map0.set('stuff', new Y.Array())\n compareEvent(event, {\n target: map0,\n keysChanged: new Set(['stuff'])\n })\n // update, oldValue is in opContents\n map0.set('stuff', 5)\n // delete\n map0.delete('stuff')\n compareEvent(event, {\n keysChanged: new Set(['stuff']),\n target: map0\n })\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testThrowsDeleteEventsOnClear = tc => {\n const { users, map0 } = init(tc, { users: 2 })\n /**\n * @type {Object<string,any>}\n */\n let event = {}\n map0.observe(e => {\n event = e // just put it on event, should be thrown synchronously anyway\n })\n // set values\n map0.set('stuff', 4)\n map0.set('otherstuff', new Y.Array())\n // clear\n map0.clear()\n compareEvent(event, {\n keysChanged: new Set(['stuff', 'otherstuff']),\n target: map0\n })\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testChangeEvent = tc => {\n const { map0, users } = init(tc, { users: 2 })\n /**\n * @type {any}\n */\n let changes = null\n /**\n * @type {any}\n */\n let keyChange = null\n map0.observe(e => {\n changes = e.changes\n })\n map0.set('a', 1)\n keyChange = changes.keys.get('a')\n t.assert(changes !== null && keyChange.action === 'add' && keyChange.oldValue === undefined)\n map0.set('a', 2)\n keyChange = changes.keys.get('a')\n t.assert(changes !== null && keyChange.action === 'update' && keyChange.oldValue === 1)\n users[0].transact(() => {\n map0.set('a', 3)\n map0.set('a', 4)\n })\n keyChange = changes.keys.get('a')\n t.assert(changes !== null && keyChange.action === 'update' && keyChange.oldValue === 2)\n users[0].transact(() => {\n map0.set('b', 1)\n map0.set('b', 2)\n })\n keyChange = changes.keys.get('b')\n t.assert(changes !== null && keyChange.action === 'add' && keyChange.oldValue === undefined)\n users[0].transact(() => {\n map0.set('c', 1)\n map0.delete('c')\n })\n t.assert(changes !== null && changes.keys.size === 0)\n users[0].transact(() => {\n map0.set('d', 1)\n map0.set('d', 2)\n })\n keyChange = changes.keys.get('d')\n t.assert(changes !== null && keyChange.action === 'add' && keyChange.oldValue === undefined)\n compare(users)\n}\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testYmapEventExceptionsShouldCompleteTransaction = _tc => {\n const doc = new Y.Doc()\n const map = doc.getMap('map')\n\n let updateCalled = false\n let throwingObserverCalled = false\n let throwingDeepObserverCalled = false\n doc.on('update', () => {\n updateCalled = true\n })\n\n const throwingObserver = () => {\n throwingObserverCalled = true\n throw new Error('Failure')\n }\n\n const throwingDeepObserver = () => {\n throwingDeepObserverCalled = true\n throw new Error('Failure')\n }\n\n map.observe(throwingObserver)\n map.observeDeep(throwingDeepObserver)\n\n t.fails(() => {\n map.set('y', '2')\n })\n\n t.assert(updateCalled)\n t.assert(throwingObserverCalled)\n t.assert(throwingDeepObserverCalled)\n\n // check if it works again\n updateCalled = false\n throwingObserverCalled = false\n throwingDeepObserverCalled = false\n t.fails(() => {\n map.set('z', '3')\n })\n\n t.assert(updateCalled)\n t.assert(throwingObserverCalled)\n t.assert(throwingDeepObserverCalled)\n\n t.assert(map.get('z') === '3')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testYmapEventHasCorrectValueWhenSettingAPrimitive = tc => {\n const { users, map0 } = init(tc, { users: 3 })\n /**\n * @type {Object<string,any>}\n */\n let event = {}\n map0.observe(e => {\n event = e\n })\n map0.set('stuff', 2)\n t.compare(event.value, event.target.get(event.name))\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testYmapEventHasCorrectValueWhenSettingAPrimitiveFromOtherUser = tc => {\n const { users, map0, map1, testConnector } = init(tc, { users: 3 })\n /**\n * @type {Object<string,any>}\n */\n let event = {}\n map0.observe(e => {\n event = e\n })\n map1.set('stuff', 2)\n testConnector.flushAllMessages()\n t.compare(event.value, event.target.get(event.name))\n compare(users)\n}\n\n/**\n * @type {Array<function(Doc,prng.PRNG):void>}\n */\nconst mapTransactions = [\n function set (user, gen) {\n const key = prng.oneOf(gen, ['one', 'two'])\n const value = prng.utf16String(gen)\n user.getMap('map').set(key, value)\n },\n function setType (user, gen) {\n const key = prng.oneOf(gen, ['one', 'two'])\n const type = prng.oneOf(gen, [new Y.Array(), new Y.Map()])\n user.getMap('map').set(key, type)\n if (type instanceof Y.Array) {\n type.insert(0, [1, 2, 3, 4])\n } else {\n type.set('deepkey', 'deepvalue')\n }\n },\n function _delete (user, gen) {\n const key = prng.oneOf(gen, ['one', 'two'])\n user.getMap('map').delete(key)\n }\n]\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYmapTests10 = tc => {\n applyRandomTests(tc, mapTransactions, 3)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYmapTests40 = tc => {\n applyRandomTests(tc, mapTransactions, 40)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYmapTests42 = tc => {\n applyRandomTests(tc, mapTransactions, 42)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYmapTests43 = tc => {\n applyRandomTests(tc, mapTransactions, 43)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYmapTests44 = tc => {\n applyRandomTests(tc, mapTransactions, 44)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYmapTests45 = tc => {\n applyRandomTests(tc, mapTransactions, 45)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYmapTests46 = tc => {\n applyRandomTests(tc, mapTransactions, 46)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYmapTests300 = tc => {\n applyRandomTests(tc, mapTransactions, 300)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYmapTests400 = tc => {\n applyRandomTests(tc, mapTransactions, 400)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYmapTests500 = tc => {\n applyRandomTests(tc, mapTransactions, 500)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYmapTests600 = tc => {\n applyRandomTests(tc, mapTransactions, 600)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYmapTests1000 = tc => {\n applyRandomTests(tc, mapTransactions, 1000)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYmapTests1800 = tc => {\n applyRandomTests(tc, mapTransactions, 1800)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYmapTests5000 = tc => {\n t.skip(!t.production)\n applyRandomTests(tc, mapTransactions, 5000)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYmapTests10000 = tc => {\n t.skip(!t.production)\n applyRandomTests(tc, mapTransactions, 10000)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYmapTests100000 = tc => {\n t.skip(!t.production)\n applyRandomTests(tc, mapTransactions, 100000)\n}\n","import { init, compare, applyRandomTests, Doc } from './testHelper.js' // eslint-disable-line\n\nimport * as Y from '../src/index.js'\nimport * as t from 'lib0/testing'\nimport * as prng from 'lib0/prng'\nimport * as math from 'lib0/math'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testBasicUpdate = tc => {\n const doc1 = new Y.Doc()\n const doc2 = new Y.Doc()\n doc1.getArray('array').insert(0, ['hi'])\n const update = Y.encodeStateAsUpdate(doc1)\n Y.applyUpdate(doc2, update)\n t.compare(doc2.getArray('array').toArray(), ['hi'])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testSlice = tc => {\n const doc1 = new Y.Doc()\n const arr = doc1.getArray('array')\n arr.insert(0, [1, 2, 3])\n t.compareArrays(arr.slice(0), [1, 2, 3])\n t.compareArrays(arr.slice(1), [2, 3])\n t.compareArrays(arr.slice(0, -1), [1, 2])\n arr.insert(0, [0])\n t.compareArrays(arr.slice(0), [0, 1, 2, 3])\n t.compareArrays(arr.slice(0, 2), [0, 1])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testArrayFrom = tc => {\n const doc1 = new Y.Doc()\n const db1 = doc1.getMap('root')\n const nestedArray1 = Y.Array.from([0, 1, 2])\n db1.set('array', nestedArray1)\n t.compare(nestedArray1.toArray(), [0, 1, 2])\n}\n\n/**\n * Debugging yjs#297 - a critical bug connected to the search-marker approach\n *\n * @param {t.TestCase} tc\n */\nexport const testLengthIssue = tc => {\n const doc1 = new Y.Doc()\n const arr = doc1.getArray('array')\n arr.push([0, 1, 2, 3])\n arr.delete(0)\n arr.insert(0, [0])\n t.assert(arr.length === arr.toArray().length)\n doc1.transact(() => {\n arr.delete(1)\n t.assert(arr.length === arr.toArray().length)\n arr.insert(1, [1])\n t.assert(arr.length === arr.toArray().length)\n arr.delete(2)\n t.assert(arr.length === arr.toArray().length)\n arr.insert(2, [2])\n t.assert(arr.length === arr.toArray().length)\n })\n t.assert(arr.length === arr.toArray().length)\n arr.delete(1)\n t.assert(arr.length === arr.toArray().length)\n arr.insert(1, [1])\n t.assert(arr.length === arr.toArray().length)\n}\n\n/**\n * Debugging yjs#314\n *\n * @param {t.TestCase} tc\n */\nexport const testLengthIssue2 = tc => {\n const doc = new Y.Doc()\n const next = doc.getArray()\n doc.transact(() => {\n next.insert(0, ['group2'])\n })\n doc.transact(() => {\n next.insert(1, ['rectangle3'])\n })\n doc.transact(() => {\n next.delete(0)\n next.insert(0, ['rectangle3'])\n })\n next.delete(1)\n doc.transact(() => {\n next.insert(1, ['ellipse4'])\n })\n doc.transact(() => {\n next.insert(2, ['ellipse3'])\n })\n doc.transact(() => {\n next.insert(3, ['ellipse2'])\n })\n doc.transact(() => {\n doc.transact(() => {\n t.fails(() => {\n next.insert(5, ['rectangle2'])\n })\n next.insert(4, ['rectangle2'])\n })\n doc.transact(() => {\n // this should not throw an error message\n next.delete(4)\n })\n })\n console.log(next.toArray())\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testDeleteInsert = tc => {\n const { users, array0 } = init(tc, { users: 2 })\n array0.delete(0, 0)\n t.describe('Does not throw when deleting zero elements with position 0')\n t.fails(() => {\n array0.delete(1, 1)\n })\n array0.insert(0, ['A'])\n array0.delete(1, 0)\n t.describe('Does not throw when deleting zero elements with valid position 1')\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testInsertThreeElementsTryRegetProperty = tc => {\n const { testConnector, users, array0, array1 } = init(tc, { users: 2 })\n array0.insert(0, [1, true, false])\n t.compare(array0.toJSON(), [1, true, false], '.toJSON() works')\n testConnector.flushAllMessages()\n t.compare(array1.toJSON(), [1, true, false], '.toJSON() works after sync')\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testConcurrentInsertWithThreeConflicts = tc => {\n const { users, array0, array1, array2 } = init(tc, { users: 3 })\n array0.insert(0, [0])\n array1.insert(0, [1])\n array2.insert(0, [2])\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testConcurrentInsertDeleteWithThreeConflicts = tc => {\n const { testConnector, users, array0, array1, array2 } = init(tc, { users: 3 })\n array0.insert(0, ['x', 'y', 'z'])\n testConnector.flushAllMessages()\n array0.insert(1, [0])\n array1.delete(0)\n array1.delete(1, 1)\n array2.insert(1, [2])\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testInsertionsInLateSync = tc => {\n const { testConnector, users, array0, array1, array2 } = init(tc, { users: 3 })\n array0.insert(0, ['x', 'y'])\n testConnector.flushAllMessages()\n users[1].disconnect()\n users[2].disconnect()\n array0.insert(1, ['user0'])\n array1.insert(1, ['user1'])\n array2.insert(1, ['user2'])\n users[1].connect()\n users[2].connect()\n testConnector.flushAllMessages()\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testDisconnectReallyPreventsSendingMessages = tc => {\n const { testConnector, users, array0, array1 } = init(tc, { users: 3 })\n array0.insert(0, ['x', 'y'])\n testConnector.flushAllMessages()\n users[1].disconnect()\n users[2].disconnect()\n array0.insert(1, ['user0'])\n array1.insert(1, ['user1'])\n t.compare(array0.toJSON(), ['x', 'user0', 'y'])\n t.compare(array1.toJSON(), ['x', 'user1', 'y'])\n users[1].connect()\n users[2].connect()\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testDeletionsInLateSync = tc => {\n const { testConnector, users, array0, array1 } = init(tc, { users: 2 })\n array0.insert(0, ['x', 'y'])\n testConnector.flushAllMessages()\n users[1].disconnect()\n array1.delete(1, 1)\n array0.delete(0, 2)\n users[1].connect()\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testInsertThenMergeDeleteOnSync = tc => {\n const { testConnector, users, array0, array1 } = init(tc, { users: 2 })\n array0.insert(0, ['x', 'y', 'z'])\n testConnector.flushAllMessages()\n users[0].disconnect()\n array1.delete(0, 3)\n users[0].connect()\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testInsertAndDeleteEvents = tc => {\n const { array0, users } = init(tc, { users: 2 })\n /**\n * @type {Object<string,any>?}\n */\n let event = null\n array0.observe(e => {\n event = e\n })\n array0.insert(0, [0, 1, 2])\n t.assert(event !== null)\n event = null\n array0.delete(0)\n t.assert(event !== null)\n event = null\n array0.delete(0, 2)\n t.assert(event !== null)\n event = null\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testNestedObserverEvents = tc => {\n const { array0, users } = init(tc, { users: 2 })\n /**\n * @type {Array<number>}\n */\n const vals = []\n array0.observe(e => {\n if (array0.length === 1) {\n // inserting, will call this observer again\n // we expect that this observer is called after this event handler finishedn\n array0.insert(1, [1])\n vals.push(0)\n } else {\n // this should be called the second time an element is inserted (above case)\n vals.push(1)\n }\n })\n array0.insert(0, [0])\n t.compareArrays(vals, [0, 1])\n t.compareArrays(array0.toArray(), [0, 1])\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testInsertAndDeleteEventsForTypes = tc => {\n const { array0, users } = init(tc, { users: 2 })\n /**\n * @type {Object<string,any>|null}\n */\n let event = null\n array0.observe(e => {\n event = e\n })\n array0.insert(0, [new Y.Array()])\n t.assert(event !== null)\n event = null\n array0.delete(0)\n t.assert(event !== null)\n event = null\n compare(users)\n}\n\n/**\n * This issue has been reported in https://discuss.yjs.dev/t/order-in-which-events-yielded-by-observedeep-should-be-applied/261/2\n *\n * Deep observers generate multiple events. When an array added at item at, say, position 0,\n * and item 1 changed then the array-add event should fire first so that the change event\n * path is correct. A array binding might lead to an inconsistent state otherwise.\n *\n * @param {t.TestCase} tc\n */\nexport const testObserveDeepEventOrder = tc => {\n const { array0, users } = init(tc, { users: 2 })\n /**\n * @type {Array<any>}\n */\n let events = []\n array0.observeDeep(e => {\n events = e\n })\n array0.insert(0, [new Y.Map()])\n users[0].transact(() => {\n array0.get(0).set('a', 'a')\n array0.insert(0, [0])\n })\n for (let i = 1; i < events.length; i++) {\n t.assert(events[i - 1].path.length <= events[i].path.length, 'path size increases, fire top-level events first')\n }\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testChangeEvent = tc => {\n const { array0, users } = init(tc, { users: 2 })\n /**\n * @type {any}\n */\n let changes = null\n array0.observe(e => {\n changes = e.changes\n })\n const newArr = new Y.Array()\n array0.insert(0, [newArr, 4, 'dtrn'])\n t.assert(changes !== null && changes.added.size === 2 && changes.deleted.size === 0)\n t.compare(changes.delta, [{ insert: [newArr, 4, 'dtrn'] }])\n changes = null\n array0.delete(0, 2)\n t.assert(changes !== null && changes.added.size === 0 && changes.deleted.size === 2)\n t.compare(changes.delta, [{ delete: 2 }])\n changes = null\n array0.insert(1, [0.1])\n t.assert(changes !== null && changes.added.size === 1 && changes.deleted.size === 0)\n t.compare(changes.delta, [{ retain: 1 }, { insert: [0.1] }])\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testInsertAndDeleteEventsForTypes2 = tc => {\n const { array0, users } = init(tc, { users: 2 })\n /**\n * @type {Array<Object<string,any>>}\n */\n const events = []\n array0.observe(e => {\n events.push(e)\n })\n array0.insert(0, ['hi', new Y.Map()])\n t.assert(events.length === 1, 'Event is triggered exactly once for insertion of two elements')\n array0.delete(1)\n t.assert(events.length === 2, 'Event is triggered exactly once for deletion')\n compare(users)\n}\n\n/**\n * This issue has been reported here https://github.com/yjs/yjs/issues/155\n * @param {t.TestCase} tc\n */\nexport const testNewChildDoesNotEmitEventInTransaction = tc => {\n const { array0, users } = init(tc, { users: 2 })\n let fired = false\n users[0].transact(() => {\n const newMap = new Y.Map()\n newMap.observe(() => {\n fired = true\n })\n array0.insert(0, [newMap])\n newMap.set('tst', 42)\n })\n t.assert(!fired, 'Event does not trigger')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testGarbageCollector = tc => {\n const { testConnector, users, array0 } = init(tc, { users: 3 })\n array0.insert(0, ['x', 'y', 'z'])\n testConnector.flushAllMessages()\n users[0].disconnect()\n array0.delete(0, 3)\n users[0].connect()\n testConnector.flushAllMessages()\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testEventTargetIsSetCorrectlyOnLocal = tc => {\n const { array0, users } = init(tc, { users: 3 })\n /**\n * @type {any}\n */\n let event\n array0.observe(e => {\n event = e\n })\n array0.insert(0, ['stuff'])\n t.assert(event.target === array0, '\"target\" property is set correctly')\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testEventTargetIsSetCorrectlyOnRemote = tc => {\n const { testConnector, array0, array1, users } = init(tc, { users: 3 })\n /**\n * @type {any}\n */\n let event\n array0.observe(e => {\n event = e\n })\n array1.insert(0, ['stuff'])\n testConnector.flushAllMessages()\n t.assert(event.target === array0, '\"target\" property is set correctly')\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testIteratingArrayContainingTypes = tc => {\n const y = new Y.Doc()\n const arr = y.getArray('arr')\n const numItems = 10\n for (let i = 0; i < numItems; i++) {\n const map = new Y.Map()\n map.set('value', i)\n arr.push([map])\n }\n let cnt = 0\n for (const item of arr) {\n t.assert(item.get('value') === cnt++, 'value is correct')\n }\n y.destroy()\n}\n\nlet _uniqueNumber = 0\nconst getUniqueNumber = () => _uniqueNumber++\n\n/**\n * @type {Array<function(Doc,prng.PRNG,any):void>}\n */\nconst arrayTransactions = [\n function insert (user, gen) {\n const yarray = user.getArray('array')\n const uniqueNumber = getUniqueNumber()\n const content = []\n const len = prng.int32(gen, 1, 4)\n for (let i = 0; i < len; i++) {\n content.push(uniqueNumber)\n }\n const pos = prng.int32(gen, 0, yarray.length)\n const oldContent = yarray.toArray()\n yarray.insert(pos, content)\n oldContent.splice(pos, 0, ...content)\n t.compareArrays(yarray.toArray(), oldContent) // we want to make sure that fastSearch markers insert at the correct position\n },\n function insertTypeArray (user, gen) {\n const yarray = user.getArray('array')\n const pos = prng.int32(gen, 0, yarray.length)\n yarray.insert(pos, [new Y.Array()])\n const array2 = yarray.get(pos)\n array2.insert(0, [1, 2, 3, 4])\n },\n function insertTypeMap (user, gen) {\n const yarray = user.getArray('array')\n const pos = prng.int32(gen, 0, yarray.length)\n yarray.insert(pos, [new Y.Map()])\n const map = yarray.get(pos)\n map.set('someprop', 42)\n map.set('someprop', 43)\n map.set('someprop', 44)\n },\n function insertTypeNull (user, gen) {\n const yarray = user.getArray('array')\n const pos = prng.int32(gen, 0, yarray.length)\n yarray.insert(pos, [null])\n },\n function _delete (user, gen) {\n const yarray = user.getArray('array')\n const length = yarray.length\n if (length > 0) {\n let somePos = prng.int32(gen, 0, length - 1)\n let delLength = prng.int32(gen, 1, math.min(2, length - somePos))\n if (prng.bool(gen)) {\n const type = yarray.get(somePos)\n if (type instanceof Y.Array && type.length > 0) {\n somePos = prng.int32(gen, 0, type.length - 1)\n delLength = prng.int32(gen, 0, math.min(2, type.length - somePos))\n type.delete(somePos, delLength)\n }\n } else {\n const oldContent = yarray.toArray()\n yarray.delete(somePos, delLength)\n oldContent.splice(somePos, delLength)\n t.compareArrays(yarray.toArray(), oldContent)\n }\n }\n }\n]\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYarrayTests6 = tc => {\n applyRandomTests(tc, arrayTransactions, 6)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYarrayTests40 = tc => {\n applyRandomTests(tc, arrayTransactions, 40)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYarrayTests42 = tc => {\n applyRandomTests(tc, arrayTransactions, 42)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYarrayTests43 = tc => {\n applyRandomTests(tc, arrayTransactions, 43)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYarrayTests44 = tc => {\n applyRandomTests(tc, arrayTransactions, 44)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYarrayTests45 = tc => {\n applyRandomTests(tc, arrayTransactions, 45)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYarrayTests46 = tc => {\n applyRandomTests(tc, arrayTransactions, 46)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYarrayTests300 = tc => {\n applyRandomTests(tc, arrayTransactions, 300)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYarrayTests400 = tc => {\n applyRandomTests(tc, arrayTransactions, 400)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYarrayTests500 = tc => {\n applyRandomTests(tc, arrayTransactions, 500)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYarrayTests600 = tc => {\n applyRandomTests(tc, arrayTransactions, 600)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYarrayTests1000 = tc => {\n applyRandomTests(tc, arrayTransactions, 1000)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYarrayTests1800 = tc => {\n applyRandomTests(tc, arrayTransactions, 1800)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYarrayTests3000 = tc => {\n t.skip(!t.production)\n applyRandomTests(tc, arrayTransactions, 3000)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYarrayTests5000 = tc => {\n t.skip(!t.production)\n applyRandomTests(tc, arrayTransactions, 5000)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGeneratingYarrayTests30000 = tc => {\n t.skip(!t.production)\n applyRandomTests(tc, arrayTransactions, 30000)\n}\n","import * as Y from './testHelper.js'\nimport * as t from 'lib0/testing'\nimport * as prng from 'lib0/prng'\nimport * as math from 'lib0/math'\n\nconst { init, compare } = Y\n\n/**\n * https://github.com/yjs/yjs/issues/474\n * @todo Remove debug: 127.0.0.1:8080/test.html?filter=\\[88/\n * @param {t.TestCase} _tc\n */\nexport const testDeltaBug = _tc => {\n const initialDelta = [{\n attributes: {\n 'block-id': 'block-28eea923-9cbb-4b6f-a950-cf7fd82bc087'\n },\n insert: '\\n'\n },\n {\n attributes: {\n 'table-col': {\n width: '150'\n }\n },\n insert: '\\n\\n\\n'\n },\n {\n attributes: {\n 'block-id': 'block-9144be72-e528-4f91-b0b2-82d20408e9ea',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-6kv2ls',\n cell: 'cell-apba4k'\n },\n row: 'row-6kv2ls',\n cell: 'cell-apba4k',\n rowspan: '1',\n colspan: '1'\n },\n insert: '\\n'\n },\n {\n attributes: {\n 'block-id': 'block-639adacb-1516-43ed-b272-937c55669a1c',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-6kv2ls',\n cell: 'cell-a8qf0r'\n },\n row: 'row-6kv2ls',\n cell: 'cell-a8qf0r',\n rowspan: '1',\n colspan: '1'\n },\n insert: '\\n'\n },\n {\n attributes: {\n 'block-id': 'block-6302ca4a-73a3-4c25-8c1e-b542f048f1c6',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-6kv2ls',\n cell: 'cell-oi9ikb'\n },\n row: 'row-6kv2ls',\n cell: 'cell-oi9ikb',\n rowspan: '1',\n colspan: '1'\n },\n insert: '\\n'\n },\n {\n attributes: {\n 'block-id': 'block-ceeddd05-330e-4f86-8017-4a3a060c4627',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-d1sv2g',\n cell: 'cell-dt6ks2'\n },\n row: 'row-d1sv2g',\n cell: 'cell-dt6ks2',\n rowspan: '1',\n colspan: '1'\n },\n insert: '\\n'\n },\n {\n attributes: {\n 'block-id': 'block-37b19322-cb57-4e6f-8fad-0d1401cae53f',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-d1sv2g',\n cell: 'cell-qah2ay'\n },\n row: 'row-d1sv2g',\n cell: 'cell-qah2ay',\n rowspan: '1',\n colspan: '1'\n },\n insert: '\\n'\n },\n {\n attributes: {\n 'block-id': 'block-468a69b5-9332-450b-9107-381d593de249',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-d1sv2g',\n cell: 'cell-fpcz5a'\n },\n row: 'row-d1sv2g',\n cell: 'cell-fpcz5a',\n rowspan: '1',\n colspan: '1'\n },\n insert: '\\n'\n },\n {\n attributes: {\n 'block-id': 'block-26b1d252-9b2e-4808-9b29-04e76696aa3c',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-pflz90',\n cell: 'cell-zrhylp'\n },\n row: 'row-pflz90',\n cell: 'cell-zrhylp',\n rowspan: '1',\n colspan: '1'\n },\n insert: '\\n'\n },\n {\n attributes: {\n 'block-id': 'block-6af97ba7-8cf9-497a-9365-7075b938837b',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-pflz90',\n cell: 'cell-s1q9nt'\n },\n row: 'row-pflz90',\n cell: 'cell-s1q9nt',\n rowspan: '1',\n colspan: '1'\n },\n insert: '\\n'\n },\n {\n attributes: {\n 'block-id': 'block-107e273e-86bc-44fd-b0d7-41ab55aca484',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-pflz90',\n cell: 'cell-20b0j9'\n },\n row: 'row-pflz90',\n cell: 'cell-20b0j9',\n rowspan: '1',\n colspan: '1'\n },\n insert: '\\n'\n },\n {\n attributes: {\n 'block-id': 'block-38161f9c-6f6d-44c5-b086-54cc6490f1e3'\n },\n insert: '\\n'\n },\n {\n insert: 'Content after table'\n },\n {\n attributes: {\n 'block-id': 'block-15630542-ef45-412d-9415-88f0052238ce'\n },\n insert: '\\n'\n }\n ]\n const ydoc1 = new Y.Doc()\n const ytext = ydoc1.getText()\n ytext.applyDelta(initialDelta)\n const addingDash = [\n {\n retain: 12\n },\n {\n insert: '-'\n }\n ]\n ytext.applyDelta(addingDash)\n const addingSpace = [\n {\n retain: 13\n },\n {\n insert: ' '\n }\n ]\n ytext.applyDelta(addingSpace)\n const addingList = [\n {\n retain: 12\n },\n {\n delete: 2\n },\n {\n retain: 1,\n attributes: {\n // Clear table line attribute\n 'table-cell-line': null,\n // Add list attribute in place of table-cell-line\n list: {\n rowspan: '1',\n colspan: '1',\n row: 'row-pflz90',\n cell: 'cell-20b0j9',\n list: 'bullet'\n }\n }\n }\n ]\n ytext.applyDelta(addingList)\n const result = ytext.toDelta()\n const expectedResult = [\n {\n attributes: {\n 'block-id': 'block-28eea923-9cbb-4b6f-a950-cf7fd82bc087'\n },\n insert: '\\n'\n },\n {\n attributes: {\n 'table-col': {\n width: '150'\n }\n },\n insert: '\\n\\n\\n'\n },\n {\n attributes: {\n 'block-id': 'block-9144be72-e528-4f91-b0b2-82d20408e9ea',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-6kv2ls',\n cell: 'cell-apba4k'\n },\n row: 'row-6kv2ls',\n cell: 'cell-apba4k',\n rowspan: '1',\n colspan: '1'\n },\n insert: '\\n'\n },\n {\n attributes: {\n 'block-id': 'block-639adacb-1516-43ed-b272-937c55669a1c',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-6kv2ls',\n cell: 'cell-a8qf0r'\n },\n row: 'row-6kv2ls',\n cell: 'cell-a8qf0r',\n rowspan: '1',\n colspan: '1'\n },\n insert: '\\n'\n },\n {\n attributes: {\n 'block-id': 'block-6302ca4a-73a3-4c25-8c1e-b542f048f1c6',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-6kv2ls',\n cell: 'cell-oi9ikb'\n },\n row: 'row-6kv2ls',\n cell: 'cell-oi9ikb',\n rowspan: '1',\n colspan: '1'\n },\n insert: '\\n'\n },\n {\n attributes: {\n 'block-id': 'block-ceeddd05-330e-4f86-8017-4a3a060c4627',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-d1sv2g',\n cell: 'cell-dt6ks2'\n },\n row: 'row-d1sv2g',\n cell: 'cell-dt6ks2',\n rowspan: '1',\n colspan: '1'\n },\n insert: '\\n'\n },\n {\n attributes: {\n 'block-id': 'block-37b19322-cb57-4e6f-8fad-0d1401cae53f',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-d1sv2g',\n cell: 'cell-qah2ay'\n },\n row: 'row-d1sv2g',\n cell: 'cell-qah2ay',\n rowspan: '1',\n colspan: '1'\n },\n insert: '\\n'\n },\n {\n attributes: {\n 'block-id': 'block-468a69b5-9332-450b-9107-381d593de249',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-d1sv2g',\n cell: 'cell-fpcz5a'\n },\n row: 'row-d1sv2g',\n cell: 'cell-fpcz5a',\n rowspan: '1',\n colspan: '1'\n },\n insert: '\\n'\n },\n {\n attributes: {\n 'block-id': 'block-26b1d252-9b2e-4808-9b29-04e76696aa3c',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-pflz90',\n cell: 'cell-zrhylp'\n },\n row: 'row-pflz90',\n cell: 'cell-zrhylp',\n rowspan: '1',\n colspan: '1'\n },\n insert: '\\n'\n },\n {\n attributes: {\n 'block-id': 'block-6af97ba7-8cf9-497a-9365-7075b938837b',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-pflz90',\n cell: 'cell-s1q9nt'\n },\n row: 'row-pflz90',\n cell: 'cell-s1q9nt',\n rowspan: '1',\n colspan: '1'\n },\n insert: '\\n'\n },\n {\n insert: '\\n',\n // This attibutes has only list and no table-cell-line\n attributes: {\n list: {\n rowspan: '1',\n colspan: '1',\n row: 'row-pflz90',\n cell: 'cell-20b0j9',\n list: 'bullet'\n },\n 'block-id': 'block-107e273e-86bc-44fd-b0d7-41ab55aca484',\n row: 'row-pflz90',\n cell: 'cell-20b0j9',\n rowspan: '1',\n colspan: '1'\n }\n },\n // No table-cell-line below here\n {\n attributes: {\n 'block-id': 'block-38161f9c-6f6d-44c5-b086-54cc6490f1e3'\n },\n insert: '\\n'\n },\n {\n insert: 'Content after table'\n },\n {\n attributes: {\n 'block-id': 'block-15630542-ef45-412d-9415-88f0052238ce'\n },\n insert: '\\n'\n }\n ]\n t.compare(result, expectedResult)\n}\n\n/**\n * https://github.com/yjs/yjs/issues/503\n * @param {t.TestCase} _tc\n */\nexport const testDeltaBug2 = _tc => {\n const initialContent = [\n { insert: \"Thomas' section\" },\n {\n insert: '\\n',\n attributes: { 'block-id': 'block-61ae80ac-a469-4eae-bac9-3b6a2c380118' }\n },\n {\n insert: '\\n',\n attributes: { 'block-id': 'block-d265d93f-1cc7-40ee-bb58-8270fca2619f' }\n },\n { insert: '123' },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-592a7bee-76a3-4e28-9c25-7a84344f8813',\n list: { list: 'toggled', 'toggle-id': 'list-66xfft' }\n }\n },\n { insert: '456' },\n {\n insert: '\\n',\n attributes: {\n indent: 1,\n 'block-id': 'block-3ee2bd70-b97f-45b2-9115-f1e8910235b1',\n list: { list: 'toggled', 'toggle-id': 'list-6vh0t0' }\n }\n },\n { insert: '789' },\n {\n insert: '\\n',\n attributes: {\n indent: 1,\n 'block-id': 'block-78150cf3-9bb5-4dea-a6f5-0ce1d2a98b9c',\n list: { list: 'toggled', 'toggle-id': 'list-7jr0l2' }\n }\n },\n { insert: '901' },\n {\n insert: '\\n',\n attributes: {\n indent: 1,\n 'block-id': 'block-13c6416f-f522-41d5-9fd4-ce4eb1cde5ba',\n list: { list: 'toggled', 'toggle-id': 'list-7uk8qu' }\n }\n },\n {\n insert: {\n slash_command: {\n id: 'doc_94zq-2436',\n sessionId: 'nkwc70p2j',\n replace: '/'\n }\n }\n },\n {\n insert: '\\n',\n attributes: { 'block-id': 'block-8a1d2bb6-23c2-4bcf-af3c-3919ffea1697' }\n },\n { insert: '\\n\\n', attributes: { 'table-col': { width: '150' } } },\n {\n insert: '\\n',\n attributes: { 'table-col': { width: '150' } }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-84ec3ea4-da6a-4e03-b430-0e5f432936a9',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-blmd4s',\n cell: 'cell-m0u5za'\n },\n row: 'row-blmd4s',\n cell: 'cell-m0u5za',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-83144ca8-aace-401e-8aa5-c05928a8ccf0',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-blmd4s',\n cell: 'cell-1v8s8t'\n },\n row: 'row-blmd4s',\n cell: 'cell-1v8s8t',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-9a493387-d27f-4b58-b2f7-731dfafda32a',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-blmd4s',\n cell: 'cell-126947'\n },\n row: 'row-blmd4s',\n cell: 'cell-126947',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-3484f86e-ae42-440f-8de6-857f0d8011ea',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-hmmljo',\n cell: 'cell-wvutl9'\n },\n row: 'row-hmmljo',\n cell: 'cell-wvutl9',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-d4e0b741-9dea-47a5-85e1-4ded0efbc89d',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-hmmljo',\n cell: 'cell-nkablr'\n },\n row: 'row-hmmljo',\n cell: 'cell-nkablr',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-352f0d5a-d1b9-422f-b136-4bacefd00b1a',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-hmmljo',\n cell: 'cell-n8xtd0'\n },\n row: 'row-hmmljo',\n cell: 'cell-n8xtd0',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-95823e57-f29c-44cf-a69d-2b4494b7144b',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-ev4xwq',\n cell: 'cell-ua9bvu'\n },\n row: 'row-ev4xwq',\n cell: 'cell-ua9bvu',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-cde5c027-15d3-4780-9e76-1e1a9d97a8e8',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-ev4xwq',\n cell: 'cell-7bwuvk'\n },\n row: 'row-ev4xwq',\n cell: 'cell-7bwuvk',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-11a23ed4-b04d-4e45-8065-8120889cd4a4',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-ev4xwq',\n cell: 'cell-aouka5'\n },\n row: 'row-ev4xwq',\n cell: 'cell-aouka5',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: { 'block-id': 'block-15b4483c-da98-4ded-91d3-c3d6ebc82582' }\n },\n { insert: { divider: true } },\n {\n insert: '\\n',\n attributes: { 'block-id': 'block-68552c8e-b57b-4f4a-9f36-6cc1ef6b3461' }\n },\n { insert: 'jklasjdf' },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-c8b2df7d-8ec5-4dd4-81f1-8d8efc40b1b4',\n list: { list: 'toggled', 'toggle-id': 'list-9ss39s' }\n }\n },\n { insert: 'asdf' },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-4f252ceb-14da-49ae-8cbd-69a701d18e2a',\n list: { list: 'toggled', 'toggle-id': 'list-uvo013' }\n }\n },\n { insert: 'adg' },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-ccb9b72e-b94d-45a0-aae4-9b0a1961c533',\n list: { list: 'toggled', 'toggle-id': 'list-k53iwe' }\n }\n },\n { insert: 'asdfasdfasdf' },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-ccb9b72e-b94d-45a0-aae4-9b0a1961c533',\n list: { list: 'none' },\n indent: 1\n }\n },\n { insert: 'asdf' },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-f406f76d-f338-4261-abe7-5c9131f7f1ad',\n list: { list: 'toggled', 'toggle-id': 'list-en86ur' }\n }\n },\n {\n insert: '\\n',\n attributes: { 'block-id': 'block-be18141c-9b6b-434e-8fd0-2c214437d560' }\n },\n {\n insert: '\\n',\n attributes: { 'block-id': 'block-36922db3-4af5-48a1-9ea4-0788b3b5d7cf' }\n },\n { insert: { table_content: true } },\n { insert: ' ' },\n {\n insert: {\n slash_command: {\n id: 'doc_94zq-2436',\n sessionId: 'hiyrt6fny',\n replace: '/'\n }\n }\n },\n {\n insert: '\\n',\n attributes: { 'block-id': 'block-9d6566a1-be55-4e20-999a-b990bc15e143' }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-4b545085-114d-4d07-844c-789710ec3aab',\n layout:\n '12d887e1-d1a2-4814-a1a3-0c904e950b46_1185cd29-ef1b-45d5-8fda-51a70b704e64',\n 'layout-width': '0.25'\n }\n },\n {\n insert: '\\n',\n attributes: {\n\n 'block-id': 'block-4d3f2321-33d1-470e-9b7c-d5a683570148',\n layout:\n '12d887e1-d1a2-4814-a1a3-0c904e950b46_75523ea3-c67f-4f5f-a85f-ac7c8fc0a992',\n 'layout-width': '0.5'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-4c7ae1e6-758e-470f-8d7c-ae0325e4ee8a',\n layout:\n '12d887e1-d1a2-4814-a1a3-0c904e950b46_54c740ef-fd7b-48c6-85aa-c14e1bfc9297',\n 'layout-width': '0.25'\n }\n },\n {\n insert: '\\n',\n attributes: { 'block-id': 'block-2d6ff0f4-ff00-42b7-a8e2-b816463d8fb5' }\n },\n { insert: { divider: true } },\n {\n insert: '\\n',\n attributes: { 'table-col': { width: '150' } }\n },\n { insert: '\\n', attributes: { 'table-col': { width: '154' } } },\n {\n insert: '\\n',\n attributes: { 'table-col': { width: '150' } }\n },\n\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-38545d56-224b-464c-b779-51fcec24dbbf',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-q0qfck',\n cell: 'cell-hmapv4'\n },\n row: 'row-q0qfck',\n cell: 'cell-hmapv4',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-d413a094-5f52-4fd4-a4aa-00774f6fdb44',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-q0qfck',\n cell: 'cell-c0czb2'\n },\n row: 'row-q0qfck',\n cell: 'cell-c0czb2',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-ff855cbc-8871-4e0a-9ba7-de0c1c2aa585',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-q0qfck',\n cell: 'cell-hcpqmm'\n },\n row: 'row-q0qfck',\n cell: 'cell-hcpqmm',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-4841e6ee-fef8-4473-bf04-f5ba62db17f0',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-etopyl',\n cell: 'cell-0io73v'\n },\n row: 'row-etopyl',\n cell: 'cell-0io73v',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-adeec631-d4fe-4f38-9d5e-e67ba068bd24',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-etopyl',\n cell: 'cell-gt2waa'\n },\n row: 'row-etopyl',\n cell: 'cell-gt2waa',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-d38a7308-c858-4ce0-b1f3-0f9092384961',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-etopyl',\n cell: 'cell-os9ksy'\n },\n row: 'row-etopyl',\n cell: 'cell-os9ksy',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-a9df6568-1838-40d1-9d16-3c073b6ce169',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-0jwjg3',\n cell: 'cell-hbx9ri'\n },\n row: 'row-0jwjg3',\n cell: 'cell-hbx9ri',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-e26a0cf2-fe62-44a5-a4ca-8678a56d62f1',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-0jwjg3',\n cell: 'cell-yg5m2w'\n },\n row: 'row-0jwjg3',\n cell: 'cell-yg5m2w',\n rowspan: '1',\n colspan: '1'\n }\n },\n { insert: 'a' },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-bfbc5ac2-7417-44b9-9aa5-8e36e4095627',\n list: {\n rowspan: '1',\n colspan: '1',\n row: 'row-0jwjg3',\n cell: 'cell-1azhl2',\n list: 'ordered'\n },\n rowspan: '1',\n colspan: '1',\n row: 'row-0jwjg3',\n cell: 'cell-1azhl2'\n }\n },\n { insert: 'b' },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-f011c089-6389-47c0-8396-7477a29aa56f',\n list: {\n rowspan: '1',\n colspan: '1',\n row: 'row-0jwjg3',\n cell: 'cell-1azhl2',\n list: 'ordered'\n },\n rowspan: '1',\n colspan: '1',\n row: 'row-0jwjg3',\n cell: 'cell-1azhl2'\n }\n },\n { insert: 'c' },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-4497788d-1e02-4fd5-a80a-48b61a6185cb',\n list: {\n rowspan: '1',\n colspan: '1',\n row: 'row-0jwjg3',\n cell: 'cell-1azhl2',\n list: 'ordered'\n },\n rowspan: '1',\n colspan: '1',\n row: 'row-0jwjg3',\n cell: 'cell-1azhl2'\n }\n },\n { insert: 'd' },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-5d73a2c7-f98b-47c7-a3f5-0d8527962b02',\n list: {\n rowspan: '1',\n colspan: '1',\n row: 'row-0jwjg3',\n cell: 'cell-1azhl2',\n list: 'ordered'\n },\n rowspan: '1',\n colspan: '1',\n row: 'row-0jwjg3',\n cell: 'cell-1azhl2'\n }\n },\n { insert: 'e' },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-bfda76ee-ffdd-45db-a22e-a6707e11cf68',\n list: {\n rowspan: '1',\n colspan: '1',\n row: 'row-0jwjg3',\n cell: 'cell-1azhl2',\n list: 'ordered'\n },\n rowspan: '1',\n colspan: '1',\n row: 'row-0jwjg3',\n cell: 'cell-1azhl2'\n }\n },\n { insert: 'd' },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-35242e64-a69d-4cdb-bd85-2a93766bfab4',\n list: {\n rowspan: '1',\n colspan: '1',\n row: 'row-0jwjg3',\n cell: 'cell-1azhl2',\n list: 'ordered'\n },\n rowspan: '1',\n colspan: '1',\n row: 'row-0jwjg3',\n cell: 'cell-1azhl2'\n }\n },\n { insert: 'f' },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-8baa22c8-491b-4f1b-9502-44179d5ae744',\n list: {\n rowspan: '1',\n colspan: '1',\n row: 'row-0jwjg3',\n cell: 'cell-1azhl2',\n list: 'ordered'\n },\n rowspan: '1',\n colspan: '1',\n row: 'row-0jwjg3',\n cell: 'cell-1azhl2'\n }\n },\n {\n insert: '\\n',\n attributes: { 'block-id': 'block-7fa64af0-6974-4205-8cee-529f8bd46852' }\n },\n { insert: { divider: true } },\n { insert: \"Brandon's Section\" },\n {\n insert: '\\n',\n attributes: {\n header: 2,\n 'block-id': 'block-cf49462c-2370-48ff-969d-576cb32c39a1'\n }\n },\n {\n insert: '\\n',\n attributes: { 'block-id': 'block-30ef8361-0dd6-4eee-b4eb-c9012d0e9070' }\n },\n {\n insert: {\n slash_command: {\n id: 'doc_94zq-2436',\n sessionId: 'x9x08o916',\n replace: '/'\n }\n }\n },\n {\n insert: '\\n',\n attributes: { 'block-id': 'block-166ed856-cf8c-486a-9365-f499b21d91b3' }\n },\n { insert: { divider: true } },\n {\n insert: '\\n',\n attributes: {\n row: 'row-kssn15',\n rowspan: '1',\n colspan: '1',\n 'block-id': 'block-e8079594-4559-4259-98bb-da5280e2a692',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-kssn15',\n cell: 'cell-qxbksf'\n },\n cell: 'cell-qxbksf'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-70132663-14cc-4701-b5c5-eb99e875e2bd',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-kssn15',\n cell: 'cell-lsohbx'\n },\n cell: 'cell-lsohbx',\n row: 'row-kssn15',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-47a3899c-e3c5-4a7a-a8c4-46e0ae73a4fa',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-kssn15',\n cell: 'cell-hner9k'\n },\n cell: 'cell-hner9k',\n row: 'row-kssn15',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-0f9e650a-7841-412e-b4f2-5571b6d352c2',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-juxwc0',\n cell: 'cell-ei4yqp'\n },\n cell: 'cell-ei4yqp',\n row: 'row-juxwc0',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-53a158a9-8c82-4c82-9d4e-f5298257ca43',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-juxwc0',\n cell: 'cell-25pf5x'\n },\n cell: 'cell-25pf5x',\n row: 'row-juxwc0',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-da8ba35e-ce6e-4518-8605-c51d781eb07a',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-juxwc0',\n cell: 'cell-m8reor'\n },\n cell: 'cell-m8reor',\n row: 'row-juxwc0',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-2dce37c7-2978-4127-bed0-9549781babcb',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-ot4wy5',\n cell: 'cell-dinh0i'\n },\n cell: 'cell-dinh0i',\n row: 'row-ot4wy5',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-7b593f8c-4ea3-44b4-8ad9-4a0abffe759b',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-ot4wy5',\n cell: 'cell-d115b2'\n },\n cell: 'cell-d115b2',\n row: 'row-ot4wy5',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-272c28e6-2bde-4477-9d99-ce35b3045895',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-ot4wy5',\n cell: 'cell-fuapvo'\n },\n cell: 'cell-fuapvo',\n row: 'row-ot4wy5',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: { 'block-id': 'block-fbf23cab-1ce9-4ede-9953-f2f8250004cf' }\n },\n {\n insert: '\\n',\n attributes: { 'block-id': 'block-c3fbb8c9-495c-40b0-b0dd-f6e33dd64b1b' }\n },\n {\n insert: '\\n',\n attributes: { 'block-id': 'block-3417ad09-92a3-4a43-b5db-6dbcb0f16db4' }\n },\n {\n insert: '\\n',\n attributes: { 'block-id': 'block-b9eacdce-4ba3-4e66-8b69-3eace5656057' }\n },\n { insert: 'Dan Gornstein' },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-d7c6ae0d-a17c-433e-85fd-5efc52b587fb',\n header: 1\n }\n },\n {\n insert: '\\n',\n attributes: { 'block-id': 'block-814521bd-0e14-4fbf-b332-799c6452a624' }\n },\n { insert: 'aaa' },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-6aaf4dcf-dc21-45c6-b723-afb25fe0f498',\n list: { list: 'toggled', 'toggle-id': 'list-idl93b' }\n }\n },\n { insert: 'bb' },\n {\n insert: '\\n',\n attributes: {\n indent: 1,\n 'block-id': 'block-3dd75392-fa50-4bfb-ba6b-3b7d6bd3f1a1',\n list: { list: 'toggled', 'toggle-id': 'list-mrq7j2' }\n }\n },\n { insert: 'ccc' },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-2528578b-ecda-4f74-9fd7-8741d72dc8b3',\n indent: 2,\n list: { list: 'toggled', 'toggle-id': 'list-liu7dl' }\n }\n },\n {\n insert: '\\n',\n attributes: { 'block-id': 'block-18bf68c3-9ef3-4874-929c-9b6bb1a00325' }\n },\n {\n insert: '\\n',\n attributes: { 'table-col': { width: '150' } }\n },\n { insert: '\\n', attributes: { 'table-col': { width: '150' } } },\n {\n insert: '\\n',\n attributes: { 'table-col': { width: '150' } }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-d44e74b4-b37f-48e0-b319-6327a6295a57',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-si1nah',\n cell: 'cell-cpybie'\n },\n row: 'row-si1nah',\n cell: 'cell-cpybie',\n rowspan: '1',\n colspan: '1'\n }\n },\n { insert: 'aaa' },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-3e545ee9-0c9a-42d7-a4d0-833edb8087f3',\n list: {\n rowspan: '1',\n colspan: '1',\n row: 'row-si1nah',\n cell: 'cell-cpybie',\n list: 'toggled',\n 'toggle-id': 'list-kjl2ik'\n },\n rowspan: '1',\n colspan: '1',\n row: 'row-si1nah',\n cell: 'cell-cpybie'\n }\n },\n { insert: 'bb' },\n {\n insert: '\\n',\n attributes: {\n indent: 1,\n 'block-id': 'block-5f1225ad-370f-46ab-8f1e-18b277b5095f',\n list: {\n rowspan: '1',\n colspan: '1',\n row: 'row-si1nah',\n cell: 'cell-cpybie',\n list: 'toggled',\n 'toggle-id': 'list-eei1x5'\n },\n rowspan: '1',\n colspan: '1',\n row: 'row-si1nah',\n cell: 'cell-cpybie'\n }\n },\n { insert: 'ccc' },\n {\n insert: '\\n',\n attributes: {\n indent: 2,\n 'block-id': 'block-a77fdc11-ad24-431b-9ca2-09e32db94ac2',\n list: {\n rowspan: '1',\n colspan: '1',\n row: 'row-si1nah',\n cell: 'cell-cpybie',\n list: 'toggled',\n 'toggle-id': 'list-30us3c'\n },\n rowspan: '1',\n colspan: '1',\n row: 'row-si1nah',\n cell: 'cell-cpybie'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-d44e74b4-b37f-48e0-b319-6327a6295a57',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-si1nah',\n cell: 'cell-cpybie'\n },\n row: 'row-si1nah',\n cell: 'cell-cpybie',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-2c274c8a-757d-4892-8db8-1a7999f7ab51',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-si1nah',\n cell: 'cell-al1z64'\n },\n row: 'row-si1nah',\n cell: 'cell-al1z64',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-85931afe-1879-471c-bb4b-89e7bd517fe9',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-si1nah',\n cell: 'cell-q186pb'\n },\n row: 'row-si1nah',\n cell: 'cell-q186pb',\n rowspan: '1',\n colspan: '1'\n }\n },\n { insert: 'asdfasdfasdf' },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-6e0522e8-c1eb-4c07-98df-2b07c533a139',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-7x2d1o',\n cell: 'cell-6eid2t'\n },\n row: 'row-7x2d1o',\n cell: 'cell-6eid2t',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-4b3d0bd0-9175-45e9-955c-e8164f4b5376',\n row: 'row-7x2d1o',\n cell: 'cell-m1alad',\n rowspan: '1',\n colspan: '1',\n list: {\n rowspan: '1',\n colspan: '1',\n row: 'row-7x2d1o',\n cell: 'cell-m1alad',\n list: 'ordered'\n }\n }\n },\n { insert: 'asdfasdfasdf' },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-08610089-cb05-4366-bb1e-a0787d5b11bf',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-7x2d1o',\n cell: 'cell-dm1l2p'\n },\n row: 'row-7x2d1o',\n cell: 'cell-dm1l2p',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-c22b5125-8df3-432f-bd55-5ff456e41b4e',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-o0ujua',\n cell: 'cell-82g0ca'\n },\n row: 'row-o0ujua',\n cell: 'cell-82g0ca',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-7c6320e4-acaf-4ab4-8355-c9b00408c9c1',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-o0ujua',\n cell: 'cell-wv6ozp'\n },\n row: 'row-o0ujua',\n cell: 'cell-wv6ozp',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-d1bb7bed-e69e-4807-8d20-2d28fef8d08f',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-o0ujua',\n cell: 'cell-ldt53x'\n },\n row: 'row-o0ujua',\n cell: 'cell-ldt53x',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: { 'block-id': 'block-28f28cb8-51a2-4156-acf9-2380e1349745' }\n },\n { insert: { divider: true } },\n {\n insert: '\\n',\n attributes: { 'block-id': 'block-a1193252-c0c8-47fe-b9f6-32c8b01a1619' }\n },\n { insert: '\\n', attributes: { 'table-col': { width: '150' } } },\n {\n insert: '\\n\\n',\n attributes: { 'table-col': { width: '150' } }\n },\n { insert: '/This is a test.' },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-14188df0-a63f-4317-9a6d-91b96a7ac9fe',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-5ixdvv',\n cell: 'cell-9tgyed'\n },\n row: 'row-5ixdvv',\n cell: 'cell-9tgyed',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-7e5ba2af-9903-457d-adf4-2a79be81d823',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-5ixdvv',\n cell: 'cell-xc56e9'\n },\n row: 'row-5ixdvv',\n cell: 'cell-xc56e9',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-eb6cad93-caf7-4848-8adf-415255139268',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-5ixdvv',\n cell: 'cell-xrze3u'\n },\n row: 'row-5ixdvv',\n cell: 'cell-xrze3u',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-5bb547a2-6f71-4624-80c7-d0e1318c81a2',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-xbzv98',\n cell: 'cell-lie0ng'\n },\n row: 'row-xbzv98',\n cell: 'cell-lie0ng',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-b506de0d-efb6-4bd7-ba8e-2186cc57903e',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-xbzv98',\n cell: 'cell-s9sow1'\n },\n row: 'row-xbzv98',\n cell: 'cell-s9sow1',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-42d2ad20-5521-40e3-a88d-fe6906176e61',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-xbzv98',\n cell: 'cell-nodtcj'\n },\n row: 'row-xbzv98',\n cell: 'cell-nodtcj',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-7d3e4216-3f68-4dd6-bc77-4a9fad4ba008',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-5bqfil',\n cell: 'cell-c8c0f3'\n },\n row: 'row-5bqfil',\n cell: 'cell-c8c0f3',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-6671f221-551e-47fb-9b7d-9043b6b12cdc',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-5bqfil',\n cell: 'cell-jvxxif'\n },\n row: 'row-5bqfil',\n cell: 'cell-jvxxif',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-51e3161b-0437-4fe3-ac4f-129a93a93fc3',\n 'table-cell-line': {\n rowspan: '1',\n colspan: '1',\n row: 'row-5bqfil',\n cell: 'cell-rmjpze'\n },\n row: 'row-5bqfil',\n cell: 'cell-rmjpze',\n rowspan: '1',\n colspan: '1'\n }\n },\n {\n insert: '\\n',\n attributes: { 'block-id': 'block-21099df0-afb2-4cd3-834d-bb37800eb06a' }\n }\n ]\n const ydoc = new Y.Doc()\n const ytext = ydoc.getText('id')\n ytext.applyDelta(initialContent)\n const changeEvent = [\n { retain: 90 },\n { delete: 4 },\n {\n retain: 1,\n attributes: {\n layout: null,\n 'layout-width': null,\n 'block-id': 'block-9d6566a1-be55-4e20-999a-b990bc15e143'\n }\n }\n ]\n ytext.applyDelta(changeEvent)\n const delta = ytext.toDelta()\n t.compare(delta[41], {\n insert: '\\n',\n attributes: {\n 'block-id': 'block-9d6566a1-be55-4e20-999a-b990bc15e143'\n }\n })\n}\n\n/**\n * In this test we are mainly interested in the cleanup behavior and whether the resulting delta makes sense.\n * It is fine if the resulting delta is not minimal. But applying the delta to a rich-text editor should result in a\n * synced document.\n *\n * @param {t.TestCase} tc\n */\nexport const testDeltaAfterConcurrentFormatting = tc => {\n const { text0, text1, testConnector } = init(tc, { users: 2 })\n text0.insert(0, 'abcde')\n testConnector.flushAllMessages()\n text0.format(0, 3, { bold: true })\n text1.format(2, 2, { bold: true })\n /**\n * @type {any}\n */\n const deltas = []\n text1.observe(event => {\n if (event.delta.length > 0) {\n deltas.push(event.delta)\n }\n })\n testConnector.flushAllMessages()\n t.compare(deltas, [[{ retain: 3, attributes: { bold: true } }, { retain: 2, attributes: { bold: null } }]])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testBasicInsertAndDelete = tc => {\n const { users, text0 } = init(tc, { users: 2 })\n let delta\n\n text0.observe(event => {\n delta = event.delta\n })\n\n text0.delete(0, 0)\n t.assert(true, 'Does not throw when deleting zero elements with position 0')\n\n text0.insert(0, 'abc')\n t.assert(text0.toString() === 'abc', 'Basic insert works')\n t.compare(delta, [{ insert: 'abc' }])\n\n text0.delete(0, 1)\n t.assert(text0.toString() === 'bc', 'Basic delete works (position 0)')\n t.compare(delta, [{ delete: 1 }])\n\n text0.delete(1, 1)\n t.assert(text0.toString() === 'b', 'Basic delete works (position 1)')\n t.compare(delta, [{ retain: 1 }, { delete: 1 }])\n\n users[0].transact(() => {\n text0.insert(0, '1')\n text0.delete(0, 1)\n })\n t.compare(delta, [])\n\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testBasicFormat = tc => {\n const { users, text0 } = init(tc, { users: 2 })\n let delta\n text0.observe(event => {\n delta = event.delta\n })\n text0.insert(0, 'abc', { bold: true })\n t.assert(text0.toString() === 'abc', 'Basic insert with attributes works')\n t.compare(text0.toDelta(), [{ insert: 'abc', attributes: { bold: true } }])\n t.compare(delta, [{ insert: 'abc', attributes: { bold: true } }])\n text0.delete(0, 1)\n t.assert(text0.toString() === 'bc', 'Basic delete on formatted works (position 0)')\n t.compare(text0.toDelta(), [{ insert: 'bc', attributes: { bold: true } }])\n t.compare(delta, [{ delete: 1 }])\n text0.delete(1, 1)\n t.assert(text0.toString() === 'b', 'Basic delete works (position 1)')\n t.compare(text0.toDelta(), [{ insert: 'b', attributes: { bold: true } }])\n t.compare(delta, [{ retain: 1 }, { delete: 1 }])\n text0.insert(0, 'z', { bold: true })\n t.assert(text0.toString() === 'zb')\n t.compare(text0.toDelta(), [{ insert: 'zb', attributes: { bold: true } }])\n t.compare(delta, [{ insert: 'z', attributes: { bold: true } }])\n // @ts-ignore\n t.assert(text0._start.right.right.right.content.str === 'b', 'Does not insert duplicate attribute marker')\n text0.insert(0, 'y')\n t.assert(text0.toString() === 'yzb')\n t.compare(text0.toDelta(), [{ insert: 'y' }, { insert: 'zb', attributes: { bold: true } }])\n t.compare(delta, [{ insert: 'y' }])\n text0.format(0, 2, { bold: null })\n t.assert(text0.toString() === 'yzb')\n t.compare(text0.toDelta(), [{ insert: 'yz' }, { insert: 'b', attributes: { bold: true } }])\n t.compare(delta, [{ retain: 1 }, { retain: 1, attributes: { bold: null } }])\n compare(users)\n}\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testMultilineFormat = _tc => {\n const ydoc = new Y.Doc()\n const testText = ydoc.getText('test')\n testText.insert(0, 'Test\\nMulti-line\\nFormatting')\n testText.applyDelta([\n { retain: 4, attributes: { bold: true } },\n { retain: 1 }, // newline character\n { retain: 10, attributes: { bold: true } },\n { retain: 1 }, // newline character\n { retain: 10, attributes: { bold: true } }\n ])\n t.compare(testText.toDelta(), [\n { insert: 'Test', attributes: { bold: true } },\n { insert: '\\n' },\n { insert: 'Multi-line', attributes: { bold: true } },\n { insert: '\\n' },\n { insert: 'Formatting', attributes: { bold: true } }\n ])\n}\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testNotMergeEmptyLinesFormat = _tc => {\n const ydoc = new Y.Doc()\n const testText = ydoc.getText('test')\n testText.applyDelta([\n { insert: 'Text' },\n { insert: '\\n', attributes: { title: true } },\n { insert: '\\nText' },\n { insert: '\\n', attributes: { title: true } }\n ])\n t.compare(testText.toDelta(), [\n { insert: 'Text' },\n { insert: '\\n', attributes: { title: true } },\n { insert: '\\nText' },\n { insert: '\\n', attributes: { title: true } }\n ])\n}\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testPreserveAttributesThroughDelete = _tc => {\n const ydoc = new Y.Doc()\n const testText = ydoc.getText('test')\n testText.applyDelta([\n { insert: 'Text' },\n { insert: '\\n', attributes: { title: true } },\n { insert: '\\n' }\n ])\n testText.applyDelta([\n { retain: 4 },\n { delete: 1 },\n { retain: 1, attributes: { title: true } }\n ])\n t.compare(testText.toDelta(), [\n { insert: 'Text' },\n { insert: '\\n', attributes: { title: true } }\n ])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testGetDeltaWithEmbeds = tc => {\n const { text0 } = init(tc, { users: 1 })\n text0.applyDelta([{\n insert: { linebreak: 's' }\n }])\n t.compare(text0.toDelta(), [{\n insert: { linebreak: 's' }\n }])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testTypesAsEmbed = tc => {\n const { text0, text1, testConnector } = init(tc, { users: 2 })\n text0.applyDelta([{\n insert: new Y.Map([['key', 'val']])\n }])\n t.compare(text0.toDelta()[0].insert.toJSON(), { key: 'val' })\n let firedEvent = false\n text1.observe(event => {\n const d = event.delta\n t.assert(d.length === 1)\n t.compare(d.map(x => /** @type {Y.AbstractType<any>} */ (x.insert).toJSON()), [{ key: 'val' }])\n firedEvent = true\n })\n testConnector.flushAllMessages()\n const delta = text1.toDelta()\n t.assert(delta.length === 1)\n t.compare(delta[0].insert.toJSON(), { key: 'val' })\n t.assert(firedEvent, 'fired the event observer containing a Type-Embed')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testSnapshot = tc => {\n const { text0 } = init(tc, { users: 1 })\n const doc0 = /** @type {Y.Doc} */ (text0.doc)\n doc0.gc = false\n text0.applyDelta([{\n insert: 'abcd'\n }])\n const snapshot1 = Y.snapshot(doc0)\n text0.applyDelta([{\n retain: 1\n }, {\n insert: 'x'\n }, {\n delete: 1\n }])\n const snapshot2 = Y.snapshot(doc0)\n text0.applyDelta([{\n retain: 2\n }, {\n delete: 3\n }, {\n insert: 'x'\n }, {\n delete: 1\n }])\n const state1 = text0.toDelta(snapshot1)\n t.compare(state1, [{ insert: 'abcd' }])\n const state2 = text0.toDelta(snapshot2)\n t.compare(state2, [{ insert: 'axcd' }])\n const state2Diff = text0.toDelta(snapshot2, snapshot1)\n // @ts-ignore Remove userid info\n state2Diff.forEach(v => {\n if (v.attributes && v.attributes.ychange) {\n delete v.attributes.ychange.user\n }\n })\n t.compare(state2Diff, [{ insert: 'a' }, { insert: 'x', attributes: { ychange: { type: 'added' } } }, { insert: 'b', attributes: { ychange: { type: 'removed' } } }, { insert: 'cd' }])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testSnapshotDeleteAfter = tc => {\n const { text0 } = init(tc, { users: 1 })\n const doc0 = /** @type {Y.Doc} */ (text0.doc)\n doc0.gc = false\n text0.applyDelta([{\n insert: 'abcd'\n }])\n const snapshot1 = Y.snapshot(doc0)\n text0.applyDelta([{\n retain: 4\n }, {\n insert: 'e'\n }])\n const state1 = text0.toDelta(snapshot1)\n t.compare(state1, [{ insert: 'abcd' }])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testToJson = tc => {\n const { text0 } = init(tc, { users: 1 })\n text0.insert(0, 'abc', { bold: true })\n t.assert(text0.toJSON() === 'abc', 'toJSON returns the unformatted text')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testToDeltaEmbedAttributes = tc => {\n const { text0 } = init(tc, { users: 1 })\n text0.insert(0, 'ab', { bold: true })\n text0.insertEmbed(1, { image: 'imageSrc.png' }, { width: 100 })\n const delta0 = text0.toDelta()\n t.compare(delta0, [{ insert: 'a', attributes: { bold: true } }, { insert: { image: 'imageSrc.png' }, attributes: { width: 100 } }, { insert: 'b', attributes: { bold: true } }])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testToDeltaEmbedNoAttributes = tc => {\n const { text0 } = init(tc, { users: 1 })\n text0.insert(0, 'ab', { bold: true })\n text0.insertEmbed(1, { image: 'imageSrc.png' })\n const delta0 = text0.toDelta()\n t.compare(delta0, [{ insert: 'a', attributes: { bold: true } }, { insert: { image: 'imageSrc.png' } }, { insert: 'b', attributes: { bold: true } }], 'toDelta does not set attributes key when no attributes are present')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testFormattingRemoved = tc => {\n const { text0 } = init(tc, { users: 1 })\n text0.insert(0, 'ab', { bold: true })\n text0.delete(0, 2)\n t.assert(Y.getTypeChildren(text0).length === 1)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testFormattingRemovedInMidText = tc => {\n const { text0 } = init(tc, { users: 1 })\n text0.insert(0, '1234')\n text0.insert(2, 'ab', { bold: true })\n text0.delete(2, 2)\n t.assert(Y.getTypeChildren(text0).length === 3)\n}\n\n/**\n * Reported in https://github.com/yjs/yjs/issues/344\n *\n * @param {t.TestCase} tc\n */\nexport const testFormattingDeltaUnnecessaryAttributeChange = tc => {\n const { text0, text1, testConnector } = init(tc, { users: 2 })\n text0.insert(0, '\\n', {\n PARAGRAPH_STYLES: 'normal',\n LIST_STYLES: 'bullet'\n })\n text0.insert(1, 'abc', {\n PARAGRAPH_STYLES: 'normal'\n })\n testConnector.flushAllMessages()\n /**\n * @type {Array<any>}\n */\n const deltas = []\n text0.observe(event => {\n deltas.push(event.delta)\n })\n text1.observe(event => {\n deltas.push(event.delta)\n })\n text1.format(0, 1, { LIST_STYLES: 'number' })\n testConnector.flushAllMessages()\n const filteredDeltas = deltas.filter(d => d.length > 0)\n t.assert(filteredDeltas.length === 2)\n t.compare(filteredDeltas[0], [\n { retain: 1, attributes: { LIST_STYLES: 'number' } }\n ])\n t.compare(filteredDeltas[0], filteredDeltas[1])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testInsertAndDeleteAtRandomPositions = tc => {\n const N = 100000\n const { text0 } = init(tc, { users: 1 })\n const gen = tc.prng\n\n // create initial content\n // let expectedResult = init\n text0.insert(0, prng.word(gen, N / 2, N / 2))\n\n // apply changes\n for (let i = 0; i < N; i++) {\n const pos = prng.uint32(gen, 0, text0.length)\n if (prng.bool(gen)) {\n const len = prng.uint32(gen, 1, 5)\n const word = prng.word(gen, 0, len)\n text0.insert(pos, word)\n // expectedResult = expectedResult.slice(0, pos) + word + expectedResult.slice(pos)\n } else {\n const len = prng.uint32(gen, 0, math.min(3, text0.length - pos))\n text0.delete(pos, len)\n // expectedResult = expectedResult.slice(0, pos) + expectedResult.slice(pos + len)\n }\n }\n // t.compareStrings(text0.toString(), expectedResult)\n t.describe('final length', '' + text0.length)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testAppendChars = tc => {\n const N = 10000\n const { text0 } = init(tc, { users: 1 })\n\n // apply changes\n for (let i = 0; i < N; i++) {\n text0.insert(text0.length, 'a')\n }\n t.assert(text0.length === N)\n}\n\nconst largeDocumentSize = 100000\n\nconst id = Y.createID(0, 0)\nconst c = new Y.ContentString('a')\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testBestCase = _tc => {\n const N = largeDocumentSize\n const items = new Array(N)\n t.measureTime('time to create two million items in the best case', () => {\n const parent = /** @type {any} */ ({})\n let prevItem = null\n for (let i = 0; i < N; i++) {\n /**\n * @type {Y.Item}\n */\n const n = new Y.Item(Y.createID(0, 0), null, null, null, null, null, null, c)\n // items.push(n)\n items[i] = n\n n.right = prevItem\n n.rightOrigin = prevItem ? id : null\n n.content = c\n n.parent = parent\n prevItem = n\n }\n })\n const newArray = new Array(N)\n t.measureTime('time to copy two million items to new Array', () => {\n for (let i = 0; i < N; i++) {\n newArray[i] = items[i]\n }\n })\n}\n\nconst tryGc = () => {\n // @ts-ignore\n if (typeof global !== 'undefined' && global.gc) {\n // @ts-ignore\n global.gc()\n }\n}\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testLargeFragmentedDocument = _tc => {\n const itemsToInsert = largeDocumentSize\n let update = /** @type {any} */ (null)\n ;(() => {\n const doc1 = new Y.Doc()\n const text0 = doc1.getText('txt')\n tryGc()\n t.measureTime(`time to insert ${itemsToInsert} items`, () => {\n doc1.transact(() => {\n for (let i = 0; i < itemsToInsert; i++) {\n text0.insert(0, '0')\n }\n })\n })\n tryGc()\n t.measureTime('time to encode document', () => {\n update = Y.encodeStateAsUpdateV2(doc1)\n })\n t.describe('Document size:', update.byteLength)\n })()\n ;(() => {\n const doc2 = new Y.Doc()\n tryGc()\n t.measureTime(`time to apply ${itemsToInsert} updates`, () => {\n Y.applyUpdateV2(doc2, update)\n })\n })()\n}\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testIncrementalUpdatesPerformanceOnLargeFragmentedDocument = _tc => {\n const itemsToInsert = largeDocumentSize\n const updates = /** @type {Array<Uint8Array>} */ ([])\n ;(() => {\n const doc1 = new Y.Doc()\n doc1.on('update', update => {\n updates.push(update)\n })\n const text0 = doc1.getText('txt')\n tryGc()\n t.measureTime(`time to insert ${itemsToInsert} items`, () => {\n doc1.transact(() => {\n for (let i = 0; i < itemsToInsert; i++) {\n text0.insert(0, '0')\n }\n })\n })\n tryGc()\n })()\n ;(() => {\n t.measureTime(`time to merge ${itemsToInsert} updates (differential updates)`, () => {\n Y.mergeUpdates(updates)\n })\n tryGc()\n t.measureTime(`time to merge ${itemsToInsert} updates (ydoc updates)`, () => {\n const ydoc = new Y.Doc()\n updates.forEach(update => {\n Y.applyUpdate(ydoc, update)\n })\n })\n })()\n}\n\n/**\n * Splitting surrogates can lead to invalid encoded documents.\n *\n * https://github.com/yjs/yjs/issues/248\n *\n * @param {t.TestCase} tc\n */\nexport const testSplitSurrogateCharacter = tc => {\n {\n const { users, text0 } = init(tc, { users: 2 })\n users[1].disconnect() // disconnecting forces the user to encode the split surrogate\n text0.insert(0, '👾') // insert surrogate character\n // split surrogate, which should not lead to an encoding error\n text0.insert(1, 'hi!')\n compare(users)\n }\n {\n const { users, text0 } = init(tc, { users: 2 })\n users[1].disconnect() // disconnecting forces the user to encode the split surrogate\n text0.insert(0, '👾👾') // insert surrogate character\n // partially delete surrogate\n text0.delete(1, 2)\n compare(users)\n }\n {\n const { users, text0 } = init(tc, { users: 2 })\n users[1].disconnect() // disconnecting forces the user to encode the split surrogate\n text0.insert(0, '👾👾') // insert surrogate character\n // formatting will also split surrogates\n text0.format(1, 2, { bold: true })\n compare(users)\n }\n}\n\n/**\n * Search marker bug https://github.com/yjs/yjs/issues/307\n *\n * @param {t.TestCase} tc\n */\nexport const testSearchMarkerBug1 = tc => {\n const { users, text0, text1, testConnector } = init(tc, { users: 2 })\n\n users[0].on('update', update => {\n users[0].transact(() => {\n Y.applyUpdate(users[0], update)\n })\n })\n users[0].on('update', update => {\n users[1].transact(() => {\n Y.applyUpdate(users[1], update)\n })\n })\n\n text0.insert(0, 'a_a')\n testConnector.flushAllMessages()\n text0.insert(2, 's')\n testConnector.flushAllMessages()\n text1.insert(3, 'd')\n testConnector.flushAllMessages()\n text0.delete(0, 5)\n testConnector.flushAllMessages()\n text0.insert(0, 'a_a')\n testConnector.flushAllMessages()\n text0.insert(2, 's')\n testConnector.flushAllMessages()\n text1.insert(3, 'd')\n testConnector.flushAllMessages()\n t.compareStrings(text0.toString(), text1.toString())\n t.compareStrings(text0.toString(), 'a_sda')\n compare(users)\n}\n\n/**\n * Reported in https://github.com/yjs/yjs/pull/32\n *\n * @param {t.TestCase} _tc\n */\nexport const testFormattingBug = async _tc => {\n const ydoc1 = new Y.Doc()\n const ydoc2 = new Y.Doc()\n const text1 = ydoc1.getText()\n text1.insert(0, '\\n\\n\\n')\n text1.format(0, 3, { url: 'http://example.com' })\n ydoc1.getText().format(1, 1, { url: 'http://docs.yjs.dev' })\n ydoc2.getText().format(1, 1, { url: 'http://docs.yjs.dev' })\n Y.applyUpdate(ydoc2, Y.encodeStateAsUpdate(ydoc1))\n const text2 = ydoc2.getText()\n const expectedResult = [\n { insert: '\\n', attributes: { url: 'http://example.com' } },\n { insert: '\\n', attributes: { url: 'http://docs.yjs.dev' } },\n { insert: '\\n', attributes: { url: 'http://example.com' } }\n ]\n t.compare(text1.toDelta(), expectedResult)\n t.compare(text1.toDelta(), text2.toDelta())\n console.log(text1.toDelta())\n}\n\n/**\n * Delete formatting should not leave redundant formatting items.\n *\n * @param {t.TestCase} _tc\n */\nexport const testDeleteFormatting = _tc => {\n const doc = new Y.Doc()\n const text = doc.getText()\n text.insert(0, 'Attack ships on fire off the shoulder of Orion.')\n\n const doc2 = new Y.Doc()\n const text2 = doc2.getText()\n Y.applyUpdate(doc2, Y.encodeStateAsUpdate(doc))\n\n text.format(13, 7, { bold: true })\n Y.applyUpdate(doc2, Y.encodeStateAsUpdate(doc))\n\n text.format(16, 4, { bold: null })\n Y.applyUpdate(doc2, Y.encodeStateAsUpdate(doc))\n\n const expected = [\n { insert: 'Attack ships ' },\n { insert: 'on ', attributes: { bold: true } },\n { insert: 'fire off the shoulder of Orion.' }\n ]\n t.compare(text.toDelta(), expected)\n t.compare(text2.toDelta(), expected)\n}\n\n// RANDOM TESTS\n\nlet charCounter = 0\n\n/**\n * Random tests for pure text operations without formatting.\n *\n * @type Array<function(any,prng.PRNG):void>\n */\nconst textChanges = [\n /**\n * @param {Y.Doc} y\n * @param {prng.PRNG} gen\n */\n (y, gen) => { // insert text\n const ytext = y.getText('text')\n const insertPos = prng.int32(gen, 0, ytext.length)\n const text = charCounter++ + prng.word(gen)\n const prevText = ytext.toString()\n ytext.insert(insertPos, text)\n t.compareStrings(ytext.toString(), prevText.slice(0, insertPos) + text + prevText.slice(insertPos))\n },\n /**\n * @param {Y.Doc} y\n * @param {prng.PRNG} gen\n */\n (y, gen) => { // delete text\n const ytext = y.getText('text')\n const contentLen = ytext.toString().length\n const insertPos = prng.int32(gen, 0, contentLen)\n const overwrite = math.min(prng.int32(gen, 0, contentLen - insertPos), 2)\n const prevText = ytext.toString()\n ytext.delete(insertPos, overwrite)\n t.compareStrings(ytext.toString(), prevText.slice(0, insertPos) + prevText.slice(insertPos + overwrite))\n }\n]\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGenerateTextChanges5 = tc => {\n const { users } = checkResult(Y.applyRandomTests(tc, textChanges, 5))\n const cleanups = Y.cleanupYTextFormatting(users[0].getText('text'))\n t.assert(cleanups === 0)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGenerateTextChanges30 = tc => {\n const { users } = checkResult(Y.applyRandomTests(tc, textChanges, 30))\n const cleanups = Y.cleanupYTextFormatting(users[0].getText('text'))\n t.assert(cleanups === 0)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGenerateTextChanges40 = tc => {\n const { users } = checkResult(Y.applyRandomTests(tc, textChanges, 40))\n const cleanups = Y.cleanupYTextFormatting(users[0].getText('text'))\n t.assert(cleanups === 0)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGenerateTextChanges50 = tc => {\n const { users } = checkResult(Y.applyRandomTests(tc, textChanges, 50))\n const cleanups = Y.cleanupYTextFormatting(users[0].getText('text'))\n t.assert(cleanups === 0)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGenerateTextChanges70 = tc => {\n const { users } = checkResult(Y.applyRandomTests(tc, textChanges, 70))\n const cleanups = Y.cleanupYTextFormatting(users[0].getText('text'))\n t.assert(cleanups === 0)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGenerateTextChanges90 = tc => {\n const { users } = checkResult(Y.applyRandomTests(tc, textChanges, 90))\n const cleanups = Y.cleanupYTextFormatting(users[0].getText('text'))\n t.assert(cleanups === 0)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGenerateTextChanges300 = tc => {\n const { users } = checkResult(Y.applyRandomTests(tc, textChanges, 300))\n const cleanups = Y.cleanupYTextFormatting(users[0].getText('text'))\n t.assert(cleanups === 0)\n}\n\nconst marks = [\n { bold: true },\n { italic: true },\n { italic: true, color: '#888' }\n]\n\nconst marksChoices = [\n undefined,\n ...marks\n]\n\n/**\n * Random tests for all features of y-text (formatting, embeds, ..).\n *\n * @type Array<function(any,prng.PRNG):void>\n */\nconst qChanges = [\n /**\n * @param {Y.Doc} y\n * @param {prng.PRNG} gen\n */\n (y, gen) => { // insert text\n const ytext = y.getText('text')\n const insertPos = prng.int32(gen, 0, ytext.length)\n const attrs = prng.oneOf(gen, marksChoices)\n const text = charCounter++ + prng.word(gen)\n ytext.insert(insertPos, text, attrs)\n },\n /**\n * @param {Y.Doc} y\n * @param {prng.PRNG} gen\n */\n (y, gen) => { // insert embed\n const ytext = y.getText('text')\n const insertPos = prng.int32(gen, 0, ytext.length)\n if (prng.bool(gen)) {\n ytext.insertEmbed(insertPos, { image: 'https://user-images.githubusercontent.com/5553757/48975307-61efb100-f06d-11e8-9177-ee895e5916e5.png' })\n } else {\n ytext.insertEmbed(insertPos, new Y.Map([[prng.word(gen), prng.word(gen)]]))\n }\n },\n /**\n * @param {Y.Doc} y\n * @param {prng.PRNG} gen\n */\n (y, gen) => { // delete text\n const ytext = y.getText('text')\n const contentLen = ytext.toString().length\n const insertPos = prng.int32(gen, 0, contentLen)\n const overwrite = math.min(prng.int32(gen, 0, contentLen - insertPos), 2)\n ytext.delete(insertPos, overwrite)\n },\n /**\n * @param {Y.Doc} y\n * @param {prng.PRNG} gen\n */\n (y, gen) => { // format text\n const ytext = y.getText('text')\n const contentLen = ytext.toString().length\n const insertPos = prng.int32(gen, 0, contentLen)\n const overwrite = math.min(prng.int32(gen, 0, contentLen - insertPos), 2)\n const format = prng.oneOf(gen, marks)\n ytext.format(insertPos, overwrite, format)\n },\n /**\n * @param {Y.Doc} y\n * @param {prng.PRNG} gen\n */\n (y, gen) => { // insert codeblock\n const ytext = y.getText('text')\n const insertPos = prng.int32(gen, 0, ytext.toString().length)\n const text = charCounter++ + prng.word(gen)\n const ops = []\n if (insertPos > 0) {\n ops.push({ retain: insertPos })\n }\n ops.push({ insert: text }, { insert: '\\n', format: { 'code-block': true } })\n ytext.applyDelta(ops)\n },\n /**\n * @param {Y.Doc} y\n * @param {prng.PRNG} gen\n */\n (y, gen) => { // complex delta op\n const ytext = y.getText('text')\n const contentLen = ytext.toString().length\n let currentPos = math.max(0, prng.int32(gen, 0, contentLen - 1))\n /**\n * @type {Array<any>}\n */\n const ops = currentPos > 0 ? [{ retain: currentPos }] : []\n // create max 3 ops\n for (let i = 0; i < 7 && currentPos < contentLen; i++) {\n prng.oneOf(gen, [\n () => { // format\n const retain = math.min(prng.int32(gen, 0, contentLen - currentPos), 5)\n const format = prng.oneOf(gen, marks)\n ops.push({ retain, attributes: format })\n currentPos += retain\n },\n () => { // insert\n const attrs = prng.oneOf(gen, marksChoices)\n const text = prng.word(gen, 1, 3)\n ops.push({ insert: text, attributes: attrs })\n },\n () => { // delete\n const delLen = math.min(prng.int32(gen, 0, contentLen - currentPos), 10)\n ops.push({ delete: delLen })\n currentPos += delLen\n }\n ])()\n }\n ytext.applyDelta(ops)\n }\n]\n\n/**\n * @param {any} result\n */\nconst checkResult = result => {\n for (let i = 1; i < result.testObjects.length; i++) {\n /**\n * @param {any} d\n */\n const typeToObject = d => d.insert instanceof Y.AbstractType ? d.insert.toJSON() : d\n const p1 = result.users[i].getText('text').toDelta().map(typeToObject)\n const p2 = result.users[i].getText('text').toDelta().map(typeToObject)\n t.compare(p1, p2)\n }\n // Uncomment this to find formatting-cleanup issues\n // const cleanups = Y.cleanupYTextFormatting(result.users[0].getText('text'))\n // t.assert(cleanups === 0)\n return result\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGenerateQuillChanges1 = tc => {\n const { users } = checkResult(Y.applyRandomTests(tc, qChanges, 1))\n const cleanups = Y.cleanupYTextFormatting(users[0].getText('text'))\n t.assert(cleanups === 0)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGenerateQuillChanges2 = tc => {\n const { users } = checkResult(Y.applyRandomTests(tc, qChanges, 2))\n const cleanups = Y.cleanupYTextFormatting(users[0].getText('text'))\n t.assert(cleanups === 0)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGenerateQuillChanges2Repeat = tc => {\n for (let i = 0; i < 1000; i++) {\n const { users } = checkResult(Y.applyRandomTests(tc, qChanges, 2))\n const cleanups = Y.cleanupYTextFormatting(users[0].getText('text'))\n t.assert(cleanups === 0)\n }\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGenerateQuillChanges3 = tc => {\n checkResult(Y.applyRandomTests(tc, qChanges, 3))\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGenerateQuillChanges30 = tc => {\n checkResult(Y.applyRandomTests(tc, qChanges, 30))\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGenerateQuillChanges40 = tc => {\n checkResult(Y.applyRandomTests(tc, qChanges, 40))\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGenerateQuillChanges70 = tc => {\n checkResult(Y.applyRandomTests(tc, qChanges, 70))\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGenerateQuillChanges100 = tc => {\n checkResult(Y.applyRandomTests(tc, qChanges, 100))\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRepeatGenerateQuillChanges300 = tc => {\n checkResult(Y.applyRandomTests(tc, qChanges, 300))\n}\n","import { init, compare } from './testHelper.js'\nimport * as Y from '../src/index.js'\n\nimport * as t from 'lib0/testing'\n\nexport const testCustomTypings = () => {\n const ydoc = new Y.Doc()\n const ymap = ydoc.getMap()\n /**\n * @type {Y.XmlElement<{ num: number, str: string, [k:string]: object|number|string }>}\n */\n const yxml = ymap.set('yxml', new Y.XmlElement('test'))\n /**\n * @type {number|undefined}\n */\n const num = yxml.getAttribute('num')\n /**\n * @type {string|undefined}\n */\n const str = yxml.getAttribute('str')\n /**\n * @type {object|number|string|undefined}\n */\n const dtrn = yxml.getAttribute('dtrn')\n const attrs = yxml.getAttributes()\n /**\n * @type {object|number|string|undefined}\n */\n const any = attrs.shouldBeAny\n console.log({ num, str, dtrn, attrs, any })\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testSetProperty = tc => {\n const { testConnector, users, xml0, xml1 } = init(tc, { users: 2 })\n xml0.setAttribute('height', '10')\n t.assert(xml0.getAttribute('height') === '10', 'Simple set+get works')\n testConnector.flushAllMessages()\n t.assert(xml1.getAttribute('height') === '10', 'Simple set+get works (remote)')\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testHasProperty = tc => {\n const { testConnector, users, xml0, xml1 } = init(tc, { users: 2 })\n xml0.setAttribute('height', '10')\n t.assert(xml0.hasAttribute('height'), 'Simple set+has works')\n testConnector.flushAllMessages()\n t.assert(xml1.hasAttribute('height'), 'Simple set+has works (remote)')\n\n xml0.removeAttribute('height')\n t.assert(!xml0.hasAttribute('height'), 'Simple set+remove+has works')\n testConnector.flushAllMessages()\n t.assert(!xml1.hasAttribute('height'), 'Simple set+remove+has works (remote)')\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testEvents = tc => {\n const { testConnector, users, xml0, xml1 } = init(tc, { users: 2 })\n /**\n * @type {any}\n */\n let event\n /**\n * @type {any}\n */\n let remoteEvent\n xml0.observe(e => {\n event = e\n })\n xml1.observe(e => {\n remoteEvent = e\n })\n xml0.setAttribute('key', 'value')\n t.assert(event.attributesChanged.has('key'), 'YXmlEvent.attributesChanged on updated key')\n testConnector.flushAllMessages()\n t.assert(remoteEvent.attributesChanged.has('key'), 'YXmlEvent.attributesChanged on updated key (remote)')\n // check attributeRemoved\n xml0.removeAttribute('key')\n t.assert(event.attributesChanged.has('key'), 'YXmlEvent.attributesChanged on removed attribute')\n testConnector.flushAllMessages()\n t.assert(remoteEvent.attributesChanged.has('key'), 'YXmlEvent.attributesChanged on removed attribute (remote)')\n xml0.insert(0, [new Y.XmlText('some text')])\n t.assert(event.childListChanged, 'YXmlEvent.childListChanged on inserted element')\n testConnector.flushAllMessages()\n t.assert(remoteEvent.childListChanged, 'YXmlEvent.childListChanged on inserted element (remote)')\n // test childRemoved\n xml0.delete(0)\n t.assert(event.childListChanged, 'YXmlEvent.childListChanged on deleted element')\n testConnector.flushAllMessages()\n t.assert(remoteEvent.childListChanged, 'YXmlEvent.childListChanged on deleted element (remote)')\n compare(users)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testTreewalker = tc => {\n const { users, xml0 } = init(tc, { users: 3 })\n const paragraph1 = new Y.XmlElement('p')\n const paragraph2 = new Y.XmlElement('p')\n const text1 = new Y.XmlText('init')\n const text2 = new Y.XmlText('text')\n paragraph1.insert(0, [text1, text2])\n xml0.insert(0, [paragraph1, paragraph2, new Y.XmlElement('img')])\n const allParagraphs = xml0.querySelectorAll('p')\n t.assert(allParagraphs.length === 2, 'found exactly two paragraphs')\n t.assert(allParagraphs[0] === paragraph1, 'querySelectorAll found paragraph1')\n t.assert(allParagraphs[1] === paragraph2, 'querySelectorAll found paragraph2')\n t.assert(xml0.querySelector('p') === paragraph1, 'querySelector found paragraph1')\n compare(users)\n}\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testYtextAttributes = _tc => {\n const ydoc = new Y.Doc()\n const ytext = /** @type {Y.XmlText} */ (ydoc.get('', Y.XmlText))\n ytext.observe(event => {\n t.compare(event.changes.keys.get('test'), { action: 'add', oldValue: undefined })\n })\n ytext.setAttribute('test', 42)\n t.compare(ytext.getAttribute('test'), 42)\n t.compare(ytext.getAttributes(), { test: 42 })\n}\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testSiblings = _tc => {\n const ydoc = new Y.Doc()\n const yxml = ydoc.getXmlFragment()\n const first = new Y.XmlText()\n const second = new Y.XmlElement('p')\n yxml.insert(0, [first, second])\n t.assert(first.nextSibling === second)\n t.assert(second.prevSibling === first)\n t.assert(first.parent === yxml)\n t.assert(yxml.parent === null)\n t.assert(yxml.firstChild === first)\n}\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testInsertafter = _tc => {\n const ydoc = new Y.Doc()\n const yxml = ydoc.getXmlFragment()\n const first = new Y.XmlText()\n const second = new Y.XmlElement('p')\n const third = new Y.XmlElement('p')\n\n const deepsecond1 = new Y.XmlElement('span')\n const deepsecond2 = new Y.XmlText()\n second.insertAfter(null, [deepsecond1])\n second.insertAfter(deepsecond1, [deepsecond2])\n\n yxml.insertAfter(null, [first, second])\n yxml.insertAfter(second, [third])\n\n t.assert(yxml.length === 3)\n t.assert(second.get(0) === deepsecond1)\n t.assert(second.get(1) === deepsecond2)\n\n t.compareArrays(yxml.toArray(), [first, second, third])\n\n t.fails(() => {\n const el = new Y.XmlElement('p')\n el.insertAfter(deepsecond1, [new Y.XmlText()])\n })\n}\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testClone = _tc => {\n const ydoc = new Y.Doc()\n const yxml = ydoc.getXmlFragment()\n const first = new Y.XmlText('text')\n const second = new Y.XmlElement('p')\n const third = new Y.XmlElement('p')\n yxml.push([first, second, third])\n t.compareArrays(yxml.toArray(), [first, second, third])\n\n const cloneYxml = yxml.clone()\n ydoc.getArray('copyarr').insert(0, [cloneYxml])\n t.assert(cloneYxml.length === 3)\n t.compare(cloneYxml.toJSON(), yxml.toJSON())\n}\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testFormattingBug = _tc => {\n const ydoc = new Y.Doc()\n const yxml = /** @type {Y.XmlText} */ (ydoc.get('', Y.XmlText))\n const delta = [\n { insert: 'A', attributes: { em: {}, strong: {} } },\n { insert: 'B', attributes: { em: {} } },\n { insert: 'C', attributes: { em: {}, strong: {} } }\n ]\n yxml.applyDelta(delta)\n t.compare(yxml.toDelta(), delta)\n}\n","import * as t from 'lib0/testing'\nimport * as promise from 'lib0/promise'\n\nimport {\n contentRefs,\n readContentBinary,\n readContentDeleted,\n readContentString,\n readContentJSON,\n readContentEmbed,\n readContentType,\n readContentFormat,\n readContentAny,\n readContentDoc,\n Doc,\n PermanentUserData,\n encodeStateAsUpdate,\n applyUpdate\n} from '../src/internals.js'\n\nimport * as Y from '../src/index.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testStructReferences = tc => {\n t.assert(contentRefs.length === 11)\n t.assert(contentRefs[1] === readContentDeleted)\n t.assert(contentRefs[2] === readContentJSON) // TODO: deprecate content json?\n t.assert(contentRefs[3] === readContentBinary)\n t.assert(contentRefs[4] === readContentString)\n t.assert(contentRefs[5] === readContentEmbed)\n t.assert(contentRefs[6] === readContentFormat)\n t.assert(contentRefs[7] === readContentType)\n t.assert(contentRefs[8] === readContentAny)\n t.assert(contentRefs[9] === readContentDoc)\n // contentRefs[10] is reserved for Skip structs\n}\n\n/**\n * There is some custom encoding/decoding happening in PermanentUserData.\n * This is why it landed here.\n *\n * @param {t.TestCase} tc\n */\nexport const testPermanentUserData = async tc => {\n const ydoc1 = new Doc()\n const ydoc2 = new Doc()\n const pd1 = new PermanentUserData(ydoc1)\n const pd2 = new PermanentUserData(ydoc2)\n pd1.setUserMapping(ydoc1, ydoc1.clientID, 'user a')\n pd2.setUserMapping(ydoc2, ydoc2.clientID, 'user b')\n ydoc1.getText().insert(0, 'xhi')\n ydoc1.getText().delete(0, 1)\n ydoc2.getText().insert(0, 'hxxi')\n ydoc2.getText().delete(1, 2)\n await promise.wait(10)\n applyUpdate(ydoc2, encodeStateAsUpdate(ydoc1))\n applyUpdate(ydoc1, encodeStateAsUpdate(ydoc2))\n\n // now sync a third doc with same name as doc1 and then create PermanentUserData\n const ydoc3 = new Doc()\n applyUpdate(ydoc3, encodeStateAsUpdate(ydoc1))\n const pd3 = new PermanentUserData(ydoc3)\n pd3.setUserMapping(ydoc3, ydoc3.clientID, 'user a')\n}\n\n/**\n * Reported here: https://github.com/yjs/yjs/issues/308\n * @param {t.TestCase} tc\n */\nexport const testDiffStateVectorOfUpdateIsEmpty = tc => {\n const ydoc = new Y.Doc()\n /**\n * @type {any}\n */\n let sv = null\n ydoc.getText().insert(0, 'a')\n ydoc.on('update', update => {\n sv = Y.encodeStateVectorFromUpdate(update)\n })\n // should produce an update with an empty state vector (because previous ops are missing)\n ydoc.getText().insert(0, 'a')\n t.assert(sv !== null && sv.byteLength === 1 && sv[0] === 0)\n}\n\n/**\n * Reported here: https://github.com/yjs/yjs/issues/308\n * @param {t.TestCase} tc\n */\nexport const testDiffStateVectorOfUpdateIgnoresSkips = tc => {\n const ydoc = new Y.Doc()\n /**\n * @type {Array<Uint8Array>}\n */\n const updates = []\n ydoc.on('update', update => {\n updates.push(update)\n })\n ydoc.getText().insert(0, 'a')\n ydoc.getText().insert(0, 'b')\n ydoc.getText().insert(0, 'c')\n const update13 = Y.mergeUpdates([updates[0], updates[2]])\n const sv = Y.encodeStateVectorFromUpdate(update13)\n const state = Y.decodeStateVector(sv)\n t.assert(state.get(ydoc.clientID) === 1)\n t.assert(state.size === 1)\n}\n","import { init } from './testHelper.js' // eslint-disable-line\n\nimport * as Y from '../src/index.js'\nimport * as t from 'lib0/testing'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testInfiniteCaptureTimeout = tc => {\n const { array0 } = init(tc, { users: 3 })\n const undoManager = new Y.UndoManager(array0, { captureTimeout: Number.MAX_VALUE })\n array0.push([1, 2, 3])\n undoManager.stopCapturing()\n array0.push([4, 5, 6])\n undoManager.undo()\n t.compare(array0.toArray(), [1, 2, 3])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testUndoText = tc => {\n const { testConnector, text0, text1 } = init(tc, { users: 3 })\n const undoManager = new Y.UndoManager(text0)\n\n // items that are added & deleted in the same transaction won't be undo\n text0.insert(0, 'test')\n text0.delete(0, 4)\n undoManager.undo()\n t.assert(text0.toString() === '')\n\n // follow redone items\n text0.insert(0, 'a')\n undoManager.stopCapturing()\n text0.delete(0, 1)\n undoManager.stopCapturing()\n undoManager.undo()\n t.assert(text0.toString() === 'a')\n undoManager.undo()\n t.assert(text0.toString() === '')\n\n text0.insert(0, 'abc')\n text1.insert(0, 'xyz')\n testConnector.syncAll()\n undoManager.undo()\n t.assert(text0.toString() === 'xyz')\n undoManager.redo()\n t.assert(text0.toString() === 'abcxyz')\n testConnector.syncAll()\n text1.delete(0, 1)\n testConnector.syncAll()\n undoManager.undo()\n t.assert(text0.toString() === 'xyz')\n undoManager.redo()\n t.assert(text0.toString() === 'bcxyz')\n // test marks\n text0.format(1, 3, { bold: true })\n t.compare(text0.toDelta(), [{ insert: 'b' }, { insert: 'cxy', attributes: { bold: true } }, { insert: 'z' }])\n undoManager.undo()\n t.compare(text0.toDelta(), [{ insert: 'bcxyz' }])\n undoManager.redo()\n t.compare(text0.toDelta(), [{ insert: 'b' }, { insert: 'cxy', attributes: { bold: true } }, { insert: 'z' }])\n}\n\n/**\n * Test case to fix #241\n * @param {t.TestCase} _tc\n */\nexport const testEmptyTypeScope = _tc => {\n const ydoc = new Y.Doc()\n const um = new Y.UndoManager([], { doc: ydoc })\n const yarray = ydoc.getArray()\n um.addToScope(yarray)\n yarray.insert(0, [1])\n um.undo()\n t.assert(yarray.length === 0)\n}\n\n/**\n * Test case to fix #241\n * @param {t.TestCase} _tc\n */\nexport const testDoubleUndo = _tc => {\n const doc = new Y.Doc()\n const text = doc.getText()\n text.insert(0, '1221')\n\n const manager = new Y.UndoManager(text)\n\n text.insert(2, '3')\n text.insert(3, '3')\n\n manager.undo()\n manager.undo()\n\n text.insert(2, '3')\n\n t.compareStrings(text.toString(), '12321')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testUndoMap = tc => {\n const { testConnector, map0, map1 } = init(tc, { users: 2 })\n map0.set('a', 0)\n const undoManager = new Y.UndoManager(map0)\n map0.set('a', 1)\n undoManager.undo()\n t.assert(map0.get('a') === 0)\n undoManager.redo()\n t.assert(map0.get('a') === 1)\n // testing sub-types and if it can restore a whole type\n const subType = new Y.Map()\n map0.set('a', subType)\n subType.set('x', 42)\n t.compare(map0.toJSON(), /** @type {any} */ ({ a: { x: 42 } }))\n undoManager.undo()\n t.assert(map0.get('a') === 1)\n undoManager.redo()\n t.compare(map0.toJSON(), /** @type {any} */ ({ a: { x: 42 } }))\n testConnector.syncAll()\n // if content is overwritten by another user, undo operations should be skipped\n map1.set('a', 44)\n testConnector.syncAll()\n undoManager.undo()\n t.assert(map0.get('a') === 44)\n undoManager.redo()\n t.assert(map0.get('a') === 44)\n\n // test setting value multiple times\n map0.set('b', 'initial')\n undoManager.stopCapturing()\n map0.set('b', 'val1')\n map0.set('b', 'val2')\n undoManager.stopCapturing()\n undoManager.undo()\n t.assert(map0.get('b') === 'initial')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testUndoArray = tc => {\n const { testConnector, array0, array1 } = init(tc, { users: 3 })\n const undoManager = new Y.UndoManager(array0)\n array0.insert(0, [1, 2, 3])\n array1.insert(0, [4, 5, 6])\n testConnector.syncAll()\n t.compare(array0.toArray(), [1, 2, 3, 4, 5, 6])\n undoManager.undo()\n t.compare(array0.toArray(), [4, 5, 6])\n undoManager.redo()\n t.compare(array0.toArray(), [1, 2, 3, 4, 5, 6])\n testConnector.syncAll()\n array1.delete(0, 1) // user1 deletes [1]\n testConnector.syncAll()\n undoManager.undo()\n t.compare(array0.toArray(), [4, 5, 6])\n undoManager.redo()\n t.compare(array0.toArray(), [2, 3, 4, 5, 6])\n array0.delete(0, 5)\n // test nested structure\n const ymap = new Y.Map()\n array0.insert(0, [ymap])\n t.compare(array0.toJSON(), [{}])\n undoManager.stopCapturing()\n ymap.set('a', 1)\n t.compare(array0.toJSON(), [{ a: 1 }])\n undoManager.undo()\n t.compare(array0.toJSON(), [{}])\n undoManager.undo()\n t.compare(array0.toJSON(), [2, 3, 4, 5, 6])\n undoManager.redo()\n t.compare(array0.toJSON(), [{}])\n undoManager.redo()\n t.compare(array0.toJSON(), [{ a: 1 }])\n testConnector.syncAll()\n array1.get(0).set('b', 2)\n testConnector.syncAll()\n t.compare(array0.toJSON(), [{ a: 1, b: 2 }])\n undoManager.undo()\n t.compare(array0.toJSON(), [{ b: 2 }])\n undoManager.undo()\n t.compare(array0.toJSON(), [2, 3, 4, 5, 6])\n undoManager.redo()\n t.compare(array0.toJSON(), [{ b: 2 }])\n undoManager.redo()\n t.compare(array0.toJSON(), [{ a: 1, b: 2 }])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testUndoXml = tc => {\n const { xml0 } = init(tc, { users: 3 })\n const undoManager = new Y.UndoManager(xml0)\n const child = new Y.XmlElement('p')\n xml0.insert(0, [child])\n const textchild = new Y.XmlText('content')\n child.insert(0, [textchild])\n t.assert(xml0.toString() === '<undefined><p>content</p></undefined>')\n // format textchild and revert that change\n undoManager.stopCapturing()\n textchild.format(3, 4, { bold: {} })\n t.assert(xml0.toString() === '<undefined><p>con<bold>tent</bold></p></undefined>')\n undoManager.undo()\n t.assert(xml0.toString() === '<undefined><p>content</p></undefined>')\n undoManager.redo()\n t.assert(xml0.toString() === '<undefined><p>con<bold>tent</bold></p></undefined>')\n xml0.delete(0, 1)\n t.assert(xml0.toString() === '<undefined></undefined>')\n undoManager.undo()\n t.assert(xml0.toString() === '<undefined><p>con<bold>tent</bold></p></undefined>')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testUndoEvents = tc => {\n const { text0 } = init(tc, { users: 3 })\n const undoManager = new Y.UndoManager(text0)\n let counter = 0\n let receivedMetadata = -1\n undoManager.on('stack-item-added', /** @param {any} event */ event => {\n t.assert(event.type != null)\n t.assert(event.changedParentTypes != null && event.changedParentTypes.has(text0))\n event.stackItem.meta.set('test', counter++)\n })\n undoManager.on('stack-item-popped', /** @param {any} event */ event => {\n t.assert(event.type != null)\n t.assert(event.changedParentTypes != null && event.changedParentTypes.has(text0))\n receivedMetadata = event.stackItem.meta.get('test')\n })\n text0.insert(0, 'abc')\n undoManager.undo()\n t.assert(receivedMetadata === 0)\n undoManager.redo()\n t.assert(receivedMetadata === 1)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testTrackClass = tc => {\n const { users, text0 } = init(tc, { users: 3 })\n // only track origins that are numbers\n const undoManager = new Y.UndoManager(text0, { trackedOrigins: new Set([Number]) })\n users[0].transact(() => {\n text0.insert(0, 'abc')\n }, 42)\n t.assert(text0.toString() === 'abc')\n undoManager.undo()\n t.assert(text0.toString() === '')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testTypeScope = tc => {\n const { array0 } = init(tc, { users: 3 })\n // only track origins that are numbers\n const text0 = new Y.Text()\n const text1 = new Y.Text()\n array0.insert(0, [text0, text1])\n const undoManager = new Y.UndoManager(text0)\n const undoManagerBoth = new Y.UndoManager([text0, text1])\n text1.insert(0, 'abc')\n t.assert(undoManager.undoStack.length === 0)\n t.assert(undoManagerBoth.undoStack.length === 1)\n t.assert(text1.toString() === 'abc')\n undoManager.undo()\n t.assert(text1.toString() === 'abc')\n undoManagerBoth.undo()\n t.assert(text1.toString() === '')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testUndoInEmbed = tc => {\n const { text0 } = init(tc, { users: 3 })\n const undoManager = new Y.UndoManager(text0)\n const nestedText = new Y.Text('initial text')\n undoManager.stopCapturing()\n text0.insertEmbed(0, nestedText, { bold: true })\n t.assert(nestedText.toString() === 'initial text')\n undoManager.stopCapturing()\n nestedText.delete(0, nestedText.length)\n nestedText.insert(0, 'other text')\n t.assert(nestedText.toString() === 'other text')\n undoManager.undo()\n t.assert(nestedText.toString() === 'initial text')\n undoManager.undo()\n t.assert(text0.length === 0)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testUndoDeleteFilter = tc => {\n /**\n * @type {Y.Array<any>}\n */\n const array0 = /** @type {any} */ (init(tc, { users: 3 }).array0)\n const undoManager = new Y.UndoManager(array0, { deleteFilter: item => !(item instanceof Y.Item) || (item.content instanceof Y.ContentType && item.content.type._map.size === 0) })\n const map0 = new Y.Map()\n map0.set('hi', 1)\n const map1 = new Y.Map()\n array0.insert(0, [map0, map1])\n undoManager.undo()\n t.assert(array0.length === 1)\n array0.get(0)\n t.assert(Array.from(array0.get(0).keys()).length === 1)\n}\n\n/**\n * This issue has been reported in https://discuss.yjs.dev/t/undomanager-with-external-updates/454/6\n * @param {t.TestCase} _tc\n */\nexport const testUndoUntilChangePerformed = _tc => {\n const doc = new Y.Doc()\n const doc2 = new Y.Doc()\n doc.on('update', update => Y.applyUpdate(doc2, update))\n doc2.on('update', update => Y.applyUpdate(doc, update))\n\n const yArray = doc.getArray('array')\n const yArray2 = doc2.getArray('array')\n const yMap = new Y.Map()\n yMap.set('hello', 'world')\n yArray.push([yMap])\n const yMap2 = new Y.Map()\n yMap2.set('key', 'value')\n yArray.push([yMap2])\n\n const undoManager = new Y.UndoManager([yArray], { trackedOrigins: new Set([doc.clientID]) })\n const undoManager2 = new Y.UndoManager([doc2.get('array')], { trackedOrigins: new Set([doc2.clientID]) })\n\n Y.transact(doc, () => yMap2.set('key', 'value modified'), doc.clientID)\n undoManager.stopCapturing()\n Y.transact(doc, () => yMap.set('hello', 'world modified'), doc.clientID)\n Y.transact(doc2, () => yArray2.delete(0), doc2.clientID)\n undoManager2.undo()\n undoManager.undo()\n t.compareStrings(yMap2.get('key'), 'value')\n}\n\n/**\n * This issue has been reported in https://github.com/yjs/yjs/issues/317\n * @param {t.TestCase} _tc\n */\nexport const testUndoNestedUndoIssue = _tc => {\n const doc = new Y.Doc({ gc: false })\n const design = doc.getMap()\n const undoManager = new Y.UndoManager(design, { captureTimeout: 0 })\n\n /**\n * @type {Y.Map<any>}\n */\n const text = new Y.Map()\n\n const blocks1 = new Y.Array()\n const blocks1block = new Y.Map()\n\n doc.transact(() => {\n blocks1block.set('text', 'Type Something')\n blocks1.push([blocks1block])\n text.set('blocks', blocks1block)\n design.set('text', text)\n })\n\n const blocks2 = new Y.Array()\n const blocks2block = new Y.Map()\n doc.transact(() => {\n blocks2block.set('text', 'Something')\n blocks2.push([blocks2block])\n text.set('blocks', blocks2block)\n })\n\n const blocks3 = new Y.Array()\n const blocks3block = new Y.Map()\n doc.transact(() => {\n blocks3block.set('text', 'Something Else')\n blocks3.push([blocks3block])\n text.set('blocks', blocks3block)\n })\n\n t.compare(design.toJSON(), { text: { blocks: { text: 'Something Else' } } })\n undoManager.undo()\n t.compare(design.toJSON(), { text: { blocks: { text: 'Something' } } })\n undoManager.undo()\n t.compare(design.toJSON(), { text: { blocks: { text: 'Type Something' } } })\n undoManager.undo()\n t.compare(design.toJSON(), { })\n undoManager.redo()\n t.compare(design.toJSON(), { text: { blocks: { text: 'Type Something' } } })\n undoManager.redo()\n t.compare(design.toJSON(), { text: { blocks: { text: 'Something' } } })\n undoManager.redo()\n t.compare(design.toJSON(), { text: { blocks: { text: 'Something Else' } } })\n}\n\n/**\n * This issue has been reported in https://github.com/yjs/yjs/issues/355\n *\n * @param {t.TestCase} _tc\n */\nexport const testConsecutiveRedoBug = _tc => {\n const doc = new Y.Doc()\n const yRoot = doc.getMap()\n const undoMgr = new Y.UndoManager(yRoot)\n\n let yPoint = new Y.Map()\n yPoint.set('x', 0)\n yPoint.set('y', 0)\n yRoot.set('a', yPoint)\n undoMgr.stopCapturing()\n\n yPoint.set('x', 100)\n yPoint.set('y', 100)\n undoMgr.stopCapturing()\n\n yPoint.set('x', 200)\n yPoint.set('y', 200)\n undoMgr.stopCapturing()\n\n yPoint.set('x', 300)\n yPoint.set('y', 300)\n undoMgr.stopCapturing()\n\n t.compare(yPoint.toJSON(), { x: 300, y: 300 })\n\n undoMgr.undo() // x=200, y=200\n t.compare(yPoint.toJSON(), { x: 200, y: 200 })\n undoMgr.undo() // x=100, y=100\n t.compare(yPoint.toJSON(), { x: 100, y: 100 })\n undoMgr.undo() // x=0, y=0\n t.compare(yPoint.toJSON(), { x: 0, y: 0 })\n undoMgr.undo() // nil\n t.compare(yRoot.get('a'), undefined)\n\n undoMgr.redo() // x=0, y=0\n yPoint = yRoot.get('a')\n\n t.compare(yPoint.toJSON(), { x: 0, y: 0 })\n undoMgr.redo() // x=100, y=100\n t.compare(yPoint.toJSON(), { x: 100, y: 100 })\n undoMgr.redo() // x=200, y=200\n t.compare(yPoint.toJSON(), { x: 200, y: 200 })\n undoMgr.redo() // expected x=300, y=300, actually nil\n t.compare(yPoint.toJSON(), { x: 300, y: 300 })\n}\n\n/**\n * This issue has been reported in https://github.com/yjs/yjs/issues/304\n *\n * @param {t.TestCase} _tc\n */\nexport const testUndoXmlBug = _tc => {\n const origin = 'origin'\n const doc = new Y.Doc()\n const fragment = doc.getXmlFragment('t')\n const undoManager = new Y.UndoManager(fragment, {\n captureTimeout: 0,\n trackedOrigins: new Set([origin])\n })\n\n // create element\n doc.transact(() => {\n const e = new Y.XmlElement('test-node')\n e.setAttribute('a', '100')\n e.setAttribute('b', '0')\n fragment.insert(fragment.length, [e])\n }, origin)\n\n // change one attribute\n doc.transact(() => {\n const e = fragment.get(0)\n e.setAttribute('a', '200')\n }, origin)\n\n // change both attributes\n doc.transact(() => {\n const e = fragment.get(0)\n e.setAttribute('a', '180')\n e.setAttribute('b', '50')\n }, origin)\n\n undoManager.undo()\n undoManager.undo()\n undoManager.undo()\n\n undoManager.redo()\n undoManager.redo()\n undoManager.redo()\n t.compare(fragment.toString(), '<test-node a=\"180\" b=\"50\"></test-node>')\n}\n\n/**\n * This issue has been reported in https://github.com/yjs/yjs/issues/343\n *\n * @param {t.TestCase} _tc\n */\nexport const testUndoBlockBug = _tc => {\n const doc = new Y.Doc({ gc: false })\n const design = doc.getMap()\n\n const undoManager = new Y.UndoManager(design, { captureTimeout: 0 })\n\n const text = new Y.Map()\n\n const blocks1 = new Y.Array()\n const blocks1block = new Y.Map()\n doc.transact(() => {\n blocks1block.set('text', '1')\n blocks1.push([blocks1block])\n\n text.set('blocks', blocks1block)\n design.set('text', text)\n })\n\n const blocks2 = new Y.Array()\n const blocks2block = new Y.Map()\n doc.transact(() => {\n blocks2block.set('text', '2')\n blocks2.push([blocks2block])\n text.set('blocks', blocks2block)\n })\n\n const blocks3 = new Y.Array()\n const blocks3block = new Y.Map()\n doc.transact(() => {\n blocks3block.set('text', '3')\n blocks3.push([blocks3block])\n text.set('blocks', blocks3block)\n })\n\n const blocks4 = new Y.Array()\n const blocks4block = new Y.Map()\n doc.transact(() => {\n blocks4block.set('text', '4')\n blocks4.push([blocks4block])\n text.set('blocks', blocks4block)\n })\n\n // {\"text\":{\"blocks\":{\"text\":\"4\"}}}\n undoManager.undo() // {\"text\":{\"blocks\":{\"3\"}}}\n undoManager.undo() // {\"text\":{\"blocks\":{\"text\":\"2\"}}}\n undoManager.undo() // {\"text\":{\"blocks\":{\"text\":\"1\"}}}\n undoManager.undo() // {}\n undoManager.redo() // {\"text\":{\"blocks\":{\"text\":\"1\"}}}\n undoManager.redo() // {\"text\":{\"blocks\":{\"text\":\"2\"}}}\n undoManager.redo() // {\"text\":{\"blocks\":{\"text\":\"3\"}}}\n undoManager.redo() // {\"text\":{}}\n t.compare(design.toJSON(), { text: { blocks: { text: '4' } } })\n}\n\n/**\n * Undo text formatting delete should not corrupt peer state.\n *\n * @see https://github.com/yjs/yjs/issues/392\n * @param {t.TestCase} _tc\n */\nexport const testUndoDeleteTextFormat = _tc => {\n const doc = new Y.Doc()\n const text = doc.getText()\n text.insert(0, 'Attack ships on fire off the shoulder of Orion.')\n const doc2 = new Y.Doc()\n const text2 = doc2.getText()\n Y.applyUpdate(doc2, Y.encodeStateAsUpdate(doc))\n const undoManager = new Y.UndoManager(text)\n\n text.format(13, 7, { bold: true })\n undoManager.stopCapturing()\n Y.applyUpdate(doc2, Y.encodeStateAsUpdate(doc))\n\n text.format(16, 4, { bold: null })\n undoManager.stopCapturing()\n Y.applyUpdate(doc2, Y.encodeStateAsUpdate(doc))\n\n undoManager.undo()\n Y.applyUpdate(doc2, Y.encodeStateAsUpdate(doc))\n\n const expect = [\n { insert: 'Attack ships ' },\n {\n insert: 'on fire',\n attributes: { bold: true }\n },\n { insert: ' off the shoulder of Orion.' }\n ]\n t.compare(text.toDelta(), expect)\n t.compare(text2.toDelta(), expect)\n}\n\n/**\n * Undo text formatting delete should not corrupt peer state.\n *\n * @see https://github.com/yjs/yjs/issues/392\n * @param {t.TestCase} _tc\n */\nexport const testBehaviorOfIgnoreremotemapchangesProperty = _tc => {\n const doc = new Y.Doc()\n const doc2 = new Y.Doc()\n doc.on('update', update => Y.applyUpdate(doc2, update, doc))\n doc2.on('update', update => Y.applyUpdate(doc, update, doc2))\n const map1 = doc.getMap()\n const map2 = doc2.getMap()\n const um1 = new Y.UndoManager(map1, { ignoreRemoteMapChanges: true })\n map1.set('x', 1)\n map2.set('x', 2)\n map1.set('x', 3)\n map2.set('x', 4)\n um1.undo()\n t.assert(map1.get('x') === 2)\n t.assert(map2.get('x') === 2)\n}\n\n/**\n * Special deletion case.\n *\n * @see https://github.com/yjs/yjs/issues/447\n * @param {t.TestCase} _tc\n */\nexport const testSpecialDeletionCase = _tc => {\n const origin = 'undoable'\n const doc = new Y.Doc()\n const fragment = doc.getXmlFragment()\n const undoManager = new Y.UndoManager(fragment, { trackedOrigins: new Set([origin]) })\n doc.transact(() => {\n const e = new Y.XmlElement('test')\n e.setAttribute('a', '1')\n e.setAttribute('b', '2')\n fragment.insert(0, [e])\n })\n t.compareStrings(fragment.toString(), '<test a=\"1\" b=\"2\"></test>')\n doc.transact(() => {\n // change attribute \"b\" and delete test-node\n const e = fragment.get(0)\n e.setAttribute('b', '3')\n fragment.delete(0)\n }, origin)\n t.compareStrings(fragment.toString(), '')\n undoManager.undo()\n t.compareStrings(fragment.toString(), '<test a=\"1\" b=\"2\"></test>')\n}\n\n/**\n * Deleted entries in a map should be restored on undo.\n *\n * @see https://github.com/yjs/yjs/issues/500\n * @param {t.TestCase} tc\n */\nexport const testUndoDeleteInMap = (tc) => {\n const { map0 } = init(tc, { users: 3 })\n const undoManager = new Y.UndoManager(map0, { captureTimeout: 0 })\n map0.set('a', 'a')\n map0.delete('a')\n map0.set('a', 'b')\n map0.delete('a')\n map0.set('a', 'c')\n map0.delete('a')\n map0.set('a', 'd')\n t.compare(map0.toJSON(), { a: 'd' })\n undoManager.undo()\n t.compare(map0.toJSON(), {})\n undoManager.undo()\n t.compare(map0.toJSON(), { a: 'c' })\n undoManager.undo()\n t.compare(map0.toJSON(), {})\n undoManager.undo()\n t.compare(map0.toJSON(), { a: 'b' })\n undoManager.undo()\n t.compare(map0.toJSON(), {})\n undoManager.undo()\n t.compare(map0.toJSON(), { a: 'a' })\n}\n","\n/**\n * Testing if encoding/decoding compatibility and integration compatiblity is given.\n * We expect that the document always looks the same, even if we upgrade the integration algorithm, or add additional encoding approaches.\n *\n * The v1 documents were generated with Yjs v13.2.0 based on the randomisized tests.\n */\n\nimport * as Y from '../src/index.js'\nimport * as t from 'lib0/testing'\nimport * as buffer from 'lib0/buffer'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testArrayCompatibilityV1 = tc => {\n const oldDoc = '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'\n const oldVal = JSON.parse('[[1,2,3,4],472,472,{\"someprop\":44},472,[1,2,3,4],{\"someprop\":44},[1,2,3,4],[1,2,3,4],[1,2,3,4],{\"someprop\":44},449,448,[1,2,3,4],[1,2,3,4],{\"someprop\":44},452,{\"someprop\":44},[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4],452,[1,2,3,4],497,{\"someprop\":44},497,497,497,{\"someprop\":44},[1,2,3,4],522,522,452,470,{\"someprop\":44},[1,2,3,4],453,{\"someprop\":44},480,480,480,508,508,508,[1,2,3,4],[1,2,3,4],502,492,492,453,{\"someprop\":44},496,496,496,[1,2,3,4],496,493,495,495,495,495,493,[1,2,3,4],493,493,453,{\"someprop\":44},{\"someprop\":44},505,505,517,517,505,[1,2,3,4],{\"someprop\":44},509,{\"someprop\":44},521,521,521,509,477,{\"someprop\":44},{\"someprop\":44},485,485,{\"someprop\":44},515,{\"someprop\":44},451,{\"someprop\":44},[1,2,3,4],516,516,516,516,{\"someprop\":44},499,499,469,469,[1,2,3,4],[1,2,3,4],512,512,512,{\"someprop\":44},454,487,487,487,[1,2,3,4],[1,2,3,4],454,[1,2,3,4],[1,2,3,4],{\"someprop\":44},[1,2,3,4],459,[1,2,3,4],513,459,{\"someprop\":44},[1,2,3,4],482,{\"someprop\":44},[1,2,3,4],[1,2,3,4],459,[1,2,3,4],{\"someprop\":44},[1,2,3,4],484,454,510,510,510,510,468,{\"someprop\":44},468,[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4],467,[1,2,3,4],467,486,486,486,[1,2,3,4],489,451,[1,2,3,4],{\"someprop\":44},[1,2,3,4],[1,2,3,4],{\"someprop\":44},{\"someprop\":44},483,[1,2,3,4],{\"someprop\":44},{\"someprop\":44},{\"someprop\":44},{\"someprop\":44},519,519,519,519,506,506,[1,2,3,4],{\"someprop\":44},464,{\"someprop\":44},481,481,[1,2,3,4],{\"someprop\":44},[1,2,3,4],464,475,475,475,463,{\"someprop\":44},[1,2,3,4],518,[1,2,3,4],[1,2,3,4],463,455,498,498,498,466,471,471,471,501,[1,2,3,4],501,501,476,{\"someprop\":44},466,[1,2,3,4],{\"someprop\":44},503,503,503,466,455,490,474,{\"someprop\":44},457,494,494,{\"someprop\":44},457,479,{\"someprop\":44},[1,2,3,4],500,500,500,{\"someprop\":44},[1,2,3,4],[1,2,3,4],{\"someprop\":44},{\"someprop\":44},{\"someprop\":44},[1,2,3,4],[1,2,3,4],{\"someprop\":44},[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3],491,491,[1,2,3,4],504,504,504,504,465,[1,2,3,4],{\"someprop\":44},460,{\"someprop\":44},488,488,488,[1,2,3,4],[1,2,3,4],{\"someprop\":44},{\"someprop\":44},514,514,514,514,{\"someprop\":44},{\"someprop\":44},{\"someprop\":44},458,[1,2,3,4],[1,2,3,4],462,[1,2,3,4],[1,2,3,4],{\"someprop\":44},462,{\"someprop\":44},[1,2,3,4],{\"someprop\":44},[1,2,3,4],507,{\"someprop\":44},{\"someprop\":44},507,507,{\"someprop\":44},{\"someprop\":44},[1,2,3,4],{\"someprop\":44},461,{\"someprop\":44},473,461,[1,2,3,4],461,511,511,461,{\"someprop\":44},{\"someprop\":44},520,520,520,[1,2,3,4],458]')\n const doc = new Y.Doc()\n Y.applyUpdate(doc, buffer.fromBase64(oldDoc))\n t.compare(doc.getArray('array').toJSON(), oldVal)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testMapDecodingCompatibilityV1 = tc => {\n const oldDoc = 'BVcEAKEBAAGhAwEBAAShBAABAAGhBAECoQEKAgAEoQQLAQAEoQMcAaEEFQGhAiECAAShAS4BoQQYAaEEHgGhBB8BoQQdAQABoQQhAaEEIAGhBCMBAAGhBCUCoQQkAqEEKAEABKEEKgGhBCsBoQQwAQABoQQxAaEEMgGhBDQBAAGhBDYBoQQ1AQAEoQQ5AQABoQQ4AQAEoQM6AQAEoQRFAaEESgEAAaEESwEABKEETQGhBEABoQRSAgABoQRTAgAEoQRVAgABoQReAaEEWAEABKEEYAEAAaEEZgKhBGECAAShBGsBAAGhAaUBAgAEoQRwAgABoQRzAQAEoQR5AQABoQSAAQEABKEEggEBAAGhBIcBAwABoQGzAQEAAaEEjQECpwHMAQAIAASRAQR9AX0CfQN9BGcDACEBA21hcAN0d28BoQMAAQAEoQMBAQABoQMGAQAEIQEDbWFwA29uZQOhBAEBAAShAw8CoQMQAaEDFgEAAaEDFwEAAaEDGAGhAxwBAAGhAx0BoQIaBAAEoQMjAgABoQMpAQABoQMfAQABoQMrAQABoQMvAaEDLQEAAaEDMQIABKEDNQGhAzIBoQM6AaEDPAGhBCMBAAGhAU8BAAGhA0ADoQJCAQABoQNEAgABoQNFAgAEoQJEAQABoQNLAaEEQAEABKEESgEAAaEDWAGhA1MBAAGhA1oBAAGhA10DoQNbAQABoQNhAwABoQNiAQAEoQNmAaEDaAWhA20BAAShA3IBAAGhA3MBAAShA3gBoQN6A6EDfwEAAaEDgwEBAAShA4UBAgABoQOLAQGhA4IBAaEDjQEBoQOOAQEAAaEDjwEBAAShA5ABAaEDkgEBoQOXAQEABKEDmQEBAAGhA5gBAQABoQOgAQEAAaEDngEBaQIAIQEDbWFwA3R3bwGhAwABoQEAAQABoQIBAQAEoQIEAaEDAQKhAQwDAAShAg4BAAShAhMBoQQJBAABoQQVAQABoQIeAaECHAGhBBgBAAShAiICAAShBB4BAAShBB8BAAGhAzwBAAGhBCMCoQM9AqEDPgEAAaECOQEABKECPAGhAkEBAAGhAjoBAAGhAkIBAAShAkQBAAShAksBAAGhA0UCAAShAlMCoQJQAQAEoQJZAaECWgEAAaECYAKhAl8BAAShAmMCAAGhAmoBoQJkAgAEoQRSAQABoQJzAQAEoQRTAQAEoQJ6AQAEoQJ1AQABoQKEAQEABKEChgEBoQJ/AgABoQKLAQEABKECjwECAAGhApUBAQABoQKXAQGhAo0BAQABoQKaAQGhApkBAQABoQKcAQEAAaECnwEBAAShAqEBAaECnQEBAAShAqYBAaECpwEBAAGhAqwBAQABoQKtAQEABKECrwECAAF5AQAhAQNtYXADb25lASEBA21hcAN0d28CAAGhAQABoQMAAaEBBAEAAaEBBQGhAQYBoQMPAaEEAQGhAQoBoQELAaEBDAEABKEBDgEAAaEBDQEABKEBFQEABKEDHAKhBBUBAAShASECAAShAScBoQQWAwAEoQIhAgABoQEvAaECIgEABKEBOAEAAaEBNwEAAaEBPwGhAzoBAAShAUIBoQQjAQABoQFIAQABoQFKAaEDPgEAAaECOgEAAaEBTwIAAaEBUgEAAaECQQGhAVQCoQFWAgABoQFYAQAEoQFcAqEBWgEAAaEBYgShAWMBAAGhAWgBAAGhAWkCAAGhAW4BAAGhAWsBAAShAXABAAShAXcCAAShAX0BAAShAYIBAaEBcgEAAaEBhwEBoQGIAQEABKEBigEBAAShAZABAQAEoQGLAQIABKEBlQEBAAShBGkEAAGhAagBAQAEoQRzAQABoQGvAQKhBHsBAAGhAbMBAgAEoQSAAQEAAaEBuwECAAGhAbYBAqEEiwEBAAShAcIBAQAEoQHHAQEABKEEkAEBpwHRAQEoAAHSAQdkZWVwa2V5AXcJZGVlcHZhbHVloQHMAQFiAAAhAQNtYXADb25lAwABoQACASEBA21hcAN0d28CAAShAAQBoQAGAaEACwEAAaEADQIABKEADAEABKEAEAEABKEAGgEABKEAHwEABKEAFQGhACQBAAGhACoBoQApAaEALAGhAC0BoQAuAaEALwEAAaEAMAIAAaEANAEABKEAMQEABKEANgEAAaEAQAIAAaEAOwGhAEMCAAShAEcBAAShAEwBoQBFAQAEoQBRAQAEoQBXAqEAUgEABKEAXgIAAaEAZAKhAF0BoQBnAqEAaAEABKEAawGhAGoCoQBwAQABoQBzAQAEoQB1AQABoQB6AaEAcgGhAHwBAAShAH4BoQB9AgABoQCFAQEABKEAhwEBAAShAIwBAaEAgwEBAAShAJIBAQAEoQCXAQIABKEAkQEBAAGhAJ0BAQAEoQCiAQEABKEApAECAAGhAK8BAqEAqQEBAAGhALMBAQABBQABALcBAQIA0gHUAQEEAQCRAQMBAKUBAgEAuQE='\n // eslint-disable-next-line\n const oldVal = /** @type {any} */ ({\"one\":[1,2,3,4],\"two\":{\"deepkey\":\"deepvalue\"}})\n const doc = new Y.Doc()\n Y.applyUpdate(doc, buffer.fromBase64(oldDoc))\n t.compare(doc.getMap('map').toJSON(), oldVal)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testTextDecodingCompatibilityV1 = tc => {\n const oldDoc = 'BS8EAAUBBHRleHRveyJpbWFnZSI6Imh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzU1NTM3NTcvNDg5NzUzMDctNjFlZmIxMDAtZjA2ZC0xMWU4LTkxNzctZWU4OTVlNTkxNmU1LnBuZyJ9RAQAATHBBAEEAAHBBAIEAAHEBAMEAAQxdXUKxQQCBANveyJpbWFnZSI6Imh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzU1NTM3NTcvNDg5NzUzMDctNjFlZmIxMDAtZjA2ZC0xMWU4LTkxNzctZWU4OTVlNTkxNmU1LnBuZyJ9xQMJBAFveyJpbWFnZSI6Imh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzU1NTM3NTcvNDg5NzUzMDctNjFlZmIxMDAtZjA2ZC0xMWU4LTkxNzctZWU4OTVlNTkxNmU1LnBuZyJ9xQMJBAlveyJpbWFnZSI6Imh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzU1NTM3NTcvNDg5NzUzMDctNjFlZmIxMDAtZjA2ZC0xMWU4LTkxNzctZWU4OTVlNTkxNmU1LnBuZyJ9xgMBAwIGaXRhbGljBHRydWXGBAsDAgVjb2xvcgYiIzg4OCLEBAwDAgExxAQNAwIBMsEEDgMCAsYEEAMCBml0YWxpYwRudWxsxgQRAwIFY29sb3IEbnVsbMQDAQQLATHEBBMECwIyOcQEFQQLCzl6anpueXdvaHB4xAQgBAsIY25icmNhcQrBAxADEQHGAR8BIARib2xkBHRydWXGAgACAQRib2xkBG51bGzFAwkECm97ImltYWdlIjoiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNTU1Mzc1Ny80ODk3NTMwNy02MWVmYjEwMC1mMDZkLTExZTgtOTE3Ny1lZTg5NWU1OTE2ZTUucG5nIn3GARABEQZpdGFsaWMEdHJ1ZcYELQERBWNvbG9yBiIjODg4IsYBEgETBml0YWxpYwRudWxsxgQvARMFY29sb3IEbnVsbMYCKwIsBGJvbGQEdHJ1ZcYCLQIuBGJvbGQEbnVsbMYCjAECjQEGaXRhbGlj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xgKbAQQOBml0YWxpYwR0cnVlxgKcAQQOBWNvbG9yBiIjODg4IsECaAI7AcQCCgEBFjEzMThqd3NramFiZG5kcmRsbWphZQrGA1UDVgRib2xkBHRydWXGA1cDWARib2xkBG51bGzGAEAAQQZpdGFsaWMEdHJ1ZcYCtwEAQQRib2xkBG51bGzEArgBAEESMTMyNnJwY3pucWFob3BjcnRkxgLKAQBBBml0YWxpYwRudWxsxgLLAQBBBGJvbGQEdHJ1ZRkBAMUCAgIDb3siaW1hZ2UiOiJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS81NTUzNzU3LzQ4OTc1MzA3LTYxZWZiMTAwLWYwNmQtMTFlOC05MTc3LWVlODk1ZTU5MTZlNS5wbmcifcQCCgILBzEyOTN0agrGABgAGQRib2xkBHRydWXGAA0ADgRib2xkBG51bGxEAgAHMTMwNnJ1cMQBEAIAAnVqxAESAgANaWtrY2pucmNwc2Nrd8QBHwIAAQrFBBMEFG97ImltYWdlIjoiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNTU1Mzc1Ny80ODk3NTMwNy02MWVmYjEwMC1mMDZkLTExZTgtOTE3Ny1lZTg5NWU1OTE2ZTUucG5nIn3FAx0DBW97ImltYWdlIjoiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNTU1Mzc1Ny80ODk3NTMwNy02MWVmYjEwMC1mMDZkLTExZTgtOTE3Ny1lZTg5NWU1OTE2ZTUucG5nIn3GAlICUwRib2xkBHRydWXGAlQCVQRib2xkBG51bGzGAnsCfAZpdGFsaWMEdHJ1ZcYBJQJ8BWNvbG9yBiIjODg4IsYBJgJ8BGJvbGQEbnVsbMQBJwJ8CjEzMTRweWNhdnXGATECfAZpdGFsaWMEbnVsbMYBMgJ8BWNvbG9yBG51bGzBATMCfAHFADEAMm97ImltYWdlIjoiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNTU1Mzc1Ny80ODk3NTMwNy02MWVmYjEwMC1mMDZkLTExZTgtOTE3Ny1lZTg5NWU1OTE2ZTUucG5nIn3GADUANgZpdGFsaWMEdHJ1ZcEANwA4AcQAMgAzEzEzMjJybmJhb2tvcml4ZW52cArEAgUCBhcxMzIzbnVjdnhzcWx6bndsZmF2bXBjCsYDDwMQBGJvbGQEdHJ1ZR0AAMQEAwQEDTEyOTVxZnJ2bHlmYXDEAAwEBAFjxAANBAQCanbBAAwADQHEABAADQEywQARAA0ExAAVAA0DZHZmxAAYAA0BYcYCAwIEBml0YWxpYwR0cnVlwQAaAgQCxAAcAgQEMDRrdcYAIAIEBml0YWxpYwRudWxsxQQgBCFveyJpbWFnZSI6Imh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzU1NTM3NTcvNDg5NzUzMDctNjFlZmIxMDAtZjA2ZC0xMWU4LTkxNzctZWU4OTVlNTkxNmU1LnBuZyJ9xQJAABZveyJpbWFnZSI6Imh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzU1NTM3NTcvNDg5NzUzMDctNjFlZmIxMDAtZjA2ZC0xMWU4LTkxNzctZWU4OTVlNTkxNmU1LnBuZyJ9xAQVBBYGMTMxMWtrxAIqAisIMTMxMnFyd3TEADECKwFixAAyAisDcnhxxAA1AisBasQANgIrAXjEADcCKwZkb3ZhbwrEAgAEKwMxMzHEAEAEKwkzYXhoa3RoaHXGAnoCewRib2xkBG51bGzFAEoCe297ImltYWdlIjoiaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vNTU1Mzc1Ny80ODk3NTMwNy02MWVmYjEwMC1mMDZkLTExZTgtOTE3Ny1lZTg5NWU1OTE2ZTUucG5nIn3GAEsCewRib2xkBHRydWXEAl8CYBExMzE3cGZjeWhrc3JrcGt0CsQBHwQqCzEzMTliY2Nna3AKxAKSAQKTARUxMzIwY29oYnZjcmtycGpuZ2RvYwoFBAQCAg8CKQE1AQADEAESBBsCAwsGAhIBHgJAAk8CWwJfAmQDcQJ5AaABAQIOBAILAg4CIQIoAjcCPAJEAlgCagJwAXwClwEEngEBAQI0ATcB'\n // eslint-disable-next-line\n const oldVal = [{\"insert\":\"1306rup\"},{\"insert\":\"uj\",\"attributes\":{\"italic\":true,\"color\":\"#888\"}},{\"insert\":\"ikkcjnrcpsckw1319bccgkp\\n\"},{\"insert\":\"\\n1131\",\"attributes\":{\"bold\":true}},{\"insert\":\"1326rpcznqahopcrtd\",\"attributes\":{\"italic\":true}},{\"insert\":\"3axhkthhu\",\"attributes\":{\"bold\":true}},{\"insert\":\"28\"},{\"insert\":{\"image\":\"https://user-images.githubusercontent.com/5553757/48975307-61efb100-f06d-11e8-9177-ee895e5916e5.png\"}},{\"insert\":\"9\"},{\"insert\":\"04ku\",\"attributes\":{\"italic\":true}},{\"insert\":\"1323nucvxsqlznwlfavmpc\\nu\"},{\"insert\":\"tc\",\"attributes\":{\"italic\":true}},{\"insert\":\"je1318jwskjabdndrdlmjae\\n1293tj\\nj1292qrmf\"},{\"insert\":{\"image\":\"https://user-images.githubusercontent.com/5553757/48975307-61efb100-f06d-11e8-9177-ee895e5916e5.png\"}},{\"insert\":\"k\\nuf\"},{\"insert\":\"14hs\",\"attributes\":{\"italic\":true}},{\"insert\":\"13dccxdyxg\"},{\"insert\":\"zc\",\"attributes\":{\"italic\":true,\"color\":\"#888\"}},{\"insert\":\"apo\"},{\"insert\":\"tn\",\"attributes\":{\"bold\":true}},{\"insert\":\"r\"},{\"insert\":{\"image\":\"https://user-images.githubusercontent.com/5553757/48975307-61efb100-f06d-11e8-9177-ee895e5916e5.png\"}},{\"insert\":\"gn\\n\"},{\"insert\":\"z\",\"attributes\":{\"italic\":true}},{\"insert\":\"\\n121\"},{\"insert\":{\"image\":\"https://user-images.githubusercontent.com/5553757/48975307-61efb100-f06d-11e8-9177-ee895e5916e5.png\"}},{\"insert\":\"291311kk9zjznywohpx\"},{\"insert\":{\"image\":\"https://user-images.githubusercontent.com/5553757/48975307-61efb100-f06d-11e8-9177-ee895e5916e5.png\"}},{\"insert\":\"cnbrcaq\\n\"},{\"insert\":\"1\",\"attributes\":{\"italic\":true,\"color\":\"#888\"}},{\"insert\":\"1310g\"},{\"insert\":\"ws\",\"attributes\":{\"italic\":true,\"color\":\"#888\"}},{\"insert\":\"hxwych\"},{\"insert\":\"kq\",\"attributes\":{\"italic\":true}},{\"insert\":\"sdru1320cohbvcrkrpjngdoc\\njqic\\n\"},{\"insert\":\"2\",\"attributes\":{\"italic\":true,\"color\":\"#888\"}},{\"insert\":{\"image\":\"https://user-images.githubusercontent.com/5553757/48975307-61efb100-f06d-11e8-9177-ee895e5916e5.png\"}},{\"insert\":\"90n1297zm\"},{\"insert\":\"v1309zlgvjx\",\"attributes\":{\"bold\":true}},{\"insert\":{\"image\":\"https://user-images.githubusercontent.com/5553757/48975307-61efb100-f06d-11e8-9177-ee895e5916e5.png\"}},{\"insert\":\"g\",\"attributes\":{\"bold\":true}},{\"insert\":\"1314pycavu\",\"attributes\":{\"italic\":true,\"color\":\"#888\"}},{\"insert\":\"pkzqcj\"},{\"insert\":\"sa\",\"attributes\":{\"italic\":true,\"color\":\"#888\"}},{\"insert\":\"sjy\\n\"},{\"insert\":{\"image\":\"https://user-images.githubusercontent.com/5553757/48975307-61efb100-f06d-11e8-9177-ee895e5916e5.png\"}},{\"insert\":\"xr\\n\"},{\"insert\":{\"image\":\"https://user-images.githubusercontent.com/5553757/48975307-61efb100-f06d-11e8-9177-ee895e5916e5.png\"}},{\"insert\":{\"image\":\"https://user-images.githubusercontent.com/5553757/48975307-61efb100-f06d-11e8-9177-ee895e5916e5.png\"}},{\"insert\":{\"image\":\"https://user-images.githubusercontent.com/5553757/48975307-61efb100-f06d-11e8-9177-ee895e5916e5.png\"}},{\"insert\":\"1\"},{\"insert\":{\"image\":\"https://user-images.githubusercontent.com/5553757/48975307-61efb100-f06d-11e8-9177-ee895e5916e5.png\"}},{\"insert\":\"1295qfrvlyfap201312qrwt\"},{\"insert\":{\"image\":\"https://user-images.githubusercontent.com/5553757/48975307-61efb100-f06d-11e8-9177-ee895e5916e5.png\"}},{\"insert\":\"b1322rnbaokorixenvp\\nrxq\"},{\"insert\":\"j\",\"attributes\":{\"italic\":true}},{\"insert\":\"x\",\"attributes\":{\"italic\":true,\"color\":\"#888\"}},{\"insert\":\"15mziwabzkrrmscvdovao\\n0\",\"attributes\":{\"italic\":true}},{\"insert\":\"hx\",\"attributes\":{\"italic\":true,\"bold\":true}},{\"insert\":\"ojeetrjhxkr13031317pfcyhksrkpkt\\nuhv1\",\"attributes\":{\"italic\":true}},{\"insert\":\"32\",\"attributes\":{\"italic\":true,\"color\":\"#888\"}},{\"insert\":\"4rorywthq1325iodbzizxhmlibvpyrxmq\\n\\nganln\\nqne\\n\"},{\"insert\":{\"image\":\"https://user-images.githubusercontent.com/5553757/48975307-61efb100-f06d-11e8-9177-ee895e5916e5.png\"}},{\"insert\":\"dvf\"},{\"insert\":\"ac\",\"attributes\":{\"bold\":true}},{\"insert\":\"1302xciwa\"},{\"insert\":\"1305rl\",\"attributes\":{\"bold\":true}},{\"insert\":\"08\\n\"},{\"insert\":\"eyk\",\"attributes\":{\"bold\":true}},{\"insert\":\"y1321apgivydqsjfsehhezukiqtt1307tvjiejlh\"},{\"insert\":\"1316zlpkmctoqomgfthbpg\",\"attributes\":{\"bold\":true}},{\"insert\":\"gv\"},{\"insert\":\"lb\",\"attributes\":{\"bold\":true}},{\"insert\":\"f\\nhntk\\njv1uu\\n\"},{\"insert\":{\"image\":\"https://user-images.githubusercontent.com/5553757/48975307-61efb100-f06d-11e8-9177-ee895e5916e5.png\"}}]\n const doc = new Y.Doc()\n Y.applyUpdate(doc, buffer.fromBase64(oldDoc))\n t.compare(doc.getText('text').toDelta(), oldVal)\n}\n","\nimport * as Y from '../src/index.js'\nimport * as t from 'lib0/testing'\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testAfterTransactionRecursion = _tc => {\n const ydoc = new Y.Doc()\n const yxml = ydoc.getXmlFragment('')\n ydoc.on('afterTransaction', tr => {\n if (tr.origin === 'test') {\n yxml.toJSON()\n }\n })\n ydoc.transact(_tr => {\n for (let i = 0; i < 15000; i++) {\n yxml.push([new Y.XmlText('a')])\n }\n }, 'test')\n}\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testOriginInTransaction = _tc => {\n const doc = new Y.Doc()\n const ytext = doc.getText()\n /**\n * @type {Array<string>}\n */\n const origins = []\n doc.on('afterTransaction', (tr) => {\n origins.push(tr.origin)\n if (origins.length <= 1) {\n ytext.toDelta(Y.snapshot(doc)) // adding a snapshot forces toDelta to create a cleanup transaction\n doc.transact(() => {\n ytext.insert(0, 'a')\n }, 'nested')\n }\n })\n doc.transact(() => {\n ytext.insert(0, '0')\n }, 'first')\n t.compareArrays(origins, ['first', 'cleanup', 'nested'])\n}\n\n/**\n * Client id should be changed when an instance receives updates from another client using the same client id.\n *\n * @param {t.TestCase} _tc\n */\nexport const testClientIdDuplicateChange = _tc => {\n const doc1 = new Y.Doc()\n doc1.clientID = 0\n const doc2 = new Y.Doc()\n doc2.clientID = 0\n t.assert(doc2.clientID === doc1.clientID)\n doc1.getArray('a').insert(0, [1, 2])\n Y.applyUpdate(doc2, Y.encodeStateAsUpdate(doc1))\n t.assert(doc2.clientID !== doc1.clientID)\n}\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testGetTypeEmptyId = _tc => {\n const doc1 = new Y.Doc()\n doc1.getText('').insert(0, 'h')\n doc1.getText().insert(1, 'i')\n const doc2 = new Y.Doc()\n Y.applyUpdate(doc2, Y.encodeStateAsUpdate(doc1))\n t.assert(doc2.getText().toString() === 'hi')\n t.assert(doc2.getText('').toString() === 'hi')\n}\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testToJSON = _tc => {\n const doc = new Y.Doc()\n t.compare(doc.toJSON(), {}, 'doc.toJSON yields empty object')\n\n const arr = doc.getArray('array')\n arr.push(['test1'])\n\n const map = doc.getMap('map')\n map.set('k1', 'v1')\n const map2 = new Y.Map()\n map.set('k2', map2)\n map2.set('m2k1', 'm2v1')\n\n t.compare(doc.toJSON(), {\n array: ['test1'],\n map: {\n k1: 'v1',\n k2: {\n m2k1: 'm2v1'\n }\n }\n }, 'doc.toJSON has array and recursive map')\n}\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testSubdoc = _tc => {\n const doc = new Y.Doc()\n doc.load() // doesn't do anything\n {\n /**\n * @type {Array<any>|null}\n */\n let event = /** @type {any} */ (null)\n doc.on('subdocs', subdocs => {\n event = [Array.from(subdocs.added).map(x => x.guid), Array.from(subdocs.removed).map(x => x.guid), Array.from(subdocs.loaded).map(x => x.guid)]\n })\n const subdocs = doc.getMap('mysubdocs')\n const docA = new Y.Doc({ guid: 'a' })\n docA.load()\n subdocs.set('a', docA)\n t.compare(event, [['a'], [], ['a']])\n\n event = null\n subdocs.get('a').load()\n t.assert(event === null)\n\n event = null\n subdocs.get('a').destroy()\n t.compare(event, [['a'], ['a'], []])\n subdocs.get('a').load()\n t.compare(event, [[], [], ['a']])\n\n subdocs.set('b', new Y.Doc({ guid: 'a', shouldLoad: false }))\n t.compare(event, [['a'], [], []])\n subdocs.get('b').load()\n t.compare(event, [[], [], ['a']])\n\n const docC = new Y.Doc({ guid: 'c' })\n docC.load()\n subdocs.set('c', docC)\n t.compare(event, [['c'], [], ['c']])\n\n t.compare(Array.from(doc.getSubdocGuids()), ['a', 'c'])\n }\n\n const doc2 = new Y.Doc()\n {\n t.compare(Array.from(doc2.getSubdocs()), [])\n /**\n * @type {Array<any>|null}\n */\n let event = /** @type {any} */ (null)\n doc2.on('subdocs', subdocs => {\n event = [Array.from(subdocs.added).map(d => d.guid), Array.from(subdocs.removed).map(d => d.guid), Array.from(subdocs.loaded).map(d => d.guid)]\n })\n Y.applyUpdate(doc2, Y.encodeStateAsUpdate(doc))\n t.compare(event, [['a', 'a', 'c'], [], []])\n\n doc2.getMap('mysubdocs').get('a').load()\n t.compare(event, [[], [], ['a']])\n\n t.compare(Array.from(doc2.getSubdocGuids()), ['a', 'c'])\n\n doc2.getMap('mysubdocs').delete('a')\n t.compare(event, [[], ['a'], []])\n t.compare(Array.from(doc2.getSubdocGuids()), ['a', 'c'])\n }\n}\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testSubdocLoadEdgeCases = _tc => {\n const ydoc = new Y.Doc()\n const yarray = ydoc.getArray()\n const subdoc1 = new Y.Doc()\n /**\n * @type {any}\n */\n let lastEvent = null\n ydoc.on('subdocs', event => {\n lastEvent = event\n })\n yarray.insert(0, [subdoc1])\n t.assert(subdoc1.shouldLoad)\n t.assert(subdoc1.autoLoad === false)\n t.assert(lastEvent !== null && lastEvent.loaded.has(subdoc1))\n t.assert(lastEvent !== null && lastEvent.added.has(subdoc1))\n // destroy and check whether lastEvent adds it again to added (it shouldn't)\n subdoc1.destroy()\n const subdoc2 = yarray.get(0)\n t.assert(subdoc1 !== subdoc2)\n t.assert(lastEvent !== null && lastEvent.added.has(subdoc2))\n t.assert(lastEvent !== null && !lastEvent.loaded.has(subdoc2))\n // load\n subdoc2.load()\n t.assert(lastEvent !== null && !lastEvent.added.has(subdoc2))\n t.assert(lastEvent !== null && lastEvent.loaded.has(subdoc2))\n // apply from remote\n const ydoc2 = new Y.Doc()\n ydoc2.on('subdocs', event => {\n lastEvent = event\n })\n Y.applyUpdate(ydoc2, Y.encodeStateAsUpdate(ydoc))\n const subdoc3 = ydoc2.getArray().get(0)\n t.assert(subdoc3.shouldLoad === false)\n t.assert(subdoc3.autoLoad === false)\n t.assert(lastEvent !== null && lastEvent.added.has(subdoc3))\n t.assert(lastEvent !== null && !lastEvent.loaded.has(subdoc3))\n // load\n subdoc3.load()\n t.assert(subdoc3.shouldLoad)\n t.assert(lastEvent !== null && !lastEvent.added.has(subdoc3))\n t.assert(lastEvent !== null && lastEvent.loaded.has(subdoc3))\n}\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testSubdocLoadEdgeCasesAutoload = _tc => {\n const ydoc = new Y.Doc()\n const yarray = ydoc.getArray()\n const subdoc1 = new Y.Doc({ autoLoad: true })\n /**\n * @type {any}\n */\n let lastEvent = null\n ydoc.on('subdocs', event => {\n lastEvent = event\n })\n yarray.insert(0, [subdoc1])\n t.assert(subdoc1.shouldLoad)\n t.assert(subdoc1.autoLoad)\n t.assert(lastEvent !== null && lastEvent.loaded.has(subdoc1))\n t.assert(lastEvent !== null && lastEvent.added.has(subdoc1))\n // destroy and check whether lastEvent adds it again to added (it shouldn't)\n subdoc1.destroy()\n const subdoc2 = yarray.get(0)\n t.assert(subdoc1 !== subdoc2)\n t.assert(lastEvent !== null && lastEvent.added.has(subdoc2))\n t.assert(lastEvent !== null && !lastEvent.loaded.has(subdoc2))\n // load\n subdoc2.load()\n t.assert(lastEvent !== null && !lastEvent.added.has(subdoc2))\n t.assert(lastEvent !== null && lastEvent.loaded.has(subdoc2))\n // apply from remote\n const ydoc2 = new Y.Doc()\n ydoc2.on('subdocs', event => {\n lastEvent = event\n })\n Y.applyUpdate(ydoc2, Y.encodeStateAsUpdate(ydoc))\n const subdoc3 = ydoc2.getArray().get(0)\n t.assert(subdoc1.shouldLoad)\n t.assert(subdoc1.autoLoad)\n t.assert(lastEvent !== null && lastEvent.added.has(subdoc3))\n t.assert(lastEvent !== null && lastEvent.loaded.has(subdoc3))\n}\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testSubdocsUndo = _tc => {\n const ydoc = new Y.Doc()\n const elems = ydoc.getXmlFragment()\n const undoManager = new Y.UndoManager(elems)\n const subdoc = new Y.Doc()\n // @ts-ignore\n elems.insert(0, [subdoc])\n undoManager.undo()\n undoManager.redo()\n t.assert(elems.length === 1)\n}\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testLoadDocsEvent = async _tc => {\n const ydoc = new Y.Doc()\n t.assert(ydoc.isLoaded === false)\n let loadedEvent = false\n ydoc.on('load', () => {\n loadedEvent = true\n })\n ydoc.emit('load', [ydoc])\n await ydoc.whenLoaded\n t.assert(loadedEvent)\n t.assert(ydoc.isLoaded)\n}\n\n/**\n * @param {t.TestCase} _tc\n */\nexport const testSyncDocsEvent = async _tc => {\n const ydoc = new Y.Doc()\n t.assert(ydoc.isLoaded === false)\n t.assert(ydoc.isSynced === false)\n let loadedEvent = false\n ydoc.once('load', () => {\n loadedEvent = true\n })\n let syncedEvent = false\n ydoc.once('sync', /** @param {any} isSynced */ (isSynced) => {\n syncedEvent = true\n t.assert(isSynced)\n })\n ydoc.emit('sync', [true, ydoc])\n await ydoc.whenLoaded\n const oldWhenSynced = ydoc.whenSynced\n await ydoc.whenSynced\n t.assert(loadedEvent)\n t.assert(syncedEvent)\n t.assert(ydoc.isLoaded)\n t.assert(ydoc.isSynced)\n let loadedEvent2 = false\n ydoc.on('load', () => {\n loadedEvent2 = true\n })\n let syncedEvent2 = false\n ydoc.on('sync', (isSynced) => {\n syncedEvent2 = true\n t.assert(isSynced === false)\n })\n ydoc.emit('sync', [false, ydoc])\n t.assert(!loadedEvent2)\n t.assert(syncedEvent2)\n t.assert(ydoc.isLoaded)\n t.assert(!ydoc.isSynced)\n t.assert(ydoc.whenSynced !== oldWhenSynced)\n}\n","import * as Y from '../src/index.js'\nimport * as t from 'lib0/testing'\nimport { init } from './testHelper.js'\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testBasic = tc => {\n const ydoc = new Y.Doc({ gc: false })\n ydoc.getText().insert(0, 'world!')\n const snapshot = Y.snapshot(ydoc)\n ydoc.getText().insert(0, 'hello ')\n const restored = Y.createDocFromSnapshot(ydoc, snapshot)\n t.assert(restored.getText().toString() === 'world!')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testBasicRestoreSnapshot = tc => {\n const doc = new Y.Doc({ gc: false })\n doc.getArray('array').insert(0, ['hello'])\n const snap = Y.snapshot(doc)\n doc.getArray('array').insert(1, ['world'])\n\n const docRestored = Y.createDocFromSnapshot(doc, snap)\n\n t.compare(docRestored.getArray('array').toArray(), ['hello'])\n t.compare(doc.getArray('array').toArray(), ['hello', 'world'])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testEmptyRestoreSnapshot = tc => {\n const doc = new Y.Doc({ gc: false })\n const snap = Y.snapshot(doc)\n snap.sv.set(9999, 0)\n doc.getArray().insert(0, ['world'])\n\n const docRestored = Y.createDocFromSnapshot(doc, snap)\n\n t.compare(docRestored.getArray().toArray(), [])\n t.compare(doc.getArray().toArray(), ['world'])\n\n // now this snapshot reflects the latest state. It shoult still work.\n const snap2 = Y.snapshot(doc)\n const docRestored2 = Y.createDocFromSnapshot(doc, snap2)\n t.compare(docRestored2.getArray().toArray(), ['world'])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRestoreSnapshotWithSubType = tc => {\n const doc = new Y.Doc({ gc: false })\n doc.getArray('array').insert(0, [new Y.Map()])\n const subMap = doc.getArray('array').get(0)\n subMap.set('key1', 'value1')\n\n const snap = Y.snapshot(doc)\n subMap.set('key2', 'value2')\n\n const docRestored = Y.createDocFromSnapshot(doc, snap)\n\n t.compare(docRestored.getArray('array').toJSON(), [{\n key1: 'value1'\n }])\n t.compare(doc.getArray('array').toJSON(), [{\n key1: 'value1',\n key2: 'value2'\n }])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRestoreDeletedItem1 = tc => {\n const doc = new Y.Doc({ gc: false })\n doc.getArray('array').insert(0, ['item1', 'item2'])\n\n const snap = Y.snapshot(doc)\n doc.getArray('array').delete(0)\n\n const docRestored = Y.createDocFromSnapshot(doc, snap)\n\n t.compare(docRestored.getArray('array').toArray(), ['item1', 'item2'])\n t.compare(doc.getArray('array').toArray(), ['item2'])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRestoreLeftItem = tc => {\n const doc = new Y.Doc({ gc: false })\n doc.getArray('array').insert(0, ['item1'])\n doc.getMap('map').set('test', 1)\n doc.getArray('array').insert(0, ['item0'])\n\n const snap = Y.snapshot(doc)\n doc.getArray('array').delete(1)\n\n const docRestored = Y.createDocFromSnapshot(doc, snap)\n\n t.compare(docRestored.getArray('array').toArray(), ['item0', 'item1'])\n t.compare(doc.getArray('array').toArray(), ['item0'])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testDeletedItemsBase = tc => {\n const doc = new Y.Doc({ gc: false })\n doc.getArray('array').insert(0, ['item1'])\n doc.getArray('array').delete(0)\n const snap = Y.snapshot(doc)\n doc.getArray('array').insert(0, ['item0'])\n\n const docRestored = Y.createDocFromSnapshot(doc, snap)\n\n t.compare(docRestored.getArray('array').toArray(), [])\n t.compare(doc.getArray('array').toArray(), ['item0'])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testDeletedItems2 = tc => {\n const doc = new Y.Doc({ gc: false })\n doc.getArray('array').insert(0, ['item1', 'item2', 'item3'])\n doc.getArray('array').delete(1)\n const snap = Y.snapshot(doc)\n doc.getArray('array').insert(0, ['item0'])\n\n const docRestored = Y.createDocFromSnapshot(doc, snap)\n\n t.compare(docRestored.getArray('array').toArray(), ['item1', 'item3'])\n t.compare(doc.getArray('array').toArray(), ['item0', 'item1', 'item3'])\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testDependentChanges = tc => {\n const { array0, array1, testConnector } = init(tc, { users: 2 })\n\n if (!array0.doc) {\n throw new Error('no document 0')\n }\n if (!array1.doc) {\n throw new Error('no document 1')\n }\n\n /**\n * @type {Y.Doc}\n */\n const doc0 = array0.doc\n /**\n * @type {Y.Doc}\n */\n const doc1 = array1.doc\n\n doc0.gc = false\n doc1.gc = false\n\n array0.insert(0, ['user1item1'])\n testConnector.syncAll()\n array1.insert(1, ['user2item1'])\n testConnector.syncAll()\n\n const snap = Y.snapshot(array0.doc)\n\n array0.insert(2, ['user1item2'])\n testConnector.syncAll()\n array1.insert(3, ['user2item2'])\n testConnector.syncAll()\n\n const docRestored0 = Y.createDocFromSnapshot(array0.doc, snap)\n t.compare(docRestored0.getArray('array').toArray(), ['user1item1', 'user2item1'])\n\n const docRestored1 = Y.createDocFromSnapshot(array1.doc, snap)\n t.compare(docRestored1.getArray('array').toArray(), ['user1item1', 'user2item1'])\n}\n","import * as t from 'lib0/testing'\nimport { init, compare } from './testHelper.js' // eslint-disable-line\nimport * as Y from '../src/index.js'\nimport { readClientsStructRefs, readDeleteSet, UpdateDecoderV2, UpdateEncoderV2, writeDeleteSet } from '../src/internals.js'\nimport * as encoding from 'lib0/encoding'\nimport * as decoding from 'lib0/decoding'\nimport * as object from 'lib0/object'\n\n/**\n * @typedef {Object} Enc\n * @property {function(Array<Uint8Array>):Uint8Array} Enc.mergeUpdates\n * @property {function(Y.Doc):Uint8Array} Enc.encodeStateAsUpdate\n * @property {function(Y.Doc, Uint8Array):void} Enc.applyUpdate\n * @property {function(Uint8Array):void} Enc.logUpdate\n * @property {function(Uint8Array):{from:Map<number,number>,to:Map<number,number>}} Enc.parseUpdateMeta\n * @property {function(Y.Doc):Uint8Array} Enc.encodeStateVector\n * @property {function(Uint8Array):Uint8Array} Enc.encodeStateVectorFromUpdate\n * @property {string} Enc.updateEventName\n * @property {string} Enc.description\n * @property {function(Uint8Array, Uint8Array):Uint8Array} Enc.diffUpdate\n */\n\n/**\n * @type {Enc}\n */\nconst encV1 = {\n mergeUpdates: Y.mergeUpdates,\n encodeStateAsUpdate: Y.encodeStateAsUpdate,\n applyUpdate: Y.applyUpdate,\n logUpdate: Y.logUpdate,\n parseUpdateMeta: Y.parseUpdateMeta,\n encodeStateVectorFromUpdate: Y.encodeStateVectorFromUpdate,\n encodeStateVector: Y.encodeStateVector,\n updateEventName: 'update',\n description: 'V1',\n diffUpdate: Y.diffUpdate\n}\n\n/**\n * @type {Enc}\n */\nconst encV2 = {\n mergeUpdates: Y.mergeUpdatesV2,\n encodeStateAsUpdate: Y.encodeStateAsUpdateV2,\n applyUpdate: Y.applyUpdateV2,\n logUpdate: Y.logUpdateV2,\n parseUpdateMeta: Y.parseUpdateMetaV2,\n encodeStateVectorFromUpdate: Y.encodeStateVectorFromUpdateV2,\n encodeStateVector: Y.encodeStateVector,\n updateEventName: 'updateV2',\n description: 'V2',\n diffUpdate: Y.diffUpdateV2\n}\n\n/**\n * @type {Enc}\n */\nconst encDoc = {\n mergeUpdates: (updates) => {\n const ydoc = new Y.Doc({ gc: false })\n updates.forEach(update => {\n Y.applyUpdateV2(ydoc, update)\n })\n return Y.encodeStateAsUpdateV2(ydoc)\n },\n encodeStateAsUpdate: Y.encodeStateAsUpdateV2,\n applyUpdate: Y.applyUpdateV2,\n logUpdate: Y.logUpdateV2,\n parseUpdateMeta: Y.parseUpdateMetaV2,\n encodeStateVectorFromUpdate: Y.encodeStateVectorFromUpdateV2,\n encodeStateVector: Y.encodeStateVector,\n updateEventName: 'updateV2',\n description: 'Merge via Y.Doc',\n /**\n * @param {Uint8Array} update\n * @param {Uint8Array} sv\n */\n diffUpdate: (update, sv) => {\n const ydoc = new Y.Doc({ gc: false })\n Y.applyUpdateV2(ydoc, update)\n return Y.encodeStateAsUpdateV2(ydoc, sv)\n }\n}\n\nconst encoders = [encV1, encV2, encDoc]\n\n/**\n * @param {Array<Y.Doc>} users\n * @param {Enc} enc\n */\nconst fromUpdates = (users, enc) => {\n const updates = users.map(user =>\n enc.encodeStateAsUpdate(user)\n )\n const ydoc = new Y.Doc()\n enc.applyUpdate(ydoc, enc.mergeUpdates(updates))\n return ydoc\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testMergeUpdates = tc => {\n const { users, array0, array1 } = init(tc, { users: 3 })\n\n array0.insert(0, [1])\n array1.insert(0, [2])\n\n compare(users)\n encoders.forEach(enc => {\n const merged = fromUpdates(users, enc)\n t.compareArrays(array0.toArray(), merged.getArray('array').toArray())\n })\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testKeyEncoding = tc => {\n const { users, text0, text1 } = init(tc, { users: 2 })\n\n text0.insert(0, 'a', { italic: true })\n text0.insert(0, 'b')\n text0.insert(0, 'c', { italic: true })\n\n const update = Y.encodeStateAsUpdateV2(users[0])\n Y.applyUpdateV2(users[1], update)\n\n t.compare(text1.toDelta(), [{ insert: 'c', attributes: { italic: true } }, { insert: 'b' }, { insert: 'a', attributes: { italic: true } }])\n\n compare(users)\n}\n\n/**\n * @param {Y.Doc} ydoc\n * @param {Array<Uint8Array>} updates - expecting at least 4 updates\n * @param {Enc} enc\n * @param {boolean} hasDeletes\n */\nconst checkUpdateCases = (ydoc, updates, enc, hasDeletes) => {\n const cases = []\n // Case 1: Simple case, simply merge everything\n cases.push(enc.mergeUpdates(updates))\n\n // Case 2: Overlapping updates\n cases.push(enc.mergeUpdates([\n enc.mergeUpdates(updates.slice(2)),\n enc.mergeUpdates(updates.slice(0, 2))\n ]))\n\n // Case 3: Overlapping updates\n cases.push(enc.mergeUpdates([\n enc.mergeUpdates(updates.slice(2)),\n enc.mergeUpdates(updates.slice(1, 3)),\n updates[0]\n ]))\n\n // Case 4: Separated updates (containing skips)\n cases.push(enc.mergeUpdates([\n enc.mergeUpdates([updates[0], updates[2]]),\n enc.mergeUpdates([updates[1], updates[3]]),\n enc.mergeUpdates(updates.slice(4))\n ]))\n\n // Case 5: overlapping with many duplicates\n cases.push(enc.mergeUpdates(cases))\n\n // const targetState = enc.encodeStateAsUpdate(ydoc)\n // t.info('Target State: ')\n // enc.logUpdate(targetState)\n\n cases.forEach((mergedUpdates, i) => {\n // t.info('State Case $' + i + ':')\n // enc.logUpdate(updates)\n const merged = new Y.Doc({ gc: false })\n enc.applyUpdate(merged, mergedUpdates)\n t.compareArrays(merged.getArray().toArray(), ydoc.getArray().toArray())\n t.compare(enc.encodeStateVector(merged), enc.encodeStateVectorFromUpdate(mergedUpdates))\n\n if (enc.updateEventName !== 'update') { // @todo should this also work on legacy updates?\n for (let j = 1; j < updates.length; j++) {\n const partMerged = enc.mergeUpdates(updates.slice(j))\n const partMeta = enc.parseUpdateMeta(partMerged)\n const targetSV = Y.encodeStateVectorFromUpdateV2(Y.mergeUpdatesV2(updates.slice(0, j)))\n const diffed = enc.diffUpdate(mergedUpdates, targetSV)\n const diffedMeta = enc.parseUpdateMeta(diffed)\n t.compare(partMeta, diffedMeta)\n {\n // We can'd do the following\n // - t.compare(diffed, mergedDeletes)\n // because diffed contains the set of all deletes.\n // So we add all deletes from `diffed` to `partDeletes` and compare then\n const decoder = decoding.createDecoder(diffed)\n const updateDecoder = new UpdateDecoderV2(decoder)\n readClientsStructRefs(updateDecoder, new Y.Doc())\n const ds = readDeleteSet(updateDecoder)\n const updateEncoder = new UpdateEncoderV2()\n encoding.writeVarUint(updateEncoder.restEncoder, 0) // 0 structs\n writeDeleteSet(updateEncoder, ds)\n const deletesUpdate = updateEncoder.toUint8Array()\n const mergedDeletes = Y.mergeUpdatesV2([deletesUpdate, partMerged])\n if (!hasDeletes || enc !== encDoc) {\n // deletes will almost definitely lead to different encoders because of the mergeStruct feature that is present in encDoc\n t.compare(diffed, mergedDeletes)\n }\n }\n }\n }\n\n const meta = enc.parseUpdateMeta(mergedUpdates)\n meta.from.forEach((clock, client) => t.assert(clock === 0))\n meta.to.forEach((clock, client) => {\n const structs = /** @type {Array<Y.Item>} */ (merged.store.clients.get(client))\n const lastStruct = structs[structs.length - 1]\n t.assert(lastStruct.id.clock + lastStruct.length === clock)\n })\n })\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testMergeUpdates1 = tc => {\n encoders.forEach((enc, i) => {\n t.info(`Using encoder: ${enc.description}`)\n const ydoc = new Y.Doc({ gc: false })\n const updates = /** @type {Array<Uint8Array>} */ ([])\n ydoc.on(enc.updateEventName, update => { updates.push(update) })\n\n const array = ydoc.getArray()\n array.insert(0, [1])\n array.insert(0, [2])\n array.insert(0, [3])\n array.insert(0, [4])\n\n checkUpdateCases(ydoc, updates, enc, false)\n })\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testMergeUpdates2 = tc => {\n encoders.forEach((enc, i) => {\n t.info(`Using encoder: ${enc.description}`)\n const ydoc = new Y.Doc({ gc: false })\n const updates = /** @type {Array<Uint8Array>} */ ([])\n ydoc.on(enc.updateEventName, update => { updates.push(update) })\n\n const array = ydoc.getArray()\n array.insert(0, [1, 2])\n array.delete(1, 1)\n array.insert(0, [3, 4])\n array.delete(1, 2)\n\n checkUpdateCases(ydoc, updates, enc, true)\n })\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testMergePendingUpdates = tc => {\n const yDoc = new Y.Doc()\n /**\n * @type {Array<Uint8Array>}\n */\n const serverUpdates = []\n yDoc.on('update', (update, origin, c) => {\n serverUpdates.splice(serverUpdates.length, 0, update)\n })\n const yText = yDoc.getText('textBlock')\n yText.applyDelta([{ insert: 'r' }])\n yText.applyDelta([{ insert: 'o' }])\n yText.applyDelta([{ insert: 'n' }])\n yText.applyDelta([{ insert: 'e' }])\n yText.applyDelta([{ insert: 'n' }])\n\n const yDoc1 = new Y.Doc()\n Y.applyUpdate(yDoc1, serverUpdates[0])\n const update1 = Y.encodeStateAsUpdate(yDoc1)\n\n const yDoc2 = new Y.Doc()\n Y.applyUpdate(yDoc2, update1)\n Y.applyUpdate(yDoc2, serverUpdates[1])\n const update2 = Y.encodeStateAsUpdate(yDoc2)\n\n const yDoc3 = new Y.Doc()\n Y.applyUpdate(yDoc3, update2)\n Y.applyUpdate(yDoc3, serverUpdates[3])\n const update3 = Y.encodeStateAsUpdate(yDoc3)\n\n const yDoc4 = new Y.Doc()\n Y.applyUpdate(yDoc4, update3)\n Y.applyUpdate(yDoc4, serverUpdates[2])\n const update4 = Y.encodeStateAsUpdate(yDoc4)\n\n const yDoc5 = new Y.Doc()\n Y.applyUpdate(yDoc5, update4)\n Y.applyUpdate(yDoc5, serverUpdates[4])\n // @ts-ignore\n const update5 = Y.encodeStateAsUpdate(yDoc5) // eslint-disable-line\n\n const yText5 = yDoc5.getText('textBlock')\n t.compareStrings(yText5.toString(), 'nenor')\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testObfuscateUpdates = tc => {\n const ydoc = new Y.Doc()\n const ytext = ydoc.getText('text')\n const ymap = ydoc.getMap('map')\n const yarray = ydoc.getArray('array')\n // test ytext\n ytext.applyDelta([{ insert: 'text', attributes: { bold: true } }, { insert: { href: 'supersecreturl' } }])\n // test ymap\n ymap.set('key', 'secret1')\n ymap.set('key', 'secret2')\n // test yarray with subtype & subdoc\n const subtype = new Y.XmlElement('secretnodename')\n const subdoc = new Y.Doc({ guid: 'secret' })\n subtype.setAttribute('attr', 'val')\n yarray.insert(0, ['teststring', 42, subtype, subdoc])\n // obfuscate the content and put it into a new document\n const obfuscatedUpdate = Y.obfuscateUpdate(Y.encodeStateAsUpdate(ydoc))\n const odoc = new Y.Doc()\n Y.applyUpdate(odoc, obfuscatedUpdate)\n const otext = odoc.getText('text')\n const omap = odoc.getMap('map')\n const oarray = odoc.getArray('array')\n // test ytext\n const delta = otext.toDelta()\n t.assert(delta.length === 2)\n t.assert(delta[0].insert !== 'text' && delta[0].insert.length === 4)\n t.assert(object.length(delta[0].attributes) === 1)\n t.assert(!object.hasProperty(delta[0].attributes, 'bold'))\n t.assert(object.length(delta[1]) === 1)\n t.assert(object.hasProperty(delta[1], 'insert'))\n // test ymap\n t.assert(omap.size === 1)\n t.assert(!omap.has('key'))\n // test yarray with subtype & subdoc\n const result = oarray.toArray()\n t.assert(result.length === 4)\n t.assert(result[0] !== 'teststring')\n t.assert(result[1] !== 42)\n const osubtype = /** @type {Y.XmlElement} */ (result[2])\n const osubdoc = result[3]\n // test subtype\n t.assert(osubtype.nodeName !== subtype.nodeName)\n t.assert(object.length(osubtype.getAttributes()) === 1)\n t.assert(osubtype.getAttribute('attr') === undefined)\n // test subdoc\n t.assert(osubdoc.guid !== subdoc.guid)\n}\n","\nimport * as Y from '../src/index.js'\nimport * as t from 'lib0/testing'\n\n/**\n * @param {Y.Text} ytext\n */\nconst checkRelativePositions = ytext => {\n // test if all positions are encoded and restored correctly\n for (let i = 0; i < ytext.length; i++) {\n // for all types of associations..\n for (let assoc = -1; assoc < 2; assoc++) {\n const rpos = Y.createRelativePositionFromTypeIndex(ytext, i, assoc)\n const encodedRpos = Y.encodeRelativePosition(rpos)\n const decodedRpos = Y.decodeRelativePosition(encodedRpos)\n const absPos = /** @type {Y.AbsolutePosition} */ (Y.createAbsolutePositionFromRelativePosition(decodedRpos, /** @type {Y.Doc} */ (ytext.doc)))\n t.assert(absPos.index === i)\n t.assert(absPos.assoc === assoc)\n }\n }\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRelativePositionCase1 = tc => {\n const ydoc = new Y.Doc()\n const ytext = ydoc.getText()\n ytext.insert(0, '1')\n ytext.insert(0, 'abc')\n ytext.insert(0, 'z')\n ytext.insert(0, 'y')\n ytext.insert(0, 'x')\n checkRelativePositions(ytext)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRelativePositionCase2 = tc => {\n const ydoc = new Y.Doc()\n const ytext = ydoc.getText()\n ytext.insert(0, 'abc')\n checkRelativePositions(ytext)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRelativePositionCase3 = tc => {\n const ydoc = new Y.Doc()\n const ytext = ydoc.getText()\n ytext.insert(0, 'abc')\n ytext.insert(0, '1')\n ytext.insert(0, 'xyz')\n checkRelativePositions(ytext)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRelativePositionCase4 = tc => {\n const ydoc = new Y.Doc()\n const ytext = ydoc.getText()\n ytext.insert(0, '1')\n checkRelativePositions(ytext)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRelativePositionCase5 = tc => {\n const ydoc = new Y.Doc()\n const ytext = ydoc.getText()\n ytext.insert(0, '2')\n ytext.insert(0, '1')\n checkRelativePositions(ytext)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRelativePositionCase6 = tc => {\n const ydoc = new Y.Doc()\n const ytext = ydoc.getText()\n checkRelativePositions(ytext)\n}\n\n/**\n * @param {t.TestCase} tc\n */\nexport const testRelativePositionAssociationDifference = tc => {\n const ydoc = new Y.Doc()\n const ytext = ydoc.getText()\n ytext.insert(0, '2')\n ytext.insert(0, '1')\n const rposRight = Y.createRelativePositionFromTypeIndex(ytext, 1, 0)\n const rposLeft = Y.createRelativePositionFromTypeIndex(ytext, 1, -1)\n ytext.insert(1, 'x')\n const posRight = Y.createAbsolutePositionFromRelativePosition(rposRight, ydoc)\n const posLeft = Y.createAbsolutePositionFromRelativePosition(rposLeft, ydoc)\n t.assert(posRight != null && posRight.index === 2)\n t.assert(posLeft != null && posLeft.index === 1)\n}\n","/* eslint-env node */\n\nimport * as map from './y-map.tests.js'\nimport * as array from './y-array.tests.js'\nimport * as text from './y-text.tests.js'\nimport * as xml from './y-xml.tests.js'\nimport * as encoding from './encoding.tests.js'\nimport * as undoredo from './undo-redo.tests.js'\nimport * as compatibility from './compatibility.tests.js'\nimport * as doc from './doc.tests.js'\nimport * as snapshot from './snapshot.tests.js'\nimport * as updates from './updates.tests.js'\nimport * as relativePositions from './relativePositions.tests.js'\n\nimport { runTests } from 'lib0/testing'\nimport { isBrowser, isNode } from 'lib0/environment'\nimport * as log from 'lib0/logging'\n\nif (isBrowser) {\n log.createVConsole(document.body)\n}\nrunTests({\n doc, map, array, text, xml, encoding, undoredo, compatibility, snapshot, updates, relativePositions\n}).then(success => {\n /* istanbul ignore next */\n if (isNode) {\n process.exit(success ? 0 : 1)\n }\n})\n"],"names":["create","map","array.unfold","forEach","length","id","map.create","string.fromCamelCase","conditions.undefinedToNull","storage.varStorage","f.isOneOf","doc","pair.forEach","text","map.map","math.log10","math.round","math.exp10","metric.prefix","math.floor","symbol.create","common.BOLD","pair.create","common.UNBOLD","common.BLUE","common.GREEN","common.GREY","common.RED","common.PURPLE","common.ORANGE","common.UNCOLOR","dom.mapToStyleString","env.supportsColor","common.computeNoColorLoggingArgs","env.isBrowser","set.create","dom.element","dom.text","json.stringify","eventloop.enqueue","dom.append","dom.addEventListener","uint32","binary.BITS32","buffer.createUint8ArrayViewFromArrayBuffer","math.max","binary.BITS7","binary.BIT8","math.isNegativeZero","binary.BITS6","binary.BIT7","string.utf8TextEncoder","string.encodeUtf8","math.min","number.isInteger","math.abs","binary.BITS31","array.isArray","error.create","number.MAX_SAFE_INTEGER","string.utf8TextDecoder","math.ceil","math.add","env.hasConf","env.hasParam","env.getParam","random.uint32","prng.create","log.GREY","log.PURPLE","log.BLUE","log.groupCollapsed","log.group","performance.now","performance.mark","promise.isPromise","log.printError","performance.measure","log.groupEnd","time.humanizeDuration","array.last","statistics.median","statistics.average","log.print","log.BOLD","log.UNBOLD","log.RED","log.UNCOLOR","log.GREEN","object.length","object.forEach","object.hasProperty","compare","object.map","log.printImgBase64","map.setIfUndefined","array.from","array.appendTo","encoding.writeVarUint","decoding.readVarUint","random.uuidv4","promise.create","decoding.readUint8","decoding.readVarString","decoding.readAny","buffer.copyUint8Array","decoding.readVarUint8Array","decoding.IntDiffOptRleDecoder","decoding.UintOptRleDecoder","decoding.RleDecoder","decoding.StringDecoder","encoding.createEncoder","encoding.toUint8Array","encoding.writeUint8","encoding.writeVarString","encoding.writeAny","encoding.writeVarUint8Array","error.unexpectedCase","encoding.IntDiffOptRleEncoder","encoding.UintOptRleEncoder","encoding.RleEncoder","encoding.StringEncoder","encoding.writeUint8Array","binary.BITS5","binary.BIT6","decoding.createDecoder","readUpdate","f.callAll","encoding.writeVarInt","decoding.hasContent","decoding.readVarInt","snapshot","map.any","tryGc","logging.print","logging.ORANGE","logging.BOLD","logging.UNBOLD","logging.RED","time.getUnixTime","encoding.writeBinaryEncoder","string.repeat","f.id","error.methodUnimplemented","iterator.iteratorFilter","iterator.iteratorMap","object.equalFlat","map.copy","object.isEmpty","object.assign","array.some","binary.BIT2","binary.BIT4","binary.BIT1","binary.BIT3","Y.encodeStateVector","Y.encodeStateAsUpdate","Y.applyUpdate","Y","encV1","Y.mergeUpdates","Y.logUpdate","Y.diffUpdate","encV2","Y.encodeStateAsUpdateV2","Y.mergeUpdatesV2","Y.applyUpdateV2","Y.logUpdateV2","Y.diffUpdateV2","Y.Doc","syncProtocol.writeUpdate","syncProtocol.writeSyncStep1","prng.oneOf","syncProtocol.readSyncMessage","encoding.length","init","prng.bool","Y.XmlElement","t.assert","t.compare","Y.AbstractType","t.fail","Y.createDeleteSetFromStructStore","Y.compareIDs","Y.Item","prng.int32","Y.Map","Y.Array","testChangeEvent","t.fails","prng.utf16String","t.skip","t.production","t.compareArrays","t.describe","Y.snapshot","Y.getTypeChildren","prng.word","prng.uint32","word","Y.createID","Y.ContentString","t.measureTime","t.compareStrings","testFormattingBug","Y.applyRandomTests","Y.cleanupYTextFormatting","Y.XmlText","promise.wait","Y.encodeStateVectorFromUpdate","Y.decodeStateVector","Y.UndoManager","Y.Text","Y.ContentType","Y.transact","buffer.fromBase64","Y.createDocFromSnapshot","Y.parseUpdateMeta","Y.parseUpdateMetaV2","Y.encodeStateVectorFromUpdateV2","t.info","Y.obfuscateUpdate","Y.createRelativePositionFromTypeIndex","Y.encodeRelativePosition","Y.decodeRelativePosition","Y.createAbsolutePositionFromRelativePosition","log.createVConsole"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,54,78]} |