{"version":3,"file":"opusDecoderWorker.js","mappings":"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","sources":["webpack:///./node_modules/denque/index.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/publicPath","webpack:///./node_modules/@actual-chat/codec/codec.js","webpack:///./src/_constants.ts","webpack:///./src/logging-init.ts","webpack:///./src/logging.ts","webpack:///./node_modules/heap-js/dist/heap-js.es5.js","webpack:///./src/timerQueue.ts","webpack:///./src/timeout.ts","webpack:///./src/promises.ts","webpack:///./src/async-processor.ts","webpack:///./src/rpc.ts","webpack:///./src/object-pool.ts","webpack:///./src/resettable.ts","webpack:///../dotnet/UI.Blazor.App/Components/AudioPlayer/workers/opus-decoder.ts","webpack:///./src/versioning.ts","webpack:///../dotnet/UI.Blazor.App/Components/AudioPlayer/workers/opus-decoder-worker.ts"],"sourcesContent":["'use strict';\n\n/**\n * Custom implementation of a double ended queue.\n */\nfunction Denque(array, options) {\n var options = options || {};\n this._capacity = options.capacity;\n\n this._head = 0;\n this._tail = 0;\n\n if (Array.isArray(array)) {\n this._fromArray(array);\n } else {\n this._capacityMask = 0x3;\n this._list = new Array(4);\n }\n}\n\n/**\n * --------------\n * PUBLIC API\n * -------------\n */\n\n/**\n * Returns the item at the specified index from the list.\n * 0 is the first element, 1 is the second, and so on...\n * Elements at negative values are that many from the end: -1 is one before the end\n * (the last element), -2 is two before the end (one before last), etc.\n * @param index\n * @returns {*}\n */\nDenque.prototype.peekAt = function peekAt(index) {\n var i = index;\n // expect a number or return undefined\n if ((i !== (i | 0))) {\n return void 0;\n }\n var len = this.size();\n if (i >= len || i < -len) return undefined;\n if (i < 0) i += len;\n i = (this._head + i) & this._capacityMask;\n return this._list[i];\n};\n\n/**\n * Alias for peekAt()\n * @param i\n * @returns {*}\n */\nDenque.prototype.get = function get(i) {\n return this.peekAt(i);\n};\n\n/**\n * Returns the first item in the list without removing it.\n * @returns {*}\n */\nDenque.prototype.peek = function peek() {\n if (this._head === this._tail) return undefined;\n return this._list[this._head];\n};\n\n/**\n * Alias for peek()\n * @returns {*}\n */\nDenque.prototype.peekFront = function peekFront() {\n return this.peek();\n};\n\n/**\n * Returns the item that is at the back of the queue without removing it.\n * Uses peekAt(-1)\n */\nDenque.prototype.peekBack = function peekBack() {\n return this.peekAt(-1);\n};\n\n/**\n * Returns the current length of the queue\n * @return {Number}\n */\nObject.defineProperty(Denque.prototype, 'length', {\n get: function length() {\n return this.size();\n }\n});\n\n/**\n * Return the number of items on the list, or 0 if empty.\n * @returns {number}\n */\nDenque.prototype.size = function size() {\n if (this._head === this._tail) return 0;\n if (this._head < this._tail) return this._tail - this._head;\n else return this._capacityMask + 1 - (this._head - this._tail);\n};\n\n/**\n * Add an item at the beginning of the list.\n * @param item\n */\nDenque.prototype.unshift = function unshift(item) {\n if (arguments.length === 0) return this.size();\n var len = this._list.length;\n this._head = (this._head - 1 + len) & this._capacityMask;\n this._list[this._head] = item;\n if (this._tail === this._head) this._growArray();\n if (this._capacity && this.size() > this._capacity) this.pop();\n if (this._head < this._tail) return this._tail - this._head;\n else return this._capacityMask + 1 - (this._head - this._tail);\n};\n\n/**\n * Remove and return the first item on the list,\n * Returns undefined if the list is empty.\n * @returns {*}\n */\nDenque.prototype.shift = function shift() {\n var head = this._head;\n if (head === this._tail) return undefined;\n var item = this._list[head];\n this._list[head] = undefined;\n this._head = (head + 1) & this._capacityMask;\n if (head < 2 && this._tail > 10000 && this._tail <= this._list.length >>> 2) this._shrinkArray();\n return item;\n};\n\n/**\n * Add an item to the bottom of the list.\n * @param item\n */\nDenque.prototype.push = function push(item) {\n if (arguments.length === 0) return this.size();\n var tail = this._tail;\n this._list[tail] = item;\n this._tail = (tail + 1) & this._capacityMask;\n if (this._tail === this._head) {\n this._growArray();\n }\n if (this._capacity && this.size() > this._capacity) {\n this.shift();\n }\n if (this._head < this._tail) return this._tail - this._head;\n else return this._capacityMask + 1 - (this._head - this._tail);\n};\n\n/**\n * Remove and return the last item on the list.\n * Returns undefined if the list is empty.\n * @returns {*}\n */\nDenque.prototype.pop = function pop() {\n var tail = this._tail;\n if (tail === this._head) return undefined;\n var len = this._list.length;\n this._tail = (tail - 1 + len) & this._capacityMask;\n var item = this._list[this._tail];\n this._list[this._tail] = undefined;\n if (this._head < 2 && tail > 10000 && tail <= len >>> 2) this._shrinkArray();\n return item;\n};\n\n/**\n * Remove and return the item at the specified index from the list.\n * Returns undefined if the list is empty.\n * @param index\n * @returns {*}\n */\nDenque.prototype.removeOne = function removeOne(index) {\n var i = index;\n // expect a number or return undefined\n if ((i !== (i | 0))) {\n return void 0;\n }\n if (this._head === this._tail) return void 0;\n var size = this.size();\n var len = this._list.length;\n if (i >= size || i < -size) return void 0;\n if (i < 0) i += size;\n i = (this._head + i) & this._capacityMask;\n var item = this._list[i];\n var k;\n if (index < size / 2) {\n for (k = index; k > 0; k--) {\n this._list[i] = this._list[i = (i - 1 + len) & this._capacityMask];\n }\n this._list[i] = void 0;\n this._head = (this._head + 1 + len) & this._capacityMask;\n } else {\n for (k = size - 1 - index; k > 0; k--) {\n this._list[i] = this._list[i = (i + 1 + len) & this._capacityMask];\n }\n this._list[i] = void 0;\n this._tail = (this._tail - 1 + len) & this._capacityMask;\n }\n return item;\n};\n\n/**\n * Remove number of items from the specified index from the list.\n * Returns array of removed items.\n * Returns undefined if the list is empty.\n * @param index\n * @param count\n * @returns {array}\n */\nDenque.prototype.remove = function remove(index, count) {\n var i = index;\n var removed;\n var del_count = count;\n // expect a number or return undefined\n if ((i !== (i | 0))) {\n return void 0;\n }\n if (this._head === this._tail) return void 0;\n var size = this.size();\n var len = this._list.length;\n if (i >= size || i < -size || count < 1) return void 0;\n if (i < 0) i += size;\n if (count === 1 || !count) {\n removed = new Array(1);\n removed[0] = this.removeOne(i);\n return removed;\n }\n if (i === 0 && i + count >= size) {\n removed = this.toArray();\n this.clear();\n return removed;\n }\n if (i + count > size) count = size - i;\n var k;\n removed = new Array(count);\n for (k = 0; k < count; k++) {\n removed[k] = this._list[(this._head + i + k) & this._capacityMask];\n }\n i = (this._head + i) & this._capacityMask;\n if (index + count === size) {\n this._tail = (this._tail - count + len) & this._capacityMask;\n for (k = count; k > 0; k--) {\n this._list[i = (i + 1 + len) & this._capacityMask] = void 0;\n }\n return removed;\n }\n if (index === 0) {\n this._head = (this._head + count + len) & this._capacityMask;\n for (k = count - 1; k > 0; k--) {\n this._list[i = (i + 1 + len) & this._capacityMask] = void 0;\n }\n return removed;\n }\n if (i < size / 2) {\n this._head = (this._head + index + count + len) & this._capacityMask;\n for (k = index; k > 0; k--) {\n this.unshift(this._list[i = (i - 1 + len) & this._capacityMask]);\n }\n i = (this._head - 1 + len) & this._capacityMask;\n while (del_count > 0) {\n this._list[i = (i - 1 + len) & this._capacityMask] = void 0;\n del_count--;\n }\n if (index < 0) this._tail = i;\n } else {\n this._tail = i;\n i = (i + count + len) & this._capacityMask;\n for (k = size - (count + index); k > 0; k--) {\n this.push(this._list[i++]);\n }\n i = this._tail;\n while (del_count > 0) {\n this._list[i = (i + 1 + len) & this._capacityMask] = void 0;\n del_count--;\n }\n }\n if (this._head < 2 && this._tail > 10000 && this._tail <= len >>> 2) this._shrinkArray();\n return removed;\n};\n\n/**\n * Native splice implementation.\n * Remove number of items from the specified index from the list and/or add new elements.\n * Returns array of removed items or empty array if count == 0.\n * Returns undefined if the list is empty.\n *\n * @param index\n * @param count\n * @param {...*} [elements]\n * @returns {array}\n */\nDenque.prototype.splice = function splice(index, count) {\n var i = index;\n // expect a number or return undefined\n if ((i !== (i | 0))) {\n return void 0;\n }\n var size = this.size();\n if (i < 0) i += size;\n if (i > size) return void 0;\n if (arguments.length > 2) {\n var k;\n var temp;\n var removed;\n var arg_len = arguments.length;\n var len = this._list.length;\n var arguments_index = 2;\n if (!size || i < size / 2) {\n temp = new Array(i);\n for (k = 0; k < i; k++) {\n temp[k] = this._list[(this._head + k) & this._capacityMask];\n }\n if (count === 0) {\n removed = [];\n if (i > 0) {\n this._head = (this._head + i + len) & this._capacityMask;\n }\n } else {\n removed = this.remove(i, count);\n this._head = (this._head + i + len) & this._capacityMask;\n }\n while (arg_len > arguments_index) {\n this.unshift(arguments[--arg_len]);\n }\n for (k = i; k > 0; k--) {\n this.unshift(temp[k - 1]);\n }\n } else {\n temp = new Array(size - (i + count));\n var leng = temp.length;\n for (k = 0; k < leng; k++) {\n temp[k] = this._list[(this._head + i + count + k) & this._capacityMask];\n }\n if (count === 0) {\n removed = [];\n if (i != size) {\n this._tail = (this._head + i + len) & this._capacityMask;\n }\n } else {\n removed = this.remove(i, count);\n this._tail = (this._tail - leng + len) & this._capacityMask;\n }\n while (arguments_index < arg_len) {\n this.push(arguments[arguments_index++]);\n }\n for (k = 0; k < leng; k++) {\n this.push(temp[k]);\n }\n }\n return removed;\n } else {\n return this.remove(i, count);\n }\n};\n\n/**\n * Soft clear - does not reset capacity.\n */\nDenque.prototype.clear = function clear() {\n this._list = new Array(this._list.length);\n this._head = 0;\n this._tail = 0;\n};\n\n/**\n * Returns true or false whether the list is empty.\n * @returns {boolean}\n */\nDenque.prototype.isEmpty = function isEmpty() {\n return this._head === this._tail;\n};\n\n/**\n * Returns an array of all queue items.\n * @returns {Array}\n */\nDenque.prototype.toArray = function toArray() {\n return this._copyArray(false);\n};\n\n/**\n * -------------\n * INTERNALS\n * -------------\n */\n\n/**\n * Fills the queue with items from an array\n * For use in the constructor\n * @param array\n * @private\n */\nDenque.prototype._fromArray = function _fromArray(array) {\n var length = array.length;\n var capacity = this._nextPowerOf2(length);\n\n this._list = new Array(capacity);\n this._capacityMask = capacity - 1;\n this._tail = length;\n\n for (var i = 0; i < length; i++) this._list[i] = array[i];\n};\n\n/**\n *\n * @param fullCopy\n * @param size Initialize the array with a specific size. Will default to the current list size\n * @returns {Array}\n * @private\n */\nDenque.prototype._copyArray = function _copyArray(fullCopy, size) {\n var src = this._list;\n var capacity = src.length;\n var length = this.length;\n size = size | length;\n\n // No prealloc requested and the buffer is contiguous\n if (size == length && this._head < this._tail) {\n // Simply do a fast slice copy\n return this._list.slice(this._head, this._tail);\n }\n\n var dest = new Array(size);\n\n var k = 0;\n var i;\n if (fullCopy || this._head > this._tail) {\n for (i = this._head; i < capacity; i++) dest[k++] = src[i];\n for (i = 0; i < this._tail; i++) dest[k++] = src[i];\n } else {\n for (i = this._head; i < this._tail; i++) dest[k++] = src[i];\n }\n\n return dest;\n}\n\n/**\n * Grows the internal list array.\n * @private\n */\nDenque.prototype._growArray = function _growArray() {\n if (this._head != 0) {\n // double array size and copy existing data, head to end, then beginning to tail.\n var newList = this._copyArray(true, this._list.length << 1);\n\n this._tail = this._list.length;\n this._head = 0;\n\n this._list = newList;\n } else {\n this._tail = this._list.length;\n this._list.length <<= 1;\n }\n\n this._capacityMask = (this._capacityMask << 1) | 1;\n};\n\n/**\n * Shrinks the internal list array.\n * @private\n */\nDenque.prototype._shrinkArray = function _shrinkArray() {\n this._list.length >>>= 1;\n this._capacityMask >>>= 1;\n};\n\n/**\n * Find the next power of 2, at least 4\n * @private\n * @param {number} num \n * @returns {number}\n */\nDenque.prototype._nextPowerOf2 = function _nextPowerOf2(num) {\n var log2 = Math.log(num) / Math.log(2);\n var nextPow2 = 1 << (log2 + 1);\n\n return Math.max(nextPow2, 4);\n}\n\nmodule.exports = Denque;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.p = \"/dist/\";","\nvar codec = (() => {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n \n return (\nfunction(codec) {\n codec = codec || {};\n\n\nvar g;g||(g=typeof codec !== 'undefined' ? codec : {});var aa,ba;g.ready=new Promise(function(b,a){aa=b;ba=a});var da=Object.assign({},g),p=\"\",ea;p=self.location.href;_scriptDir&&(p=_scriptDir);0!==p.indexOf(\"blob:\")?p=p.substr(0,p.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):p=\"\";ea=b=>{var a=new XMLHttpRequest;a.open(\"GET\",b,!1);a.responseType=\"arraybuffer\";a.send(null);return new Uint8Array(a.response)};var fa=g.print||console.log.bind(console),v=g.printErr||console.warn.bind(console);\nObject.assign(g,da);da=null;var x;g.wasmBinary&&(x=g.wasmBinary);var noExitRuntime=g.noExitRuntime||!0;\"object\"!=typeof WebAssembly&&y(\"no native wasm support detected\");var ha,ia=!1,ja=\"undefined\"!=typeof TextDecoder?new TextDecoder(\"utf8\"):void 0;\nfunction ka(b,a,c){var d=a+c;for(c=a;b[c]&&!(c>=d);)++c;if(16e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d}var la,ma,z,A,na,B,C,oa,pa,qa,ra,sa,ta=[],ua=[],va=[];\nfunction wa(){var b=g.preRun.shift();ta.unshift(b)}var D=0,xa=null,E=null;function y(b){if(g.onAbort)g.onAbort(b);b=\"Aborted(\"+b+\")\";v(b);ia=!0;b=new WebAssembly.RuntimeError(b+\". Build with -sASSERTIONS for more info.\");ba(b);throw b;}function ya(){return G.startsWith(\"data:application/octet-stream;base64,\")}var G;G=\"codec.wasm\";if(!ya()){var za=G;G=g.locateFile?g.locateFile(za,p):p+za}\nfunction Aa(){var b=G;try{if(b==G&&x)return new Uint8Array(x);if(ea)return ea(b);throw\"both async and sync fetching of the wasm failed\";}catch(a){y(a)}}function Ba(){return x||\"function\"!=typeof fetch?Promise.resolve().then(function(){return Aa()}):fetch(G,{credentials:\"same-origin\"}).then(function(b){if(!b.ok)throw\"failed to load wasm binary file at '\"+G+\"'\";return b.arrayBuffer()}).catch(function(){return Aa()})}function Ca(b){for(;0=a?\"_\"+b:b}function Ga(b,a){b=Fa(b);return function(){return a.apply(this,arguments)}}\nfunction Ha(b){var a=Error,c=Ga(b,function(d){this.name=b;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+\"\\n\"+d.replace(/^Error(:[^\\n]*)?\\n/,\"\"))});c.prototype=Object.create(a.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+\": \"+this.message};return c}var M=void 0;function O(b){throw new M(b);}var Ia=void 0;function Ja(b){throw new Ia(b);}\nfunction P(b,a,c){function d(h){h=c(h);h.length!==b.length&&Ja(\"Mismatched type converter count\");for(var l=0;l{L.hasOwnProperty(h)?e[l]=L[h]:(f.push(h),K.hasOwnProperty(h)||(K[h]=[]),K[h].push(()=>{e[l]=L[h];++k;k===f.length&&d(e)}))});0===f.length&&d(e)}\nfunction Q(b,a,c={}){if(!(\"argPackAdvance\"in a))throw new TypeError(\"registerType registeredInstance requires argPackAdvance\");var d=a.name;b||O('type \"'+d+'\" must have a positive integer typeid pointer');if(L.hasOwnProperty(b)){if(c.ia)return;O(\"Cannot register type '\"+d+\"' twice\")}L[b]=a;delete Ea[b];K.hasOwnProperty(b)&&(a=K[b],delete K[b],a.forEach(e=>e()))}\nfunction Ka(b,a,c){switch(a){case 0:return c?function(d){return ma[d]}:function(d){return z[d]};case 1:return c?function(d){return A[d>>1]}:function(d){return na[d>>1]};case 2:return c?function(d){return B[d>>2]}:function(d){return C[d>>2]};case 3:return c?function(d){return pa[d>>3]}:function(d){return qa[d>>3]};default:throw new TypeError(\"Unknown integer type: \"+b);}}\nfunction La(b){switch(b){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(\"Unknown type size: \"+b);}}function Ma(b){O(b.I.L.J.name+\" instance already deleted\")}var Na=!1;function Oa(){}function Pa(b){--b.count.value;0===b.count.value&&(b.M?b.N.U(b.M):b.L.J.U(b.K))}function Qa(b,a,c){if(a===c)return b;if(void 0===c.O)return null;b=Qa(b,a,c.O);return null===b?null:c.fa(b)}var Ra={},R=[];function Sa(){for(;R.length;){var b=R.pop();b.I.V=!1;b[\"delete\"]()}}\nvar S=void 0,T={};function Ta(b,a){for(void 0===a&&O(\"ptr should not be undefined\");b.O;)a=b.X(a),b=b.O;return T[a]}function Ua(b,a){a.L&&a.K||Ja(\"makeClassHandle requires ptr and ptrType\");!!a.N!==!!a.M&&Ja(\"Both smartPtrType and smartPtr must be specified\");a.count={value:1};return U(Object.create(b,{I:{value:a}}))}\nfunction U(b){if(\"undefined\"===typeof FinalizationRegistry)return U=a=>a,b;Na=new FinalizationRegistry(a=>{Pa(a.I)});U=a=>{var c=a.I;c.M&&Na.register(a,{I:c},a);return a};Oa=a=>{Na.unregister(a)};return U(b)}function V(){}\nfunction Va(b,a,c){if(void 0===b[a].R){var d=b[a];b[a]=function(){b[a].R.hasOwnProperty(arguments.length)||O(\"Function '\"+c+\"' called with an invalid number of arguments (\"+arguments.length+\") - expects one of (\"+b[a].R+\")!\");return b[a].R[arguments.length].apply(this,arguments)};b[a].R=[];b[a].R[d.Y]=d}}\nfunction Wa(b,a){g.hasOwnProperty(b)?(O(\"Cannot register public name '\"+b+\"' twice\"),Va(g,b,b),g.hasOwnProperty(void 0)&&O(\"Cannot register multiple overloads of a function with the same number of arguments (undefined)!\"),g[b].R[void 0]=a):g[b]=a}function Xa(b,a,c,d,e,f,k,h){this.name=b;this.constructor=a;this.S=c;this.U=d;this.O=e;this.ga=f;this.X=k;this.fa=h;this.ka=[]}\nfunction Ya(b,a,c){for(;a!==c;)a.X||O(\"Expected null or instance of \"+c.name+\", got an instance of \"+a.name),b=a.X(b),a=a.O;return b}function Za(b,a){if(null===a)return this.aa&&O(\"null is not a valid \"+this.name),0;a.I||O('Cannot pass \"'+H(a)+'\" as a '+this.name);a.I.K||O(\"Cannot pass deleted object as a pointer of type \"+this.name);return Ya(a.I.K,a.I.L.J,this.J)}\nfunction $a(b,a){if(null===a){this.aa&&O(\"null is not a valid \"+this.name);if(this.$){var c=this.la();null!==b&&b.push(this.U,c);return c}return 0}a.I||O('Cannot pass \"'+H(a)+'\" as a '+this.name);a.I.K||O(\"Cannot pass deleted object as a pointer of type \"+this.name);!this.Z&&a.I.L.Z&&O(\"Cannot convert argument of type \"+(a.I.N?a.I.N.name:a.I.L.name)+\" to parameter type \"+this.name);c=Ya(a.I.K,a.I.L.J,this.J);if(this.$)switch(void 0===a.I.M&&O(\"Passing raw pointer to smart pointer is illegal\"),this.na){case 0:a.I.N===\nthis?c=a.I.M:O(\"Cannot convert argument of type \"+(a.I.N?a.I.N.name:a.I.L.name)+\" to parameter type \"+this.name);break;case 1:c=a.I.M;break;case 2:if(a.I.N===this)c=a.I.M;else{var d=a.clone();c=this.ma(c,ab(function(){d[\"delete\"]()}));null!==b&&b.push(this.U,c)}break;default:O(\"Unsupporting sharing policy\")}return c}\nfunction bb(b,a){if(null===a)return this.aa&&O(\"null is not a valid \"+this.name),0;a.I||O('Cannot pass \"'+H(a)+'\" as a '+this.name);a.I.K||O(\"Cannot pass deleted object as a pointer of type \"+this.name);a.I.L.Z&&O(\"Cannot convert argument of type \"+a.I.L.name+\" to parameter type \"+this.name);return Ya(a.I.K,a.I.L.J,this.J)}function cb(b){return this.fromWireType(B[b>>2])}\nfunction W(b,a,c,d){this.name=b;this.J=a;this.aa=c;this.Z=d;this.$=!1;this.U=this.ma=this.la=this.da=this.na=this.ja=void 0;void 0!==a.O?this.toWireType=$a:(this.toWireType=d?Za:bb,this.P=null)}function db(b,a){g.hasOwnProperty(b)||Ja(\"Replacing nonexistant public symbol\");g[b]=a;g[b].Y=void 0}var eb=[];function X(b,a){b=J(b);var c=eb[a];c||(a>=eb.length&&(eb.length=a+1),eb[a]=c=sa.get(a));\"function\"!=typeof c&&O(\"unknown function pointer with signature \"+b+\": \"+a);return c}var fb=void 0;\nfunction gb(b){b=hb(b);var a=J(b);Y(b);return a}function ib(b,a){function c(f){e[f]||L[f]||(Ea[f]?Ea[f].forEach(c):(d.push(f),e[f]=!0))}var d=[],e={};a.forEach(c);throw new fb(b+\": \"+d.map(gb).join([\", \"]));}function jb(b,a){for(var c=[],d=0;d>2]);return c}function kb(b){for(;b.length;){var a=b.pop();b.pop()(a)}}\nfunction lb(b,a,c,d,e){var f=a.length;2>f&&O(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");var k=null!==a[1]&&null!==c,h=!1;for(c=1;c{b||O(\"Cannot use deleted val. handle = \"+b);return Z[b].value},ab=b=>{switch(b){case void 0:return 1;case null:return 2;case !0:return 3;case !1:return 4;default:var a=ob.length?ob.pop():Z.length;Z[a]={ba:1,value:b};return a}};\nfunction rb(b,a){switch(a){case 2:return function(c){return this.fromWireType(oa[c>>2])};case 3:return function(c){return this.fromWireType(ra[c>>3])};default:throw new TypeError(\"Unknown float type: \"+b);}}var sb=\"undefined\"!=typeof TextDecoder?new TextDecoder(\"utf-16le\"):void 0;function tb(b,a){var c=b>>1;for(var d=c+a/2;!(c>=d)&&na[c];)++c;c<<=1;if(32=a/2);++d){var e=A[b+2*d>>1];if(0==e)break;c+=String.fromCharCode(e)}return c}\nfunction ub(b,a,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=a;c=c<2*b.length?c/2:b.length;for(var e=0;e>1]=b.charCodeAt(e),a+=2;A[a>>1]=0;return a-d}function vb(b){return 2*b.length}function wb(b,a){for(var c=0,d=\"\";!(c>=a/4);){var e=B[b+4*c>>2];if(0==e)break;++c;65536<=e?(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023)):d+=String.fromCharCode(e)}return d}\nfunction xb(b,a,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=a;c=d+c-4;for(var e=0;e=f){var k=b.charCodeAt(++e);f=65536+((f&1023)<<10)|k&1023}B[a>>2]=f;a+=4;if(a+4>c)break}B[a>>2]=0;return a-d}function yb(b){for(var a=0,c=0;c=d&&++c;a+=4}return a}var zb={};\nfunction Ab(){function b(a){a.$$$embind_global$$$=a;var c=\"object\"==typeof $$$embind_global$$$&&a.$$$embind_global$$$==a;c||delete a.$$$embind_global$$$;return c}if(\"object\"==typeof globalThis)return globalThis;if(\"object\"==typeof $$$embind_global$$$)return $$$embind_global$$$;\"object\"==typeof global&&b(global)?$$$embind_global$$$=global:\"object\"==typeof self&&b(self)&&($$$embind_global$$$=self);if(\"object\"==typeof $$$embind_global$$$)return $$$embind_global$$$;throw Error(\"unable to get global object.\");\n}function Bb(b){var a=Array(b+1);return function(c,d,e){a[0]=c;for(var f=0;f>2];var h=L[k];void 0===h&&O(\"parameter \"+f+\" has unknown type \"+gb(k));k=h;a[f+1]=k.readValueFromPointer(e);e+=k.argPackAdvance}c=new (c.bind.apply(c,a));return ab(c)}}for(var Cb={},Db=[null,[],[]],Eb=Array(256),Fb=0;256>Fb;++Fb)Eb[Fb]=String.fromCharCode(Fb);Da=Eb;M=g.BindingError=Ha(\"BindingError\");Ia=g.InternalError=Ha(\"InternalError\");\nV.prototype.isAliasOf=function(b){if(!(this instanceof V&&b instanceof V))return!1;var a=this.I.L.J,c=this.I.K,d=b.I.L.J;for(b=b.I.K;a.O;)c=a.X(c),a=a.O;for(;d.O;)b=d.X(b),d=d.O;return a===d&&c===b};V.prototype.clone=function(){this.I.K||Ma(this);if(this.I.W)return this.I.count.value+=1,this;var b=U,a=Object,c=a.create,d=Object.getPrototypeOf(this),e=this.I;b=b(c.call(a,d,{I:{value:{count:e.count,V:e.V,W:e.W,K:e.K,L:e.L,M:e.M,N:e.N}}}));b.I.count.value+=1;b.I.V=!1;return b};\nV.prototype[\"delete\"]=function(){this.I.K||Ma(this);this.I.V&&!this.I.W&&O(\"Object already scheduled for deletion\");Oa(this);Pa(this.I);this.I.W||(this.I.M=void 0,this.I.K=void 0)};V.prototype.isDeleted=function(){return!this.I.K};V.prototype.deleteLater=function(){this.I.K||Ma(this);this.I.V&&!this.I.W&&O(\"Object already scheduled for deletion\");R.push(this);1===R.length&&S&&S(Sa);this.I.V=!0;return this};g.getInheritedInstanceCount=function(){return Object.keys(T).length};\ng.getLiveInheritedInstances=function(){var b=[],a;for(a in T)T.hasOwnProperty(a)&&b.push(T[a]);return b};g.flushPendingDeletes=Sa;g.setDelayFunction=function(b){S=b;R.length&&S&&S(Sa)};W.prototype.ha=function(b){this.da&&(b=this.da(b));return b};W.prototype.ca=function(b){this.U&&this.U(b)};W.prototype.argPackAdvance=8;W.prototype.readValueFromPointer=cb;W.prototype.deleteObject=function(b){if(null!==b)b[\"delete\"]()};\nW.prototype.fromWireType=function(b){function a(){return this.$?Ua(this.J.S,{L:this.ja,K:c,N:this,M:b}):Ua(this.J.S,{L:this,K:b})}var c=this.ha(b);if(!c)return this.ca(b),null;var d=Ta(this.J,c);if(void 0!==d){if(0===d.I.count.value)return d.I.K=c,d.I.M=b,d.clone();d=d.clone();this.ca(b);return d}d=this.J.ga(c);d=Ra[d];if(!d)return a.call(this);d=this.Z?d.ea:d.pointerType;var e=Qa(c,this.J,d.J);return null===e?a.call(this):this.$?Ua(d.J.S,{L:d,K:e,N:this,M:b}):Ua(d.J.S,{L:d,K:e})};\nfb=g.UnboundTypeError=Ha(\"UnboundTypeError\");g.count_emval_handles=function(){for(var b=0,a=5;ae)throw new TypeError('Passing a number \"'+\nH(h)+'\" from JS side to C/C++ side to an argument of type \"'+a+'\", which is outside the valid range ['+d+\", \"+e+\"]!\");return h},argPackAdvance:8,readValueFromPointer:Ka(a,c,!f),P:null})},A:function(b,a,c,d,e){var f=La(c);a=J(a);Q(b,{name:a,fromWireType:function(k){return!!k},toWireType:function(k,h){return h?d:e},argPackAdvance:8,readValueFromPointer:function(k){if(1===c)var h=ma;else if(2===c)h=A;else if(4===c)h=B;else throw new TypeError(\"Unknown boolean type size: \"+a);return this.fromWireType(h[k>>\nf])},P:null})},k:function(b,a,c,d,e,f,k,h,l,n,m,q,t){m=J(m);f=X(e,f);h&&(h=X(k,h));n&&(n=X(l,n));t=X(q,t);var u=Fa(m);Wa(u,function(){ib(\"Cannot construct \"+m+\" due to unbound types\",[d])});P([b,a,c],d?[d]:[],function(r){r=r[0];if(d){var w=r.J;var F=w.S}else F=V.prototype;r=Ga(u,function(){if(Object.getPrototypeOf(this)!==N)throw new M(\"Use 'new' to construct \"+m);if(void 0===I.T)throw new M(m+\" has no accessible constructor\");var nb=I.T[arguments.length];if(void 0===nb)throw new M(\"Tried to invoke ctor of \"+\nm+\" with invalid number of parameters (\"+arguments.length+\") - expected (\"+Object.keys(I.T).toString()+\") parameters instead!\");return nb.apply(this,arguments)});var N=Object.create(F,{constructor:{value:r}});r.prototype=N;var I=new Xa(m,r,N,t,w,f,h,n);w=new W(m,I,!0,!1);F=new W(m+\"*\",I,!1,!1);var ca=new W(m+\" const*\",I,!1,!0);Ra[b]={pointerType:F,ea:ca};db(u,r);return[w,F,ca]})},j:function(b,a,c,d,e,f){0{ib(\"Cannot construct \"+h.name+\" due to unbound types\",k)};P([],k,function(n){n.splice(1,0,null);h.J.T[a-1]=lb(l,n,null,e,f);return[]});return[]})},d:function(b,a,c,d,e,f,k,h){var l=jb(c,d);a=J(a);f=X(e,f);P([],[b],function(n){function m(){ib(\"Cannot call \"+\nq+\" due to unbound types\",l)}n=n[0];var q=n.name+\".\"+a;a.startsWith(\"@@\")&&(a=Symbol[a.substring(2)]);h&&n.J.ka.push(a);var t=n.J.S,u=t[a];void 0===u||void 0===u.R&&u.className!==n.name&&u.Y===c-2?(m.Y=c-2,m.className=n.name,t[a]=m):(Va(t,a,q),t[a].R[c-2]=m);P([],l,function(r){r=lb(q,r,n,f,k);void 0===t[a].R?(r.Y=c-2,t[a]=r):t[a].R[c-2]=r;return[]});return[]})},r:function(b,a,c,d,e,f,k,h,l,n){a=J(a);e=X(d,e);P([],[b],function(m){m=m[0];var q=m.name+\".\"+a,t={get:function(){ib(\"Cannot access \"+q+\" due to unbound types\",\n[c,k])},enumerable:!0,configurable:!0};t.set=l?()=>{ib(\"Cannot access \"+q+\" due to unbound types\",[c,k])}:()=>{O(q+\" is a read-only property\")};Object.defineProperty(m.J.S,a,t);P([],l?[c,k]:[c],function(u){var r=u[0],w={get:function(){var N=mb(this,m,q+\" getter\");return r.fromWireType(e(f,N))},enumerable:!0};if(l){l=X(h,l);var F=u[1];w.set=function(N){var I=mb(this,m,q+\" setter\"),ca=[];l(n,I,F.toWireType(ca,N));kb(ca)}}Object.defineProperty(m.J.S,a,w);return[]});return[]})},z:function(b,a){a=J(a);\nQ(b,{name:a,fromWireType:function(c){var d=qb(c);pb(c);return d},toWireType:function(c,d){return ab(d)},argPackAdvance:8,readValueFromPointer:cb,P:null})},n:function(b,a,c){c=La(c);a=J(a);Q(b,{name:a,fromWireType:function(d){return d},toWireType:function(d,e){return e},argPackAdvance:8,readValueFromPointer:rb(a,c),P:null})},b:function(b,a,c,d,e){a=J(a);-1===e&&(e=4294967295);e=La(c);var f=h=>h;if(0===d){var k=32-8*c;f=h=>h<>>k}c=a.includes(\"unsigned\")?function(h,l){return l>>>0}:function(h,l){return l};\nQ(b,{name:a,fromWireType:f,toWireType:c,argPackAdvance:8,readValueFromPointer:Ka(a,e,0!==d),P:null})},a:function(b,a,c){function d(f){f>>=2;var k=C;return new e(la,k[f+1],k[f])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][a];c=J(c);Q(b,{name:c,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{ia:!0})},p:function(b,a){a=J(a);var c=\"std::string\"===a;Q(b,{name:a,fromWireType:function(d){var e=C[d>>2],f=d+4;if(c)for(var k=\nf,h=0;h<=e;++h){var l=f+h;if(h==e||0==z[l]){k=k?ka(z,k,l-k):\"\";if(void 0===n)var n=k;else n+=String.fromCharCode(0),n+=k;k=l+1}}else{n=Array(e);for(h=0;h=l?h++:2047>=l?h+=2:55296<=l&&57343>=l?(h+=4,++f):h+=3}f=h}else f=e.length;h=Gb(4+f+1);l=h+4;C[h>>2]=f;if(c&&k){if(k=l,l=f+1,f=z,0=m){var q=e.charCodeAt(++n);m=65536+((m&1023)<<10)|q&1023}if(127>=m){if(k>=l)break;f[k++]=m}else{if(2047>=m){if(k+1>=l)break;f[k++]=192|m>>6}else{if(65535>=m){if(k+2>=l)break;f[k++]=224|m>>12}else{if(k+3>=l)break;f[k++]=240|m>>18;f[k++]=128|m>>12&63}f[k++]=128|m>>6&63}f[k++]=128|m&63}}f[k]=\n0}}else if(k)for(k=0;kna;var h=1}else 4===a&&(d=wb,e=xb,f=yb,k=()=>C,h=2);Q(b,{name:c,fromWireType:function(l){for(var n=C[l>>2],m=k(),q,t=l+4,u=0;u<=n;++u){var r=l+4+u*a;if(u==n||0==m[r>>h])t=\nd(t,r-t),void 0===q?q=t:(q+=String.fromCharCode(0),q+=t),t=r+a}Y(l);return q},toWireType:function(l,n){\"string\"!=typeof n&&O(\"Cannot pass non-string to C++ string type \"+c);var m=f(n),q=Gb(4+m+a);C[q>>2]=m>>h;e(n,q+4,m+a);null!==l&&l.push(Y,q);return q},argPackAdvance:8,readValueFromPointer:cb,P:function(l){Y(l)}})},q:function(b,a){a=J(a);Q(b,{oa:!0,name:a,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},h:pb,e:function(b){if(0===b)return ab(Ab());var a=zb[b];b=void 0===a?J(b):\na;return ab(Ab()[b])},s:function(b){4>2],h=C[a+4>>2];a+=8;for(var l=0;l>2]=e;return 0}};\n(function(){function b(e){g.asm=e.exports;ha=g.asm.B;la=e=ha.buffer;g.HEAP8=ma=new Int8Array(e);g.HEAP16=A=new Int16Array(e);g.HEAP32=B=new Int32Array(e);g.HEAPU8=z=new Uint8Array(e);g.HEAPU16=na=new Uint16Array(e);g.HEAPU32=C=new Uint32Array(e);g.HEAPF32=oa=new Float32Array(e);g.HEAPF64=ra=new Float64Array(e);g.HEAP64=pa=new BigInt64Array(e);g.HEAPU64=qa=new BigUint64Array(e);sa=g.asm.F;ua.unshift(g.asm.C);D--;g.monitorRunDependencies&&g.monitorRunDependencies(D);0==D&&(null!==xa&&(clearInterval(xa),\nxa=null),E&&(e=E,E=null,e()))}function a(e){b(e.instance)}function c(e){return Ba().then(function(f){return WebAssembly.instantiate(f,d)}).then(function(f){return f}).then(e,function(f){v(\"failed to asynchronously prepare wasm: \"+f);y(f)})}var d={a:Hb};D++;g.monitorRunDependencies&&g.monitorRunDependencies(D);if(g.instantiateWasm)try{return g.instantiateWasm(d,b)}catch(e){v(\"Module.instantiateWasm callback failed with error: \"+e),ba(e)}(function(){return x||\"function\"!=typeof WebAssembly.instantiateStreaming||\nya()||\"function\"!=typeof fetch?c(a):fetch(G,{credentials:\"same-origin\"}).then(function(e){return WebAssembly.instantiateStreaming(e,d).then(a,function(f){v(\"wasm streaming compile failed: \"+f);v(\"falling back to ArrayBuffer instantiation\");return c(a)})})})().catch(ba);return{}})();g.___wasm_call_ctors=function(){return(g.___wasm_call_ctors=g.asm.C).apply(null,arguments)};\nvar Y=g._free=function(){return(Y=g._free=g.asm.D).apply(null,arguments)},Gb=g._malloc=function(){return(Gb=g._malloc=g.asm.E).apply(null,arguments)},hb=g.___getTypeName=function(){return(hb=g.___getTypeName=g.asm.G).apply(null,arguments)};g.__embind_initialize_bindings=function(){return(g.__embind_initialize_bindings=g.asm.H).apply(null,arguments)};g.___start_em_js=42736;g.___stop_em_js=44300;var Ib;E=function Jb(){Ib||Kb();Ib||(E=Jb)};\nfunction Kb(){function b(){if(!Ib&&(Ib=!0,g.calledRun=!0,!ia)){Ca(ua);aa(g);if(g.onRuntimeInitialized)g.onRuntimeInitialized();if(g.postRun)for(\"function\"==typeof g.postRun&&(g.postRun=[g.postRun]);g.postRun.length;){var a=g.postRun.shift();va.unshift(a)}Ca(va)}}if(!(01, but not too high to avoid queued stream overlap\n // In seconds:\n INTER_STREAM_DELAY: 0.1, // Must be >0\n MAX_CONNECT_DURATION: 5, // Max duration of \"connecting\" state of SignalR connection inside ensureConnected\n MAX_QUICK_CONNECT_DURATION: 0.5, // Same as above, but when quickReconnect = true\n STREAM_ERROR_DELAY: 1,\n CONNECT_ERROR_DELAY: 1,\n DEBUG: { // Debug switches\n RANDOM_DISCONNECT_PERIOD_MS: 0, // Random disconnect period, 5000 is a good one\n }\n}\n\nexport const AUDIO_VAD = {\n // All durations below are in seconds\n MIN_SPEECH: 0.5, // When the speech is detected, it will always send at this much at least\n MAX_SPEECH: 60 * 2, // Max speech duration - if it takes longer, VAD will generate a hard split anyway\n MIN_SPEECH_TO_CANCEL_PAUSE: 0.15, // Min. speech duration required to cancel non-materialized pause\n MIN_PAUSE: 0.2, // Min pause duration that triggers split\n MAX_PAUSE: 2.7, // Max pause duration that triggers split\n MAX_CONV_PAUSE: 0.65, // Max pause duration that triggers pause in \"conversation\" mode\n CONV_DURATION: 30, // A period from conversationSignal to the moment VAD assumes the conversation ended\n PAUSE_VARIES_FROM: 10, // Pause starts to vary from (MAX_PAUSE or MAX_CONV_PAUSE) to MIN_PAUSE at this speech duration\n PAUSE_VARY_POWER: Math.sqrt(2), // The power used in max_pause = lerp(MAX_PAUSE, MIN_PAUSE, pow(alpha, THIS_VALUE))\n SKIP_FIRST_RECORDING_MS: 300, // Microphone stream begins with some noise that triggers WebRTC VAD\n SKIP_SEQUENTIAL_CALLS_MS: 5, // Skip batch calls to VAD when duration between calls is less than 5ms - VAD works with 30ms and 32 ms chunks\n // All durations below are in samples (16KHz = 16 samples per ms)\n NN_VAD_CONTEXT_SAMPLES: 64, // 4ms, the length of NN VAD buffer \"prefix\" copied from the end of prev. buffer\n};\n","// Should be the same as logging.LogLevel, but local to this module\nexport enum LogLevel {\n Debug = 1,\n Info,\n Warn,\n Error,\n None = 1000,\n}\n\nexport type LogScope =\n 'default'\n // Library\n | 'AsyncProcessor'\n | 'BrowserInfo'\n | 'BrowserInit'\n | 'BubbleHost'\n | 'Connectivity'\n | 'Gestures'\n | 'event-handling'\n | 'InertialScroll'\n | 'NoSleep'\n | 'History'\n | 'Interactive'\n | 'Kvas'\n | 'KvasBackend'\n | 'MenuHost'\n | 'ModalHost'\n | 'OnDeviceAwake'\n | 'promises'\n | 'Rpc'\n | 'ScreenSize'\n | 'ServiceWorker'\n | 'SessionTokens'\n | 'TimerQueue'\n | 'UndoStack'\n | 'Versioning'\n | 'VirtualList'\n // XxxUI\n | 'DebugUI'\n | 'DeviceAwakeUI'\n | 'FocusUI'\n | 'InteractiveUI'\n | 'KeepAwakeUI'\n | 'LanguageUI'\n | 'NotificationUI'\n | 'TuneUI'\n | 'UserActivityUI'\n | 'VibrationUI'\n | 'Share'\n // Audio\n | 'AudioContextRef'\n | 'AudioContextSource'\n | 'AudioInfo'\n // Audio playback\n | 'AudioPlayer'\n | 'FallbackPlayback'\n | 'OpusDecoder'\n | 'OpusDecoderWorker'\n | 'FeederNode'\n | 'FeederProcessor'\n | 'SoundsPlayer'\n // Audio recording\n | 'AudioRecorder'\n | 'AudioStreamer'\n | 'OpusMediaRecorder'\n | 'AudioVadWorker'\n | 'AudioVadWorkletProcessor'\n | 'OpusEncoderWorkletProcessor'\n | 'OpusEncoderWorker'\n | 'WarmUpAudioWorkletProcessor'\n | 'WebRtcAec' // Unused\n // Isolated components\n | 'Attachments'\n | 'ChatMessageEditor'\n | 'CodeBlockMarkupView'\n | 'CopyTrigger'\n | 'FontSizes'\n | 'Landing'\n | 'LandingLeftMenu'\n | 'MarkupEditor'\n | 'MessageEditor'\n | 'SearchPanel'\n | 'SideNav'\n | 'SelectionHost'\n | 'TextBox'\n | 'Theme'\n | 'TooltipHost'\n | 'UserInterface'\n | 'VisualMediaViewer'\n | 'WebAuth';\n\nconst GlobalThisKey = 'logLevels';\nconst StorageKey = 'logLevels';\nconst DateStorageKey = `${StorageKey}.date`;\nconst MaxStorageAge = 86_400_000 * 3; // 3 days\n\nconst app = globalThis?.['App'] as unknown;\nconst isWorkerOrWorklet = !app;\n\nexport function initLogging(Log: unknown): void {\n Log['defaultMinLevel'] = LogLevel.Info;\n const minLevels = Log['minLevels'] as Map;\n\n let wasRestored = false;\n if (globalThis && !isWorkerOrWorklet) {\n globalThis[GlobalThisKey] = new LogLevelController(minLevels);\n wasRestored = restore(minLevels);\n }\n if (wasRestored) {\n console.log(`Logging: logLevels are restored`);\n }\n else {\n if (!isWorkerOrWorklet)\n console.log(`Logging: logLevels are reset`);\n reset(minLevels);\n }\n}\n\nclass LogLevelController {\n constructor (private minLevels: Map)\n { }\n\n public override(scope: LogScope, newLevel: LogLevel): void {\n this.minLevels.set(scope, newLevel);\n persist(this.minLevels);\n }\n\n public reset(isProduction?: boolean) {\n reset(this.minLevels, isProduction);\n persist(this.minLevels);\n }\n\n public clear(defaultLevel?: LogLevel) {\n this.minLevels.clear();\n if (defaultLevel !== undefined)\n this.minLevels['default'] = defaultLevel;\n persist(this.minLevels);\n }\n}\n\nconst sessionStorage = globalThis?.sessionStorage;\n\nfunction restore(minLevels: Map): boolean {\n if (!sessionStorage)\n return false;\n\n const dateJson = sessionStorage.getItem(DateStorageKey);\n if (!dateJson)\n return false;\n if (Date.now() - JSON.parse(dateJson) > MaxStorageAge)\n return false;\n\n const readJson = sessionStorage.getItem(StorageKey);\n if (!readJson)\n return false;\n\n const readMinLevels = new Map(JSON.parse(readJson) as [string, LogLevel][]);\n if (!(typeof readMinLevels.size === 'number'))\n return false;\n\n minLevels.clear();\n readMinLevels.forEach((value, key) => minLevels.set(key, value));\n return true;\n}\n\nfunction persist(minLevels: Map): boolean {\n if (!sessionStorage)\n return false;\n\n sessionStorage.setItem(DateStorageKey, JSON.stringify(Date.now()));\n sessionStorage.setItem(StorageKey, JSON.stringify(Array.from(minLevels.entries())));\n return true;\n}\n\nfunction reset(minLevels: Map, isProduction?: boolean): void {\n minLevels.clear();\n // enabled debug logging temporarily - do not add chatty log scopes!! - 14.11.2023 AK\n\n // isProduction ??= app?.['environment'] == 'Production';\n // if (isProduction)\n // return;\n\n // Bumping down levels of in-dev scopes\n // minLevels.set('Versioning', LogLevel.Debug);\n // minLevels.set('Gestures', LogLevel.Debug);\n // minLevels.set('event-handling', LogLevel.Debug);\n // minLevels.set('Rpc', LogLevel.Debug);\n // minLevels.set('AsyncProcessor', LogLevel.Debug);\n // minLevels.set('promises', LogLevel.Debug);\n minLevels.set('Interactive', LogLevel.Debug);\n minLevels.set('OnDeviceAwake', LogLevel.Debug);\n minLevels.set('AudioContextRef', LogLevel.Debug);\n minLevels.set('AudioContextSource', LogLevel.Debug);\n minLevels.set('AudioPlayer', LogLevel.Debug);\n // minLevels.set('FallbackPlayback', LogLevel.Debug);\n // minLevels.set('OpusDecoder', LogLevel.Debug);\n // minLevels.set('OpusDecoderWorker', LogLevel.Debug);\n // minLevels.set('FeederProcessor', LogLevel.Debug);\n minLevels.set('AudioRecorder', LogLevel.Debug);\n // minLevels.set('AudioStreamer', LogLevel.Debug);\n minLevels.set('OpusMediaRecorder', LogLevel.Debug);\n // minLevels.set('AudioVadWorker', LogLevel.Debug);\n // minLevels.set('AudioVadWorkletProcessor', LogLevel.Debug);\n // minLevels.set('OpusEncoderWorker', LogLevel.Debug);\n // minLevels.set('OpusEncoderWorkletProcessor', LogLevel.Debug);\n // minLevels.set('InertialScroll', LogLevel.Debug);\n minLevels.set('VirtualList', LogLevel.Debug);\n // minLevels.set('Landing', LogLevel.Debug);\n // minLevels.set('LandingLeftMenu', LogLevel.Debug);\n // minLevels.set('SideNav', LogLevel.Debug);\n\n // XxxUI\n // minLevels.set('FocusUI', LogLevel.Debug);\n // minLevels.set('KeepAwakeUI', LogLevel.Debug);\n // minLevels.set('NoSleep', LogLevel.Debug);\n // minLevels.set('NotificationUI', LogLevel.Debug);\n // minLevels.set('TuneUI', LogLevel.Debug);\n // minLevels.set('SoundsPlayer', LogLevel.Debug);\n\n // Isolated components\n // minLevels.set('History', LogLevel.Debug);\n // minLevels.set('MenuHost', LogLevel.Debug);\n // minLevels.set('MarkupEditor', LogLevel.Debug);\n // minLevels.set('ChatMessageEditor', LogLevel.Debug);\n\n // minLevels.clear(); // To quickly discard any tweaks :)\n persist(minLevels);\n}\n","import { initLogging, LogLevel, LogScope } from 'logging-init';\nimport 'logging-init';\n\nexport { LogLevel } from './logging-init';\nexport type { LogScope } from './logging-init';\n\nexport interface LogRef {\n target : unknown;\n id : number;\n}\n\ninterface SetItem {\n ref : LogRef;\n touchedAt : number;\n}\n\nclass LogRefSet {\n items : SetItem[];\n capacity : number;\n idSeed : number;\n\n constructor(capacity : number) {\n this.idSeed = 0;\n this.capacity = capacity;\n this.items = [];\n }\n\n public ref(data: object) : LogRef {\n const itemIndex = this.items.findIndex(el => el.ref.target === data);\n if (itemIndex >= 0) {\n const existentItem = this.items[itemIndex];\n existentItem.touchedAt = Date.now();\n return existentItem.ref;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const id = data['__logRefId'] as number ?? this.idSeed++;\n const newRef = { target: data, id: id };\n data['__logRefId'] = id;\n if (this.items.length >= this.capacity)\n this.removeOldest();\n const newItem = { ref : newRef, touchedAt : Date.now() };\n this.items.push(newItem);\n return newRef;\n }\n }\n\n private removeOldest() {\n let indexToEliminate = 0;\n let itemToEliminate = this.items[0];\n for (let i = 1; i < this.items.length; i++) {\n const item = this.items[i];\n if (item.touchedAt < itemToEliminate.touchedAt) {\n itemToEliminate = item;\n indexToEliminate = i;\n }\n }\n this.items.splice(indexToEliminate, 1);\n // clear log ref target to prevent memory leaks\n // and keep string representation of the target for tracing\n const ref = itemToEliminate.ref;\n ref.target = ref.target.toString();\n }\n}\n\nexport class Log {\n private static isInitialized = false;\n private static logRefs : LogRefSet = new LogRefSet(10);\n public static readonly minLevels: Map = new Map();\n public static defaultMinLevel = LogLevel.Info;\n public log: (...data: unknown[]) => void;\n public trace: (...data: unknown[]) => void;\n\n constructor(\n public readonly scope: LogScope,\n public readonly level: LogLevel,\n ) {\n const prefix = `[${scope}]`;\n switch (level) {\n case LogLevel.Debug:\n this.log = (...data: unknown[]) => console.debug(prefix, ...data);\n break;\n case LogLevel.Info:\n this.log = (...data: unknown[]) => console.log(prefix, ...data);\n break;\n case LogLevel.Warn:\n this.log = (...data: unknown[]) => console.warn(prefix, ...data);\n break;\n case LogLevel.Error:\n this.log = (...data: unknown[]) => console.error(prefix, ...data);\n break;\n case LogLevel.None:\n throw new Error('LogLevel.None cannot be used here');\n }\n this.trace = (...data: unknown[]) => console.trace(prefix, ...data);\n }\n\n public static loggerFactory = (scope: LogScope, level: LogLevel) => new Log(scope, level);\n\n public static get(scope: LogScope) {\n if (!this.isInitialized) {\n this.isInitialized = true;\n initLogging(this);\n }\n\n const minLevels = this.minLevels;\n const minLevel = minLevels.get(scope)\n ?? minLevels.get('default')\n ?? this.defaultMinLevel;\n\n const getLogger = (level: LogLevel) => level >= minLevel ? this.loggerFactory(scope, level) : null;\n\n return {\n logScope: scope,\n debugLog: getLogger(LogLevel.Debug),\n infoLog: getLogger(LogLevel.Info),\n warnLog: getLogger(LogLevel.Warn),\n errorLog: getLogger(LogLevel.Error),\n };\n }\n\n public static ref(data: object) : object {\n if (!data)\n return data;\n return this.logRefs.ref(data);\n }\n\n public assert(predicate?: boolean, ...data: unknown[]): void {\n if (!predicate)\n this.log(data);\n }\n}\n","var __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (undefined && undefined.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar toInt = function (n) { return ~~n; };\n/**\n * Heap\n * @type {Class}\n */\nvar Heap = /** @class */ (function () {\n /**\n * Heap instance constructor.\n * @param {Function} compare Optional comparison function, defaults to Heap.minComparator\n */\n function Heap(compare) {\n if (compare === void 0) { compare = Heap.minComparator; }\n var _this = this;\n this.compare = compare;\n this.heapArray = [];\n this._limit = 0;\n /**\n * Alias of add\n */\n this.offer = this.add;\n /**\n * Alias of peek\n */\n this.element = this.peek;\n /**\n * Alias of pop\n */\n this.poll = this.pop;\n /**\n * Returns the inverse to the comparison function.\n * @return {Function}\n */\n this._invertedCompare = function (a, b) {\n return -1 * _this.compare(a, b);\n };\n }\n /*\n Static methods\n */\n /**\n * Gets children indices for given index.\n * @param {Number} idx Parent index\n * @return {Array(Number)} Array of children indices\n */\n Heap.getChildrenIndexOf = function (idx) {\n return [idx * 2 + 1, idx * 2 + 2];\n };\n /**\n * Gets parent index for given index.\n * @param {Number} idx Children index\n * @return {Number | undefined} Parent index, -1 if idx is 0\n */\n Heap.getParentIndexOf = function (idx) {\n if (idx <= 0) {\n return -1;\n }\n var whichChildren = idx % 2 ? 1 : 2;\n return Math.floor((idx - whichChildren) / 2);\n };\n /**\n * Gets sibling index for given index.\n * @param {Number} idx Children index\n * @return {Number | undefined} Sibling index, -1 if idx is 0\n */\n Heap.getSiblingIndexOf = function (idx) {\n if (idx <= 0) {\n return -1;\n }\n var whichChildren = idx % 2 ? 1 : -1;\n return idx + whichChildren;\n };\n /**\n * Min heap comparison function, default.\n * @param {any} a First element\n * @param {any} b Second element\n * @return {Number} 0 if they're equal, positive if `a` goes up, negative if `b` goes up\n */\n Heap.minComparator = function (a, b) {\n if (a > b) {\n return 1;\n }\n else if (a < b) {\n return -1;\n }\n else {\n return 0;\n }\n };\n /**\n * Max heap comparison function.\n * @param {any} a First element\n * @param {any} b Second element\n * @return {Number} 0 if they're equal, positive if `a` goes up, negative if `b` goes up\n */\n Heap.maxComparator = function (a, b) {\n if (b > a) {\n return 1;\n }\n else if (b < a) {\n return -1;\n }\n else {\n return 0;\n }\n };\n /**\n * Min number heap comparison function, default.\n * @param {Number} a First element\n * @param {Number} b Second element\n * @return {Number} 0 if they're equal, positive if `a` goes up, negative if `b` goes up\n */\n Heap.minComparatorNumber = function (a, b) {\n return a - b;\n };\n /**\n * Max number heap comparison function.\n * @param {Number} a First element\n * @param {Number} b Second element\n * @return {Number} 0 if they're equal, positive if `a` goes up, negative if `b` goes up\n */\n Heap.maxComparatorNumber = function (a, b) {\n return b - a;\n };\n /**\n * Default equality function.\n * @param {any} a First element\n * @param {any} b Second element\n * @return {Boolean} True if equal, false otherwise\n */\n Heap.defaultIsEqual = function (a, b) {\n return a === b;\n };\n /**\n * Prints a heap.\n * @param {Heap} heap Heap to be printed\n * @returns {String}\n */\n Heap.print = function (heap) {\n function deep(i) {\n var pi = Heap.getParentIndexOf(i);\n return Math.floor(Math.log2(pi + 1));\n }\n function repeat(str, times) {\n var out = '';\n for (; times > 0; --times) {\n out += str;\n }\n return out;\n }\n var node = 0;\n var lines = [];\n var maxLines = deep(heap.length - 1) + 2;\n var maxLength = 0;\n while (node < heap.length) {\n var i = deep(node) + 1;\n if (node === 0) {\n i = 0;\n }\n // Text representation\n var nodeText = String(heap.get(node));\n if (nodeText.length > maxLength) {\n maxLength = nodeText.length;\n }\n // Add to line\n lines[i] = lines[i] || [];\n lines[i].push(nodeText);\n node += 1;\n }\n return lines\n .map(function (line, i) {\n var times = Math.pow(2, maxLines - i) - 1;\n return (repeat(' ', Math.floor(times / 2) * maxLength) +\n line\n .map(function (el) {\n // centered\n var half = (maxLength - el.length) / 2;\n return repeat(' ', Math.ceil(half)) + el + repeat(' ', Math.floor(half));\n })\n .join(repeat(' ', times * maxLength)));\n })\n .join('\\n');\n };\n /*\n Python style\n */\n /**\n * Converts an array into an array-heap, in place\n * @param {Array} arr Array to be modified\n * @param {Function} compare Optional compare function\n * @return {Heap} For convenience, it returns a Heap instance\n */\n Heap.heapify = function (arr, compare) {\n var heap = new Heap(compare);\n heap.heapArray = arr;\n heap.init();\n return heap;\n };\n /**\n * Extract the peek of an array-heap\n * @param {Array} heapArr Array to be modified, should be a heap\n * @param {Function} compare Optional compare function\n * @return {any} Returns the extracted peek\n */\n Heap.heappop = function (heapArr, compare) {\n var heap = new Heap(compare);\n heap.heapArray = heapArr;\n return heap.pop();\n };\n /**\n * Pushes a item into an array-heap\n * @param {Array} heapArr Array to be modified, should be a heap\n * @param {any} item Item to push\n * @param {Function} compare Optional compare function\n */\n Heap.heappush = function (heapArr, item, compare) {\n var heap = new Heap(compare);\n heap.heapArray = heapArr;\n heap.push(item);\n };\n /**\n * Push followed by pop, faster\n * @param {Array} heapArr Array to be modified, should be a heap\n * @param {any} item Item to push\n * @param {Function} compare Optional compare function\n * @return {any} Returns the extracted peek\n */\n Heap.heappushpop = function (heapArr, item, compare) {\n var heap = new Heap(compare);\n heap.heapArray = heapArr;\n return heap.pushpop(item);\n };\n /**\n * Replace peek with item\n * @param {Array} heapArr Array to be modified, should be a heap\n * @param {any} item Item as replacement\n * @param {Function} compare Optional compare function\n * @return {any} Returns the extracted peek\n */\n Heap.heapreplace = function (heapArr, item, compare) {\n var heap = new Heap(compare);\n heap.heapArray = heapArr;\n return heap.replace(item);\n };\n /**\n * Return the `n` most valuable elements of a heap-like Array\n * @param {Array} heapArr Array, should be an array-heap\n * @param {number} n Max number of elements\n * @param {Function} compare Optional compare function\n * @return {any} Elements\n */\n Heap.heaptop = function (heapArr, n, compare) {\n if (n === void 0) { n = 1; }\n var heap = new Heap(compare);\n heap.heapArray = heapArr;\n return heap.top(n);\n };\n /**\n * Return the `n` least valuable elements of a heap-like Array\n * @param {Array} heapArr Array, should be an array-heap\n * @param {number} n Max number of elements\n * @param {Function} compare Optional compare function\n * @return {any} Elements\n */\n Heap.heapbottom = function (heapArr, n, compare) {\n if (n === void 0) { n = 1; }\n var heap = new Heap(compare);\n heap.heapArray = heapArr;\n return heap.bottom(n);\n };\n /**\n * Return the `n` most valuable elements of an iterable\n * @param {number} n Max number of elements\n * @param {Iterable} Iterable Iterable list of elements\n * @param {Function} compare Optional compare function\n * @return {any} Elements\n */\n Heap.nlargest = function (n, iterable, compare) {\n var heap = new Heap(compare);\n heap.heapArray = __spreadArray([], __read(iterable), false);\n heap.init();\n return heap.top(n);\n };\n /**\n * Return the `n` least valuable elements of an iterable\n * @param {number} n Max number of elements\n * @param {Iterable} Iterable Iterable list of elements\n * @param {Function} compare Optional compare function\n * @return {any} Elements\n */\n Heap.nsmallest = function (n, iterable, compare) {\n var heap = new Heap(compare);\n heap.heapArray = __spreadArray([], __read(iterable), false);\n heap.init();\n return heap.bottom(n);\n };\n /*\n Instance methods\n */\n /**\n * Adds an element to the heap. Aliases: `offer`.\n * Same as: push(element)\n * @param {any} element Element to be added\n * @return {Boolean} true\n */\n Heap.prototype.add = function (element) {\n this._sortNodeUp(this.heapArray.push(element) - 1);\n this._applyLimit();\n return true;\n };\n /**\n * Adds an array of elements to the heap.\n * Similar as: push(element, element, ...).\n * @param {Array} elements Elements to be added\n * @return {Boolean} true\n */\n Heap.prototype.addAll = function (elements) {\n var _a;\n var i = this.length;\n (_a = this.heapArray).push.apply(_a, __spreadArray([], __read(elements), false));\n for (var l = this.length; i < l; ++i) {\n this._sortNodeUp(i);\n }\n this._applyLimit();\n return true;\n };\n /**\n * Return the bottom (lowest value) N elements of the heap.\n *\n * @param {Number} n Number of elements.\n * @return {Array} Array of length <= N.\n */\n Heap.prototype.bottom = function (n) {\n if (n === void 0) { n = 1; }\n if (this.heapArray.length === 0 || n <= 0) {\n // Nothing to do\n return [];\n }\n else if (this.heapArray.length === 1) {\n // Just the peek\n return [this.heapArray[0]];\n }\n else if (n >= this.heapArray.length) {\n // The whole heap\n return __spreadArray([], __read(this.heapArray), false);\n }\n else {\n // Some elements\n var result = this._bottomN_push(~~n);\n return result;\n }\n };\n /**\n * Check if the heap is sorted, useful for testing purposes.\n * @return {Undefined | Element} Returns an element if something wrong is found, otherwise it's undefined\n */\n Heap.prototype.check = function () {\n var _this = this;\n return this.heapArray.find(function (el, j) { return !!_this.getChildrenOf(j).find(function (ch) { return _this.compare(el, ch) > 0; }); });\n };\n /**\n * Remove all of the elements from this heap.\n */\n Heap.prototype.clear = function () {\n this.heapArray = [];\n };\n /**\n * Clone this heap\n * @return {Heap}\n */\n Heap.prototype.clone = function () {\n var cloned = new Heap(this.comparator());\n cloned.heapArray = this.toArray();\n cloned._limit = this._limit;\n return cloned;\n };\n /**\n * Returns the comparison function.\n * @return {Function}\n */\n Heap.prototype.comparator = function () {\n return this.compare;\n };\n /**\n * Returns true if this queue contains the specified element.\n * @param {any} o Element to be found\n * @param {Function} fn Optional comparison function, receives (element, needle)\n * @return {Boolean}\n */\n Heap.prototype.contains = function (o, fn) {\n if (fn === void 0) { fn = Heap.defaultIsEqual; }\n return this.heapArray.findIndex(function (el) { return fn(el, o); }) >= 0;\n };\n /**\n * Initialise a heap, sorting nodes\n * @param {Array} array Optional initial state array\n */\n Heap.prototype.init = function (array) {\n if (array) {\n this.heapArray = __spreadArray([], __read(array), false);\n }\n for (var i = Math.floor(this.heapArray.length); i >= 0; --i) {\n this._sortNodeDown(i);\n }\n this._applyLimit();\n };\n /**\n * Test if the heap has no elements.\n * @return {Boolean} True if no elements on the heap\n */\n Heap.prototype.isEmpty = function () {\n return this.length === 0;\n };\n /**\n * Get the leafs of the tree (no children nodes)\n */\n Heap.prototype.leafs = function () {\n if (this.heapArray.length === 0) {\n return [];\n }\n var pi = Heap.getParentIndexOf(this.heapArray.length - 1);\n return this.heapArray.slice(pi + 1);\n };\n Object.defineProperty(Heap.prototype, \"length\", {\n /**\n * Length of the heap.\n * @return {Number}\n */\n get: function () {\n return this.heapArray.length;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Heap.prototype, \"limit\", {\n /**\n * Get length limit of the heap.\n * @return {Number}\n */\n get: function () {\n return this._limit;\n },\n /**\n * Set length limit of the heap.\n * @return {Number}\n */\n set: function (_l) {\n this._limit = ~~_l;\n this._applyLimit();\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Top node. Aliases: `element`.\n * Same as: `top(1)[0]`\n * @return {any} Top node\n */\n Heap.prototype.peek = function () {\n return this.heapArray[0];\n };\n /**\n * Extract the top node (root). Aliases: `poll`.\n * @return {any} Extracted top node, undefined if empty\n */\n Heap.prototype.pop = function () {\n var last = this.heapArray.pop();\n if (this.length > 0 && last !== undefined) {\n return this.replace(last);\n }\n return last;\n };\n /**\n * Pushes element(s) to the heap.\n * @param {...any} elements Elements to insert\n * @return {Boolean} True if elements are present\n */\n Heap.prototype.push = function () {\n var elements = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n elements[_i] = arguments[_i];\n }\n if (elements.length < 1) {\n return false;\n }\n else if (elements.length === 1) {\n return this.add(elements[0]);\n }\n else {\n return this.addAll(elements);\n }\n };\n /**\n * Same as push & pop in sequence, but faster\n * @param {any} element Element to insert\n * @return {any} Extracted top node\n */\n Heap.prototype.pushpop = function (element) {\n var _a;\n if (this.compare(this.heapArray[0], element) < 0) {\n _a = __read([this.heapArray[0], element], 2), element = _a[0], this.heapArray[0] = _a[1];\n this._sortNodeDown(0);\n }\n return element;\n };\n /**\n * Remove an element from the heap.\n * @param {any} o Element to be found\n * @param {Function} fn Optional function to compare\n * @return {Boolean} True if the heap was modified\n */\n Heap.prototype.remove = function (o, fn) {\n if (fn === void 0) { fn = Heap.defaultIsEqual; }\n if (this.length > 0) {\n if (o === undefined) {\n this.pop();\n return true;\n }\n else {\n var idx = this.heapArray.findIndex(function (el) { return fn(el, o); });\n if (idx >= 0) {\n if (idx === 0) {\n this.pop();\n }\n else if (idx === this.length - 1) {\n this.heapArray.pop();\n }\n else {\n this.heapArray.splice(idx, 1, this.heapArray.pop());\n this._sortNodeUp(idx);\n this._sortNodeDown(idx);\n }\n return true;\n }\n }\n }\n return false;\n };\n /**\n * Pop the current peek value, and add the new item.\n * @param {any} element Element to replace peek\n * @return {any} Old peek\n */\n Heap.prototype.replace = function (element) {\n var peek = this.heapArray[0];\n this.heapArray[0] = element;\n this._sortNodeDown(0);\n return peek;\n };\n /**\n * Size of the heap\n * @return {Number}\n */\n Heap.prototype.size = function () {\n return this.length;\n };\n /**\n * Return the top (highest value) N elements of the heap.\n *\n * @param {Number} n Number of elements.\n * @return {Array} Array of length <= N.\n */\n Heap.prototype.top = function (n) {\n if (n === void 0) { n = 1; }\n if (this.heapArray.length === 0 || n <= 0) {\n // Nothing to do\n return [];\n }\n else if (this.heapArray.length === 1 || n === 1) {\n // Just the peek\n return [this.heapArray[0]];\n }\n else if (n >= this.heapArray.length) {\n // The whole peek\n return __spreadArray([], __read(this.heapArray), false);\n }\n else {\n // Some elements\n var result = this._topN_push(~~n);\n return result;\n }\n };\n /**\n * Clone the heap's internal array\n * @return {Array}\n */\n Heap.prototype.toArray = function () {\n return __spreadArray([], __read(this.heapArray), false);\n };\n /**\n * String output, call to Array.prototype.toString()\n * @return {String}\n */\n Heap.prototype.toString = function () {\n return this.heapArray.toString();\n };\n /**\n * Get the element at the given index.\n * @param {Number} i Index to get\n * @return {any} Element at that index\n */\n Heap.prototype.get = function (i) {\n return this.heapArray[i];\n };\n /**\n * Get the elements of these node's children\n * @param {Number} idx Node index\n * @return {Array(any)} Children elements\n */\n Heap.prototype.getChildrenOf = function (idx) {\n var _this = this;\n return Heap.getChildrenIndexOf(idx)\n .map(function (i) { return _this.heapArray[i]; })\n .filter(function (e) { return e !== undefined; });\n };\n /**\n * Get the element of this node's parent\n * @param {Number} idx Node index\n * @return {any} Parent element\n */\n Heap.prototype.getParentOf = function (idx) {\n var pi = Heap.getParentIndexOf(idx);\n return this.heapArray[pi];\n };\n /**\n * Iterator interface\n */\n Heap.prototype[Symbol.iterator] = function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.length) return [3 /*break*/, 2];\n return [4 /*yield*/, this.pop()];\n case 1:\n _a.sent();\n return [3 /*break*/, 0];\n case 2: return [2 /*return*/];\n }\n });\n };\n /**\n * Returns an iterator. To comply with Java interface.\n */\n Heap.prototype.iterator = function () {\n return this.toArray();\n };\n /**\n * Limit heap size if needed\n */\n Heap.prototype._applyLimit = function () {\n if (this._limit && this._limit < this.heapArray.length) {\n var rm = this.heapArray.length - this._limit;\n // It's much faster than splice\n while (rm) {\n this.heapArray.pop();\n --rm;\n }\n }\n };\n /**\n * Return the bottom (lowest value) N elements of the heap, without corner cases, unsorted\n *\n * @param {Number} n Number of elements.\n * @return {Array} Array of length <= N.\n */\n Heap.prototype._bottomN_push = function (n) {\n // Use an inverted heap\n var bottomHeap = new Heap(this.compare);\n bottomHeap.limit = n;\n bottomHeap.heapArray = this.heapArray.slice(-n);\n bottomHeap.init();\n var startAt = this.heapArray.length - 1 - n;\n var parentStartAt = Heap.getParentIndexOf(startAt);\n var indices = [];\n for (var i = startAt; i > parentStartAt; --i) {\n indices.push(i);\n }\n var arr = this.heapArray;\n while (indices.length) {\n var i = indices.shift();\n if (this.compare(arr[i], bottomHeap.peek()) > 0) {\n bottomHeap.replace(arr[i]);\n if (i % 2) {\n indices.push(Heap.getParentIndexOf(i));\n }\n }\n }\n return bottomHeap.toArray();\n };\n /**\n * Move a node to a new index, switching places\n * @param {Number} j First node index\n * @param {Number} k Another node index\n */\n Heap.prototype._moveNode = function (j, k) {\n var _a;\n _a = __read([this.heapArray[k], this.heapArray[j]], 2), this.heapArray[j] = _a[0], this.heapArray[k] = _a[1];\n };\n /**\n * Move a node down the tree (to the leaves) to find a place where the heap is sorted.\n * @param {Number} i Index of the node\n */\n Heap.prototype._sortNodeDown = function (i) {\n var _this = this;\n var moveIt = i < this.heapArray.length - 1;\n var self = this.heapArray[i];\n var getPotentialParent = function (best, j) {\n if (_this.heapArray.length > j && _this.compare(_this.heapArray[j], _this.heapArray[best]) < 0) {\n best = j;\n }\n return best;\n };\n while (moveIt) {\n var childrenIdx = Heap.getChildrenIndexOf(i);\n var bestChildIndex = childrenIdx.reduce(getPotentialParent, childrenIdx[0]);\n var bestChild = this.heapArray[bestChildIndex];\n if (typeof bestChild !== 'undefined' && this.compare(self, bestChild) > 0) {\n this._moveNode(i, bestChildIndex);\n i = bestChildIndex;\n }\n else {\n moveIt = false;\n }\n }\n };\n /**\n * Move a node up the tree (to the root) to find a place where the heap is sorted.\n * @param {Number} i Index of the node\n */\n Heap.prototype._sortNodeUp = function (i) {\n var moveIt = i > 0;\n while (moveIt) {\n var pi = Heap.getParentIndexOf(i);\n if (pi >= 0 && this.compare(this.heapArray[pi], this.heapArray[i]) > 0) {\n this._moveNode(i, pi);\n i = pi;\n }\n else {\n moveIt = false;\n }\n }\n };\n /**\n * Return the top (highest value) N elements of the heap, without corner cases, unsorted\n * Implementation: push.\n *\n * @param {Number} n Number of elements.\n * @return {Array} Array of length <= N.\n */\n Heap.prototype._topN_push = function (n) {\n // Use an inverted heap\n var topHeap = new Heap(this._invertedCompare);\n topHeap.limit = n;\n var indices = [0];\n var arr = this.heapArray;\n while (indices.length) {\n var i = indices.shift();\n if (i < arr.length) {\n if (topHeap.length < n) {\n topHeap.push(arr[i]);\n indices.push.apply(indices, __spreadArray([], __read(Heap.getChildrenIndexOf(i)), false));\n }\n else if (this.compare(arr[i], topHeap.peek()) < 0) {\n topHeap.replace(arr[i]);\n indices.push.apply(indices, __spreadArray([], __read(Heap.getChildrenIndexOf(i)), false));\n }\n }\n }\n return topHeap.toArray();\n };\n /**\n * Return the top (highest value) N elements of the heap, without corner cases, unsorted\n * Implementation: init + push.\n *\n * @param {Number} n Number of elements.\n * @return {Array} Array of length <= N.\n */\n Heap.prototype._topN_fill = function (n) {\n // Use an inverted heap\n var heapArray = this.heapArray;\n var topHeap = new Heap(this._invertedCompare);\n topHeap.limit = n;\n topHeap.heapArray = heapArray.slice(0, n);\n topHeap.init();\n var branch = Heap.getParentIndexOf(n - 1) + 1;\n var indices = [];\n for (var i = branch; i < n; ++i) {\n indices.push.apply(indices, __spreadArray([], __read(Heap.getChildrenIndexOf(i).filter(function (l) { return l < heapArray.length; })), false));\n }\n if ((n - 1) % 2) {\n indices.push(n);\n }\n while (indices.length) {\n var i = indices.shift();\n if (i < heapArray.length) {\n if (this.compare(heapArray[i], topHeap.peek()) < 0) {\n topHeap.replace(heapArray[i]);\n indices.push.apply(indices, __spreadArray([], __read(Heap.getChildrenIndexOf(i)), false));\n }\n }\n }\n return topHeap.toArray();\n };\n /**\n * Return the top (highest value) N elements of the heap, without corner cases, unsorted\n * Implementation: heap.\n *\n * @param {Number} n Number of elements.\n * @return {Array} Array of length <= N.\n */\n Heap.prototype._topN_heap = function (n) {\n var topHeap = this.clone();\n var result = [];\n for (var i = 0; i < n; ++i) {\n result.push(topHeap.pop());\n }\n return result;\n };\n /**\n * Return index of the top element\n * @param list\n */\n Heap.prototype._topIdxOf = function (list) {\n if (!list.length) {\n return -1;\n }\n var idx = 0;\n var top = list[idx];\n for (var i = 1; i < list.length; ++i) {\n var comp = this.compare(list[i], top);\n if (comp < 0) {\n idx = i;\n top = list[i];\n }\n }\n return idx;\n };\n /**\n * Return the top element\n * @param list\n */\n Heap.prototype._topOf = function () {\n var list = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n list[_i] = arguments[_i];\n }\n var heap = new Heap(this.compare);\n heap.init(list);\n return heap.peek();\n };\n return Heap;\n}());\n\nexport { Heap, Heap as default, toInt };\n","import Heap from 'heap-js';\nimport { Log } from 'logging';\n\nconst { errorLog } = Log.get('TimerQueue');\n\nexport class TimerQueueTimer {\n constructor(\n public readonly handle: number,\n public callback: () => unknown,\n public readonly time: number) {\n }\n\n public clear() {\n this.callback = null;\n }\n}\n\nlet nextHandle = 1;\n\nexport class TimerQueue {\n private readonly map = new Map();\n private readonly heap = new Heap((a: TimerQueueTimer, b: TimerQueueTimer) => b.time - a.time);\n\n public enqueue(delayMs: number, callback: () => unknown): TimerQueueTimer {\n const handle = nextHandle++;\n if (handle & 15) {\n // We want to make sure expired timers trigger even if triggerExpired()\n // somehow isn't invoked explicitly.\n this.triggerExpired();\n }\n\n const now = Date.now();\n const timer = new TimerQueueTimer(handle, callback, now + delayMs);\n this.map.set(timer.handle, timer);\n this.heap.add(timer);\n return timer;\n }\n\n public get(handle: number): TimerQueueTimer | undefined {\n return this.map.get(handle);\n }\n\n public readonly triggerExpired = (): void => {\n const now = Date.now();\n for (;;) {\n const timer = this.heap.peek();\n if (!timer || timer.time > now)\n break;\n this.heap.pop();\n this.map.delete(timer.handle);\n if (!timer.callback)\n continue\n\n try {\n timer.callback();\n }\n catch (e) {\n errorLog?.log('Callback failed:', e);\n }\n }\n }\n\n // setTimeout / clearTimeout\n\n public readonly setTimeout = (callback: () => unknown, delayMs: number): number => {\n return this.enqueue(delayMs, callback).handle;\n }\n\n public readonly clearTimeout = (handle: number): void => {\n this.get(handle)?.clear();\n }\n}\n\nconst setTimeoutImpl = globalThis['setTimeout'] as (callback: () => unknown, delayMs: number) => number;\nconst clearTimeoutImpl = globalThis['clearTimeout'] as (handle: number) => void;\n\nexport const timerQueue = !setTimeoutImpl ? new TimerQueue() : null;\nexport const setTimeout = timerQueue ? timerQueue.setTimeout : setTimeoutImpl;\nexport const clearTimeout = timerQueue ? timerQueue.clearTimeout : clearTimeoutImpl;\n","// nextTick & nextTickAsync are quite similar to polyfill of\n// [setImmediate](https://developer.mozilla.org/en-US/docs/Web/API/Window/setImmediate),\n// which we don't use because it relies on setTimeout, which is throttled in background tabs.\nimport { Disposable } from 'disposable';\nimport { setTimeout, clearTimeout } from 'timerQueue';\n\nlet nextTickImpl: (callback: () => unknown) => void = null;\n\nif (globalThis['MessageChannel']) {\n const nextTickCallbacks = new Array<() => unknown>();\n const nextTickChannel = new MessageChannel();\n nextTickChannel.port1.onmessage = () => {\n const callback = nextTickCallbacks.shift();\n callback();\n };\n\n nextTickImpl = (callback: () => unknown) => {\n nextTickCallbacks.push(callback);\n nextTickChannel.port2.postMessage(null);\n }\n}\nelse {\n // MessageChannel is unavailable in AudioWorklets, so we use setTimeout-based version here,\n // which implies ~ 8-9ms delay in average.\n nextTickImpl = (callback: () => unknown) => setTimeout(callback, 0);\n}\n\nexport const nextTick = nextTickImpl;\nexport const nextTickAsync = () => new Promise(resolve => nextTick(resolve));\n\n// Timeout: a nicer wrapper around setTimeout\n\nexport class Timeout implements Disposable {\n protected handle: number | null = null;\n\n static start(isPrecise: boolean, timeoutMs: number, callback: () => unknown): Timeout {\n return isPrecise\n ? new PreciseTimeout(timeoutMs, callback)\n : new Timeout(timeoutMs, callback);\n }\n\n static startRegular(timeoutMs: number, callback: () => unknown): Timeout {\n return new Timeout(timeoutMs, callback);\n }\n\n static startPrecise(timeoutMs: number, callback: () => unknown): PreciseTimeout {\n return new PreciseTimeout(timeoutMs, callback);\n }\n\n constructor(timeoutMs?: number, callback?: () => unknown, handle?: number) {\n if (handle) {\n this.handle = handle;\n return;\n }\n\n this.handle = setTimeout(callback, timeoutMs) as unknown as number;\n return;\n }\n\n public dispose(): void {\n this.clear();\n }\n\n public clear(): void {\n if (this.handle) {\n clearTimeout(this.handle)\n this.handle = null;\n }\n }\n}\n\n// Precise timeout (5-16ms?) based on requestAnimationFrame\n\nconst disablePreciseTimeout = false;\n\nexport class PreciseTimeout extends Timeout {\n constructor(timeoutMs: number, callback: () => unknown,) {\n if (disablePreciseTimeout) {\n super(timeoutMs, callback);\n return;\n }\n\n // Precise timeout handling\n const endsAt = Date.now() + timeoutMs;\n const loop = () => {\n if (Date.now() >= endsAt)\n callback();\n else\n this.handle = requestAnimationFrame(loop);\n };\n super(undefined, undefined, requestAnimationFrame(loop));\n }\n\n public clear(): void {\n if (disablePreciseTimeout)\n return super.clear();\n\n if (this.handle) {\n cancelAnimationFrame(this.handle);\n this.handle = null;\n }\n }\n}\n","import { Log } from 'logging';\nimport { PreciseTimeout, Timeout } from 'timeout';\nimport { Disposable } from 'disposable';\n\nconst { logScope, debugLog, warnLog, errorLog } = Log.get('promises');\n\nexport class TimedOut {\n public static readonly instance: TimedOut = new TimedOut();\n}\n\nexport function isPromise(obj: PromiseLike | S): obj is PromiseLike {\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj['then'] === 'function';\n}\n\nexport class PromiseSource implements Promise {\n public resolve: (T) => void;\n public reject: (any) => void;\n\n private readonly _promise: Promise;\n private _isCompleted = false;\n\n constructor(resolve?: ((value: T) => void), reject?: ((reason?: unknown) => void)) {\n this._promise = new Promise((resolve1, reject1) => {\n this.resolve = (value: T) => {\n if (this._isCompleted)\n return;\n\n this._isCompleted = true;\n resolve1(value);\n if (resolve)\n resolve(value);\n };\n this.reject = (reason: unknown) => {\n if (this._isCompleted)\n return;\n\n this._isCompleted = true;\n reject1(reason);\n if (reject)\n reject(reason);\n };\n })\n this[Symbol.toStringTag] = this._promise[Symbol.toStringTag];\n }\n\n public isCompleted(): boolean {\n return this._isCompleted;\n }\n\n // PromiseLike implementation\n\n readonly [Symbol.toStringTag]: string;\n\n then(\n onfulfilled?: ((value: T) => (PromiseLike | TResult1)) | undefined | null,\n onrejected?: ((reason: any) => (PromiseLike | TResult2)) | undefined | null\n ): Promise {\n return this._promise.then(onfulfilled, onrejected);\n }\n\n catch(\n onrejected?: ((reason: any) => (PromiseLike | TResult)) | undefined | null\n ): Promise {\n return this._promise.catch(onrejected);\n }\n\n finally(onfinally?: (() => void) | undefined | null): Promise {\n return this._promise.finally(onfinally);\n }\n}\n\nexport class PromiseSourceWithTimeout extends PromiseSource {\n private _timeout: Timeout = null;\n\n constructor(resolve?: ((value: T) => void), reject?: ((reason?: unknown) => void)) {\n super((value: T) => {\n this.clearTimeout();\n if (resolve)\n resolve(value);\n }, (reason: unknown) => {\n this.clearTimeout();\n if (reject)\n reject(reason);\n });\n }\n\n public hasTimeout(): boolean {\n return this._timeout != null;\n }\n\n public setTimeout(timeoutMs: number | null, callback?: () => unknown): void {\n if (this._timeout) {\n this._timeout.clear();\n this._timeout = null;\n }\n if (timeoutMs == null || this.isCompleted())\n return;\n\n this._timeout = new Timeout(timeoutMs, () => {\n this._timeout = null;\n if (callback != null)\n callback();\n else {\n const error = new Error('The promise has timed out.');\n this.reject(error);\n }\n })\n }\n\n public setPreciseTimeout(timeoutMs: number | null, callback?: () => unknown): void {\n if (this._timeout) {\n this._timeout.clear();\n this._timeout = null;\n }\n if (timeoutMs == null || this.isCompleted())\n return;\n\n this._timeout = new PreciseTimeout(timeoutMs, () => {\n this._timeout = null;\n if (callback != null)\n callback();\n else {\n const error = new Error('The promise has timed out.');\n this.reject(error);\n }\n })\n }\n\n public clearTimeout(): void {\n if (this._timeout == null)\n return;\n\n this._timeout.clear();\n this._timeout = null;\n }\n}\n\n// Cancellation\n\nexport type Cancelled = symbol;\nexport const cancelled : Cancelled = Symbol('Cancelled');\nexport class OperationCancelledError extends Error {\n constructor(message?: string) {\n super(message ?? 'The operation is cancelled.');\n }\n}\n\nexport async function waitAsync(promise: PromiseLike, cancel?: Promise): Promise {\n if (cancel === undefined)\n return await promise;\n\n const result = await Promise.race([promise, cancel]);\n if (result === cancelled)\n throw new OperationCancelledError();\n return await promise;\n}\n\n// Async versions of setTimeout\n\nexport function delayAsync(delayMs: number): PromiseSourceWithTimeout {\n const promise = new PromiseSourceWithTimeout();\n promise.setTimeout(delayMs, () => promise.resolve(undefined))\n return promise;\n}\n\nexport function delayAsyncWith(delayMs: number, value: T): PromiseSourceWithTimeout {\n const promise = new PromiseSourceWithTimeout();\n promise.setTimeout(delayMs, () => { promise.resolve(value) });\n return promise;\n}\n\nexport function preciseDelayAsync(delayMs: number): PromiseSourceWithTimeout {\n const promise = new PromiseSourceWithTimeout();\n promise.setPreciseTimeout(delayMs, () => promise.resolve(undefined))\n return promise;\n}\n\nexport function flexibleDelayAsync(getNextTimeout: () => number): PromiseSourceWithTimeout {\n // eslint-disable-next-line no-constant-condition\n const promise = new PromiseSourceWithTimeout();\n const timeoutHandler = () => {\n const timeout = getNextTimeout();\n if (timeout <= 0)\n promise.resolve(undefined);\n else\n promise.setTimeout(timeout, timeoutHandler);\n };\n promise.setTimeout(getNextTimeout(), timeoutHandler);\n return promise;\n}\n\n// Throttle & debounce\n\nexport interface ResettableFunc unknown> {\n (...args: Parameters): void;\n reset(): void;\n}\n\nclass Call unknown> {\n constructor(\n readonly func: (...args: Parameters) => ReturnType,\n readonly self: unknown,\n readonly parameters: Parameters\n ) { }\n\n public invoke(): unknown {\n return this.func.apply(this.self, this.parameters);\n }\n\n public invokeSilently(): unknown {\n try {\n return this.invoke();\n }\n catch (error) {\n errorLog?.log(`Call.invokeSafely: unhandled error:`, error)\n }\n }\n}\n\nexport type ThrottleMode = 'default' | 'skip' | 'delayHead';\n\nexport function throttle unknown>(\n func: (...args: Parameters) => ReturnType,\n intervalMs: number,\n mode: ThrottleMode = 'default',\n name : string | undefined = undefined\n): ResettableFunc {\n let lastCall: Call | null = null;\n let nextFireTime = 0;\n let timeoutHandle: ReturnType | null = null;\n\n const reset = () => {\n if (timeoutHandle !== null)\n clearTimeout(timeoutHandle);\n timeoutHandle = lastCall = null;\n nextFireTime = 0;\n }\n\n const fire = () => {\n if (timeoutHandle !== null)\n clearTimeout(timeoutHandle);\n\n if (lastCall !== null) {\n if (name)\n debugLog?.log(`throttle '${name}': fire`);\n const call = lastCall;\n lastCall = null;\n nextFireTime = Date.now() + intervalMs;\n timeoutHandle = setTimeout(fire, intervalMs);\n call?.invokeSilently(); // This must be done at last\n }\n else {\n if (name)\n debugLog?.log(`throttle '${name}': delay ended`);\n timeoutHandle = null;\n nextFireTime = 0;\n }\n };\n\n const result: ResettableFunc = function(...callArgs: Parameters): void {\n const call = new Call(func, this, callArgs);\n const fireDelay = nextFireTime - Date.now();\n if (timeoutHandle !== null && fireDelay <= 0) {\n // Our delayed \"fire\" is ready to fire but not fired yet,\n // so we \"flush\" it here.\n fire();\n }\n\n if (timeoutHandle === null) {\n // lastCall is null here\n nextFireTime = Date.now() + intervalMs;\n timeoutHandle = setTimeout(fire, intervalMs);\n if (mode === 'delayHead') {\n if (name)\n debugLog?.log(`throttle '${name}': delaying head call`);\n lastCall = call;\n } else { // skip or default mode\n if (name)\n debugLog?.log(`throttle '${name}': fire (head call)`);\n call?.invokeSilently();\n }\n } else {\n // timeoutHandle !== null, so all we need to do here is to update lastCall\n if (name)\n debugLog?.log(`throttle '${name}': throttling, remaining delay = ${fireDelay}ms`);\n if (mode !== 'skip') // i.e. delayHead\n lastCall = call;\n }\n }\n result.reset = reset;\n return result;\n}\n\nexport function debounce unknown>(\n func: (...args: Parameters) => ReturnType,\n intervalMs: number,\n name : string | undefined = undefined\n): ResettableFunc {\n let lastCall: Call | null = null;\n let nextFireTime = 0;\n let timeoutHandle: ReturnType | null = null;\n\n const reset = () => {\n // we should not clear timeout there because it leads to clear\\set timeout useless cycle\n timeoutHandle = lastCall = null;\n nextFireTime = 0;\n }\n\n const fire = () => {\n if (timeoutHandle !== null)\n clearTimeout(timeoutHandle);\n timeoutHandle = null;\n\n const fireDelay = nextFireTime - Date.now();\n if (fireDelay <= 0) {\n nextFireTime = 0;\n if (lastCall !== null) {\n if (name)\n debugLog?.log(`debounce '${name}': fire`);\n const call = lastCall;\n lastCall = null;\n call?.invokeSilently(); // This must be done at last\n }\n }\n else {\n // debounce has already been called yet another time, but we have triggered on previous call timeout\n // so let's schedule a new timer\n timeoutHandle = setTimeout(fire, fireDelay);\n }\n };\n\n const result: ResettableFunc = function(...callArgs: Parameters): void {\n const call = new Call(func, this, callArgs);\n\n nextFireTime = Date.now() + intervalMs;\n lastCall = call;\n\n if (timeoutHandle === null)\n timeoutHandle = setTimeout(fire, intervalMs);\n if (name)\n debugLog?.log(`debounce '${name}': debouncing`);\n };\n result.reset = reset;\n return result;\n}\n\n// Serialize\n\nexport function serialize PromiseLike | TResult, TResult>(\n func: (...args: Parameters) => PromiseLike | TResult,\n limit: number | null = null\n): (...sArgs: Parameters) => Promise {\n let lastCall: Promise = Promise.resolve(null as TResult);\n let queueSize = 0;\n\n return function(...callArgs: Parameters): Promise {\n if (limit != null && queueSize >= limit)\n return lastCall;\n\n queueSize++;\n const prevCall = lastCall;\n return lastCall = (async () => {\n try {\n await prevCall;\n return (await func.apply(this, callArgs)) as TResult;\n }\n finally {\n queueSize--;\n }\n })();\n }\n}\n\n// Retry & catchErrors\n\ntype RetryDelaySeq = (tryIndex: number) => number;\nconst defaultRetryDelays: RetryDelaySeq = () => 50;\n\nexport async function retryForever(\n fn: (tryIndex: number, lastError: unknown) => PromiseLike | TResult,\n retryDelays?: RetryDelaySeq,\n) : Promise {\n retryDelays ??= defaultRetryDelays;\n let lastError: unknown = undefined;\n for (let tryIndex = 0;;) {\n try {\n return await fn(tryIndex, lastError);\n }\n catch (e) {\n lastError = e;\n }\n ++tryIndex;\n warnLog?.log(`retry(${tryIndex}): error:`, lastError);\n await delayAsync(retryDelays(tryIndex));\n }\n}\n\nexport async function retry(\n tryCount: number,\n fn: (tryIndex: number, lastError: unknown) => PromiseLike | TResult,\n retryDelays?: RetryDelaySeq,\n) : Promise {\n retryDelays ??= defaultRetryDelays;\n let lastError: unknown = undefined;\n for (let tryIndex = 0;;) {\n if (tryIndex >= tryCount)\n throw lastError;\n\n try {\n return await fn(tryIndex, lastError);\n }\n catch (e) {\n lastError = e;\n }\n ++tryIndex;\n warnLog?.log(`retry(${tryIndex}/${tryCount}): error:`, lastError);\n await delayAsync(retryDelays(tryIndex));\n }\n}\n\nexport async function catchErrors(\n fn: () => PromiseLike | TResult,\n onError?: (e: unknown) => TResult,\n) : Promise {\n try {\n return await fn();\n }\n catch (e) {\n return onError ? onError(e) : undefined;\n }\n}\n\nexport class AsyncLockReleaser implements Disposable {\n private readonly _whenReleased: PromiseSource;\n constructor(public readonly asyncLock: AsyncLock) {\n if (asyncLock.releaser != null)\n throw new Error(`${logScope}.AsyncLockReleaser cannot be created while the lock is held.`);\n\n asyncLock.releaser = this;\n this._whenReleased = new PromiseSource(\n () => {\n if (asyncLock.releaser != this)\n throw new Error(`${logScope}.AsyncLockReleaser is associated with another releaser.`);\n\n asyncLock.releaser = null;\n return;\n },\n () => `${logScope}.AsyncLockReleaser.released cannot be rejected.`);\n }\n\n public whenReleased(): Promise {\n return this._whenReleased;\n }\n\n dispose(): void {\n this._whenReleased.resolve(undefined);\n }\n}\n\nexport class AsyncLock {\n public releaser: AsyncLockReleaser = null;\n\n public async lock(): Promise {\n if (this.releaser != null)\n await this.releaser.whenReleased();\n return new AsyncLockReleaser(this);\n }\n}\n\nexport class ResolvedPromise {\n public static readonly Void = new PromiseSource();\n public static readonly True = new PromiseSource();\n public static readonly False = new PromiseSource();\n}\nResolvedPromise.Void.resolve(undefined);\nResolvedPromise.True.resolve(true);\nResolvedPromise.False.resolve(false);\n\n// Self-test - we don't want to run it in workers & worklets\nconst mustRunSelfTest = debugLog != null && globalThis['focus'];\nif (mustRunSelfTest) {\n const testLog = errorLog;\n if (!testLog)\n throw new Error('testLog == null');\n void (async () => {\n const c = new PromiseSource();\n const p = waitAsync(delayAsync(1000), c);\n c.resolve(cancelled);\n try {\n await p;\n throw new Error('Failed!');\n }\n catch (e) {\n if (!(e instanceof OperationCancelledError))\n throw e;\n }\n })();\n}\n","import Denque from 'denque';\nimport { PromiseSource } from 'promises';\nimport { Log } from 'logging';\n\nconst { debugLog, errorLog } = Log.get('AsyncProcessor');\n\nexport class AsyncProcessor {\n private readonly queue = new Denque();\n private whenReadyToResume = new PromiseSource();\n private _isRunning = true;\n\n public get isRunning(): boolean { return this._isRunning }\n public readonly whenRunning: Promise;\n\n constructor(\n private readonly name: string,\n private readonly process: (item: T) => Promise,\n ) {\n this.whenRunning = this.run();\n }\n\n public enqueue(item: T, mustFailIfAlreadyStopped = true) {\n if (!this._isRunning) {\n if (mustFailIfAlreadyStopped)\n throw new Error(`${this.name} is already stopping or stopped.`);\n return;\n }\n\n this.queue.push(item);\n if (!this.whenReadyToResume.isCompleted())\n this.whenReadyToResume.resolve(undefined);\n }\n\n public clearQueue() {\n this.queue.clear();\n }\n\n private async run(): Promise {\n debugLog?.log(`${this.name} started.`);\n try {\n for (;;) {\n while (this.queue.length) {\n const item = this.queue.shift();\n this._isRunning &&= await this.process(item);\n if (!this._isRunning) {\n debugLog?.log(`${this.name} stopped.`);\n return;\n }\n }\n await this.whenReadyToResume;\n this.whenReadyToResume = new PromiseSource();\n }\n }\n catch (e) {\n errorLog?.log(`${this.name} failed:`, e);\n throw e;\n }\n finally {\n this.queue.clear();\n }\n }\n}\n","import { delayAsync, PromiseSourceWithTimeout, ResolvedPromise } from 'promises';\nimport { Disposable } from 'disposable';\nimport { Log } from 'logging';\n\nconst { debugLog, warnLog, errorLog } = Log.get('Rpc');\n\nexport type RpcNoWait = symbol;\nexport const rpcNoWait : RpcNoWait = Symbol('RpcNoWait');\n\nexport interface RpcTimeout {\n type: 'rpc-timeout',\n timeoutMs: number;\n}\n\nexport class RpcCall {\n public readonly timeoutMs?: number;\n\n constructor(\n public id: number,\n public readonly method: string,\n public readonly args: unknown[],\n timeoutMs?: number,\n public readonly noWait: boolean = false,\n ) {\n this.timeoutMs = timeoutMs ?? null;\n if (args?.length > 0) {\n const lastArg = args[args.length - 1];\n if (lastArg == rpcNoWait) {\n args.pop();\n this.noWait = true;\n }\n else if (lastArg['type'] && lastArg['type'] === 'rpc-timeout') {\n args.pop();\n const rpcTimeout = lastArg as RpcTimeout;\n this.timeoutMs = rpcTimeout.timeoutMs;\n }\n }\n }\n}\n\nexport class RpcResult {\n public static value(id: number, value: unknown): RpcResult {\n return new RpcResult(id, value, undefined);\n }\n\n public static error(id: number, error: unknown): RpcResult {\n return new RpcResult(id, undefined, error);\n }\n\n constructor(\n public readonly id: number,\n public readonly value: unknown,\n public readonly error: unknown,\n ) { }\n}\n\nlet nextRpcPromiseId = 1;\nconst rpcPromisesInProgress = new Map>();\n\nexport class RpcPromise extends PromiseSourceWithTimeout {\n public readonly id: number;\n public static Void = new RpcPromise('Void' as unknown as number);\n\n constructor(id?: number) {\n super();\n this.id = id ?? nextRpcPromiseId++;\n const oldResolve = this.resolve;\n const oldReject = this.reject;\n this.resolve = (value: T) => {\n debugLog?.log(`RpcPromise.resolve[#${this.id}] =`, value)\n this.unregister();\n oldResolve(value);\n };\n this.reject = (reason: unknown) => {\n debugLog?.log(`RpcPromise.reject[#${this.id}] =`, reason)\n this.unregister();\n oldReject(reason);\n };\n rpcPromisesInProgress.set(this.id, this);\n // debugLog?.log(`RpcPromise.ctor[#${this.id}]`);\n }\n\n public static get(id: number): RpcPromise | null {\n return rpcPromisesInProgress.get(id) as RpcPromise ?? null;\n }\n\n public unregister(): boolean {\n return rpcPromisesInProgress.delete(this.id);\n }\n}\n\nRpcPromise.Void.resolve(undefined);\n\nexport function completeRpc(result: RpcResult): void {\n const promise = RpcPromise.get(result.id);\n if (promise == null) {\n // eslint-disable-next-line no-debugger\n warnLog?.log(`completeRpc: RpcPromise #${result.id} is not found`);\n return;\n }\n try {\n if (result.error !== undefined)\n promise.reject(result.error);\n else\n promise.resolve(result.value);\n }\n catch (error) {\n promise.reject(error);\n }\n}\n\nexport function isTransferable(x: unknown): x is Transferable {\n if (x instanceof ArrayBuffer)\n return true;\n if (x instanceof MessagePort)\n return true;\n // we don' use those objects yet\n // if (x instanceof ReadableStream)\n // return true;\n // if (x instanceof WritableStream)\n // return true;\n // if (x instanceof TransformStream)\n // return true;\n return false;\n}\n\nfunction getTransferables(args: unknown[]): Transferable[] | undefined {\n let result: Transferable[] | undefined = undefined;\n for (let i = args.length - 1; i >= 0; i--) {\n const value = args[i];\n if (!isTransferable(value)) {\n if (result !== undefined)\n // transferable parameters should be placed one after another\n break;\n continue;\n }\n\n if (!result)\n result = new Array(value);\n else\n result.push(value);\n }\n return result;\n}\n\nexport function rpcServer(\n name: string,\n messagePort: MessagePort | Worker,\n serverImpl: object,\n onUnhandledMessage?: (event: MessageEvent) => Promise,\n onDispose?: () => void,\n) : Disposable {\n if (!serverImpl)\n throw new Error(`${name}: serverImpl == null!`);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onUnhandledMessage ??= (event: MessageEvent): Promise => {\n throw new Error(`${name}: unhandled message.`);\n }\n\n const onMessage = async (event: MessageEvent): Promise => {\n const rpcCall = event.data;\n if (!rpcCall?.id) {\n await onUnhandledMessage(event);\n return;\n }\n debugLog?.log(`-> ${name}.onMessage[#${rpcCall.id}]:`, rpcCall)\n let value: unknown = undefined;\n let error: unknown = undefined;\n try {\n // eslint-disable-next-line @typescript-eslint/ban-types\n const method = serverImpl[rpcCall.method] as Function;\n if (!method) {\n await onUnhandledMessage(event);\n return;\n }\n value = await method.apply(serverImpl, rpcCall.args);\n }\n catch (e) {\n error = e;\n }\n const result = new RpcResult(rpcCall.id, value, error);\n debugLog?.log(`<- ${name}.onMessage[#${rpcCall.id}]:`, result)\n if (!rpcCall.noWait)\n messagePort.postMessage(result);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const onMessageError = (event: MessageEvent): Promise => {\n throw new Error(`${name}: couldn't deserialize the message.`);\n }\n\n let isDisposed = false;\n const oldOnMessage = messagePort.onmessage;\n const oldOnMessageError = messagePort.onmessageerror;\n messagePort.onmessage = onMessage;\n messagePort.onmessageerror = onMessageError;\n\n return {\n dispose() {\n if (!isDisposed) {\n isDisposed = true;\n messagePort.onmessage = oldOnMessage;\n messagePort.onmessageerror = oldOnMessageError;\n if (onDispose)\n onDispose();\n }\n }\n }\n}\n\nconst DefaultRpcClientTimeoutMs = 5_000;\n\nexport function rpcClient(\n name: string,\n messagePort: MessagePort | Worker,\n timeoutMs = DefaultRpcClientTimeoutMs,\n onDispose?: () => void,\n) : TService & Disposable {\n const onMessage = (event: MessageEvent): void => {\n if (isDisposed)\n return;\n\n const result = event.data;\n if (result['method']) {\n errorLog?.log(`${name}: got an RpcCall message:`, result);\n throw new Error(`${name}: got an RpcCall message.`);\n }\n if (result.id)\n void completeRpc(result);\n }\n\n const onMessageError = (event: MessageEvent): void => {\n if (isDisposed)\n return;\n\n errorLog?.log(`${name}.onMessageError:`, event);\n }\n\n const proxyMethodCache = new Map RpcPromise)>();\n\n function getProxyMethod(method: string): ((...args: unknown[]) => RpcPromise) {\n let result = proxyMethodCache.get(method);\n if (!result) {\n result = (...args: unknown[]): RpcPromise => {\n if (isDisposed)\n throw new Error(`${name}.call: already disposed.`);\n\n const rpcCall = new RpcCall(nextRpcPromiseId++, method, args, timeoutMs);\n const rpcPromise = rpcCall.noWait ? RpcPromise.Void : new RpcPromise(rpcCall.id);\n if (rpcCall.timeoutMs && !rpcCall.noWait)\n rpcPromise.setTimeout(rpcCall.timeoutMs);\n\n const transferables = getTransferables(args);\n debugLog?.log(`${name}.call:`, rpcCall, ', transfer:', transferables);\n messagePort.postMessage(rpcCall, transferables);\n return rpcPromise;\n }\n proxyMethodCache.set(method, result);\n }\n\n return result;\n }\n\n const proxyTarget: Disposable = {\n dispose(): void {\n if (!isDisposed) {\n isDisposed = true;\n messagePort.onmessage = oldOnMessage;\n messagePort.onmessageerror = oldOnMessageError;\n if (onDispose)\n onDispose();\n }\n }\n }\n const proxy = new Proxy(proxyTarget as (TService & Disposable), {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n get(target: TService, p: string | symbol, receiver: unknown): unknown {\n const ownValue = target[p] as unknown;\n if (ownValue || typeof(p) !== 'string')\n return ownValue;\n return getProxyMethod(p);\n }\n })\n\n let isDisposed = false;\n const oldOnMessage = messagePort.onmessage;\n const oldOnMessageError = messagePort.onmessageerror;\n messagePort.onmessage = onMessage;\n messagePort.onmessageerror = onMessageError;\n\n return proxy;\n}\n\nexport function rpcClientServer(\n name: string,\n messagePort: MessagePort | Worker,\n serverImpl: object,\n timeoutMs?: number,\n onUnhandledMessage?: (event: MessageEvent) => Promise,\n) : TClient & Disposable {\n if (!serverImpl)\n throw new Error(`${name}: serverImpl == null!`);\n\n const oldOnMessage = messagePort.onmessage;\n const oldOnMessageError = messagePort.onmessageerror;\n\n const onDispose = () => {\n server.dispose();\n messagePort.onmessage = oldOnMessage;\n messagePort.onmessageerror = oldOnMessageError;\n }\n\n const client = rpcClient(name, messagePort, timeoutMs, onDispose);\n const clientOnMessage = messagePort.onmessage; // rpcClient(...) call sets it\n const server = rpcServer(name, messagePort, serverImpl, onUnhandledMessage);\n const serverOnMessage = messagePort.onmessage; // rpcServer(...) call sets it\n\n messagePort.onmessage = async (event: MessageEvent): Promise => {\n const data = event.data;\n if (data['method']) // RpcCall message, we process it via serverOnMessage\n await serverOnMessage.call(messagePort, event);\n else // RpcResult message, we process it via clientOnMessage\n await clientOnMessage.call(messagePort, event);\n }\n return client;\n}\n\n// This function is used only in tests below\nasync function whenNextMessage(messagePort: MessagePort | Worker, timeoutMs?: number) : Promise> {\n const result = new PromiseSourceWithTimeout>();\n if (timeoutMs)\n result.setTimeout(timeoutMs);\n\n const oldOnMessage = messagePort.onmessage;\n messagePort.onmessage = (event: MessageEvent) => result.resolve(event);\n try {\n return await result;\n }\n finally {\n messagePort.onmessage = oldOnMessage;\n }\n}\n\n\n// Self-test - we don't want to run it in workers & worklets\nconst mustRunSelfTest = debugLog != null && globalThis['focus'];\nif (mustRunSelfTest) {\n const testLog = errorLog;\n if (!testLog)\n throw new Error('testLog == null');\n void (async () => {\n // Basic test\n\n let rpcPromise = new RpcPromise();\n testLog.assert(!rpcPromise.isCompleted());\n void completeRpc(RpcResult.value(rpcPromise.id, 'x'));\n testLog.assert(rpcPromise.isCompleted());\n testLog.assert('x' == await rpcPromise);\n\n rpcPromise = new RpcPromise();\n testLog.assert(!rpcPromise.isCompleted());\n void completeRpc(RpcResult.error(rpcPromise.id, 'Error'));\n testLog.assert(rpcPromise.isCompleted());\n try {\n await rpcPromise;\n testLog?.log('rpcPromise.Error is undefined.');\n }\n catch (error) {\n testLog.assert(error == 'Error', 'error != \"Error\"');\n }\n\n // RpcServer & rpcClient test\n\n interface TestService {\n mul(x: number, y: number): Promise;\n ping(reply: string, port: MessagePort, noWait?: RpcNoWait): Promise;\n }\n\n class TestServer implements TestService {\n mul(x: number, y: number): Promise {\n if (x === 1 || y === 1)\n throw '1';\n return Promise.resolve(x * y);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async ping(reply: string, port: MessagePort, noWait?: RpcNoWait): Promise {\n await delayAsync(500);\n port.postMessage(reply);\n return ResolvedPromise.Void;\n }\n }\n\n const channel = new MessageChannel();\n const client = rpcClient(`client`, channel.port1, 300);\n const server = rpcServer(`server`, channel.port2, new TestServer());\n\n // Normal call\n testLog.assert(await client.mul(3, 4) == 12);\n\n // Normal call w/ transferable\n const pingChannel = new MessageChannel();\n await client.ping('Pong', pingChannel.port2, rpcNoWait);\n const sideResult = (await whenNextMessage(pingChannel.port1, 1000)).data;\n debugLog?.log('Side channel result:', sideResult);\n testLog.assert(sideResult === 'Pong');\n\n // Error call\n try {\n await client.mul(1, 5);\n testLog.assert(false);\n }\n catch (e) {\n testLog.assert(e === '1');\n }\n\n // Post-dispose call\n client.dispose();\n try {\n await client.mul(3, 5);\n testLog.assert(false);\n }\n catch (e) {\n testLog.assert(!!e);\n }\n })();\n}\n","import { isResettable } from 'resettable';\n\nexport class ObjectPool\n{\n private readonly pool = new Array();\n private readonly factory: () => T;\n\n constructor(factory: () => T) {\n this.factory = factory;\n }\n\n public expandTo(count: number): ObjectPool {\n while (this.pool.length < count)\n this.pool.push(this.factory());\n return this;\n }\n\n public get(): T {\n let item = this.pool.pop();\n if (item === undefined)\n item = this.factory();\n return item;\n }\n\n public release(obj: T): void {\n if (!obj)\n return;\n\n if (isResettable(obj)) {\n void (async () => {\n await obj.reset();\n this.pool.push(obj);\n })();\n }\n else\n this.pool.push(obj);\n }\n}\n\nexport class AsyncObjectPool\n{\n private readonly pool = new Array();\n private readonly factory: () => T | PromiseLike;\n\n constructor(factory: () => T | PromiseLike) {\n this.factory = factory;\n }\n\n public async expandTo(count: number): Promise> {\n while (this.pool.length < count)\n this.pool.push(await this.factory());\n return this;\n }\n\n public async get(): Promise {\n let item = this.pool.pop();\n if (item === undefined)\n item = await this.factory();\n return item;\n }\n\n public async release(obj: T): Promise {\n if (!obj)\n return;\n\n if (isResettable(obj))\n await obj.reset();\n this.pool.push(obj);\n }\n}\n","export interface Resettable {\n reset(): void | PromiseLike;\n}\n\nexport function isResettable(obj: T | Resettable): obj is Resettable {\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj['reset'] === 'function';\n}\n"," \n \n \n import { Decoder } from '@actual-chat/codec';\n \n\nimport { AUDIO_PLAY as AP } from '_constants';\nimport { AsyncDisposable, Disposable } from 'disposable';\nimport { AsyncProcessor } from 'async-processor';\nimport { rpcClient, rpcClientServer, RpcNoWait, rpcNoWait } from 'rpc';\nimport { FeederAudioWorklet } from '../worklets/feeder-audio-worklet-contract';\nimport { ObjectPool } from 'object-pool';\nimport { Log } from 'logging';\nimport { BufferHandler } from \"./opus-decoder-worker-contract\";\n\nconst { logScope, debugLog, warnLog, errorLog } = Log.get('OpusDecoder');\nconst enableFrequentDebugLog = false;\n\n \n \n \n\nconst systemCodecConfig: AudioDecoderConfig = {\n codec: 'opus',\n numberOfChannels: 1,\n sampleRate: AP.SAMPLE_RATE,\n};\n\n\nexport class OpusDecoder implements BufferHandler, AsyncDisposable {\n private readonly streamId: string;\n private readonly processor: AsyncProcessor;\n private readonly feederWorklet: FeederAudioWorklet & Disposable;\n private readonly bufferPool: ObjectPool;\n private readonly largeBufferPool: ObjectPool;\n private mustAbort = false;\n private chunkTimeOffset = 0;\n\n private decoder: Decoder | null;\n private systemDecoder: AudioDecoder | null;\n\n public static async create(streamId: string, decoder: Decoder | null, feederNodePort: MessagePort): Promise {\n return new OpusDecoder(streamId, decoder, feederNodePort);\n }\n\n /** accepts fully initialized decoder only, use the factory method `create` to construct an object */\n private constructor(streamId: string, decoder: Decoder | null, feederWorkletPort: MessagePort) {\n this.streamId = streamId;\n this.processor = new AsyncProcessor('OpusDecoder', item => this.process(item));\n this.feederWorklet = rpcClientServer(`${logScope}.feederNode`, feederWorkletPort, this);\n this.bufferPool = new ObjectPool(() => new ArrayBuffer(AP.SAMPLES_PER_WINDOW * 4)).expandTo(4);\n this.largeBufferPool = new ObjectPool(() => new ArrayBuffer(AP.SAMPLES_PER_WINDOW * 4 * 3)).expandTo(2);\n this.decoder = decoder;\n if (!this.decoder) {\n // use system decoder\n this.systemDecoder = new AudioDecoder({\n error: this.onSystemDecoderError,\n output: this.onDecodedAudioChunk,\n });\n this.systemDecoder.configure(systemCodecConfig);\n }\n }\n\n public init(): void {\n this.mustAbort = false;\n }\n\n public async disposeAsync(): Promise {\n if (this.processor.isRunning)\n await this.end(true);\n\n this.decoder?.delete();\n this.systemDecoder?.close();\n this.decoder = null;\n this.systemDecoder = null;\n this.mustAbort = true;\n }\n\n public decode(buffer: ArrayBuffer, offset: number, length: number,): void {\n warnLog?.assert(buffer.byteLength > 0, `#${this.streamId}.decode: got zero length buffer!`);\n const bufferView = new Uint8Array(buffer, offset, length);\n this.processor.enqueue(bufferView, false);\n }\n\n public async end(mustAbort: boolean): Promise {\n debugLog?.log(`#${this.streamId}.end: mustAbort:`, mustAbort);\n if (!this.processor.isRunning) {\n // Special case: processor is already stopped by prev. 'end' command\n if (mustAbort && !this.mustAbort) {\n this.mustAbort = true;\n void this.feederWorklet.end(mustAbort, rpcNoWait);\n }\n return;\n }\n\n this.mustAbort ||= mustAbort;\n if (this.mustAbort)\n this.processor.clearQueue();\n this.processor.enqueue('end', false);\n }\n\n public async releaseBuffer(buffer: ArrayBuffer, _rpcNoWait: RpcNoWait): Promise {\n if (buffer.byteLength <= AP.SAMPLES_PER_WINDOW * 4)\n this.bufferPool.release(buffer);\n else\n this.largeBufferPool.release(buffer);\n }\n\n private async process(item: Uint8Array | 'end'): Promise {\n try {\n if (item === 'end') {\n debugLog?.log(`#${this.streamId}.process: got 'end'`, this.mustAbort);\n await this.systemDecoder?.flush();\n\n void this.feederWorklet.end(this.mustAbort, rpcNoWait);\n return true;\n }\n\n if (this.systemDecoder) {\n const chunk = new EncodedAudioChunk({\n data: item,\n type: 'key',\n duration: 20000, // 20ms\n timestamp: this.chunkTimeOffset,\n });\n this.chunkTimeOffset += 20;\n this.systemDecoder.decode(chunk);\n }\n else {\n // typedViewSamples is a typed_memory_view to Decoder internal buffer - so you have to copy data\n const typedViewSamples = this.decoder.decode(item);\n if (typedViewSamples == null || typedViewSamples.length === 0) {\n warnLog?.log(`#${this.streamId}.process: decoder returned empty result`);\n return true;\n }\n\n const samplesBuffer = typedViewSamples.length == AP.SAMPLES_PER_WINDOW\n ? this.bufferPool.get()\n : this.largeBufferPool.get();\n const samples = new Float32Array(samplesBuffer, 0, typedViewSamples.length);\n samples.set(typedViewSamples);\n\n if (enableFrequentDebugLog)\n debugLog?.log(\n `#${this.streamId}.process: decoded ${item.byteLength} byte(s) into ` +\n `${samples.byteLength} byte(s) / ${samples.length} samples`);\n void this.feederWorklet.frame(samples.buffer, samples.byteOffset, samples.length, rpcNoWait);\n }\n }\n catch (e) {\n errorLog?.log(`#${this.streamId}.process: error:`, e);\n }\n // Keep running for reuse\n return true;\n }\n\n private onSystemDecoderError = (error: DOMException): void => {\n errorLog?.log(`onSystemDecoderError: `, error, this.streamId)\n }\n\n private onDecodedAudioChunk = (output: AudioData): void => {\n const samplesBuffer = output.numberOfFrames == AP.SAMPLES_PER_WINDOW\n ? this.bufferPool.get()\n : this.largeBufferPool.get();\n const samples = new Float32Array(samplesBuffer, 0, output.numberOfFrames);\n output.copyTo(samples, { planeIndex: 0, format: 'f32-planar'})\n\n void this.feederWorklet.frame(samples.buffer, samples.byteOffset, samples.length, rpcNoWait);\n }\n}\n","import { Log } from 'logging';\n\nconst { debugLog, warnLog } = Log.get('Versioning');\n\ninterface ImportMap {\n imports: Record;\n integrity: Record;\n}\n\nexport class Versioning {\n private static _assetMap: Map = null;\n\n public static get assetMap(): Map {\n if (this._assetMap)\n return this._assetMap;\n\n this.init();\n return this._assetMap;\n }\n\n public static init(assetMap: Map = null) {\n if (this._assetMap) {\n warnLog?.log('init: skipped (already initialized)');\n return;\n }\n\n if (assetMap === null) {\n const origin = document.location.origin;\n const stripOrigin = (s: string) => s.startsWith(origin) ? s.slice(origin.length) : s;\n\n const processAsset = (key: string, value: string) => {\n const assetMatch = value.match(/\\.(?[a-z0-9]{10})\\.(js|wasm)$/);\n if (!assetMatch)\n return;\n\n const assetPath = stripOrigin(value);\n const simpleKey = assetPath.replace(assetMatch.groups['hash']+'.', '');\n assetMap.set(simpleKey, assetPath);\n if (!simpleKey.startsWith('/')) assetMap.set('/' + simpleKey, assetPath);\n };\n\n assetMap = new Map();\n for (const e of document.head.children) {\n if (e.localName !== 'link')\n continue;\n\n const href = e['href'] as string;\n processAsset(href, href);\n }\n const importMapInnerHtml = document.head.querySelector('script[type=\"importmap\"]')?.innerHTML;\n if (importMapInnerHtml) {\n const importMap = JSON.parse(importMapInnerHtml) as ImportMap;\n for (const [key, value] of Object.entries(importMap.imports).filter(([k]) => k.startsWith('/dist/')))\n processAsset(key, value);\n }\n }\n this._assetMap = assetMap;\n debugLog?.log('init: artifact versions:', assetMap);\n }\n\n public static mapPath(path: string): string {\n const versionedPath = this.assetMap.get(path);\n if (versionedPath) {\n debugLog?.log(`mapPath: '${path}' -> '${versionedPath}'`);\n return versionedPath;\n }\n else {\n warnLog?.log(`mapPath: '${path}' - no version found`);\n return path;\n }\n }\n}\n\nglobalThis['Versioning'] = Versioning;\n"," // Commented out because it causes ts compilation issues in webpack release mode\n// /// \n// export type { };\n// declare const self: WorkerGlobalScope;\n\n \n \n \n \n \n import codec, { Decoder, Codec } from '@actual-chat/codec';\n import codecWasm from '@actual-chat/codec/codec.wasm';\n \n\nimport { AUDIO_PLAY as AP } from '_constants';\nimport { OpusDecoder } from './opus-decoder';\nimport { OpusDecoderWorker } from './opus-decoder-worker-contract';\nimport { RpcNoWait, rpcServer, RpcTimeout } from 'rpc';\nimport { retry } from 'promises';\nimport { Versioning } from 'versioning';\nimport { Log } from 'logging';\n\nconst { logScope, debugLog, errorLog } = Log.get('OpusDecoderWorker');\n\n\n// TODO: create wrapper around module for all workers\n\nlet codecModule: Codec | null = null;\nlet useSystemDecoder = false;\n\nconst worker = self as unknown as Worker;\nconst decoders = new Map();\nconst systemCodecConfig: AudioEncoderConfig = {\n codec: 'opus',\n numberOfChannels: 1,\n sampleRate: AP.SAMPLE_RATE,\n};\n\nconst serverImpl: OpusDecoderWorker = {\n create: async (artifactVersions: Map, _timeout?: RpcTimeout): Promise => {\n debugLog?.log(`-> init`);\n if (codecModule)\n return;\n\n Versioning.init(artifactVersions);\n\n if (!useSystemDecoder && globalThis.AudioDecoder) {\n const configSupport = await AudioDecoder.isConfigSupported(systemCodecConfig);\n useSystemDecoder = configSupport.supported;\n }\n\n if (!useSystemDecoder) {\n // Load & warm-up codec\n codecModule = await retry(3, () => codec(getEmscriptenLoaderOptions()));\n const decoder = new codecModule.Decoder(AP.SAMPLE_RATE);\n decoder.delete();\n }\n\n debugLog?.log(`<- init`);\n },\n\n init: async (streamId: string, feederWorkletPort: MessagePort): Promise => {\n debugLog?.log(`-> #${streamId}.create`);\n const decoder: Decoder | null = useSystemDecoder\n ? null\n : new codecModule.Decoder(AP.SAMPLE_RATE);\n const opusDecoder = await OpusDecoder.create(streamId, decoder, feederWorkletPort);\n opusDecoder.init();\n decoders.set(streamId, opusDecoder);\n debugLog?.log(`<- #${streamId}.create`);\n },\n\n resume: async (streamId: string, _noWait?: RpcNoWait): Promise => {\n const opusDecoder = getDecoder(streamId, false);\n if (!opusDecoder) {\n errorLog?.log(`#${streamId}.resume() has failed - decoder does not exist`)\n return;\n }\n\n opusDecoder.init();\n },\n\n close: async (streamId: string, _noWait?: RpcNoWait): Promise => {\n debugLog?.log(`#${streamId}.close`);\n const opusDecoder = getDecoder(streamId, false);\n if (!opusDecoder)\n return;\n\n try {\n await opusDecoder.end(true);\n await opusDecoder.disposeAsync();\n }\n catch (e) {\n errorLog?.log(`#${streamId}.close: error while closing the decoder:`, e);\n }\n finally {\n decoders.delete(streamId);\n }\n },\n\n end: async (streamId: string, mustAbort: boolean): Promise => {\n debugLog?.log(`#${streamId}.end, mustAbort:`, mustAbort);\n await getDecoder(streamId).end(mustAbort);\n },\n\n frame: async (\n streamId: string,\n buffer: ArrayBuffer,\n offset: number,\n length: number,\n _noWait?: RpcNoWait,\n ): Promise => {\n // debugLog?.log(`#${streamId}.onFrame`);\n getDecoder(streamId).decode(buffer, offset, length);\n },\n\n releaseBuffer: async(streamId: string, buffer: ArrayBuffer, _noWait?: RpcNoWait): Promise => {\n await getDecoder(streamId).releaseBuffer(buffer, _noWait);\n }\n};\n\nconst server = rpcServer(`${logScope}.server`, worker, serverImpl);\n\n// Helpers\n\nfunction getDecoder(streamId: string, failIfNone = true): OpusDecoder {\n const decoder = decoders.get(streamId);\n if (!decoder && failIfNone)\n throw new Error(`getDecoder: no decoder #${streamId}, did you forget to call 'create'?`);\n\n return decoder;\n}\n\nfunction getEmscriptenLoaderOptions(): EmscriptenLoaderOptions {\n return {\n locateFile: (filename: string) => {\n const codecWasmPath = Versioning.mapPath(codecWasm);\n if (filename.slice(-4) === 'wasm')\n return codecWasmPath;\n \n \n \n \n // Allow secondary resources like the .wasm payload to be loaded by the emscripten code.\n // emscripten 1.37.25 loads memory initializers as data: URI\n else if (filename.slice(0, 5) === 'data:')\n return filename;\n else throw new Error(`Emscripten module tried to load an unknown file: \"${filename}\"`);\n },\n };\n}\n"],"names":["Denque","array","options","this","_capacity","capacity","_head","_tail","Array","isArray","_fromArray","_capacityMask","_list","prototype","peekAt","index","i","len","size","get","peek","peekFront","peekBack","Object","defineProperty","unshift","item","arguments","length","_growArray","pop","shift","head","undefined","_shrinkArray","push","tail","removeOne","k","remove","count","removed","del_count","toArray","clear","splice","temp","arg_len","arguments_index","leng","isEmpty","_copyArray","_nextPowerOf2","fullCopy","src","slice","dest","newList","num","nextPow2","Math","log","max","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","enumerable","g","globalThis","Function","e","window","obj","prop","hasOwnProperty","call","p","_scriptDir","document","currentScript","codec","aa","ba","ready","Promise","b","ea","da","assign","self","location","href","indexOf","substr","replace","lastIndexOf","XMLHttpRequest","open","responseType","send","Uint8Array","response","x","fa","print","console","bind","v","printErr","warn","wasmBinary","noExitRuntime","WebAssembly","y","ha","ia","ja","TextDecoder","ka","c","buffer","decode","subarray","f","String","fromCharCode","la","ma","z","A","na","B","C","oa","pa","qa","ra","sa","ta","ua","va","wa","preRun","G","D","xa","E","onAbort","RuntimeError","ya","startsWith","za","locateFile","Aa","Ca","H","toString","Da","J","K","L","Ea","Fa","charCodeAt","Ga","apply","Ha","Error","name","message","stack","create","constructor","M","O","Ia","Ja","P","h","l","Q","forEach","TypeError","Ka","La","Ma","I","Na","Oa","Pa","value","N","U","Qa","Ra","R","Sa","V","S","T","Ua","FinalizationRegistry","unregister","register","Va","Y","Xa","ga","X","Ya","Za","$a","$","Z","clone","ab","bb","cb","fromWireType","W","toWireType","eb","fb","gb","hb","ib","map","join","jb","kb","lb","m","q","t","u","r","w","F","mb","ob","pb","qb","rb","sb","tb","ub","vb","wb","xb","yb","zb","Ab","$$$embind_global$$$","Cb","Db","Eb","Fb","BindingError","InternalError","isAliasOf","getPrototypeOf","isDeleted","deleteLater","getInheritedInstanceCount","keys","getLiveInheritedInstances","flushPendingDeletes","setDelayFunction","ca","argPackAdvance","readValueFromPointer","deleteObject","Ta","pointerType","UnboundTypeError","count_emval_handles","get_first_emval","Hb","cos","exp","floor","ceil","Wa","nb","db","j","Symbol","substring","className","configurable","set","includes","Int8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array","ArrayBuffer","Uint8ClampedArray","Gb","s","Bb","copyWithin","asm","HEAP8","HEAP16","HEAP32","HEAPU8","HEAPU16","HEAPU32","HEAPF32","HEAPF64","HEAP64","HEAPU64","monitorRunDependencies","clearInterval","instance","fetch","resolve","then","credentials","ok","arrayBuffer","catch","instantiate","instantiateWasm","instantiateStreaming","___wasm_call_ctors","Ib","_free","_malloc","___getTypeName","Kb","calledRun","onRuntimeInitialized","postRun","setStatus","setTimeout","__embind_initialize_bindings","___start_em_js","___stop_em_js","Jb","preInit","AUDIO_PLAY","SAMPLE_RATE","SAMPLES_PER_MS","SAMPLES_PER_WINDOW","SAMPLE_DURATION","BUFFER_TO_PLAY_DURATION","BUFFER_LOW_DURATION","STATE_UPDATE_PERIOD","MEDIA_SESSION_RESET_DEBOUNCE_MS","round","ENC_BIT_RATE","sqrt","LogLevel","StorageKey","DateStorageKey","MaxStorageAge","isWorkerOrWorklet","initLogging","Log","Info","minLevels","wasRestored","LogLevelController","sessionStorage","dateJson","getItem","Date","now","JSON","parse","readJson","readMinLevels","Map","restore","override","scope","newLevel","persist","reset","isProduction","defaultLevel","setItem","stringify","from","entries","Debug","level","prefix","data","debug","Warn","error","None","trace","isInitialized","minLevel","defaultMinLevel","getLogger","loggerFactory","logScope","debugLog","infoLog","warnLog","errorLog","ref","logRefs","assert","predicate","idSeed","items","itemIndex","findIndex","el","target","existentItem","touchedAt","id","newRef","removeOldest","newItem","indexToEliminate","itemToEliminate","__generator","thisArg","body","_","label","sent","trys","ops","next","verb","iterator","op","done","step","__read","ar","__spreadArray","to","pack","concat","Heap","compare","minComparator","_this","heapArray","_limit","offer","add","element","poll","_invertedCompare","getChildrenIndexOf","idx","getParentIndexOf","whichChildren","getSiblingIndexOf","maxComparator","minComparatorNumber","maxComparatorNumber","defaultIsEqual","heap","deep","pi","log2","repeat","str","times","out","node","lines","maxLines","maxLength","nodeText","line","pow","half","heapify","arr","init","heappop","heapArr","heappush","heappushpop","pushpop","heapreplace","heaptop","top","heapbottom","bottom","nlargest","iterable","nsmallest","_sortNodeUp","_applyLimit","addAll","elements","_a","_bottomN_push","check","find","getChildrenOf","ch","cloned","comparator","contains","fn","_sortNodeDown","leafs","_l","last","_i","_topN_push","filter","getParentOf","rm","bottomHeap","limit","startAt","parentStartAt","indices","_moveNode","moveIt","getPotentialParent","best","childrenIdx","bestChildIndex","reduce","bestChild","topHeap","_topN_fill","_topN_heap","result","_topIdxOf","list","_topOf","TimerQueueTimer","handle","callback","time","nextHandle","setTimeoutImpl","clearTimeoutImpl","timerQueue","triggerExpired","timer","delete","delayMs","enqueue","clearTimeout","nextTickImpl","nextTickCallbacks","nextTickChannel","MessageChannel","port1","onmessage","port2","postMessage","Timeout","start","isPrecise","timeoutMs","PreciseTimeout","startRegular","startPrecise","dispose","endsAt","loop","requestAnimationFrame","super","cancelAnimationFrame","TimedOut","PromiseSource","reject","_isCompleted","_promise","resolve1","reject1","reason","toStringTag","isCompleted","onfulfilled","onrejected","onfinally","finally","PromiseSourceWithTimeout","_timeout","hasTimeout","setPreciseTimeout","cancelled","OperationCancelledError","delayAsync","promise","defaultRetryDelays","ResolvedPromise","Void","True","False","async","cancel","race","waitAsync","AsyncProcessor","isRunning","_isRunning","process","queue","whenReadyToResume","whenRunning","run","mustFailIfAlreadyStopped","clearQueue","rpcNoWait","RpcCall","method","args","noWait","lastArg","rpcTimeout","RpcResult","nextRpcPromiseId","rpcPromisesInProgress","RpcPromise","oldResolve","oldReject","completeRpc","rpcServer","messagePort","serverImpl","onUnhandledMessage","onDispose","event","isDisposed","oldOnMessage","oldOnMessageError","onmessageerror","rpcCall","DefaultRpcClientTimeoutMs","rpcClient","proxyMethodCache","getProxyMethod","rpcPromise","transferables","MessagePort","getTransferables","proxy","Proxy","receiver","ownValue","testLog","channel","client","mul","ping","reply","port","pingChannel","sideResult","whenNextMessage","ObjectPool","factory","pool","expandTo","release","systemCodecConfig","numberOfChannels","sampleRate","OpusDecoder","streamId","decoder","feederNodePort","feederWorkletPort","mustAbort","chunkTimeOffset","onSystemDecoderError","onDecodedAudioChunk","output","samplesBuffer","numberOfFrames","bufferPool","largeBufferPool","samples","copyTo","planeIndex","format","feederWorklet","frame","byteOffset","processor","server","clientOnMessage","serverOnMessage","rpcClientServer","systemDecoder","AudioDecoder","configure","disposeAsync","end","close","offset","byteLength","bufferView","releaseBuffer","_rpcNoWait","flush","chunk","EncodedAudioChunk","type","duration","timestamp","typedViewSamples","Versioning","assetMap","_assetMap","origin","stripOrigin","processAsset","assetMatch","match","assetPath","simpleKey","groups","children","localName","importMapInnerHtml","querySelector","innerHTML","importMap","imports","mapPath","path","versionedPath","codecModule","useSystemDecoder","worker","decoders","artifactVersions","configSupport","isConfigSupported","supported","tryCount","retryDelays","lastError","tryIndex","retry","filename","codecWasmPath","Decoder","opusDecoder","resume","_noWait","getDecoder","failIfNone"],"sourceRoot":""}