@ermis-network/ermis-chat-sdk 1.0.9 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/wasm/ermis_call_node_wasm.js","../src/wasm_worker.ts"],"sourcesContent":["let wasm;\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n\tif (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n\t\tcachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n\t}\n\treturn cachedUint8ArrayMemory0;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n\ncachedTextDecoder.decode();\n\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n\tnumBytesDecoded += len;\n\tif (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n\t\tcachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n\t\tcachedTextDecoder.decode();\n\t\tnumBytesDecoded = len;\n\t}\n\treturn cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nfunction getStringFromWasm0(ptr, len) {\n\tptr = ptr >>> 0;\n\treturn decodeText(ptr, len);\n}\n\nlet heap = new Array(128).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nlet heap_next = heap.length;\n\nfunction addHeapObject(obj) {\n\tif (heap_next === heap.length) heap.push(heap.length + 1);\n\tconst idx = heap_next;\n\theap_next = heap[idx];\n\n\theap[idx] = obj;\n\treturn idx;\n}\n\nfunction getObject(idx) {\n\treturn heap[idx];\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = new TextEncoder();\n\nif (!('encodeInto' in cachedTextEncoder)) {\n\tcachedTextEncoder.encodeInto = function (arg, view) {\n\t\tconst buf = cachedTextEncoder.encode(arg);\n\t\tview.set(buf);\n\t\treturn {\n\t\t\tread: arg.length,\n\t\t\twritten: buf.length,\n\t\t};\n\t};\n}\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\tif (realloc === undefined) {\n\t\tconst buf = cachedTextEncoder.encode(arg);\n\t\tconst ptr = malloc(buf.length, 1) >>> 0;\n\t\tgetUint8ArrayMemory0()\n\t\t\t.subarray(ptr, ptr + buf.length)\n\t\t\t.set(buf);\n\t\tWASM_VECTOR_LEN = buf.length;\n\t\treturn ptr;\n\t}\n\n\tlet len = arg.length;\n\tlet ptr = malloc(len, 1) >>> 0;\n\n\tconst mem = getUint8ArrayMemory0();\n\n\tlet offset = 0;\n\n\tfor (; offset < len; offset++) {\n\t\tconst code = arg.charCodeAt(offset);\n\t\tif (code > 0x7f) break;\n\t\tmem[ptr + offset] = code;\n\t}\n\n\tif (offset !== len) {\n\t\tif (offset !== 0) {\n\t\t\targ = arg.slice(offset);\n\t\t}\n\t\tptr = realloc(ptr, len, (len = offset + arg.length * 3), 1) >>> 0;\n\t\tconst view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n\t\tconst ret = cachedTextEncoder.encodeInto(arg, view);\n\n\t\toffset += ret.written;\n\t\tptr = realloc(ptr, len, offset, 1) >>> 0;\n\t}\n\n\tWASM_VECTOR_LEN = offset;\n\treturn ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n\tif (\n\t\tcachedDataViewMemory0 === null ||\n\t\tcachedDataViewMemory0.buffer.detached === true ||\n\t\t(cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)\n\t) {\n\t\tcachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n\t}\n\treturn cachedDataViewMemory0;\n}\n\nfunction isLikeNone(x) {\n\treturn x === undefined || x === null;\n}\n\nfunction debugString(val) {\n\t// primitive types\n\tconst type = typeof val;\n\tif (type == 'number' || type == 'boolean' || val == null) {\n\t\treturn `${val}`;\n\t}\n\tif (type == 'string') {\n\t\treturn `\"${val}\"`;\n\t}\n\tif (type == 'symbol') {\n\t\tconst description = val.description;\n\t\tif (description == null) {\n\t\t\treturn 'Symbol';\n\t\t} else {\n\t\t\treturn `Symbol(${description})`;\n\t\t}\n\t}\n\tif (type == 'function') {\n\t\tconst name = val.name;\n\t\tif (typeof name == 'string' && name.length > 0) {\n\t\t\treturn `Function(${name})`;\n\t\t} else {\n\t\t\treturn 'Function';\n\t\t}\n\t}\n\t// objects\n\tif (Array.isArray(val)) {\n\t\tconst length = val.length;\n\t\tlet debug = '[';\n\t\tif (length > 0) {\n\t\t\tdebug += debugString(val[0]);\n\t\t}\n\t\tfor (let i = 1; i < length; i++) {\n\t\t\tdebug += ', ' + debugString(val[i]);\n\t\t}\n\t\tdebug += ']';\n\t\treturn debug;\n\t}\n\t// Test for built-in\n\tconst builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n\tlet className;\n\tif (builtInMatches && builtInMatches.length > 1) {\n\t\tclassName = builtInMatches[1];\n\t} else {\n\t\t// Failed to match the standard '[object ClassName]'\n\t\treturn toString.call(val);\n\t}\n\tif (className == 'Object') {\n\t\t// we're a user defined class or Object\n\t\t// JSON.stringify avoids problems with cycles, and is generally much\n\t\t// easier than looping through ownProperties of `val`.\n\t\ttry {\n\t\t\treturn 'Object(' + JSON.stringify(val) + ')';\n\t\t} catch (_) {\n\t\t\treturn 'Object';\n\t\t}\n\t}\n\t// errors\n\tif (val instanceof Error) {\n\t\treturn `${val.name}: ${val.message}\\n${val.stack}`;\n\t}\n\t// TODO we could test for more things here, like `Set`s and `Map`s.\n\treturn className;\n}\n\nfunction handleError(f, args) {\n\ttry {\n\t\treturn f.apply(this, args);\n\t} catch (e) {\n\t\twasm.__wbindgen_export3(addHeapObject(e));\n\t}\n}\n\nfunction dropObject(idx) {\n\tif (idx < 132) return;\n\theap[idx] = heap_next;\n\theap_next = idx;\n}\n\nfunction takeObject(idx) {\n\tconst ret = getObject(idx);\n\tdropObject(idx);\n\treturn ret;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n\tptr = ptr >>> 0;\n\treturn getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nconst CLOSURE_DTORS =\n\ttypeof FinalizationRegistry === 'undefined'\n\t\t? { register: () => {}, unregister: () => {} }\n\t\t: new FinalizationRegistry((state) => state.dtor(state.a, state.b));\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n\tconst state = { a: arg0, b: arg1, cnt: 1, dtor };\n\tconst real = (...args) => {\n\t\t// First up with a closure we increment the internal reference\n\t\t// count. This ensures that the Rust closure environment won't\n\t\t// be deallocated while we're invoking it.\n\t\tstate.cnt++;\n\t\tconst a = state.a;\n\t\tstate.a = 0;\n\t\ttry {\n\t\t\treturn f(a, state.b, ...args);\n\t\t} finally {\n\t\t\tstate.a = a;\n\t\t\treal._wbg_cb_unref();\n\t\t}\n\t};\n\treal._wbg_cb_unref = () => {\n\t\tif (--state.cnt === 0) {\n\t\t\tstate.dtor(state.a, state.b);\n\t\t\tstate.a = 0;\n\t\t\tCLOSURE_DTORS.unregister(state);\n\t\t}\n\t};\n\tCLOSURE_DTORS.register(real, state, state);\n\treturn real;\n}\n\nfunction makeClosure(arg0, arg1, dtor, f) {\n\tconst state = { a: arg0, b: arg1, cnt: 1, dtor };\n\tconst real = (...args) => {\n\t\t// First up with a closure we increment the internal reference\n\t\t// count. This ensures that the Rust closure environment won't\n\t\t// be deallocated while we're invoking it.\n\t\tstate.cnt++;\n\t\ttry {\n\t\t\treturn f(state.a, state.b, ...args);\n\t\t} finally {\n\t\t\treal._wbg_cb_unref();\n\t\t}\n\t};\n\treal._wbg_cb_unref = () => {\n\t\tif (--state.cnt === 0) {\n\t\t\tstate.dtor(state.a, state.b);\n\t\t\tstate.a = 0;\n\t\t\tCLOSURE_DTORS.unregister(state);\n\t\t}\n\t};\n\tCLOSURE_DTORS.register(real, state, state);\n\treturn real;\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n\tconst ptr = malloc(arg.length * 1, 1) >>> 0;\n\tgetUint8ArrayMemory0().set(arg, ptr / 1);\n\tWASM_VECTOR_LEN = arg.length;\n\treturn ptr;\n}\nfunction __wasm_bindgen_func_elem_12594(arg0, arg1) {\n\twasm.__wasm_bindgen_func_elem_12594(arg0, arg1);\n}\n\nfunction __wasm_bindgen_func_elem_11460(arg0, arg1, arg2) {\n\twasm.__wasm_bindgen_func_elem_11460(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction __wasm_bindgen_func_elem_5633(arg0, arg1) {\n\twasm.__wasm_bindgen_func_elem_5633(arg0, arg1);\n}\n\nfunction __wasm_bindgen_func_elem_2279(arg0, arg1, arg2) {\n\twasm.__wasm_bindgen_func_elem_2279(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction __wasm_bindgen_func_elem_12647(arg0, arg1, arg2) {\n\twasm.__wasm_bindgen_func_elem_12647(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction __wasm_bindgen_func_elem_6078(arg0, arg1) {\n\twasm.__wasm_bindgen_func_elem_6078(arg0, arg1);\n}\n\nfunction __wasm_bindgen_func_elem_14072(arg0, arg1, arg2, arg3) {\n\twasm.__wasm_bindgen_func_elem_14072(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));\n}\n\nconst __wbindgen_enum_BinaryType = ['blob', 'arraybuffer'];\n\nconst __wbindgen_enum_ReadableStreamType = ['bytes'];\n\nconst __wbindgen_enum_RequestCache = ['default', 'no-store', 'reload', 'no-cache', 'force-cache', 'only-if-cached'];\n\nconst __wbindgen_enum_RequestCredentials = ['omit', 'same-origin', 'include'];\n\nconst __wbindgen_enum_RequestMode = ['same-origin', 'no-cors', 'cors', 'navigate'];\n\nconst ConnectionStatsFinalization =\n\ttypeof FinalizationRegistry === 'undefined'\n\t\t? { register: () => {}, unregister: () => {} }\n\t\t: new FinalizationRegistry((ptr) => wasm.__wbg_connectionstats_free(ptr >>> 0, 1));\n\nexport class ConnectionStats {\n\t__destroy_into_raw() {\n\t\tconst ptr = this.__wbg_ptr;\n\t\tthis.__wbg_ptr = 0;\n\t\tConnectionStatsFinalization.unregister(this);\n\t\treturn ptr;\n\t}\n\n\tfree() {\n\t\tconst ptr = this.__destroy_into_raw();\n\t\twasm.__wbg_connectionstats_free(ptr, 0);\n\t}\n\t/**\n\t * @returns {string | undefined}\n\t */\n\tget connection_type() {\n\t\ttry {\n\t\t\tconst retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n\t\t\twasm.connectionstats_connection_type(retptr, this.__wbg_ptr);\n\t\t\tvar r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n\t\t\tvar r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n\t\t\tlet v1;\n\t\t\tif (r0 !== 0) {\n\t\t\t\tv1 = getStringFromWasm0(r0, r1).slice();\n\t\t\t\twasm.__wbindgen_export4(r0, r1 * 1, 1);\n\t\t\t}\n\t\t\treturn v1;\n\t\t} finally {\n\t\t\twasm.__wbindgen_add_to_stack_pointer(16);\n\t\t}\n\t}\n\t/**\n\t * @param {string | null} [value]\n\t */\n\tset connection_type(value) {\n\t\tvar ptr0 = isLikeNone(value) ? 0 : passStringToWasm0(value, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n\t\tvar len0 = WASM_VECTOR_LEN;\n\t\twasm.connectionstats_set_connection_type(this.__wbg_ptr, ptr0, len0);\n\t}\n\t/**\n\t * @param {string | null} [connection_type]\n\t * @param {number | null} [rtt_ms]\n\t * @param {number | null} [packet_loss]\n\t */\n\tconstructor(connection_type, rtt_ms, packet_loss) {\n\t\tvar ptr0 = isLikeNone(connection_type)\n\t\t\t? 0\n\t\t\t: passStringToWasm0(connection_type, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n\t\tvar len0 = WASM_VECTOR_LEN;\n\t\tconst ret = wasm.connectionstats_new(\n\t\t\tptr0,\n\t\t\tlen0,\n\t\t\t!isLikeNone(rtt_ms),\n\t\t\tisLikeNone(rtt_ms) ? 0 : rtt_ms,\n\t\t\t!isLikeNone(packet_loss),\n\t\t\tisLikeNone(packet_loss) ? 0 : packet_loss,\n\t\t);\n\t\tthis.__wbg_ptr = ret >>> 0;\n\t\tConnectionStatsFinalization.register(this, this.__wbg_ptr, this);\n\t\treturn this;\n\t}\n\t/**\n\t * @returns {number | undefined}\n\t */\n\tget rtt_ms() {\n\t\ttry {\n\t\t\tconst retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n\t\t\twasm.__wbg_get_connectionstats_rtt_ms(retptr, this.__wbg_ptr);\n\t\t\tvar r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n\t\t\tvar r2 = getDataViewMemory0().getFloat64(retptr + 8 * 1, true);\n\t\t\treturn r0 === 0 ? undefined : r2;\n\t\t} finally {\n\t\t\twasm.__wbindgen_add_to_stack_pointer(16);\n\t\t}\n\t}\n\t/**\n\t * @param {number | null} [arg0]\n\t */\n\tset rtt_ms(arg0) {\n\t\twasm.__wbg_set_connectionstats_rtt_ms(this.__wbg_ptr, !isLikeNone(arg0), isLikeNone(arg0) ? 0 : arg0);\n\t}\n\t/**\n\t * @returns {number | undefined}\n\t */\n\tget packet_loss() {\n\t\ttry {\n\t\t\tconst retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n\t\t\twasm.__wbg_get_connectionstats_packet_loss(retptr, this.__wbg_ptr);\n\t\t\tvar r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n\t\t\tvar r2 = getDataViewMemory0().getFloat64(retptr + 8 * 1, true);\n\t\t\treturn r0 === 0 ? undefined : r2;\n\t\t} finally {\n\t\t\twasm.__wbindgen_add_to_stack_pointer(16);\n\t\t}\n\t}\n\t/**\n\t * @param {number | null} [arg0]\n\t */\n\tset packet_loss(arg0) {\n\t\twasm.__wbg_set_connectionstats_packet_loss(this.__wbg_ptr, !isLikeNone(arg0), isLikeNone(arg0) ? 0 : arg0);\n\t}\n}\nif (Symbol.dispose) ConnectionStats.prototype[Symbol.dispose] = ConnectionStats.prototype.free;\n\nconst ErmisCallFinalization =\n\ttypeof FinalizationRegistry === 'undefined'\n\t\t? { register: () => {}, unregister: () => {} }\n\t\t: new FinalizationRegistry((ptr) => wasm.__wbg_ermiscall_free(ptr >>> 0, 1));\n\nexport class ErmisCall {\n\t__destroy_into_raw() {\n\t\tconst ptr = this.__wbg_ptr;\n\t\tthis.__wbg_ptr = 0;\n\t\tErmisCallFinalization.unregister(this);\n\t\treturn ptr;\n\t}\n\n\tfree() {\n\t\tconst ptr = this.__destroy_into_raw();\n\t\twasm.__wbg_ermiscall_free(ptr, 0);\n\t}\n\t/**\n\t * @returns {Promise<Uint8Array>}\n\t */\n\tasyncRecv() {\n\t\tconst ret = wasm.ermiscall_asyncRecv(this.__wbg_ptr);\n\t\treturn takeObject(ret);\n\t}\n\t/**\n\t * @param {Uint8Array} data\n\t */\n\tsendFrame(data) {\n\t\ttry {\n\t\t\tconst retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n\t\t\tconst ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_export);\n\t\t\tconst len0 = WASM_VECTOR_LEN;\n\t\t\twasm.ermiscall_sendFrame(retptr, this.__wbg_ptr, ptr0, len0);\n\t\t\tvar r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n\t\t\tvar r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n\t\t\tif (r1) {\n\t\t\t\tthrow takeObject(r0);\n\t\t\t}\n\t\t} finally {\n\t\t\twasm.__wbindgen_add_to_stack_pointer(16);\n\t\t}\n\t}\n\t/**\n\t * @param {Uint8Array} data\n\t */\n\tbeginWithGop(data) {\n\t\ttry {\n\t\t\tconst retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n\t\t\tconst ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_export);\n\t\t\tconst len0 = WASM_VECTOR_LEN;\n\t\t\twasm.ermiscall_beginWithGop(retptr, this.__wbg_ptr, ptr0, len0);\n\t\t\tvar r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n\t\t\tvar r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n\t\t\tif (r1) {\n\t\t\t\tthrow takeObject(r0);\n\t\t\t}\n\t\t} finally {\n\t\t\twasm.__wbindgen_add_to_stack_pointer(16);\n\t\t}\n\t}\n\t/**\n\t * @returns {Promise<void>}\n\t */\n\tcloseEndpoint() {\n\t\tconst ret = wasm.ermiscall_closeEndpoint(this.__wbg_ptr);\n\t\treturn takeObject(ret);\n\t}\n\tnetworkChange() {\n\t\twasm.ermiscall_networkChange(this.__wbg_ptr);\n\t}\n\tnotifyNewGop() {\n\t\ttry {\n\t\t\tconst retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n\t\t\twasm.ermiscall_notifyNewGop(retptr, this.__wbg_ptr);\n\t\t\tvar r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n\t\t\tvar r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n\t\t\tif (r1) {\n\t\t\t\tthrow takeObject(r0);\n\t\t\t}\n\t\t} finally {\n\t\t\twasm.__wbindgen_add_to_stack_pointer(16);\n\t\t}\n\t}\n\t/**\n\t * @returns {string | undefined}\n\t */\n\tconnectionType() {\n\t\ttry {\n\t\t\tconst retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n\t\t\twasm.ermiscall_connectionType(retptr, this.__wbg_ptr);\n\t\t\tvar r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n\t\t\tvar r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n\t\t\tlet v1;\n\t\t\tif (r0 !== 0) {\n\t\t\t\tv1 = getStringFromWasm0(r0, r1).slice();\n\t\t\t\twasm.__wbindgen_export4(r0, r1 * 1, 1);\n\t\t\t}\n\t\t\treturn v1;\n\t\t} finally {\n\t\t\twasm.__wbindgen_add_to_stack_pointer(16);\n\t\t}\n\t}\n\t/**\n\t * @returns {number | undefined}\n\t */\n\troundTripTime() {\n\t\ttry {\n\t\t\tconst retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n\t\t\twasm.ermiscall_roundTripTime(retptr, this.__wbg_ptr);\n\t\t\tvar r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n\t\t\tvar r2 = getDataViewMemory0().getFloat64(retptr + 8 * 1, true);\n\t\t\treturn r0 === 0 ? undefined : r2;\n\t\t} finally {\n\t\t\twasm.__wbindgen_add_to_stack_pointer(16);\n\t\t}\n\t}\n\tcloseConnection() {\n\t\ttry {\n\t\t\tconst retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n\t\t\twasm.ermiscall_closeConnection(retptr, this.__wbg_ptr);\n\t\t\tvar r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n\t\t\tvar r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n\t\t\tif (r1) {\n\t\t\t\tthrow takeObject(r0);\n\t\t\t}\n\t\t} finally {\n\t\t\twasm.__wbindgen_add_to_stack_pointer(16);\n\t\t}\n\t}\n\t/**\n\t * @param {Uint8Array} data\n\t */\n\tsendAudioFrame(data) {\n\t\ttry {\n\t\t\tconst retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n\t\t\tconst ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_export);\n\t\t\tconst len0 = WASM_VECTOR_LEN;\n\t\t\twasm.ermiscall_sendAudioFrame(retptr, this.__wbg_ptr, ptr0, len0);\n\t\t\tvar r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n\t\t\tvar r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n\t\t\tif (r1) {\n\t\t\t\tthrow takeObject(r0);\n\t\t\t}\n\t\t} finally {\n\t\t\twasm.__wbindgen_add_to_stack_pointer(16);\n\t\t}\n\t}\n\t/**\n\t * @returns {Promise<void>}\n\t */\n\tacceptConnection() {\n\t\tconst ret = wasm.ermiscall_acceptConnection(this.__wbg_ptr);\n\t\treturn takeObject(ret);\n\t}\n\t/**\n\t * @param {Uint8Array} data\n\t */\n\tsendControlFrame(data) {\n\t\ttry {\n\t\t\tconst retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n\t\t\tconst ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_export);\n\t\t\tconst len0 = WASM_VECTOR_LEN;\n\t\t\twasm.ermiscall_sendControlFrame(retptr, this.__wbg_ptr, ptr0, len0);\n\t\t\tvar r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n\t\t\tvar r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n\t\t\tif (r1) {\n\t\t\t\tthrow takeObject(r0);\n\t\t\t}\n\t\t} finally {\n\t\t\twasm.__wbindgen_add_to_stack_pointer(16);\n\t\t}\n\t}\n\t/**\n\t * @returns {number | undefined}\n\t */\n\tcurrentPacketLoss() {\n\t\ttry {\n\t\t\tconst retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n\t\t\twasm.ermiscall_currentPacketLoss(retptr, this.__wbg_ptr);\n\t\t\tvar r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n\t\t\tvar r2 = getDataViewMemory0().getFloat64(retptr + 8 * 1, true);\n\t\t\treturn r0 === 0 ? undefined : r2;\n\t\t} finally {\n\t\t\twasm.__wbindgen_add_to_stack_pointer(16);\n\t\t}\n\t}\n\t/**\n\t * @returns {Promise<string>}\n\t */\n\tgetLocalEndpointAddr() {\n\t\tconst ret = wasm.ermiscall_getLocalEndpointAddr(this.__wbg_ptr);\n\t\treturn takeObject(ret);\n\t}\n\tconstructor() {\n\t\tconst ret = wasm.ermiscall_new();\n\t\tthis.__wbg_ptr = ret >>> 0;\n\t\tErmisCallFinalization.register(this, this.__wbg_ptr, this);\n\t\treturn this;\n\t}\n\t/**\n\t * @returns {Uint8Array}\n\t */\n\trecv() {\n\t\ttry {\n\t\t\tconst retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n\t\t\twasm.ermiscall_recv(retptr, this.__wbg_ptr);\n\t\t\tvar r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n\t\t\tvar r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n\t\t\tvar r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n\t\t\tif (r2) {\n\t\t\t\tthrow takeObject(r1);\n\t\t\t}\n\t\t\treturn takeObject(r0);\n\t\t} finally {\n\t\t\twasm.__wbindgen_add_to_stack_pointer(16);\n\t\t}\n\t}\n\t/**\n\t * @param {any} relay_urls\n\t * @param {Uint8Array | null} [secret_key]\n\t * @returns {Promise<void>}\n\t */\n\tspawn(relay_urls, secret_key) {\n\t\tvar ptr0 = isLikeNone(secret_key) ? 0 : passArray8ToWasm0(secret_key, wasm.__wbindgen_export);\n\t\tvar len0 = WASM_VECTOR_LEN;\n\t\tconst ret = wasm.ermiscall_spawn(this.__wbg_ptr, addHeapObject(relay_urls), ptr0, len0);\n\t\treturn takeObject(ret);\n\t}\n\t/**\n\t * @param {string} addr\n\t * @returns {Promise<void>}\n\t */\n\tconnect(addr) {\n\t\tconst ptr0 = passStringToWasm0(addr, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n\t\tconst len0 = WASM_VECTOR_LEN;\n\t\tconst ret = wasm.ermiscall_connect(this.__wbg_ptr, ptr0, len0);\n\t\treturn takeObject(ret);\n\t}\n\t/**\n\t * @returns {any}\n\t */\n\tgetStats() {\n\t\ttry {\n\t\t\tconst retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n\t\t\twasm.ermiscall_getStats(retptr, this.__wbg_ptr);\n\t\t\tvar r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n\t\t\tvar r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n\t\t\tvar r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n\t\t\tif (r2) {\n\t\t\t\tthrow takeObject(r1);\n\t\t\t}\n\t\t\treturn takeObject(r0);\n\t\t} finally {\n\t\t\twasm.__wbindgen_add_to_stack_pointer(16);\n\t\t}\n\t}\n}\nif (Symbol.dispose) ErmisCall.prototype[Symbol.dispose] = ErmisCall.prototype.free;\n\nconst IntoUnderlyingByteSourceFinalization =\n\ttypeof FinalizationRegistry === 'undefined'\n\t\t? { register: () => {}, unregister: () => {} }\n\t\t: new FinalizationRegistry((ptr) => wasm.__wbg_intounderlyingbytesource_free(ptr >>> 0, 1));\n\nexport class IntoUnderlyingByteSource {\n\t__destroy_into_raw() {\n\t\tconst ptr = this.__wbg_ptr;\n\t\tthis.__wbg_ptr = 0;\n\t\tIntoUnderlyingByteSourceFinalization.unregister(this);\n\t\treturn ptr;\n\t}\n\n\tfree() {\n\t\tconst ptr = this.__destroy_into_raw();\n\t\twasm.__wbg_intounderlyingbytesource_free(ptr, 0);\n\t}\n\t/**\n\t * @returns {number}\n\t */\n\tget autoAllocateChunkSize() {\n\t\tconst ret = wasm.intounderlyingbytesource_autoAllocateChunkSize(this.__wbg_ptr);\n\t\treturn ret >>> 0;\n\t}\n\t/**\n\t * @param {ReadableByteStreamController} controller\n\t * @returns {Promise<any>}\n\t */\n\tpull(controller) {\n\t\tconst ret = wasm.intounderlyingbytesource_pull(this.__wbg_ptr, addHeapObject(controller));\n\t\treturn takeObject(ret);\n\t}\n\t/**\n\t * @param {ReadableByteStreamController} controller\n\t */\n\tstart(controller) {\n\t\twasm.intounderlyingbytesource_start(this.__wbg_ptr, addHeapObject(controller));\n\t}\n\t/**\n\t * @returns {ReadableStreamType}\n\t */\n\tget type() {\n\t\tconst ret = wasm.intounderlyingbytesource_type(this.__wbg_ptr);\n\t\treturn __wbindgen_enum_ReadableStreamType[ret];\n\t}\n\tcancel() {\n\t\tconst ptr = this.__destroy_into_raw();\n\t\twasm.intounderlyingbytesource_cancel(ptr);\n\t}\n}\nif (Symbol.dispose) IntoUnderlyingByteSource.prototype[Symbol.dispose] = IntoUnderlyingByteSource.prototype.free;\n\nconst IntoUnderlyingSinkFinalization =\n\ttypeof FinalizationRegistry === 'undefined'\n\t\t? { register: () => {}, unregister: () => {} }\n\t\t: new FinalizationRegistry((ptr) => wasm.__wbg_intounderlyingsink_free(ptr >>> 0, 1));\n\nexport class IntoUnderlyingSink {\n\t__destroy_into_raw() {\n\t\tconst ptr = this.__wbg_ptr;\n\t\tthis.__wbg_ptr = 0;\n\t\tIntoUnderlyingSinkFinalization.unregister(this);\n\t\treturn ptr;\n\t}\n\n\tfree() {\n\t\tconst ptr = this.__destroy_into_raw();\n\t\twasm.__wbg_intounderlyingsink_free(ptr, 0);\n\t}\n\t/**\n\t * @param {any} reason\n\t * @returns {Promise<any>}\n\t */\n\tabort(reason) {\n\t\tconst ptr = this.__destroy_into_raw();\n\t\tconst ret = wasm.intounderlyingsink_abort(ptr, addHeapObject(reason));\n\t\treturn takeObject(ret);\n\t}\n\t/**\n\t * @returns {Promise<any>}\n\t */\n\tclose() {\n\t\tconst ptr = this.__destroy_into_raw();\n\t\tconst ret = wasm.intounderlyingsink_close(ptr);\n\t\treturn takeObject(ret);\n\t}\n\t/**\n\t * @param {any} chunk\n\t * @returns {Promise<any>}\n\t */\n\twrite(chunk) {\n\t\tconst ret = wasm.intounderlyingsink_write(this.__wbg_ptr, addHeapObject(chunk));\n\t\treturn takeObject(ret);\n\t}\n}\nif (Symbol.dispose) IntoUnderlyingSink.prototype[Symbol.dispose] = IntoUnderlyingSink.prototype.free;\n\nconst IntoUnderlyingSourceFinalization =\n\ttypeof FinalizationRegistry === 'undefined'\n\t\t? { register: () => {}, unregister: () => {} }\n\t\t: new FinalizationRegistry((ptr) => wasm.__wbg_intounderlyingsource_free(ptr >>> 0, 1));\n\nexport class IntoUnderlyingSource {\n\t__destroy_into_raw() {\n\t\tconst ptr = this.__wbg_ptr;\n\t\tthis.__wbg_ptr = 0;\n\t\tIntoUnderlyingSourceFinalization.unregister(this);\n\t\treturn ptr;\n\t}\n\n\tfree() {\n\t\tconst ptr = this.__destroy_into_raw();\n\t\twasm.__wbg_intounderlyingsource_free(ptr, 0);\n\t}\n\t/**\n\t * @param {ReadableStreamDefaultController} controller\n\t * @returns {Promise<any>}\n\t */\n\tpull(controller) {\n\t\tconst ret = wasm.intounderlyingsource_pull(this.__wbg_ptr, addHeapObject(controller));\n\t\treturn takeObject(ret);\n\t}\n\tcancel() {\n\t\tconst ptr = this.__destroy_into_raw();\n\t\twasm.intounderlyingsource_cancel(ptr);\n\t}\n}\nif (Symbol.dispose) IntoUnderlyingSource.prototype[Symbol.dispose] = IntoUnderlyingSource.prototype.free;\n\nconst EXPECTED_RESPONSE_TYPES = new Set(['basic', 'cors', 'default']);\n\nasync function __wbg_load(module, imports) {\n\tif (typeof Response === 'function' && module instanceof Response) {\n\t\tif (typeof WebAssembly.instantiateStreaming === 'function') {\n\t\t\ttry {\n\t\t\t\treturn await WebAssembly.instantiateStreaming(module, imports);\n\t\t\t} catch (e) {\n\t\t\t\tconst validResponse = module.ok && EXPECTED_RESPONSE_TYPES.has(module.type);\n\n\t\t\t\tif (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t'`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n',\n\t\t\t\t\t\te,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst bytes = await module.arrayBuffer();\n\t\treturn await WebAssembly.instantiate(bytes, imports);\n\t} else {\n\t\tconst instance = await WebAssembly.instantiate(module, imports);\n\n\t\tif (instance instanceof WebAssembly.Instance) {\n\t\t\treturn { instance, module };\n\t\t} else {\n\t\t\treturn instance;\n\t\t}\n\t}\n}\n\nfunction __wbg_get_imports() {\n\tconst imports = {};\n\timports.wbg = {};\n\timports.wbg.__wbg_Error_e83987f665cf5504 = function (arg0, arg1) {\n\t\tconst ret = Error(getStringFromWasm0(arg0, arg1));\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_String_8f0eb39a4a4c2f66 = function (arg0, arg1) {\n\t\tconst ret = String(getObject(arg1));\n\t\tconst ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n\t\tconst len1 = WASM_VECTOR_LEN;\n\t\tgetDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n\t\tgetDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n\t};\n\timports.wbg.__wbg___wbindgen_boolean_get_6d5a1ee65bab5f68 = function (arg0) {\n\t\tconst v = getObject(arg0);\n\t\tconst ret = typeof v === 'boolean' ? v : undefined;\n\t\treturn isLikeNone(ret) ? 0xffffff : ret ? 1 : 0;\n\t};\n\timports.wbg.__wbg___wbindgen_debug_string_df47ffb5e35e6763 = function (arg0, arg1) {\n\t\tconst ret = debugString(getObject(arg1));\n\t\tconst ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n\t\tconst len1 = WASM_VECTOR_LEN;\n\t\tgetDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n\t\tgetDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n\t};\n\timports.wbg.__wbg___wbindgen_is_function_ee8a6c5833c90377 = function (arg0) {\n\t\tconst ret = typeof getObject(arg0) === 'function';\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg___wbindgen_is_object_c818261d21f283a4 = function (arg0) {\n\t\tconst val = getObject(arg0);\n\t\tconst ret = typeof val === 'object' && val !== null;\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg___wbindgen_is_string_fbb76cb2940daafd = function (arg0) {\n\t\tconst ret = typeof getObject(arg0) === 'string';\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg___wbindgen_is_undefined_2d472862bd29a478 = function (arg0) {\n\t\tconst ret = getObject(arg0) === undefined;\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg___wbindgen_jsval_loose_eq_b664b38a2f582147 = function (arg0, arg1) {\n\t\tconst ret = getObject(arg0) == getObject(arg1);\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg___wbindgen_number_get_a20bf9b85341449d = function (arg0, arg1) {\n\t\tconst obj = getObject(arg1);\n\t\tconst ret = typeof obj === 'number' ? obj : undefined;\n\t\tgetDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true);\n\t\tgetDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true);\n\t};\n\timports.wbg.__wbg___wbindgen_string_get_e4f06c90489ad01b = function (arg0, arg1) {\n\t\tconst obj = getObject(arg1);\n\t\tconst ret = typeof obj === 'string' ? obj : undefined;\n\t\tvar ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n\t\tvar len1 = WASM_VECTOR_LEN;\n\t\tgetDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n\t\tgetDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n\t};\n\timports.wbg.__wbg___wbindgen_throw_b855445ff6a94295 = function (arg0, arg1) {\n\t\tthrow new Error(getStringFromWasm0(arg0, arg1));\n\t};\n\timports.wbg.__wbg__wbg_cb_unref_2454a539ea5790d9 = function (arg0) {\n\t\tgetObject(arg0)._wbg_cb_unref();\n\t};\n\timports.wbg.__wbg_abort_28ad55c5825b004d = function (arg0, arg1) {\n\t\tgetObject(arg0).abort(getObject(arg1));\n\t};\n\timports.wbg.__wbg_abort_e7eb059f72f9ed0c = function (arg0) {\n\t\tgetObject(arg0).abort();\n\t};\n\timports.wbg.__wbg_addEventListener_40dc0fc428fc49e1 = function () {\n\t\treturn handleError(function (arg0, arg1, arg2, arg3) {\n\t\t\tgetObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_append_b577eb3a177bc0fa = function () {\n\t\treturn handleError(function (arg0, arg1, arg2, arg3, arg4) {\n\t\t\tgetObject(arg0).append(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_body_587542b2fd8e06c0 = function (arg0) {\n\t\tconst ret = getObject(arg0).body;\n\t\treturn isLikeNone(ret) ? 0 : addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_buffer_ccc4520b36d3ccf4 = function (arg0) {\n\t\tconst ret = getObject(arg0).buffer;\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_byobRequest_2344e6975f27456e = function (arg0) {\n\t\tconst ret = getObject(arg0).byobRequest;\n\t\treturn isLikeNone(ret) ? 0 : addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_byteLength_bcd42e4025299788 = function (arg0) {\n\t\tconst ret = getObject(arg0).byteLength;\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg_byteOffset_ca3a6cf7944b364b = function (arg0) {\n\t\tconst ret = getObject(arg0).byteOffset;\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg_call_525440f72fbfc0ea = function () {\n\t\treturn handleError(function (arg0, arg1, arg2) {\n\t\t\tconst ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n\t\t\treturn addHeapObject(ret);\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_call_e762c39fa8ea36bf = function () {\n\t\treturn handleError(function (arg0, arg1) {\n\t\t\tconst ret = getObject(arg0).call(getObject(arg1));\n\t\t\treturn addHeapObject(ret);\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_cancel_48ab6f9dc366e369 = function (arg0) {\n\t\tconst ret = getObject(arg0).cancel();\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_catch_943836faa5d29bfb = function (arg0, arg1) {\n\t\tconst ret = getObject(arg0).catch(getObject(arg1));\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_clearTimeout_15dfc3d1dcb635c6 = function () {\n\t\treturn handleError(function (arg0, arg1) {\n\t\t\tgetObject(arg0).clearTimeout(takeObject(arg1));\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_clearTimeout_7a42b49784aea641 = function (arg0) {\n\t\tconst ret = clearTimeout(takeObject(arg0));\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_close_5a6caed3231b68cd = function () {\n\t\treturn handleError(function (arg0) {\n\t\t\tgetObject(arg0).close();\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_close_6956df845478561a = function () {\n\t\treturn handleError(function (arg0) {\n\t\t\tgetObject(arg0).close();\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_close_885e277edf06b3fa = function () {\n\t\treturn handleError(function (arg0) {\n\t\t\tgetObject(arg0).close();\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_code_20d453b11b200026 = function (arg0) {\n\t\tconst ret = getObject(arg0).code;\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg_code_218f5fdf8c7fcabd = function (arg0) {\n\t\tconst ret = getObject(arg0).code;\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg_crypto_574e78ad8b13b65f = function (arg0) {\n\t\tconst ret = getObject(arg0).crypto;\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_data_ee4306d069f24f2d = function (arg0) {\n\t\tconst ret = getObject(arg0).data;\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_done_2042aa2670fb1db1 = function (arg0) {\n\t\tconst ret = getObject(arg0).done;\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg_enqueue_7b18a650aec77898 = function () {\n\t\treturn handleError(function (arg0, arg1) {\n\t\t\tgetObject(arg0).enqueue(getObject(arg1));\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_fetch_74a3e84ebd2c9a0e = function (arg0) {\n\t\tconst ret = fetch(getObject(arg0));\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_fetch_f8ba0e29a9d6de0d = function (arg0, arg1) {\n\t\tconst ret = getObject(arg0).fetch(getObject(arg1));\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_getRandomValues_1c61fac11405ffdc = function () {\n\t\treturn handleError(function (arg0, arg1) {\n\t\t\tglobalThis.crypto.getRandomValues(getArrayU8FromWasm0(arg0, arg1));\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_getRandomValues_b8f5dbd5f3995a9e = function () {\n\t\treturn handleError(function (arg0, arg1) {\n\t\t\tgetObject(arg0).getRandomValues(getObject(arg1));\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_getReader_48e00749fe3f6089 = function () {\n\t\treturn handleError(function (arg0) {\n\t\t\tconst ret = getObject(arg0).getReader();\n\t\t\treturn addHeapObject(ret);\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_getTime_14776bfb48a1bff9 = function (arg0) {\n\t\tconst ret = getObject(arg0).getTime();\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg_get_7bed016f185add81 = function (arg0, arg1) {\n\t\tconst ret = getObject(arg0)[arg1 >>> 0];\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_get_done_a0463af43a1fc764 = function (arg0) {\n\t\tconst ret = getObject(arg0).done;\n\t\treturn isLikeNone(ret) ? 0xffffff : ret ? 1 : 0;\n\t};\n\timports.wbg.__wbg_get_efcb449f58ec27c2 = function () {\n\t\treturn handleError(function (arg0, arg1) {\n\t\t\tconst ret = Reflect.get(getObject(arg0), getObject(arg1));\n\t\t\treturn addHeapObject(ret);\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_get_value_5ce96c9f81ce7398 = function (arg0) {\n\t\tconst ret = getObject(arg0).value;\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_has_787fafc980c3ccdb = function () {\n\t\treturn handleError(function (arg0, arg1) {\n\t\t\tconst ret = Reflect.has(getObject(arg0), getObject(arg1));\n\t\t\treturn ret;\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_headers_b87d7eaba61c3278 = function (arg0) {\n\t\tconst ret = getObject(arg0).headers;\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_instanceof_ArrayBuffer_70beb1189ca63b38 = function (arg0) {\n\t\tlet result;\n\t\ttry {\n\t\t\tresult = getObject(arg0) instanceof ArrayBuffer;\n\t\t} catch (_) {\n\t\t\tresult = false;\n\t\t}\n\t\tconst ret = result;\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg_instanceof_Blob_23b3322f66e5a83b = function (arg0) {\n\t\tlet result;\n\t\ttry {\n\t\t\tresult = getObject(arg0) instanceof Blob;\n\t\t} catch (_) {\n\t\t\tresult = false;\n\t\t}\n\t\tconst ret = result;\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg_instanceof_Response_f4f3e87e07f3135c = function (arg0) {\n\t\tlet result;\n\t\ttry {\n\t\t\tresult = getObject(arg0) instanceof Response;\n\t\t} catch (_) {\n\t\t\tresult = false;\n\t\t}\n\t\tconst ret = result;\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg_instanceof_Uint8Array_20c8e73002f7af98 = function (arg0) {\n\t\tlet result;\n\t\ttry {\n\t\t\tresult = getObject(arg0) instanceof Uint8Array;\n\t\t} catch (_) {\n\t\t\tresult = false;\n\t\t}\n\t\tconst ret = result;\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg_isArray_96e0af9891d0945d = function (arg0) {\n\t\tconst ret = Array.isArray(getObject(arg0));\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg_iterator_e5822695327a3c39 = function () {\n\t\tconst ret = Symbol.iterator;\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_length_69bca3cb64fc8748 = function (arg0) {\n\t\tconst ret = getObject(arg0).length;\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg_length_cdd215e10d9dd507 = function (arg0) {\n\t\tconst ret = getObject(arg0).length;\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg_log_ee0138cca4957740 = function (arg0, arg1) {\n\t\tconsole.log(getStringFromWasm0(arg0, arg1));\n\t};\n\timports.wbg.__wbg_message_bd42dbe3f2f3ed8e = function (arg0, arg1) {\n\t\tconst ret = getObject(arg1).message;\n\t\tconst ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n\t\tconst len1 = WASM_VECTOR_LEN;\n\t\tgetDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n\t\tgetDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n\t};\n\timports.wbg.__wbg_msCrypto_a61aeb35a24c1329 = function (arg0) {\n\t\tconst ret = getObject(arg0).msCrypto;\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_new_0_f9740686d739025c = function () {\n\t\tconst ret = new Date();\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_new_1acc0b6eea89d040 = function () {\n\t\tconst ret = new Object();\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_new_2531773dac38ebb3 = function () {\n\t\treturn handleError(function () {\n\t\t\tconst ret = new AbortController();\n\t\t\treturn addHeapObject(ret);\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_new_3c3d849046688a66 = function (arg0, arg1) {\n\t\ttry {\n\t\t\tvar state0 = { a: arg0, b: arg1 };\n\t\t\tvar cb0 = (arg0, arg1) => {\n\t\t\t\tconst a = state0.a;\n\t\t\t\tstate0.a = 0;\n\t\t\t\ttry {\n\t\t\t\t\treturn __wasm_bindgen_func_elem_14072(a, state0.b, arg0, arg1);\n\t\t\t\t} finally {\n\t\t\t\t\tstate0.a = a;\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst ret = new Promise(cb0);\n\t\t\treturn addHeapObject(ret);\n\t\t} finally {\n\t\t\tstate0.a = state0.b = 0;\n\t\t}\n\t};\n\timports.wbg.__wbg_new_5a79be3ab53b8aa5 = function (arg0) {\n\t\tconst ret = new Uint8Array(getObject(arg0));\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_new_881c4fe631eee9ad = function () {\n\t\treturn handleError(function (arg0, arg1) {\n\t\t\tconst ret = new WebSocket(getStringFromWasm0(arg0, arg1));\n\t\t\treturn addHeapObject(ret);\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_new_9edf9838a2def39c = function () {\n\t\treturn handleError(function () {\n\t\t\tconst ret = new Headers();\n\t\t\treturn addHeapObject(ret);\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_new_a7442b4b19c1a356 = function (arg0, arg1) {\n\t\tconst ret = new Error(getStringFromWasm0(arg0, arg1));\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_new_e17d9f43105b08be = function () {\n\t\tconst ret = new Array();\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_new_from_slice_92f4d78ca282a2d2 = function (arg0, arg1) {\n\t\tconst ret = new Uint8Array(getArrayU8FromWasm0(arg0, arg1));\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_new_no_args_ee98eee5275000a4 = function (arg0, arg1) {\n\t\tconst ret = new Function(getStringFromWasm0(arg0, arg1));\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_new_with_byte_offset_and_length_46e3e6a5e9f9e89b = function (arg0, arg1, arg2) {\n\t\tconst ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_new_with_length_01aa0dc35aa13543 = function (arg0) {\n\t\tconst ret = new Uint8Array(arg0 >>> 0);\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_new_with_str_and_init_0ae7728b6ec367b1 = function () {\n\t\treturn handleError(function (arg0, arg1, arg2) {\n\t\t\tconst ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2));\n\t\t\treturn addHeapObject(ret);\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_new_with_str_sequence_57a88eb77393f23f = function () {\n\t\treturn handleError(function (arg0, arg1, arg2) {\n\t\t\tconst ret = new WebSocket(getStringFromWasm0(arg0, arg1), getObject(arg2));\n\t\t\treturn addHeapObject(ret);\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_next_020810e0ae8ebcb0 = function () {\n\t\treturn handleError(function (arg0) {\n\t\t\tconst ret = getObject(arg0).next();\n\t\t\treturn addHeapObject(ret);\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_next_2c826fe5dfec6b6a = function (arg0) {\n\t\tconst ret = getObject(arg0).next;\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_node_905d3e251edff8a2 = function (arg0) {\n\t\tconst ret = getObject(arg0).node;\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_now_2c95c9de01293173 = function (arg0) {\n\t\tconst ret = getObject(arg0).now();\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg_now_793306c526e2e3b6 = function () {\n\t\tconst ret = Date.now();\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg_performance_7a3ffd0b17f663ad = function (arg0) {\n\t\tconst ret = getObject(arg0).performance;\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_process_dc0fbacc7c1c06f7 = function (arg0) {\n\t\tconst ret = getObject(arg0).process;\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_prototypesetcall_2a6620b6922694b2 = function (arg0, arg1, arg2) {\n\t\tUint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), getObject(arg2));\n\t};\n\timports.wbg.__wbg_push_df81a39d04db858c = function (arg0, arg1) {\n\t\tconst ret = getObject(arg0).push(getObject(arg1));\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg_queueMicrotask_34d692c25c47d05b = function (arg0) {\n\t\tconst ret = getObject(arg0).queueMicrotask;\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_queueMicrotask_9d76cacb20c84d58 = function (arg0) {\n\t\tqueueMicrotask(getObject(arg0));\n\t};\n\timports.wbg.__wbg_randomFillSync_ac0988aba3254290 = function () {\n\t\treturn handleError(function (arg0, arg1) {\n\t\t\tgetObject(arg0).randomFillSync(takeObject(arg1));\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_read_48f1593df542f968 = function (arg0) {\n\t\tconst ret = getObject(arg0).read();\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_readyState_97984f126080aeda = function (arg0) {\n\t\tconst ret = getObject(arg0).readyState;\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg_reason_1cced37e3a93763e = function (arg0, arg1) {\n\t\tconst ret = getObject(arg1).reason;\n\t\tconst ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n\t\tconst len1 = WASM_VECTOR_LEN;\n\t\tgetDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n\t\tgetDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n\t};\n\timports.wbg.__wbg_releaseLock_5d0b5a68887b891d = function (arg0) {\n\t\tgetObject(arg0).releaseLock();\n\t};\n\timports.wbg.__wbg_removeEventListener_924d9db66a4f775d = function () {\n\t\treturn handleError(function (arg0, arg1, arg2, arg3) {\n\t\t\tgetObject(arg0).removeEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_require_60cc747a6bc5215a = function () {\n\t\treturn handleError(function () {\n\t\t\tconst ret = module.require;\n\t\t\treturn addHeapObject(ret);\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_resolve_caf97c30b83f7053 = function (arg0) {\n\t\tconst ret = Promise.resolve(getObject(arg0));\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_respond_0f4dbf5386f5c73e = function () {\n\t\treturn handleError(function (arg0, arg1) {\n\t\t\tgetObject(arg0).respond(arg1 >>> 0);\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_send_171576d2f7487517 = function () {\n\t\treturn handleError(function (arg0, arg1, arg2) {\n\t\t\tgetObject(arg0).send(getStringFromWasm0(arg1, arg2));\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_send_3d2cf376613294f0 = function () {\n\t\treturn handleError(function (arg0, arg1, arg2) {\n\t\t\tgetObject(arg0).send(getArrayU8FromWasm0(arg1, arg2));\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_setTimeout_4eb823e8b72fbe79 = function () {\n\t\treturn handleError(function (arg0, arg1, arg2) {\n\t\t\tconst ret = getObject(arg0).setTimeout(takeObject(arg1), arg2);\n\t\t\treturn addHeapObject(ret);\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_setTimeout_7bb3429662ab1e70 = function (arg0, arg1) {\n\t\tconst ret = setTimeout(getObject(arg0), arg1);\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_set_3f1d0b984ed272ed = function (arg0, arg1, arg2) {\n\t\tgetObject(arg0)[takeObject(arg1)] = takeObject(arg2);\n\t};\n\timports.wbg.__wbg_set_9e6516df7b7d0f19 = function (arg0, arg1, arg2) {\n\t\tgetObject(arg0).set(getArrayU8FromWasm0(arg1, arg2));\n\t};\n\timports.wbg.__wbg_set_binaryType_9d839cea8fcdc5c3 = function (arg0, arg1) {\n\t\tgetObject(arg0).binaryType = __wbindgen_enum_BinaryType[arg1];\n\t};\n\timports.wbg.__wbg_set_body_3c365989753d61f4 = function (arg0, arg1) {\n\t\tgetObject(arg0).body = getObject(arg1);\n\t};\n\timports.wbg.__wbg_set_cache_2f9deb19b92b81e3 = function (arg0, arg1) {\n\t\tgetObject(arg0).cache = __wbindgen_enum_RequestCache[arg1];\n\t};\n\timports.wbg.__wbg_set_credentials_f621cd2d85c0c228 = function (arg0, arg1) {\n\t\tgetObject(arg0).credentials = __wbindgen_enum_RequestCredentials[arg1];\n\t};\n\timports.wbg.__wbg_set_handle_event_b2de49ad6c81e3c8 = function (arg0, arg1) {\n\t\tgetObject(arg0).handleEvent = getObject(arg1);\n\t};\n\timports.wbg.__wbg_set_headers_6926da238cd32ee4 = function (arg0, arg1) {\n\t\tgetObject(arg0).headers = getObject(arg1);\n\t};\n\timports.wbg.__wbg_set_method_c02d8cbbe204ac2d = function (arg0, arg1, arg2) {\n\t\tgetObject(arg0).method = getStringFromWasm0(arg1, arg2);\n\t};\n\timports.wbg.__wbg_set_mode_52ef73cfa79639cb = function (arg0, arg1) {\n\t\tgetObject(arg0).mode = __wbindgen_enum_RequestMode[arg1];\n\t};\n\timports.wbg.__wbg_set_onclose_c09e4f7422de8dae = function (arg0, arg1) {\n\t\tgetObject(arg0).onclose = getObject(arg1);\n\t};\n\timports.wbg.__wbg_set_onerror_337a3a2db9517378 = function (arg0, arg1) {\n\t\tgetObject(arg0).onerror = getObject(arg1);\n\t};\n\timports.wbg.__wbg_set_onmessage_8661558551a89792 = function (arg0, arg1) {\n\t\tgetObject(arg0).onmessage = getObject(arg1);\n\t};\n\timports.wbg.__wbg_set_onopen_efccb9305427b907 = function (arg0, arg1) {\n\t\tgetObject(arg0).onopen = getObject(arg1);\n\t};\n\timports.wbg.__wbg_set_signal_dda2cf7ccb6bee0f = function (arg0, arg1) {\n\t\tgetObject(arg0).signal = getObject(arg1);\n\t};\n\timports.wbg.__wbg_signal_4db5aa055bf9eb9a = function (arg0) {\n\t\tconst ret = getObject(arg0).signal;\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_static_accessor_GLOBAL_89e1d9ac6a1b250e = function () {\n\t\tconst ret = typeof global === 'undefined' ? null : global;\n\t\treturn isLikeNone(ret) ? 0 : addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_static_accessor_GLOBAL_THIS_8b530f326a9e48ac = function () {\n\t\tconst ret = typeof globalThis === 'undefined' ? null : globalThis;\n\t\treturn isLikeNone(ret) ? 0 : addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_static_accessor_SELF_6fdf4b64710cc91b = function () {\n\t\tconst ret = typeof self === 'undefined' ? null : self;\n\t\treturn isLikeNone(ret) ? 0 : addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_static_accessor_WINDOW_b45bfc5a37f6cfa2 = function () {\n\t\tconst ret = typeof window === 'undefined' ? null : window;\n\t\treturn isLikeNone(ret) ? 0 : addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_status_de7eed5a7a5bfd5d = function (arg0) {\n\t\tconst ret = getObject(arg0).status;\n\t\treturn ret;\n\t};\n\timports.wbg.__wbg_stringify_b5fb28f6465d9c3e = function () {\n\t\treturn handleError(function (arg0) {\n\t\t\tconst ret = JSON.stringify(getObject(arg0));\n\t\t\treturn addHeapObject(ret);\n\t\t}, arguments);\n\t};\n\timports.wbg.__wbg_subarray_480600f3d6a9f26c = function (arg0, arg1, arg2) {\n\t\tconst ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_then_4f46f6544e6b4a28 = function (arg0, arg1) {\n\t\tconst ret = getObject(arg0).then(getObject(arg1));\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_then_70d05cf780a18d77 = function (arg0, arg1, arg2) {\n\t\tconst ret = getObject(arg0).then(getObject(arg1), getObject(arg2));\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_url_9bd0af1cd8643de7 = function (arg0, arg1) {\n\t\tconst ret = getObject(arg1).url;\n\t\tconst ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n\t\tconst len1 = WASM_VECTOR_LEN;\n\t\tgetDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n\t\tgetDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n\t};\n\timports.wbg.__wbg_url_b36d2a5008eb056f = function (arg0, arg1) {\n\t\tconst ret = getObject(arg1).url;\n\t\tconst ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n\t\tconst len1 = WASM_VECTOR_LEN;\n\t\tgetDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n\t\tgetDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n\t};\n\timports.wbg.__wbg_value_692627309814bb8c = function (arg0) {\n\t\tconst ret = getObject(arg0).value;\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_versions_c01dfd4722a88165 = function (arg0) {\n\t\tconst ret = getObject(arg0).versions;\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_view_f6c15ac9fed63bbd = function (arg0) {\n\t\tconst ret = getObject(arg0).view;\n\t\treturn isLikeNone(ret) ? 0 : addHeapObject(ret);\n\t};\n\timports.wbg.__wbg_wasClean_3d7c0cf05bd0a123 = function (arg0) {\n\t\tconst ret = getObject(arg0).wasClean;\n\t\treturn ret;\n\t};\n\timports.wbg.__wbindgen_cast_03c7ce370dde4234 = function (arg0, arg1) {\n\t\t// Cast intrinsic for `Closure(Closure { dtor_idx: 545, function: Function { arguments: [NamedExternref(\"CloseEvent\")], shim_idx: 546, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.\n\t\tconst ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_2072, __wasm_bindgen_func_elem_2279);\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbindgen_cast_0548e2a34f33830b = function (arg0, arg1) {\n\t\t// Cast intrinsic for `Closure(Closure { dtor_idx: 1340, function: Function { arguments: [], shim_idx: 1341, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.\n\t\tconst ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_6067, __wasm_bindgen_func_elem_6078);\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbindgen_cast_2241b6af4c4b2941 = function (arg0, arg1) {\n\t\t// Cast intrinsic for `Ref(String) -> Externref`.\n\t\tconst ret = getStringFromWasm0(arg0, arg1);\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbindgen_cast_297907e58b496a50 = function (arg0, arg1) {\n\t\t// Cast intrinsic for `Closure(Closure { dtor_idx: 2446, function: Function { arguments: [], shim_idx: 2447, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.\n\t\tconst ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_12577, __wasm_bindgen_func_elem_12594);\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbindgen_cast_5f086fd16774f149 = function (arg0, arg1) {\n\t\t// Cast intrinsic for `Closure(Closure { dtor_idx: 2366, function: Function { arguments: [NamedExternref(\"MessageEvent\")], shim_idx: 2367, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.\n\t\tconst ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_11415, __wasm_bindgen_func_elem_11460);\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbindgen_cast_81d295fd67d7c7c1 = function (arg0, arg1) {\n\t\t// Cast intrinsic for `Closure(Closure { dtor_idx: 2454, function: Function { arguments: [Externref], shim_idx: 2455, ret: Unit, inner_ret: Some(Unit) }, mutable: true }) -> Externref`.\n\t\tconst ret = makeMutClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_12631, __wasm_bindgen_func_elem_12647);\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbindgen_cast_aeaa8ca4ff3b8539 = function (arg0, arg1) {\n\t\t// Cast intrinsic for `Closure(Closure { dtor_idx: 1248, function: Function { arguments: [], shim_idx: 1249, ret: Unit, inner_ret: Some(Unit) }, mutable: false }) -> Externref`.\n\t\tconst ret = makeClosure(arg0, arg1, wasm.__wasm_bindgen_func_elem_5618, __wasm_bindgen_func_elem_5633);\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbindgen_cast_cb9088102bce6b30 = function (arg0, arg1) {\n\t\t// Cast intrinsic for `Ref(Slice(U8)) -> NamedExternref(\"Uint8Array\")`.\n\t\tconst ret = getArrayU8FromWasm0(arg0, arg1);\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbindgen_cast_d6cd19b81560fd6e = function (arg0) {\n\t\t// Cast intrinsic for `F64 -> Externref`.\n\t\tconst ret = arg0;\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbindgen_object_clone_ref = function (arg0) {\n\t\tconst ret = getObject(arg0);\n\t\treturn addHeapObject(ret);\n\t};\n\timports.wbg.__wbindgen_object_drop_ref = function (arg0) {\n\t\ttakeObject(arg0);\n\t};\n\n\treturn imports;\n}\n\nfunction __wbg_finalize_init(instance, module) {\n\twasm = instance.exports;\n\t__wbg_init.__wbindgen_wasm_module = module;\n\tcachedDataViewMemory0 = null;\n\tcachedUint8ArrayMemory0 = null;\n\n\treturn wasm;\n}\n\nfunction initSync(module) {\n\tif (wasm !== undefined) return wasm;\n\n\tif (typeof module !== 'undefined') {\n\t\tif (Object.getPrototypeOf(module) === Object.prototype) {\n\t\t\t({ module } = module);\n\t\t} else {\n\t\t\tconsole.warn('using deprecated parameters for `initSync()`; pass a single object instead');\n\t\t}\n\t}\n\n\tconst imports = __wbg_get_imports();\n\n\tif (!(module instanceof WebAssembly.Module)) {\n\t\tmodule = new WebAssembly.Module(module);\n\t}\n\n\tconst instance = new WebAssembly.Instance(module, imports);\n\n\treturn __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n\tif (wasm !== undefined) return wasm;\n\n\tif (typeof module_or_path !== 'undefined') {\n\t\tif (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n\t\t\t({ module_or_path } = module_or_path);\n\t\t} else {\n\t\t\tconsole.warn('using deprecated parameters for the initialization function; pass a single object instead');\n\t\t}\n\t}\n\n\tif (typeof module_or_path === 'undefined') {\n\t\tmodule_or_path = '/ermis_call_node_wasm_bg.wasm';\n\t}\n\tconst imports = __wbg_get_imports();\n\n\tif (\n\t\ttypeof module_or_path === 'string' ||\n\t\t(typeof Request === 'function' && module_or_path instanceof Request) ||\n\t\t(typeof URL === 'function' && module_or_path instanceof URL)\n\t) {\n\t\tmodule_or_path = fetch(module_or_path);\n\t}\n\n\tconst { instance, module } = await __wbg_load(await module_or_path, imports);\n\n\treturn __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","/**\n * WASM Worker — chạy ErmisCall WASM instance trên Worker thread.\n *\n * Mọi WASM sync calls (sendFrame, sendAudioFrame, sendControlFrame) chạy ở đây,\n * KHÔNG BAO GIỜ block Main Thread. Khi P2P connection congested (peer mạng yếu),\n * Worker thread bị block nhưng UI vẫn responsive.\n *\n * Communication: postMessage với Transferable buffers (zero-copy).\n */\n\n// @ts-ignore — WASM module import sẽ được resolve bởi bundler\nimport { initSync, ErmisCall } from './wasm/ermis_call_node_wasm';\n\nlet ermisCall: ErmisCall | null = null;\nlet isRecvActive = false;\n\n/** Request types từ Main Thread */\ntype WorkerRequest =\n | { id: number; type: 'init'; wasmBytes: ArrayBuffer }\n | { id: number; type: 'spawn'; relayUrls: string[] }\n | { id: number; type: 'getLocalEndpointAddr' }\n | { id: number; type: 'connect'; address: string }\n | { id: number; type: 'acceptConnection' }\n | { id: number; type: 'sendFrame'; data: Uint8Array }\n | { id: number; type: 'beginWithGop'; data: Uint8Array }\n | { id: number; type: 'sendAudioFrame'; data: Uint8Array }\n | { id: number; type: 'sendControlFrame'; data: Uint8Array }\n | { id: number; type: 'closeEndpoint' }\n | { id: number; type: 'closeConnection' }\n | { id: number; type: 'networkChange' }\n | { id: number; type: 'startRecvLoop' }\n | { id: number; type: 'stopRecvLoop' }\n | { id: number; type: 'getStats' }\n | { id: number; type: 'terminate' };\n\n/** Helper: gửi success response */\nfunction sendResult(id: number, data?: any) {\n self.postMessage({ id, type: 'result', data });\n}\n\n/** Helper: gửi error response */\nfunction sendError(id: number, error: string) {\n self.postMessage({ id, type: 'error', error });\n}\n\n/** Helper: sleep */\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Receive loop — chạy liên tục trong Worker.\n * asyncRecv() block Worker thread khi chờ data — KHÔNG ảnh hưởng Main Thread.\n * Data nhận được gửi về Main Thread qua postMessage với Transferable.\n */\nasync function recvLoop() {\n while (isRecvActive && ermisCall) {\n try {\n const data = await ermisCall.asyncRecv();\n // Transfer buffer ownership → zero-copy\n (self as unknown as { postMessage: (msg: any, transfer?: Transferable[]) => void }).postMessage(\n { type: 'recv_data', data },\n [data.buffer],\n );\n } catch (error) {\n if (!isRecvActive) break; // Đã dừng — không cần log\n (self as unknown as { postMessage: (msg: any, transfer?: Transferable[]) => void }).postMessage({\n type: 'recv_error',\n error: String(error),\n });\n await sleep(200); // Backoff trước khi thử lại\n }\n }\n}\n\n/** Main message handler */\nself.onmessage = async (e: MessageEvent<WorkerRequest>) => {\n const msg = e.data;\n\n try {\n switch (msg.type) {\n // === LIFECYCLE ===\n case 'init': {\n // Nhận WASM bytes từ Main Thread → compile thành Module → initSync\n const wasmModule = new WebAssembly.Module(msg.wasmBytes);\n initSync(wasmModule);\n ermisCall = new ErmisCall();\n sendResult(msg.id);\n break;\n }\n\n case 'spawn': {\n if (!ermisCall) throw new Error('WASM not initialized');\n await ermisCall.spawn(msg.relayUrls);\n sendResult(msg.id);\n break;\n }\n\n case 'getLocalEndpointAddr': {\n if (!ermisCall) throw new Error('WASM not initialized');\n const addr = await ermisCall.getLocalEndpointAddr();\n sendResult(msg.id, addr);\n break;\n }\n\n case 'connect': {\n if (!ermisCall) throw new Error('WASM not initialized');\n await ermisCall.connect(msg.address);\n sendResult(msg.id);\n break;\n }\n\n case 'acceptConnection': {\n if (!ermisCall) throw new Error('WASM not initialized');\n await ermisCall.acceptConnection();\n sendResult(msg.id);\n break;\n }\n\n // === DATA SEND (blocking calls — now safe in Worker) ===\n case 'sendFrame': {\n if (!ermisCall) throw new Error('WASM not initialized');\n ermisCall.sendFrame(msg.data);\n sendResult(msg.id);\n break;\n }\n\n case 'beginWithGop': {\n if (!ermisCall) throw new Error('WASM not initialized');\n ermisCall.beginWithGop(msg.data);\n sendResult(msg.id);\n break;\n }\n\n case 'sendAudioFrame': {\n if (!ermisCall) throw new Error('WASM not initialized');\n ermisCall.sendAudioFrame(msg.data);\n sendResult(msg.id);\n break;\n }\n\n case 'sendControlFrame': {\n if (!ermisCall) throw new Error('WASM not initialized');\n ermisCall.sendControlFrame(msg.data);\n sendResult(msg.id);\n break;\n }\n\n // === RECEIVE LOOP ===\n case 'startRecvLoop': {\n isRecvActive = true;\n sendResult(msg.id);\n // Start loop (fire-and-forget — runs until stopRecvLoop)\n recvLoop();\n break;\n }\n\n case 'stopRecvLoop': {\n isRecvActive = false;\n sendResult(msg.id);\n break;\n }\n\n // === CONTROL ===\n case 'closeEndpoint': {\n if (!ermisCall) throw new Error('WASM not initialized');\n await ermisCall.closeEndpoint();\n sendResult(msg.id);\n break;\n }\n\n case 'closeConnection': {\n if (!ermisCall) throw new Error('WASM not initialized');\n ermisCall.closeConnection();\n sendResult(msg.id);\n break;\n }\n\n case 'networkChange': {\n if (!ermisCall) throw new Error('WASM not initialized');\n ermisCall.networkChange();\n sendResult(msg.id);\n break;\n }\n\n case 'getStats': {\n if (!ermisCall) throw new Error('WASM not initialized');\n const stats = ermisCall.getStats();\n sendResult(msg.id, stats);\n break;\n }\n\n case 'terminate': {\n isRecvActive = false;\n if (ermisCall) {\n try {\n ermisCall.closeConnection();\n } catch {\n /* ignore */\n }\n try {\n ermisCall.free();\n } catch {\n /* ignore */\n }\n ermisCall = null;\n }\n sendResult(msg.id);\n // Worker sẽ bị terminate bởi Main Thread sau khi nhận result\n break;\n }\n\n default:\n sendError((msg as any).id, `Unknown message type: ${(msg as any).type}`);\n }\n } catch (error) {\n sendError(msg.id, String(error));\n }\n};\n"],"mappings":"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","names":["ptr","module","arg0","arg1"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ermis-network/ermis-chat-sdk",
3
- "version": "1.0.9",
3
+ "version": "2.0.0",
4
4
  "description": "Ermis Chat SDK",
5
5
  "author": "Ermis",
6
6
  "homepage": "https://ermis.network/",
@@ -62,7 +62,7 @@
62
62
  "typescript": "^5.9.3"
63
63
  },
64
64
  "scripts": {
65
- "build": "rm -rf dist && tsup",
65
+ "build": "node -e \"require('fs').rmSync('dist', { recursive: true, force: true })\" && tsup",
66
66
  "dev": "tsup --watch",
67
67
  "types": "tsc --noEmit"
68
68
  }
Binary file
package/src/channel.ts CHANGED
@@ -839,10 +839,16 @@ export class Channel<ErmisChatGenerics extends ExtendableGenerics = DefaultGener
839
839
 
840
840
  // update the channel id if it was missing
841
841
 
842
- if (!this.id) {
842
+ // update the channel id if it was missing or temporary
843
+ const oldCid = this.cid;
844
+ if (oldCid !== state.channel.cid) {
843
845
  this.id = state.channel.id;
844
846
  this.cid = state.channel.cid;
845
847
 
848
+ if (oldCid in this.getClient().activeChannels) {
849
+ delete this.getClient().activeChannels[oldCid];
850
+ }
851
+
846
852
  // set the channel as active...
847
853
  const membersStr = state.channel.members
848
854
  .map((member) => member.user_id || member.user?.id)
@@ -859,6 +865,8 @@ export class Channel<ErmisChatGenerics extends ExtendableGenerics = DefaultGener
859
865
  if (!(this.cid in this.getClient().activeChannels)) {
860
866
  this.getClient().activeChannels[this.cid] = this;
861
867
  }
868
+ } else if (!(this.cid in this.getClient().activeChannels)) {
869
+ this.getClient().activeChannels[this.cid] = this;
862
870
  }
863
871
 
864
872
  // add any messages to our channel state
@@ -1037,62 +1045,99 @@ export class Channel<ErmisChatGenerics extends ExtendableGenerics = DefaultGener
1037
1045
 
1038
1046
  async getThumbBlobVideo(file: File): Promise<Blob | null> {
1039
1047
  return new Promise((resolve) => {
1040
- const seekTo = 0.1;
1041
1048
  const videoPlayer = document.createElement('video');
1042
1049
  videoPlayer.src = URL.createObjectURL(file);
1043
- videoPlayer.crossOrigin = 'anonymous'; // Tránh lỗi CORS nếu cần
1050
+ videoPlayer.crossOrigin = 'anonymous';
1051
+ videoPlayer.muted = true; // Đảm bảo không phát tiếng nếu browser tự phát
1044
1052
  videoPlayer.load();
1045
1053
 
1054
+ let attempts = 0;
1055
+ const maxAttempts = 5;
1056
+ const seekInterval = 1.0; // Nhảy mỗi lần 1 giây nếu gặp ảnh đen
1057
+
1058
+ const cleanup = () => {
1059
+ URL.revokeObjectURL(videoPlayer.src);
1060
+ videoPlayer.remove();
1061
+ };
1062
+
1046
1063
  videoPlayer.addEventListener('error', () => {
1047
1064
  console.error('Error when loading video file.');
1065
+ cleanup();
1048
1066
  resolve(null);
1049
1067
  });
1050
1068
 
1051
- videoPlayer.addEventListener('loadedmetadata', () => {
1052
- if (videoPlayer.duration < seekTo) {
1053
- console.error('Video is too short.');
1054
- resolve(null);
1055
- return;
1056
- }
1057
-
1058
- setTimeout(() => {
1059
- videoPlayer.currentTime = seekTo;
1060
- }, 200);
1061
- });
1062
-
1063
- videoPlayer.addEventListener('seeked', () => {
1069
+ const captureFrame = () => {
1064
1070
  try {
1065
1071
  const canvas = document.createElement('canvas');
1066
1072
  canvas.width = videoPlayer.videoWidth;
1067
1073
  canvas.height = videoPlayer.videoHeight;
1068
- const ctx = canvas.getContext('2d');
1074
+ const ctx = canvas.getContext('2d', { willReadFrequently: true });
1069
1075
 
1070
1076
  if (!ctx) {
1071
1077
  console.error('Failed to create canvas context.');
1078
+ cleanup();
1072
1079
  resolve(null);
1073
1080
  return;
1074
1081
  }
1075
1082
 
1076
1083
  ctx.drawImage(videoPlayer, 0, 0, canvas.width, canvas.height);
1077
1084
 
1078
- ctx.canvas.toBlob(
1085
+ // Kiểm tra xem có phải khung hình đen không
1086
+ const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
1087
+ const data = imageData.data;
1088
+ let totalLuminance = 0;
1089
+ const sampleStep = 40; // Lấy mẫu để tối ưu hiệu năng
1090
+ let samples = 0;
1091
+
1092
+ for (let i = 0; i < data.length; i += sampleStep * 4) {
1093
+ const r = data[i];
1094
+ const g = data[i + 1];
1095
+ const b = data[i + 2];
1096
+ // Công thức tính độ sáng tiêu chuẩn (ITU-R BT.709)
1097
+ totalLuminance += 0.2126 * r + 0.7152 * g + 0.0722 * b;
1098
+ samples++;
1099
+ }
1100
+
1101
+ const avgLuminance = totalLuminance / samples;
1102
+
1103
+ // Nếu ảnh quá tối (đen) và vẫn còn lượt thử, nhảy tiếp
1104
+ if (
1105
+ avgLuminance < 15 &&
1106
+ attempts < maxAttempts &&
1107
+ videoPlayer.currentTime + seekInterval < videoPlayer.duration
1108
+ ) {
1109
+ attempts++;
1110
+ videoPlayer.currentTime += seekInterval;
1111
+ return; // Đợi sự kiện 'seeked' tiếp theo
1112
+ }
1113
+
1114
+ // Xuất kết quả nếu ảnh ok hoặc đã hết lượt thử
1115
+ canvas.toBlob(
1079
1116
  (blob) => {
1117
+ cleanup();
1080
1118
  if (!blob) {
1081
1119
  console.error('Failed to generate thumbnail.');
1082
1120
  resolve(null);
1083
1121
  return;
1084
1122
  }
1085
1123
  resolve(blob);
1086
- URL.revokeObjectURL(videoPlayer.src); // Giải phóng bộ nhớ
1087
1124
  },
1088
1125
  'image/jpeg',
1089
1126
  0.75,
1090
1127
  );
1091
1128
  } catch (error) {
1092
1129
  console.error('Error while extracting thumbnail:', error);
1130
+ cleanup();
1093
1131
  resolve(null);
1094
1132
  }
1133
+ };
1134
+
1135
+ videoPlayer.addEventListener('loadedmetadata', () => {
1136
+ // Bắt đầu từ giây thứ 0.5 để tránh đoạn khởi đầu thường bị lỗi encoder
1137
+ videoPlayer.currentTime = Math.min(0.5, videoPlayer.duration);
1095
1138
  });
1139
+
1140
+ videoPlayer.addEventListener('seeked', captureFrame);
1096
1141
  });
1097
1142
  }
1098
1143
 
@@ -1250,33 +1295,67 @@ export class Channel<ErmisChatGenerics extends ExtendableGenerics = DefaultGener
1250
1295
  case 'message.deleted':
1251
1296
  if (event.message) {
1252
1297
  this._extendEventWithOwnReactions(event);
1253
- //! NOTE: check lai o day
1254
1298
  channelState.removeMessage(event.message);
1255
- channelState.addMessageSorted(event.message, false, false);
1256
- // if (event.hard_delete) channelState.removeMessage(event.message);
1257
- // else channelState.addMessageSorted(event.message, false, false);
1258
1299
 
1259
- channelState.removeQuotedMessageReferences(event.message);
1300
+ if (channelState.latestMessages.length === 0) {
1301
+ this.query({ messages: { limit: 1 } })
1302
+ .then(() => {
1303
+ this._callChannelListeners({
1304
+ type: 'channel.updated',
1305
+ cid: this.cid,
1306
+ channel: this.data,
1307
+ } as any);
1308
+ })
1309
+ .catch((err) => {
1310
+ this._client.logger('error', 'Failed to query for new last message after deletion', { err });
1311
+ });
1312
+ }
1260
1313
 
1261
- // if (event.message.pinned) {
1262
- // channelState.removePinnedMessage(event.message);
1263
- // }
1314
+ channelState.removeQuotedMessageReferences(event.message);
1264
1315
 
1265
1316
  if ([...channelState.pinnedMessages].some((msg) => msg.id === event.message?.id)) {
1266
1317
  channelState.removePinnedMessage(event.message);
1267
1318
  }
1268
1319
 
1320
+ const msgTime = event.message.created_at ? new Date(event.message.created_at) : null;
1321
+
1269
1322
  for (const userId in channelState.read) {
1270
1323
  if (userId !== event.user?.id && event.message.id === channelState.read[userId].last_read_message_id) {
1271
1324
  // Clear last_read_message_id if the deleted message is the last_read_message_id
1272
1325
  channelState.read[userId] = { ...channelState.read[userId], last_read_message_id: undefined };
1273
1326
  }
1327
+
1328
+ // Decrement unread_messages if the deleted message was unread for this user
1329
+ const userRead = channelState.read[userId];
1330
+ const lastRead = userRead.last_read ? new Date(userRead.last_read) : new Date(0);
1331
+
1332
+ if (msgTime && msgTime > lastRead) {
1333
+ // Ensure we don't decrement if the message was sent by the user being checked
1334
+ const wasSentByUser = event.message.user?.id === userId || event.message.user_id === userId;
1335
+ const isSystem = event.message.type === 'system';
1336
+
1337
+ if (!wasSentByUser && !isSystem) {
1338
+ userRead.unread_messages = Math.max(0, userRead.unread_messages - 1);
1339
+ if (userId === this.getClient().userID) {
1340
+ channelState.unreadCount = Math.max(0, channelState.unreadCount - 1);
1341
+ }
1342
+ }
1343
+ }
1274
1344
  }
1275
1345
  }
1276
1346
  break;
1277
1347
  case 'message.deleted_for_me':
1278
1348
  if (event.message) {
1279
- channelState.removeMessage(event.message);
1349
+ // Xoá thông tin user trong event này vì nó là thông tin người thực hiện xoá (chính mình),
1350
+ // tránh việc ghi đè lên tác giả gốc của tin nhắn dẫn đến sai lệch layout.
1351
+ delete event.message.user;
1352
+ delete (event.message as any).user_id;
1353
+
1354
+ event.message.display_type = 'deleted';
1355
+ event.message.pinned_at = null;
1356
+ (event.message as any).updated_at = null;
1357
+ event.message.status = 'received';
1358
+ channelState.addMessageSorted(event.message);
1280
1359
  channelState.removeQuotedMessageReferences(event.message);
1281
1360
 
1282
1361
  if ([...channelState.pinnedMessages].some((msg) => msg.id === event.message?.id)) {
@@ -1379,9 +1458,10 @@ export class Channel<ErmisChatGenerics extends ExtendableGenerics = DefaultGener
1379
1458
  channelState.addMessageSorted(event.message, false, false);
1380
1459
  }
1381
1460
  break;
1382
- case 'channel.truncate':
1383
- if (event.channel?.created_at) {
1384
- const truncatedAt = +new Date(event.channel.created_at);
1461
+ case 'channel.truncate': {
1462
+ const truncateDate = event.channel?.created_at || event.created_at;
1463
+ if (truncateDate) {
1464
+ const truncatedAt = +new Date(truncateDate);
1385
1465
 
1386
1466
  channelState.messageSets.forEach((messageSet, messageSetIndex) => {
1387
1467
  messageSet.messages.forEach(({ created_at: createdAt, id }) => {
@@ -1397,6 +1477,7 @@ export class Channel<ErmisChatGenerics extends ExtendableGenerics = DefaultGener
1397
1477
  channelState.clearMessages();
1398
1478
  }
1399
1479
 
1480
+
1400
1481
  channelState.unreadCount = 0;
1401
1482
  // system messages don't increment unread counts
1402
1483
  if (event.message) {
@@ -1406,6 +1487,7 @@ export class Channel<ErmisChatGenerics extends ExtendableGenerics = DefaultGener
1406
1487
  }
1407
1488
  }
1408
1489
  break;
1490
+ }
1409
1491
  case 'member.added':
1410
1492
  if (event.member?.user_id) {
1411
1493
  const user = getUserInfo(event.member.user_id, users);
@@ -1439,12 +1521,14 @@ export class Channel<ErmisChatGenerics extends ExtendableGenerics = DefaultGener
1439
1521
  channel.data.topics_enabled = true;
1440
1522
  }
1441
1523
  channelState.topics = channelState.topics || [];
1524
+ event.user = getUserInfo(event.user?.id || '', users);
1442
1525
  break;
1443
1526
  case 'channel.topic.disabled':
1444
1527
  if (channel.data) {
1445
1528
  channel.data.topics_enabled = false;
1446
1529
  }
1447
1530
  channelState.topics = [];
1531
+ event.user = getUserInfo(event.user?.id || '', users);
1448
1532
  break;
1449
1533
  case 'channel.updated':
1450
1534
  if (event.channel) {
@@ -1576,18 +1660,7 @@ export class Channel<ErmisChatGenerics extends ExtendableGenerics = DefaultGener
1576
1660
  channel.data.is_pinned = false;
1577
1661
  }
1578
1662
  break;
1579
- case 'channel.topic.disabled':
1580
- if (channel.data) {
1581
- channel.data.topics_enabled = false;
1582
- }
1583
- event.user = getUserInfo(event.user?.id || '', users);
1584
- break;
1585
- case 'channel.topic.enabled':
1586
- if (channel.data) {
1587
- channel.data.topics_enabled = true;
1588
- }
1589
- event.user = getUserInfo(event.user?.id || '', users);
1590
- break;
1663
+
1591
1664
  case 'channel.topic.created':
1592
1665
  const members = event.channel?.members || [];
1593
1666
  const enrichedMembers = enrichWithUserInfo(members, users);
@@ -1601,7 +1674,7 @@ export class Channel<ErmisChatGenerics extends ExtendableGenerics = DefaultGener
1601
1674
  const topic = this.getClient().channel(event.channel_type || '', event.channel_id || '');
1602
1675
  topic.data = event.channel;
1603
1676
  topic._initializeState(topicState, 'latest');
1604
-
1677
+
1605
1678
  if (!channelState.topics) {
1606
1679
  channelState.topics = [];
1607
1680
  }
@@ -407,9 +407,14 @@ export class ChannelState<ErmisChatGenerics extends ExtendableGenerics = Default
407
407
  }
408
408
  };
409
409
 
410
- this.messageSets.forEach((set) => _updateUserMessages(set.messages, user));
410
+ this.messageSets.forEach((set) => {
411
+ _updateUserMessages(set.messages, user);
412
+ // Create a new array reference to trigger React re-render
413
+ set.messages = [...set.messages];
414
+ });
411
415
 
412
416
  _updateUserMessages(this.pinnedMessages, user);
417
+ this.pinnedMessages = [...this.pinnedMessages];
413
418
  };
414
419
 
415
420
  deleteUserMessages = (user: UserResponse<ErmisChatGenerics>, hardDelete = false) => {