@metamask/browser-playground 0.6.6 → 0.7.1

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,"file":"static/js/921.58d10f34.chunk.js","mappings":"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","sources":["../../../node_modules/uuid/dist/esm-browser/max.js","../../../node_modules/uuid/dist/esm-browser/nil.js","../../../node_modules/uuid/dist/esm-browser/parse.js","../../../node_modules/uuid/dist/esm-browser/v1.js","../../../node_modules/uuid/dist/esm-browser/v1ToV6.js","../../../node_modules/uuid/dist/esm-browser/md5.js","../../../node_modules/uuid/dist/esm-browser/v35.js","../../../node_modules/uuid/dist/esm-browser/v3.js","../../../node_modules/uuid/dist/esm-browser/sha1.js","../../../node_modules/uuid/dist/esm-browser/v5.js","../../../node_modules/uuid/dist/esm-browser/v6.js","../../../node_modules/uuid/dist/esm-browser/v6ToV1.js","../../../node_modules/uuid/dist/esm-browser/v7.js","../../../node_modules/uuid/dist/esm-browser/version.js","../../../node_modules/async-mutex/index.mjs","../../../node_modules/@metamask/mobile-wallet-protocol-core/dist/index.js","../../../node_modules/centrifuge/build/index.mjs"],"sourcesContent":["export default 'ffffffff-ffff-ffff-ffff-ffffffffffff';\n","export default '00000000-0000-0000-0000-000000000000';\n","import validate from './validate.js';\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n let v;\n return Uint8Array.of((v = parseInt(uuid.slice(0, 8), 16)) >>> 24, (v >>> 16) & 0xff, (v >>> 8) & 0xff, v & 0xff, (v = parseInt(uuid.slice(9, 13), 16)) >>> 8, v & 0xff, (v = parseInt(uuid.slice(14, 18), 16)) >>> 8, v & 0xff, (v = parseInt(uuid.slice(19, 23), 16)) >>> 8, v & 0xff, ((v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000) & 0xff, (v / 0x100000000) & 0xff, (v >>> 24) & 0xff, (v >>> 16) & 0xff, (v >>> 8) & 0xff, v & 0xff);\n}\nexport default parse;\n","import rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nconst _state = {};\nfunction v1(options, buf, offset) {\n let bytes;\n const isV6 = options?._v6 ?? false;\n if (options) {\n const optionsKeys = Object.keys(options);\n if (optionsKeys.length === 1 && optionsKeys[0] === '_v6') {\n options = undefined;\n }\n }\n if (options) {\n bytes = v1Bytes(options.random ?? options.rng?.() ?? rng(), options.msecs, options.nsecs, options.clockseq, options.node, buf, offset);\n }\n else {\n const now = Date.now();\n const rnds = rng();\n updateV1State(_state, now, rnds);\n bytes = v1Bytes(rnds, _state.msecs, _state.nsecs, isV6 ? undefined : _state.clockseq, isV6 ? undefined : _state.node, buf, offset);\n }\n return buf ?? unsafeStringify(bytes);\n}\nexport function updateV1State(state, now, rnds) {\n state.msecs ??= -Infinity;\n state.nsecs ??= 0;\n if (now === state.msecs) {\n state.nsecs++;\n if (state.nsecs >= 10000) {\n state.node = undefined;\n state.nsecs = 0;\n }\n }\n else if (now > state.msecs) {\n state.nsecs = 0;\n }\n else if (now < state.msecs) {\n state.node = undefined;\n }\n if (!state.node) {\n state.node = rnds.slice(10, 16);\n state.node[0] |= 0x01;\n state.clockseq = ((rnds[8] << 8) | rnds[9]) & 0x3fff;\n }\n state.msecs = now;\n return state;\n}\nfunction v1Bytes(rnds, msecs, nsecs, clockseq, node, buf, offset = 0) {\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n if (!buf) {\n buf = new Uint8Array(16);\n offset = 0;\n }\n else {\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n }\n msecs ??= Date.now();\n nsecs ??= 0;\n clockseq ??= ((rnds[8] << 8) | rnds[9]) & 0x3fff;\n node ??= rnds.slice(10, 16);\n msecs += 12219292800000;\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n buf[offset++] = (tl >>> 24) & 0xff;\n buf[offset++] = (tl >>> 16) & 0xff;\n buf[offset++] = (tl >>> 8) & 0xff;\n buf[offset++] = tl & 0xff;\n const tmh = ((msecs / 0x100000000) * 10000) & 0xfffffff;\n buf[offset++] = (tmh >>> 8) & 0xff;\n buf[offset++] = tmh & 0xff;\n buf[offset++] = ((tmh >>> 24) & 0xf) | 0x10;\n buf[offset++] = (tmh >>> 16) & 0xff;\n buf[offset++] = (clockseq >>> 8) | 0x80;\n buf[offset++] = clockseq & 0xff;\n for (let n = 0; n < 6; ++n) {\n buf[offset++] = node[n];\n }\n return buf;\n}\nexport default v1;\n","import parse from './parse.js';\nimport { unsafeStringify } from './stringify.js';\nexport default function v1ToV6(uuid) {\n const v1Bytes = typeof uuid === 'string' ? parse(uuid) : uuid;\n const v6Bytes = _v1ToV6(v1Bytes);\n return typeof uuid === 'string' ? unsafeStringify(v6Bytes) : v6Bytes;\n}\nfunction _v1ToV6(v1Bytes) {\n return Uint8Array.of(((v1Bytes[6] & 0x0f) << 4) | ((v1Bytes[7] >> 4) & 0x0f), ((v1Bytes[7] & 0x0f) << 4) | ((v1Bytes[4] & 0xf0) >> 4), ((v1Bytes[4] & 0x0f) << 4) | ((v1Bytes[5] & 0xf0) >> 4), ((v1Bytes[5] & 0x0f) << 4) | ((v1Bytes[0] & 0xf0) >> 4), ((v1Bytes[0] & 0x0f) << 4) | ((v1Bytes[1] & 0xf0) >> 4), ((v1Bytes[1] & 0x0f) << 4) | ((v1Bytes[2] & 0xf0) >> 4), 0x60 | (v1Bytes[2] & 0x0f), v1Bytes[3], v1Bytes[8], v1Bytes[9], v1Bytes[10], v1Bytes[11], v1Bytes[12], v1Bytes[13], v1Bytes[14], v1Bytes[15]);\n}\n","function md5(bytes) {\n const words = uint8ToUint32(bytes);\n const md5Bytes = wordsToMd5(words, bytes.length * 8);\n return uint32ToUint8(md5Bytes);\n}\nfunction uint32ToUint8(input) {\n const bytes = new Uint8Array(input.length * 4);\n for (let i = 0; i < input.length * 4; i++) {\n bytes[i] = (input[i >> 2] >>> ((i % 4) * 8)) & 0xff;\n }\n return bytes;\n}\nfunction getOutputLength(inputLength8) {\n return (((inputLength8 + 64) >>> 9) << 4) + 14 + 1;\n}\nfunction wordsToMd5(x, len) {\n const xpad = new Uint32Array(getOutputLength(len)).fill(0);\n xpad.set(x);\n xpad[len >> 5] |= 0x80 << len % 32;\n xpad[xpad.length - 1] = len;\n x = xpad;\n let a = 1732584193;\n let b = -271733879;\n let c = -1732584194;\n let d = 271733878;\n for (let i = 0; i < x.length; i += 16) {\n const olda = a;\n const oldb = b;\n const oldc = c;\n const oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n return Uint32Array.of(a, b, c, d);\n}\nfunction uint8ToUint32(input) {\n if (input.length === 0) {\n return new Uint32Array();\n }\n const output = new Uint32Array(getOutputLength(input.length * 8)).fill(0);\n for (let i = 0; i < input.length; i++) {\n output[i >> 2] |= (input[i] & 0xff) << ((i % 4) * 8);\n }\n return output;\n}\nfunction safeAdd(x, y) {\n const lsw = (x & 0xffff) + (y & 0xffff);\n const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xffff);\n}\nfunction bitRotateLeft(num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n}\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn((b & c) | (~b & d), a, b, x, s, t);\n}\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn((b & d) | (c & ~d), a, b, x, s, t);\n}\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\nexport default md5;\n","import parse from './parse.js';\nimport { unsafeStringify } from './stringify.js';\nexport function stringToBytes(str) {\n str = unescape(encodeURIComponent(str));\n const bytes = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i) {\n bytes[i] = str.charCodeAt(i);\n }\n return bytes;\n}\nexport const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function v35(version, hash, value, namespace, buf, offset) {\n const valueBytes = typeof value === 'string' ? stringToBytes(value) : value;\n const namespaceBytes = typeof namespace === 'string' ? parse(namespace) : namespace;\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n if (namespace?.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n }\n let bytes = new Uint8Array(16 + valueBytes.length);\n bytes.set(namespaceBytes);\n bytes.set(valueBytes, namespaceBytes.length);\n bytes = hash(bytes);\n bytes[6] = (bytes[6] & 0x0f) | version;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n return buf;\n }\n return unsafeStringify(bytes);\n}\n","import md5 from './md5.js';\nimport v35, { DNS, URL } from './v35.js';\nexport { DNS, URL } from './v35.js';\nfunction v3(value, namespace, buf, offset) {\n return v35(0x30, md5, value, namespace, buf, offset);\n}\nv3.DNS = DNS;\nv3.URL = URL;\nexport default v3;\n","function f(s, x, y, z) {\n switch (s) {\n case 0:\n return (x & y) ^ (~x & z);\n case 1:\n return x ^ y ^ z;\n case 2:\n return (x & y) ^ (x & z) ^ (y & z);\n case 3:\n return x ^ y ^ z;\n }\n}\nfunction ROTL(x, n) {\n return (x << n) | (x >>> (32 - n));\n}\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n const newBytes = new Uint8Array(bytes.length + 1);\n newBytes.set(bytes);\n newBytes[bytes.length] = 0x80;\n bytes = newBytes;\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n for (let j = 0; j < 16; ++j) {\n arr[j] =\n (bytes[i * 64 + j * 4] << 24) |\n (bytes[i * 64 + j * 4 + 1] << 16) |\n (bytes[i * 64 + j * 4 + 2] << 8) |\n bytes[i * 64 + j * 4 + 3];\n }\n M[i] = arr;\n }\n M[N - 1][14] = ((bytes.length - 1) * 8) / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = ((bytes.length - 1) * 8) & 0xffffffff;\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = (ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t]) >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n H[0] = (H[0] + a) >>> 0;\n H[1] = (H[1] + b) >>> 0;\n H[2] = (H[2] + c) >>> 0;\n H[3] = (H[3] + d) >>> 0;\n H[4] = (H[4] + e) >>> 0;\n }\n return Uint8Array.of(H[0] >> 24, H[0] >> 16, H[0] >> 8, H[0], H[1] >> 24, H[1] >> 16, H[1] >> 8, H[1], H[2] >> 24, H[2] >> 16, H[2] >> 8, H[2], H[3] >> 24, H[3] >> 16, H[3] >> 8, H[3], H[4] >> 24, H[4] >> 16, H[4] >> 8, H[4]);\n}\nexport default sha1;\n","import sha1 from './sha1.js';\nimport v35, { DNS, URL } from './v35.js';\nexport { DNS, URL } from './v35.js';\nfunction v5(value, namespace, buf, offset) {\n return v35(0x50, sha1, value, namespace, buf, offset);\n}\nv5.DNS = DNS;\nv5.URL = URL;\nexport default v5;\n","import { unsafeStringify } from './stringify.js';\nimport v1 from './v1.js';\nimport v1ToV6 from './v1ToV6.js';\nfunction v6(options, buf, offset) {\n options ??= {};\n offset ??= 0;\n let bytes = v1({ ...options, _v6: true }, new Uint8Array(16));\n bytes = v1ToV6(bytes);\n if (buf) {\n for (let i = 0; i < 16; i++) {\n buf[offset + i] = bytes[i];\n }\n return buf;\n }\n return unsafeStringify(bytes);\n}\nexport default v6;\n","import parse from './parse.js';\nimport { unsafeStringify } from './stringify.js';\nexport default function v6ToV1(uuid) {\n const v6Bytes = typeof uuid === 'string' ? parse(uuid) : uuid;\n const v1Bytes = _v6ToV1(v6Bytes);\n return typeof uuid === 'string' ? unsafeStringify(v1Bytes) : v1Bytes;\n}\nfunction _v6ToV1(v6Bytes) {\n return Uint8Array.of(((v6Bytes[3] & 0x0f) << 4) | ((v6Bytes[4] >> 4) & 0x0f), ((v6Bytes[4] & 0x0f) << 4) | ((v6Bytes[5] & 0xf0) >> 4), ((v6Bytes[5] & 0x0f) << 4) | (v6Bytes[6] & 0x0f), v6Bytes[7], ((v6Bytes[1] & 0x0f) << 4) | ((v6Bytes[2] & 0xf0) >> 4), ((v6Bytes[2] & 0x0f) << 4) | ((v6Bytes[3] & 0xf0) >> 4), 0x10 | ((v6Bytes[0] & 0xf0) >> 4), ((v6Bytes[0] & 0x0f) << 4) | ((v6Bytes[1] & 0xf0) >> 4), v6Bytes[8], v6Bytes[9], v6Bytes[10], v6Bytes[11], v6Bytes[12], v6Bytes[13], v6Bytes[14], v6Bytes[15]);\n}\n","import rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nconst _state = {};\nfunction v7(options, buf, offset) {\n let bytes;\n if (options) {\n bytes = v7Bytes(options.random ?? options.rng?.() ?? rng(), options.msecs, options.seq, buf, offset);\n }\n else {\n const now = Date.now();\n const rnds = rng();\n updateV7State(_state, now, rnds);\n bytes = v7Bytes(rnds, _state.msecs, _state.seq, buf, offset);\n }\n return buf ?? unsafeStringify(bytes);\n}\nexport function updateV7State(state, now, rnds) {\n state.msecs ??= -Infinity;\n state.seq ??= 0;\n if (now > state.msecs) {\n state.seq = (rnds[6] << 23) | (rnds[7] << 16) | (rnds[8] << 8) | rnds[9];\n state.msecs = now;\n }\n else {\n state.seq = (state.seq + 1) | 0;\n if (state.seq === 0) {\n state.msecs++;\n }\n }\n return state;\n}\nfunction v7Bytes(rnds, msecs, seq, buf, offset = 0) {\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n if (!buf) {\n buf = new Uint8Array(16);\n offset = 0;\n }\n else {\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n }\n msecs ??= Date.now();\n seq ??= ((rnds[6] * 0x7f) << 24) | (rnds[7] << 16) | (rnds[8] << 8) | rnds[9];\n buf[offset++] = (msecs / 0x10000000000) & 0xff;\n buf[offset++] = (msecs / 0x100000000) & 0xff;\n buf[offset++] = (msecs / 0x1000000) & 0xff;\n buf[offset++] = (msecs / 0x10000) & 0xff;\n buf[offset++] = (msecs / 0x100) & 0xff;\n buf[offset++] = msecs & 0xff;\n buf[offset++] = 0x70 | ((seq >>> 28) & 0x0f);\n buf[offset++] = (seq >>> 20) & 0xff;\n buf[offset++] = 0x80 | ((seq >>> 14) & 0x3f);\n buf[offset++] = (seq >>> 6) & 0xff;\n buf[offset++] = ((seq << 2) & 0xff) | (rnds[10] & 0x03);\n buf[offset++] = rnds[11];\n buf[offset++] = rnds[12];\n buf[offset++] = rnds[13];\n buf[offset++] = rnds[14];\n buf[offset++] = rnds[15];\n return buf;\n}\nexport default v7;\n","import validate from './validate.js';\nfunction version(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n return parseInt(uuid.slice(14, 15), 16);\n}\nexport default version;\n","const E_TIMEOUT = new Error('timeout while waiting for mutex to become available');\nconst E_ALREADY_LOCKED = new Error('mutex already locked');\nconst E_CANCELED = new Error('request for lock canceled');\n\nvar __awaiter$2 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nclass Semaphore {\n constructor(_value, _cancelError = E_CANCELED) {\n this._value = _value;\n this._cancelError = _cancelError;\n this._queue = [];\n this._weightedWaiters = [];\n }\n acquire(weight = 1, priority = 0) {\n if (weight <= 0)\n throw new Error(`invalid weight ${weight}: must be positive`);\n return new Promise((resolve, reject) => {\n const task = { resolve, reject, weight, priority };\n const i = findIndexFromEnd(this._queue, (other) => priority <= other.priority);\n if (i === -1 && weight <= this._value) {\n // Needs immediate dispatch, skip the queue\n this._dispatchItem(task);\n }\n else {\n this._queue.splice(i + 1, 0, task);\n }\n });\n }\n runExclusive(callback_1) {\n return __awaiter$2(this, arguments, void 0, function* (callback, weight = 1, priority = 0) {\n const [value, release] = yield this.acquire(weight, priority);\n try {\n return yield callback(value);\n }\n finally {\n release();\n }\n });\n }\n waitForUnlock(weight = 1, priority = 0) {\n if (weight <= 0)\n throw new Error(`invalid weight ${weight}: must be positive`);\n if (this._couldLockImmediately(weight, priority)) {\n return Promise.resolve();\n }\n else {\n return new Promise((resolve) => {\n if (!this._weightedWaiters[weight - 1])\n this._weightedWaiters[weight - 1] = [];\n insertSorted(this._weightedWaiters[weight - 1], { resolve, priority });\n });\n }\n }\n isLocked() {\n return this._value <= 0;\n }\n getValue() {\n return this._value;\n }\n setValue(value) {\n this._value = value;\n this._dispatchQueue();\n }\n release(weight = 1) {\n if (weight <= 0)\n throw new Error(`invalid weight ${weight}: must be positive`);\n this._value += weight;\n this._dispatchQueue();\n }\n cancel() {\n this._queue.forEach((entry) => entry.reject(this._cancelError));\n this._queue = [];\n }\n _dispatchQueue() {\n this._drainUnlockWaiters();\n while (this._queue.length > 0 && this._queue[0].weight <= this._value) {\n this._dispatchItem(this._queue.shift());\n this._drainUnlockWaiters();\n }\n }\n _dispatchItem(item) {\n const previousValue = this._value;\n this._value -= item.weight;\n item.resolve([previousValue, this._newReleaser(item.weight)]);\n }\n _newReleaser(weight) {\n let called = false;\n return () => {\n if (called)\n return;\n called = true;\n this.release(weight);\n };\n }\n _drainUnlockWaiters() {\n if (this._queue.length === 0) {\n for (let weight = this._value; weight > 0; weight--) {\n const waiters = this._weightedWaiters[weight - 1];\n if (!waiters)\n continue;\n waiters.forEach((waiter) => waiter.resolve());\n this._weightedWaiters[weight - 1] = [];\n }\n }\n else {\n const queuedPriority = this._queue[0].priority;\n for (let weight = this._value; weight > 0; weight--) {\n const waiters = this._weightedWaiters[weight - 1];\n if (!waiters)\n continue;\n const i = waiters.findIndex((waiter) => waiter.priority <= queuedPriority);\n (i === -1 ? waiters : waiters.splice(0, i))\n .forEach((waiter => waiter.resolve()));\n }\n }\n }\n _couldLockImmediately(weight, priority) {\n return (this._queue.length === 0 || this._queue[0].priority < priority) &&\n weight <= this._value;\n }\n}\nfunction insertSorted(a, v) {\n const i = findIndexFromEnd(a, (other) => v.priority <= other.priority);\n a.splice(i + 1, 0, v);\n}\nfunction findIndexFromEnd(a, predicate) {\n for (let i = a.length - 1; i >= 0; i--) {\n if (predicate(a[i])) {\n return i;\n }\n }\n return -1;\n}\n\nvar __awaiter$1 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nclass Mutex {\n constructor(cancelError) {\n this._semaphore = new Semaphore(1, cancelError);\n }\n acquire() {\n return __awaiter$1(this, arguments, void 0, function* (priority = 0) {\n const [, releaser] = yield this._semaphore.acquire(1, priority);\n return releaser;\n });\n }\n runExclusive(callback, priority = 0) {\n return this._semaphore.runExclusive(() => callback(), 1, priority);\n }\n isLocked() {\n return this._semaphore.isLocked();\n }\n waitForUnlock(priority = 0) {\n return this._semaphore.waitForUnlock(1, priority);\n }\n release() {\n if (this._semaphore.isLocked())\n this._semaphore.release();\n }\n cancel() {\n return this._semaphore.cancel();\n }\n}\n\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nfunction withTimeout(sync, timeout, timeoutError = E_TIMEOUT) {\n return {\n acquire: (weightOrPriority, priority) => {\n let weight;\n if (isSemaphore(sync)) {\n weight = weightOrPriority;\n }\n else {\n weight = undefined;\n priority = weightOrPriority;\n }\n if (weight !== undefined && weight <= 0) {\n throw new Error(`invalid weight ${weight}: must be positive`);\n }\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n let isTimeout = false;\n const handle = setTimeout(() => {\n isTimeout = true;\n reject(timeoutError);\n }, timeout);\n try {\n const ticket = yield (isSemaphore(sync)\n ? sync.acquire(weight, priority)\n : sync.acquire(priority));\n if (isTimeout) {\n const release = Array.isArray(ticket) ? ticket[1] : ticket;\n release();\n }\n else {\n clearTimeout(handle);\n resolve(ticket);\n }\n }\n catch (e) {\n if (!isTimeout) {\n clearTimeout(handle);\n reject(e);\n }\n }\n }));\n },\n runExclusive(callback, weight, priority) {\n return __awaiter(this, void 0, void 0, function* () {\n let release = () => undefined;\n try {\n const ticket = yield this.acquire(weight, priority);\n if (Array.isArray(ticket)) {\n release = ticket[1];\n return yield callback(ticket[0]);\n }\n else {\n release = ticket;\n return yield callback();\n }\n }\n finally {\n release();\n }\n });\n },\n release(weight) {\n sync.release(weight);\n },\n cancel() {\n return sync.cancel();\n },\n waitForUnlock: (weightOrPriority, priority) => {\n let weight;\n if (isSemaphore(sync)) {\n weight = weightOrPriority;\n }\n else {\n weight = undefined;\n priority = weightOrPriority;\n }\n if (weight !== undefined && weight <= 0) {\n throw new Error(`invalid weight ${weight}: must be positive`);\n }\n return new Promise((resolve, reject) => {\n const handle = setTimeout(() => reject(timeoutError), timeout);\n (isSemaphore(sync)\n ? sync.waitForUnlock(weight, priority)\n : sync.waitForUnlock(priority)).then(() => {\n clearTimeout(handle);\n resolve();\n });\n });\n },\n isLocked: () => sync.isLocked(),\n getValue: () => sync.getValue(),\n setValue: (value) => sync.setValue(value),\n };\n}\nfunction isSemaphore(sync) {\n return sync.getValue !== undefined;\n}\n\n// eslint-disable-next-lisne @typescript-eslint/explicit-module-boundary-types\nfunction tryAcquire(sync, alreadyAcquiredError = E_ALREADY_LOCKED) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return withTimeout(sync, 0, alreadyAcquiredError);\n}\n\nexport { E_ALREADY_LOCKED, E_CANCELED, E_TIMEOUT, Mutex, Semaphore, tryAcquire, withTimeout };\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4; var _class5;// src/base-client.ts\nvar _eventemitter3 = require('eventemitter3'); var _eventemitter32 = _interopRequireDefault(_eventemitter3);\n\n// src/domain/client-state.ts\nvar ClientState = /* @__PURE__ */ ((ClientState2) => {\n ClientState2[\"DISCONNECTED\"] = \"DISCONNECTED\";\n ClientState2[\"CONNECTING\"] = \"CONNECTING\";\n ClientState2[\"CONNECTED\"] = \"CONNECTED\";\n return ClientState2;\n})(ClientState || {});\n\n// src/domain/errors.ts\nvar ErrorCode = /* @__PURE__ */ ((ErrorCode2) => {\n ErrorCode2[\"SESSION_EXPIRED\"] = \"SESSION_EXPIRED\";\n ErrorCode2[\"SESSION_NOT_FOUND\"] = \"SESSION_NOT_FOUND\";\n ErrorCode2[\"SESSION_INVALID_STATE\"] = \"SESSION_INVALID_STATE\";\n ErrorCode2[\"SESSION_SAVE_FAILED\"] = \"SESSION_SAVE_FAILED\";\n ErrorCode2[\"TRANSPORT_DISCONNECTED\"] = \"TRANSPORT_DISCONNECTED\";\n ErrorCode2[\"TRANSPORT_PUBLISH_FAILED\"] = \"TRANSPORT_PUBLISH_FAILED\";\n ErrorCode2[\"TRANSPORT_SUBSCRIBE_FAILED\"] = \"TRANSPORT_SUBSCRIBE_FAILED\";\n ErrorCode2[\"TRANSPORT_HISTORY_FAILED\"] = \"TRANSPORT_HISTORY_FAILED\";\n ErrorCode2[\"TRANSPORT_PARSE_FAILED\"] = \"TRANSPORT_PARSE_FAILED\";\n ErrorCode2[\"TRANSPORT_RECONNECT_FAILED\"] = \"TRANSPORT_RECONNECT_FAILED\";\n ErrorCode2[\"DECRYPTION_FAILED\"] = \"DECRYPTION_FAILED\";\n ErrorCode2[\"INVALID_KEY\"] = \"INVALID_KEY\";\n ErrorCode2[\"REQUEST_EXPIRED\"] = \"REQUEST_EXPIRED\";\n ErrorCode2[\"OTP_INCORRECT\"] = \"OTP_INCORRECT\";\n ErrorCode2[\"OTP_MAX_ATTEMPTS_REACHED\"] = \"OTP_MAX_ATTEMPTS_REACHED\";\n ErrorCode2[\"OTP_ENTRY_TIMEOUT\"] = \"OTP_ENTRY_TIMEOUT\";\n ErrorCode2[\"UNKNOWN\"] = \"UNKNOWN\";\n return ErrorCode2;\n})(ErrorCode || {});\nvar ProtocolError = class extends Error {\n constructor(code, message) {\n super(message || code);\n this.code = code;\n this.name = code;\n }\n};\nvar SessionError = class extends ProtocolError {\n};\nvar TransportError = class extends ProtocolError {\n};\nvar CryptoError = class extends ProtocolError {\n};\n\n// src/base-client.ts\nvar BaseClient = (_class = class extends _eventemitter32.default {\n \n \n \n __init() {this.session = null}\n __init2() {this._state = \"DISCONNECTED\"} /* DISCONNECTED */\n // biome-ignore lint/suspicious/noExplicitAny: used for event listeners\n on(event, listener) {\n return super.on(event, listener);\n }\n /**\n * Initializes the BaseClient with its core dependencies.\n *\n * @param transport - The transport layer for communication.\n * @param keymanager - The key manager for cryptographic operations.\n * @param sessionstore - The persistent store for session management.\n */\n constructor(transport, keymanager, sessionstore) {\n super();_class.prototype.__init.call(this);_class.prototype.__init2.call(this);;\n this.transport = transport;\n this.keymanager = keymanager;\n this.sessionstore = sessionstore;\n this.transport.on(\"error\", (error) => this.emit(\"error\", error));\n this.transport.on(\"message\", async (payload) => {\n if (!_optionalChain([this, 'access', _ => _.session, 'optionalAccess', _2 => _2.keyPair, 'access', _3 => _3.privateKey])) return;\n if (await this.checkSessionExpiry()) {\n this.emit(\"error\", new SessionError(\"SESSION_EXPIRED\" /* SESSION_EXPIRED */, \"Session expired\"));\n return;\n }\n const message = await this.decryptMessage(payload.data);\n if (message) this.handleMessage(message);\n });\n }\n get state() {\n return this._state;\n }\n set state(state) {\n this._state = state;\n }\n /**\n * Proactively refreshes the underlying transport connection.\n * This is the recommended method for mobile clients to call when the application\n * returns to the foreground to ensure the connection is not stale.\n */\n async reconnect() {\n if (this.state === \"CONNECTING\" /* CONNECTING */ || !this.session || !this.transport.reconnect) return;\n try {\n this.state = \"CONNECTING\" /* CONNECTING */;\n await this.transport.reconnect();\n this.state = \"CONNECTED\" /* CONNECTED */;\n this.emit(\"connected\");\n } catch (e) {\n this.state = \"DISCONNECTED\" /* DISCONNECTED */;\n throw new TransportError(\"TRANSPORT_RECONNECT_FAILED\" /* TRANSPORT_RECONNECT_FAILED */, \"Failed to reconnect\");\n }\n }\n /**\n * Resumes an existing session by loading it from storage and connecting to the\n * transport on the session's secure channel.\n *\n * @param sessionId - The ID of the session to resume.\n * @throws {SessionError} If the session is not found, has expired, or the client\n * is not in a `DISCONNECTED` state.\n */\n async resume(sessionId) {\n if (this.state !== \"DISCONNECTED\" /* DISCONNECTED */) throw new SessionError(\"SESSION_INVALID_STATE\" /* SESSION_INVALID_STATE */, `Cannot resume when state is ${this.state}`);\n this.state = \"CONNECTING\" /* CONNECTING */;\n try {\n const session = await this.sessionstore.get(sessionId);\n if (!session) throw new SessionError(\"SESSION_NOT_FOUND\" /* SESSION_NOT_FOUND */, \"Session not found or expired\");\n this.keymanager.validatePeerKey(session.theirPublicKey);\n this.session = session;\n await this.transport.connect();\n await this.transport.subscribe(session.channel);\n this.state = \"CONNECTED\" /* CONNECTED */;\n this.emit(\"connected\");\n } catch (error) {\n this.state = \"DISCONNECTED\" /* DISCONNECTED */;\n this.session = null;\n throw error;\n }\n }\n /**\n * Disconnects the client, clears the active session from memory and persistent\n * storage, and cleans up the transport channel. Emits a 'disconnected' event.\n */\n async disconnect() {\n if (!this.session) return;\n const session = this.session;\n this.session = null;\n this.state = \"DISCONNECTED\" /* DISCONNECTED */;\n await this.transport.disconnect();\n await this.transport.clear(session.channel);\n await this.sessionstore.delete(session.id);\n this.emit(\"disconnected\");\n }\n /**\n * Encrypts and sends a protocol message to a specified channel.\n * Automatically checks for session expiry before sending.\n *\n * @param channel - The communication channel to publish the message on.\n * @param message - The protocol message to send.\n * @throws {SessionError} If the client session is not initialized or is expired.\n * @throws {TransportError} If the message fails to send due to a transport issue.\n */\n async sendMessage(channel, message) {\n if (!this.session) throw new SessionError(\"SESSION_INVALID_STATE\" /* SESSION_INVALID_STATE */, \"Cannot send message: session is not initialized.\");\n if (await this.checkSessionExpiry()) throw new SessionError(\"SESSION_EXPIRED\" /* SESSION_EXPIRED */, \"Session expired\");\n const plaintext = JSON.stringify(message);\n const encrypted = await this.keymanager.encrypt(plaintext, this.session.theirPublicKey);\n const ok = await this.transport.publish(channel, encrypted);\n if (!ok) throw new TransportError(\"TRANSPORT_DISCONNECTED\" /* TRANSPORT_DISCONNECTED */, \"Message could not be sent because the transport is disconnected.\");\n }\n /**\n * Checks if the current session has expired. If so, triggers a disconnect.\n *\n * @returns true if the session was expired (and cleanup was triggered), false otherwise.\n */\n async checkSessionExpiry() {\n if (!this.session || this.session.expiresAt >= Date.now()) return false;\n await this.disconnect();\n return true;\n }\n /**\n * Decrypts an incoming message payload.\n *\n * @param encrypted - The base64-encoded encrypted payload.\n * @returns The parsed `ProtocolMessage`, or `null` if decryption fails.\n * On failure, it emits a `CryptoError`.\n */\n async decryptMessage(encrypted) {\n if (!_optionalChain([this, 'access', _4 => _4.session, 'optionalAccess', _5 => _5.keyPair, 'access', _6 => _6.privateKey])) return null;\n try {\n const decrypted = await this.keymanager.decrypt(encrypted, this.session.keyPair.privateKey);\n return JSON.parse(decrypted);\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n this.emit(\"error\", new CryptoError(\"DECRYPTION_FAILED\" /* DECRYPTION_FAILED */, `Decryption failed: ${msg}`));\n return null;\n }\n }\n}, _class);\n\n// src/domain/connection-mode.ts\nvar CONNECTION_MODES = [\"trusted\", \"untrusted\"];\nfunction isValidConnectionMode(value) {\n return typeof value === \"string\" && CONNECTION_MODES.includes(value);\n}\n\n// src/session-store/index.ts\nvar _asyncmutex = require('async-mutex');\nvar DEFAULT_SESSION_TTL = 30 * 24 * 60 * 60 * 1e3;\nvar SessionStore = (_class2 = class _SessionStore {\n static __initStatic() {this.SESSION_PREFIX = \"session:\"}\n static __initStatic2() {this.MASTER_LIST_KEY = \"sessions:master-list\"}\n \n __init3() {this.mutex = new (0, _asyncmutex.Mutex)()}\n /**\n * Creates a new SessionStore instance and runs initial garbage collection.\n * Use this instead of the constructor to ensure GC completes before use.\n */\n static async create(kvstore) {\n const store = new _SessionStore(kvstore);\n await store.garbageCollect();\n return store;\n }\n constructor(kvstore) {;_class2.prototype.__init3.call(this);\n this.kvstore = kvstore;\n }\n /**\n * Sets a session in the store.\n * @param session - The session to set.\n */\n async set(session) {\n if (Number.isNaN(session.expiresAt) || session.expiresAt < Date.now()) {\n throw new SessionError(\"SESSION_SAVE_FAILED\" /* SESSION_SAVE_FAILED */, \"Cannot save expired session\");\n }\n const data = {\n id: session.id,\n channel: session.channel,\n keyPair: {\n publicKeyB64: Buffer.from(session.keyPair.publicKey).toString(\"base64\"),\n privateKeyB64: Buffer.from(session.keyPair.privateKey).toString(\"base64\")\n },\n theirPublicKeyB64: Buffer.from(session.theirPublicKey).toString(\"base64\"),\n expiresAt: session.expiresAt\n };\n const key = this.getSessionKey(session.id);\n await this.kvstore.set(key, JSON.stringify(data));\n await this.addToMasterList(session.id);\n }\n /**\n * Gets a session from the store.\n * @param id - The ID of the session to get.\n * @returns The session if it exists, otherwise null.\n */\n async get(id) {\n const key = this.getSessionKey(id);\n const raw = await this.kvstore.get(key);\n if (!raw) return null;\n try {\n const data = JSON.parse(raw);\n if (typeof data.expiresAt !== \"number\" || !(data.expiresAt >= Date.now())) {\n await this.delete(id);\n return null;\n }\n const session = {\n id: data.id,\n channel: data.channel,\n keyPair: {\n publicKey: new Uint8Array(Buffer.from(data.keyPair.publicKeyB64, \"base64\")),\n privateKey: new Uint8Array(Buffer.from(data.keyPair.privateKeyB64, \"base64\"))\n },\n theirPublicKey: new Uint8Array(Buffer.from(data.theirPublicKeyB64, \"base64\")),\n expiresAt: data.expiresAt\n };\n return session;\n } catch (e2) {\n await this.delete(id);\n return null;\n }\n }\n /**\n * Lists all sessions in the store.\n * @returns A list of all sessions.\n */\n async list() {\n const ids = await this.getMasterList();\n const sessions = [];\n for (const id of ids) {\n const session = await this.get(id);\n if (session) sessions.push(session);\n }\n return sessions;\n }\n /**\n * Deletes a session from the store.\n * @param id - The ID of the session to delete.\n */\n async delete(id) {\n const key = this.getSessionKey(id);\n await this.kvstore.delete(key);\n await this.removeFromMasterList(id);\n }\n /**\n * Garbage collects expired sessions.\n */\n async garbageCollect() {\n const list = await this.getMasterList();\n await Promise.all(list.map(async (id) => this.get(id)));\n }\n /**\n * Gets the key for a session.\n * @param id - The ID of the session.\n * @returns The key for the session.\n */\n getSessionKey(id) {\n return `${_SessionStore.SESSION_PREFIX}${id}`;\n }\n /**\n * Gets the master list of session IDs.\n * @returns The master list of session IDs.\n */\n async getMasterList() {\n const raw = await this.kvstore.get(_SessionStore.MASTER_LIST_KEY);\n if (!raw) return [];\n try {\n return JSON.parse(raw);\n } catch (e3) {\n return [];\n }\n }\n /**\n * Adds a session ID to the master list.\n * @param id - The ID of the session to add.\n */\n async addToMasterList(id) {\n await this.mutex.runExclusive(async () => {\n const list = await this.getMasterList();\n if (!list.includes(id)) {\n list.push(id);\n await this.kvstore.set(_SessionStore.MASTER_LIST_KEY, JSON.stringify(list));\n }\n });\n }\n /**\n * Removes a session ID from the master list.\n * @param id - The ID of the session to remove.\n */\n async removeFromMasterList(id) {\n await this.mutex.runExclusive(async () => {\n const list = await this.getMasterList();\n const filtered = list.filter((sessionId) => sessionId !== id);\n await this.kvstore.set(_SessionStore.MASTER_LIST_KEY, JSON.stringify(filtered));\n });\n }\n}, _class2.__initStatic(), _class2.__initStatic2(), _class2);\n\n// src/transport/websocket/index.ts\nvar _centrifuge = require('centrifuge');\n\n\n// src/utils/retry.ts\nvar delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\nasync function retry(fn, options) {\n for (let attempt = 0; attempt < options.attempts; attempt++) {\n try {\n return await fn();\n } catch (error) {\n if (attempt === options.attempts - 1) {\n throw error;\n }\n const backoff = options.delay * 2 ** attempt;\n await delay(backoff);\n }\n }\n throw new ProtocolError(\"UNKNOWN\" /* UNKNOWN */, \"Retry logic failed unexpectedly.\");\n}\n\n// src/transport/websocket/shared-centrifuge.ts\n\n\n\n\nvar SubscriptionProxy = (_class3 = class {\n constructor(realSub, parent) {;_class3.prototype.__init4.call(this);\n this.realSub = realSub;\n this.parent = parent;\n }\n __init4() {this.hasUnsubscribed = false}\n get channel() {\n return this.realSub.channel;\n }\n get state() {\n return this.realSub.state;\n }\n subscribe() {\n this.realSub.subscribe();\n }\n unsubscribe() {\n if (this.hasUnsubscribed) return;\n this.hasUnsubscribed = true;\n this.parent.removeSubscription({ channel: this.channel });\n }\n // biome-ignore lint/suspicious/noExplicitAny: to match centrifuge-js interface\n async publish(data) {\n return await this.realSub.publish(data);\n }\n history(options) {\n return this.realSub.history(options);\n }\n on(event, listener) {\n this.realSub.on(event, listener);\n return this;\n }\n once(event, listener) {\n this.realSub.once(event, listener);\n return this;\n }\n off(event, listener) {\n this.realSub.off(event, listener);\n return this;\n }\n}, _class3);\nvar SharedCentrifuge = (_class4 = class _SharedCentrifuge extends _eventemitter32.default {\n /**\n * Global contexts shared across all SharedCentrifuge instances.\n */\n static __initStatic3() {this.contexts = /* @__PURE__ */ new Map()}\n /**\n * Per Instance variables.\n */\n \n __init5() {this.channels = /* @__PURE__ */ new Set()}\n __init6() {this.disconnected = false}\n __init7() {this.eventListeners = /* @__PURE__ */ new Map()}\n constructor(url, opts = {}) {\n super();_class4.prototype.__init5.call(this);_class4.prototype.__init6.call(this);_class4.prototype.__init7.call(this);;\n this.url = url;\n if (!_SharedCentrifuge.contexts.has(url)) {\n const centrifuge = new (0, _centrifuge.Centrifuge)(url, opts);\n _SharedCentrifuge.contexts.set(url, {\n refcount: 0,\n options: opts,\n centrifuge,\n subscriptions: /* @__PURE__ */ new Map(),\n reconnectPromise: null\n });\n } else {\n const context2 = _SharedCentrifuge.contexts.get(url);\n if (!context2) throw new Error(\"No context found\");\n this.validateOptions(context2.options, opts);\n }\n const context = _SharedCentrifuge.contexts.get(url);\n if (!context) throw new Error(\"No context found\");\n context.refcount++;\n this.attachEventListeners();\n }\n /**\n * Connect to the Centrifuge server.\n */\n connect() {\n const context = _SharedCentrifuge.contexts.get(this.url);\n if (!context) return;\n if (context.centrifuge.state === \"connected\") {\n setImmediate(() => this.emit(\"connected\", {}));\n } else if (context.centrifuge.state === \"connecting\") {\n } else {\n context.centrifuge.connect();\n }\n }\n /**\n * Disconnect from the Centrifuge server.\n */\n disconnect() {\n if (this.disconnected) return Promise.resolve();\n const context = _SharedCentrifuge.contexts.get(this.url);\n if (!context) return Promise.resolve();\n this.disconnected = true;\n this.emit(\"disconnected\", {});\n this.detachEventListeners();\n for (const channel of this.channels) this.decrementChannelRef(channel);\n this.channels.clear();\n context.refcount--;\n if (context.refcount === 0) {\n return new Promise((resolve) => {\n context.centrifuge.once(\"disconnected\", () => {\n _SharedCentrifuge.contexts.delete(this.url);\n resolve();\n });\n context.centrifuge.disconnect();\n });\n }\n return Promise.resolve();\n }\n /**\n * Disconnect and immediately reconnect the underlying Centrifuge client.\n * This method is idempotent: if a reconnect is already in progress,\n * subsequent calls will return the promise for the ongoing operation.\n * This ensures that multiple simultaneous reconnect calls don't cause\n * race conditions or connection storms.\n */\n reconnect() {\n const context = _SharedCentrifuge.contexts.get(this.url);\n if (!context) {\n return Promise.resolve();\n }\n if (context.reconnectPromise) {\n return context.reconnectPromise;\n }\n context.reconnectPromise = (async () => {\n try {\n if (context.centrifuge.state !== \"disconnected\") {\n await new Promise((resolve) => {\n context.centrifuge.once(\"disconnected\", () => resolve());\n context.centrifuge.disconnect();\n });\n }\n await new Promise((resolve, reject) => {\n context.centrifuge.once(\"connected\", () => resolve());\n context.centrifuge.once(\"error\", (ctx) => reject(ctx.error));\n context.centrifuge.connect();\n });\n } finally {\n context.reconnectPromise = null;\n }\n })();\n return context.reconnectPromise;\n }\n /**\n * Create or get an existing subscription to a channel.\n * Returns a subscription proxy that manages the subscription lifecycle\n * and ensures proper reference counting for resource cleanup.\n */\n newSubscription(channel, opts = {}) {\n const context = _SharedCentrifuge.contexts.get(this.url);\n if (!context) throw new Error(\"No context found\");\n const subs = context.subscriptions;\n if (!this.channels.has(channel)) {\n if (!subs.has(channel)) {\n const realSub = context.centrifuge.newSubscription(channel, opts);\n subs.set(channel, { count: 1, sub: realSub });\n } else {\n const subInfo2 = subs.get(channel);\n if (!subInfo2) throw new Error(`Failed to get subscription info for channel ${channel}`);\n subInfo2.count++;\n }\n }\n this.channels.add(channel);\n const subInfo = subs.get(channel);\n if (!subInfo) throw new Error(`Failed to create or get subscription for channel ${channel}`);\n return new SubscriptionProxy(subInfo.sub, this);\n }\n /**\n * Get an existing subscription to a channel if this instance has subscribed to it.\n * Returns undefined if this instance hasn't subscribed to the channel yet.\n */\n getSubscription(channel) {\n if (!this.channels.has(channel)) {\n return void 0;\n }\n const context = _SharedCentrifuge.contexts.get(this.url);\n if (!context) return void 0;\n const subInfo = context.subscriptions.get(channel);\n return subInfo ? new SubscriptionProxy(subInfo.sub, this) : void 0;\n }\n /**\n * Publish data to a channel.\n */\n async publish(channel, data) {\n const context = _SharedCentrifuge.contexts.get(this.url);\n if (!context) return;\n await context.centrifuge.publish(channel, data);\n }\n /**\n * Get all current subscriptions as proxied objects for this instance only.\n */\n subscriptions() {\n const context = _SharedCentrifuge.contexts.get(this.url);\n if (!context) return {};\n const proxiedSubs = {};\n for (const channel of this.channels) {\n const subInfo = context.subscriptions.get(channel);\n if (subInfo) {\n proxiedSubs[channel] = new SubscriptionProxy(subInfo.sub, this);\n }\n }\n return proxiedSubs;\n }\n /**\n * Get the underlying Centrifuge instance (for testing purposes).\n */\n get real() {\n const context = _SharedCentrifuge.contexts.get(this.url);\n return _optionalChain([context, 'optionalAccess', _7 => _7.centrifuge]);\n }\n /**\n * Get the current connection state. Returns \"disconnected\" if this instance has been disconnected.\n */\n get state() {\n if (this.disconnected) return \"disconnected\";\n const context = _SharedCentrifuge.contexts.get(this.url);\n return _nullishCoalesce(_optionalChain([context, 'optionalAccess', _8 => _8.centrifuge, 'access', _9 => _9.state]), () => ( \"disconnected\"));\n }\n /**\n * Attach event listeners for this specific instance.\n */\n attachEventListeners() {\n if (this.eventListeners.size > 0) return;\n const context = _SharedCentrifuge.contexts.get(this.url);\n if (!context) return;\n const events = [\"connecting\", \"connected\", \"disconnected\", \"error\"];\n events.forEach((event) => {\n const listener = (ctx) => {\n if (!this.disconnected) this.emit(event, ctx);\n };\n this.eventListeners.set(event, listener);\n context.centrifuge.on(event, listener);\n });\n }\n /**\n * Decrement the reference count for a channel subscription.\n */\n decrementChannelRef(channel) {\n const context = _SharedCentrifuge.contexts.get(this.url);\n if (!context) return;\n const subs = context.subscriptions;\n const subInfo = subs.get(channel);\n if (!subInfo) return;\n subInfo.count--;\n if (subInfo.count === 0) {\n subInfo.sub.unsubscribe();\n context.centrifuge.removeSubscription(subInfo.sub);\n subs.delete(channel);\n }\n }\n /**\n * Detach event listeners for this specific instance.\n */\n detachEventListeners() {\n const context = _SharedCentrifuge.contexts.get(this.url);\n if (!context) return;\n for (const [event, listener] of this.eventListeners) {\n context.centrifuge.off(event, listener);\n }\n this.eventListeners.clear();\n }\n /**\n * Validate that provided options match the existing shared state's options.\n */\n validateOptions(existingOpts, newOpts) {\n const criticalKeys = [\"token\", \"websocket\", \"minReconnectDelay\", \"maxReconnectDelay\"];\n for (const key of criticalKeys) {\n const existing = existingOpts[key];\n const incoming = newOpts[key];\n if (existing !== void 0 && incoming !== void 0 && existing !== incoming) {\n console.warn(`SharedCentrifuge: Option '${key}' mismatch for URL ${this.url}. Using existing value: ${existing}, ignoring new value: ${incoming}`);\n }\n }\n }\n /**\n * Remove a subscription, cleaning up resources if no instances are using it.\n * This decrements reference counts and removes subscriptions when they\n * reach zero references across all instances.\n */\n removeSubscription(sub) {\n if (!sub || !(\"channel\" in sub)) return;\n this.decrementChannelRef(sub.channel);\n this.channels.delete(sub.channel);\n }\n}, _class4.__initStatic3(), _class4);\n\n// src/transport/websocket/store.ts\nvar _uuid = require('uuid');\nvar WebSocketTransportStorage = class _WebSocketTransportStorage {\n \n \n /**\n * Creates a new WebSocketTransportStorage instance with a persistent client ID.\n * If no client ID exists in storage, generates and persists a new one.\n */\n static async create(kvstore) {\n const clientIdKey = _WebSocketTransportStorage.getClientIdKey();\n let clientId = await kvstore.get(clientIdKey);\n if (!clientId) {\n clientId = _uuid.v4.call(void 0, );\n await kvstore.set(clientIdKey, clientId);\n }\n return new _WebSocketTransportStorage(kvstore, clientId);\n }\n constructor(kvstore, clientId) {\n this.kvstore = kvstore;\n this.clientId = clientId;\n }\n /**\n * Returns the persistent client ID for this transport.\n */\n getClientId() {\n return this.clientId;\n }\n /**\n * Gets the next nonce for publishing a message on the specified channel.\n * Increments and persists the nonce counter for this client and channel.\n */\n async getNextNonce(channel) {\n const key = this.getNonceKey(channel);\n const value = await this.kvstore.get(key);\n const currentNonce = value ? parseInt(value, 10) : 0;\n const nextNonce = currentNonce + 1;\n await this.kvstore.set(key, nextNonce.toString());\n return nextNonce;\n }\n /**\n * Retrieves the latest received nonces from all senders on the specified channel.\n * Used for message deduplication - only messages with nonces greater than the\n * latest seen nonce from each sender are processed.\n */\n async getLatestNonces(channel) {\n const key = this.getLatestNoncesKey(channel);\n const value = await this.kvstore.get(key);\n if (value) {\n const parsed = JSON.parse(value);\n return new Map(Object.entries(parsed));\n }\n return /* @__PURE__ */ new Map();\n }\n /**\n * Updates the latest received nonces from all senders on the specified channel.\n * This is used to track the highest nonce seen from each sender for deduplication.\n */\n async setLatestNonces(channel, nonces) {\n const key = this.getLatestNoncesKey(channel);\n const obj = Object.fromEntries(nonces);\n await this.kvstore.set(key, JSON.stringify(obj));\n }\n /**\n * Clears the storage for a given channel.\n */\n async clear(channel) {\n const nonceKey = this.getNonceKey(channel);\n const latestNoncesKey = this.getLatestNoncesKey(channel);\n await Promise.all([this.kvstore.delete(nonceKey), this.kvstore.delete(latestNoncesKey)]);\n }\n /**\n * Returns the key used to store the client ID.\n */\n static getClientIdKey() {\n return \"websocket-transport-client-id\";\n }\n /**\n * Returns the key used to store the nonce counter for a specific channel.\n */\n getNonceKey(channel) {\n return `nonce:${this.clientId}:${channel}`;\n }\n /**\n * Returns the key used to store the latest nonces for a specific channel.\n */\n getLatestNoncesKey(channel) {\n return `latest-nonces:${this.clientId}:${channel}`;\n }\n};\n\n// src/transport/websocket/index.ts\nvar HISTORY_FETCH_LIMIT = 50;\nvar MAX_RETRY_ATTEMPTS = 5;\nvar BASE_RETRY_DELAY = 100;\nvar WebSocketTransport = (_class5 = class _WebSocketTransport extends _eventemitter32.default {\n \n \n __init8() {this.queue = []}\n __init9() {this.isProcessingQueue = false}\n __init10() {this.state = \"disconnected\"}\n /**\n * Creates a new WebSocketTransport instance. The storage parameter must be provided\n * to enable persistence across restarts.\n */\n static async create(options) {\n const storage = await WebSocketTransportStorage.create(options.kvstore);\n return new _WebSocketTransport(storage, options);\n }\n constructor(storage, options) {\n super();_class5.prototype.__init8.call(this);_class5.prototype.__init9.call(this);_class5.prototype.__init10.call(this);;\n this.storage = storage;\n const opts = {\n minReconnectDelay: 100,\n maxReconnectDelay: 3e4\n };\n if (options.websocket !== void 0) {\n opts.websocket = options.websocket;\n }\n this.centrifuge = options.useSharedConnection ? new SharedCentrifuge(options.url, opts) : new (0, _centrifuge.Centrifuge)(options.url, opts);\n this.centrifuge.on(\"connecting\", () => this.setState(\"connecting\"));\n this.centrifuge.on(\"connected\", () => {\n this.setState(\"connected\");\n this._processQueue();\n });\n this.centrifuge.on(\"disconnected\", () => this.setState(\"disconnected\"));\n this.centrifuge.on(\"error\", (ctx) => this.emit(\"error\", new TransportError(\"UNKNOWN\" /* UNKNOWN */, ctx.error.message)));\n }\n /**\n * Connects to the relay server.\n */\n connect() {\n if (this.state === \"connected\" || this.state === \"connecting\") {\n return Promise.resolve();\n }\n this.setState(\"connecting\");\n return new Promise((resolve) => {\n this.centrifuge.once(\"connected\", () => resolve());\n this.centrifuge.connect();\n });\n }\n /**\n * Disconnects from the relay server.\n */\n disconnect() {\n this.queue.forEach((msg) => msg.resolve(false));\n this.queue.length = 0;\n if (this.state === \"disconnected\") {\n return Promise.resolve();\n }\n return new Promise((resolve) => {\n const subs = this.centrifuge.subscriptions();\n for (const sub of Object.values(subs)) {\n this.centrifuge.removeSubscription(sub);\n }\n this.centrifuge.once(\"disconnected\", () => resolve());\n this.centrifuge.disconnect();\n });\n }\n /**\n * Disconnects and immediately reconnects the underlying Centrifuge client.\n * This is a proactive way to force a fresh connection while preserving all\n * existing subscription objects in memory, allowing for automatic recovery.\n */\n reconnect() {\n if (this.centrifuge instanceof SharedCentrifuge && \"reconnect\" in this.centrifuge) {\n return this.centrifuge.reconnect();\n }\n if (this.state === \"connecting\") {\n return new Promise((resolve) => this.centrifuge.once(\"connected\", () => resolve()));\n }\n this.centrifuge.disconnect();\n return new Promise((resolve, reject) => {\n this.centrifuge.once(\"connected\", () => resolve());\n this.centrifuge.once(\"error\", (ctx) => reject(new TransportError(\"TRANSPORT_RECONNECT_FAILED\" /* TRANSPORT_RECONNECT_FAILED */, ctx.error.message)));\n this.centrifuge.connect();\n });\n }\n /**\n * Subscribes to a channel and fetches historical messages and sends any queued messages.\n */\n subscribe(channel) {\n let sub = this.centrifuge.getSubscription(channel);\n if (!sub) {\n sub = this.centrifuge.newSubscription(channel, { recoverable: true, positioned: true });\n const _sub = sub;\n sub.on(\"subscribed\", () => {\n this._fetchHistory(_sub, channel);\n this._processQueue();\n });\n sub.on(\"publication\", (ctx) => {\n this._handleIncomingMessage(channel, ctx.data);\n });\n sub.on(\"error\", (ctx) => this.emit(\"error\", new TransportError(\"TRANSPORT_SUBSCRIBE_FAILED\" /* TRANSPORT_SUBSCRIBE_FAILED */, `Subscription error: ${ctx.error.message}`)));\n }\n if (sub.state === \"subscribed\") {\n return Promise.resolve();\n }\n const subscription = sub;\n return new Promise((resolve) => {\n subscription.once(\"subscribed\", () => resolve());\n subscription.subscribe();\n });\n }\n /**\n * Publishes a message to a channel. Returns a promise that resolves when the message is published.\n */\n publish(channel, payload) {\n const promise = new Promise((resolve, reject) => {\n this.queue.push({ channel, payload, resolve, reject });\n });\n this._processQueue();\n return promise;\n }\n /**\n * Clears the transport for a given channel.\n */\n async clear(channel) {\n await this.storage.clear(channel);\n const sub = this.centrifuge.getSubscription(channel);\n if (sub) this.centrifuge.removeSubscription(sub);\n }\n /**\n * Sets the internal state of the transport.\n */\n setState(newState) {\n if (this.state === newState) return;\n this.state = newState;\n this.emit(newState);\n }\n /**\n * Parses an incoming raw message, checks for duplicates, and emits it.\n */\n async _handleIncomingMessage(channel, rawData) {\n try {\n const message = JSON.parse(rawData);\n if (typeof message.clientId !== \"string\" || typeof message.nonce !== \"number\" || typeof message.payload !== \"string\") {\n throw new TransportError(\"TRANSPORT_PARSE_FAILED\" /* TRANSPORT_PARSE_FAILED */, \"Invalid message format\");\n }\n if (message.clientId === this.storage.getClientId()) {\n return;\n }\n const latestNonces = await this.storage.getLatestNonces(channel);\n const latestNonce = latestNonces.get(message.clientId) || 0;\n if (message.nonce > latestNonce) {\n latestNonces.set(message.clientId, message.nonce);\n await this.storage.setLatestNonces(channel, latestNonces);\n this.emit(\"message\", { channel, data: message.payload });\n }\n } catch (error) {\n this.emit(\"error\", new TransportError(\"TRANSPORT_PARSE_FAILED\" /* TRANSPORT_PARSE_FAILED */, `Failed to parse incoming message: ${error instanceof Error ? error.message : \"Unknown error\"}`));\n }\n }\n /**\n * Fetches historical messages for a channel to ensure no data is missed on first subscribe.\n */\n async _fetchHistory(sub, channel) {\n try {\n const history = await sub.history({ limit: HISTORY_FETCH_LIMIT });\n for (const pub of history.publications) {\n await this._handleIncomingMessage(channel, pub.data);\n }\n } catch (error) {\n if (_optionalChain([error, 'optionalAccess', _10 => _10.code]) === 11) return;\n this.emit(\"error\", new TransportError(\"TRANSPORT_HISTORY_FAILED\" /* TRANSPORT_HISTORY_FAILED */, `Failed to fetch history for channel ${channel}: ${JSON.stringify(error)}`));\n }\n }\n /**\n * Attempts to publish a single message from the queue with retry logic.\n */\n async _process(item) {\n const clientId = this.storage.getClientId();\n const nonce = await this.storage.getNextNonce(item.channel);\n const message = { clientId, nonce, payload: item.payload };\n const data = JSON.stringify(message);\n const publishFn = async () => {\n await this.centrifuge.publish(item.channel, data);\n };\n return retry(publishFn, { attempts: MAX_RETRY_ATTEMPTS, delay: BASE_RETRY_DELAY });\n }\n /**\n * Processes the outgoing message queue serially.\n */\n async _processQueue() {\n if (this.isProcessingQueue || this.state !== \"connected\") {\n return;\n }\n this.isProcessingQueue = true;\n try {\n while (this.queue.length > 0) {\n const item = this.queue[0];\n try {\n await this._process(item);\n this.queue.shift();\n item.resolve(true);\n } catch (error) {\n this.queue.shift();\n item.reject(error instanceof Error ? error : new TransportError(\"TRANSPORT_PUBLISH_FAILED\" /* TRANSPORT_PUBLISH_FAILED */, \"Failed to publish message after all retries\"));\n }\n }\n } finally {\n this.isProcessingQueue = false;\n }\n }\n}, _class5);\n\n// src/utils/timing-safe-equal.ts\nfunction timingSafeEqual(a, b) {\n if (a.length !== b.length) return false;\n let result = 0;\n for (let i = 0; i < a.length; i++) {\n result |= a.charCodeAt(i) ^ b.charCodeAt(i);\n }\n return result === 0;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports.BaseClient = BaseClient; exports.CONNECTION_MODES = CONNECTION_MODES; exports.ClientState = ClientState; exports.CryptoError = CryptoError; exports.DEFAULT_SESSION_TTL = DEFAULT_SESSION_TTL; exports.ErrorCode = ErrorCode; exports.ProtocolError = ProtocolError; exports.SessionError = SessionError; exports.SessionStore = SessionStore; exports.TransportError = TransportError; exports.WebSocketTransport = WebSocketTransport; exports.isValidConnectionMode = isValidConnectionMode; exports.timingSafeEqual = timingSafeEqual;\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar events = {exports: {}};\n\nvar R = typeof Reflect === 'object' ? Reflect : null;\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n };\n\nvar ReflectOwnKeys;\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys;\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n};\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nevents.exports = EventEmitter;\nevents.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n }\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n\nvar eventsExports = events.exports;\nvar EventEmitter$1 = /*@__PURE__*/getDefaultExportFromCjs(eventsExports);\n\nvar errorCodes;\n(function (errorCodes) {\n errorCodes[errorCodes[\"timeout\"] = 1] = \"timeout\";\n errorCodes[errorCodes[\"transportClosed\"] = 2] = \"transportClosed\";\n errorCodes[errorCodes[\"clientDisconnected\"] = 3] = \"clientDisconnected\";\n errorCodes[errorCodes[\"clientClosed\"] = 4] = \"clientClosed\";\n errorCodes[errorCodes[\"clientConnectToken\"] = 5] = \"clientConnectToken\";\n errorCodes[errorCodes[\"clientRefreshToken\"] = 6] = \"clientRefreshToken\";\n errorCodes[errorCodes[\"subscriptionUnsubscribed\"] = 7] = \"subscriptionUnsubscribed\";\n errorCodes[errorCodes[\"subscriptionSubscribeToken\"] = 8] = \"subscriptionSubscribeToken\";\n errorCodes[errorCodes[\"subscriptionRefreshToken\"] = 9] = \"subscriptionRefreshToken\";\n errorCodes[errorCodes[\"transportWriteError\"] = 10] = \"transportWriteError\";\n errorCodes[errorCodes[\"connectionClosed\"] = 11] = \"connectionClosed\";\n errorCodes[errorCodes[\"badConfiguration\"] = 12] = \"badConfiguration\";\n})(errorCodes || (errorCodes = {}));\nvar connectingCodes;\n(function (connectingCodes) {\n connectingCodes[connectingCodes[\"connectCalled\"] = 0] = \"connectCalled\";\n connectingCodes[connectingCodes[\"transportClosed\"] = 1] = \"transportClosed\";\n connectingCodes[connectingCodes[\"noPing\"] = 2] = \"noPing\";\n connectingCodes[connectingCodes[\"subscribeTimeout\"] = 3] = \"subscribeTimeout\";\n connectingCodes[connectingCodes[\"unsubscribeError\"] = 4] = \"unsubscribeError\";\n})(connectingCodes || (connectingCodes = {}));\nvar disconnectedCodes;\n(function (disconnectedCodes) {\n disconnectedCodes[disconnectedCodes[\"disconnectCalled\"] = 0] = \"disconnectCalled\";\n disconnectedCodes[disconnectedCodes[\"unauthorized\"] = 1] = \"unauthorized\";\n disconnectedCodes[disconnectedCodes[\"badProtocol\"] = 2] = \"badProtocol\";\n disconnectedCodes[disconnectedCodes[\"messageSizeLimit\"] = 3] = \"messageSizeLimit\";\n})(disconnectedCodes || (disconnectedCodes = {}));\nvar subscribingCodes;\n(function (subscribingCodes) {\n subscribingCodes[subscribingCodes[\"subscribeCalled\"] = 0] = \"subscribeCalled\";\n subscribingCodes[subscribingCodes[\"transportClosed\"] = 1] = \"transportClosed\";\n})(subscribingCodes || (subscribingCodes = {}));\nvar unsubscribedCodes;\n(function (unsubscribedCodes) {\n unsubscribedCodes[unsubscribedCodes[\"unsubscribeCalled\"] = 0] = \"unsubscribeCalled\";\n unsubscribedCodes[unsubscribedCodes[\"unauthorized\"] = 1] = \"unauthorized\";\n unsubscribedCodes[unsubscribedCodes[\"clientClosed\"] = 2] = \"clientClosed\";\n})(unsubscribedCodes || (unsubscribedCodes = {}));\nvar subscriptionFlags;\n(function (subscriptionFlags) {\n subscriptionFlags[subscriptionFlags[\"channelCompaction\"] = 1] = \"channelCompaction\";\n})(subscriptionFlags || (subscriptionFlags = {}));\n\n/** State of client. */\nvar State;\n(function (State) {\n State[\"Disconnected\"] = \"disconnected\";\n State[\"Connecting\"] = \"connecting\";\n State[\"Connected\"] = \"connected\";\n})(State || (State = {}));\n/** State of Subscription */\nvar SubscriptionState;\n(function (SubscriptionState) {\n SubscriptionState[\"Unsubscribed\"] = \"unsubscribed\";\n SubscriptionState[\"Subscribing\"] = \"subscribing\";\n SubscriptionState[\"Subscribed\"] = \"subscribed\";\n})(SubscriptionState || (SubscriptionState = {}));\n\n/** @internal */\nfunction startsWith(value, prefix) {\n return value.lastIndexOf(prefix, 0) === 0;\n}\n/** @internal */\nfunction isFunction(value) {\n if (value === undefined || value === null) {\n return false;\n }\n return typeof value === 'function';\n}\n/** @internal */\nfunction log(level, args) {\n if (globalThis.console) {\n const logger = globalThis.console[level];\n if (isFunction(logger)) {\n logger.apply(globalThis.console, args);\n }\n }\n}\nfunction randomInt(min, max) {\n return Math.floor(Math.random() * (max - min + 1) + min);\n}\n/** @internal */\nfunction backoff(step, min, max) {\n // Full jitter technique, see:\n // https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/\n if (step > 31) {\n step = 31;\n }\n const interval = randomInt(0, Math.min(max, min * Math.pow(2, step)));\n return Math.min(max, min + interval);\n}\n/** @internal */\nfunction errorExists(data) {\n return 'error' in data && data.error !== null;\n}\n/** @internal */\nfunction ttlMilliseconds(ttl) {\n // https://stackoverflow.com/questions/12633405/what-is-the-maximum-delay-for-setinterval\n return Math.min(ttl * 1000, 2147483647);\n}\n\n/** Subscription to a channel */\nclass Subscription extends EventEmitter$1 {\n /** Subscription constructor should not be used directly, create subscriptions using Client method. */\n constructor(centrifuge, channel, options) {\n super();\n this._resubscribeTimeout = null;\n this._refreshTimeout = null;\n this.channel = channel;\n this.state = SubscriptionState.Unsubscribed;\n this._centrifuge = centrifuge;\n this._token = '';\n this._getToken = null;\n this._data = null;\n this._getData = null;\n this._recover = false;\n this._offset = null;\n this._epoch = null;\n this._id = 0;\n this._recoverable = false;\n this._positioned = false;\n this._joinLeave = false;\n this._minResubscribeDelay = 500;\n this._maxResubscribeDelay = 20000;\n this._resubscribeTimeout = null;\n this._resubscribeAttempts = 0;\n this._promises = {};\n this._promiseId = 0;\n this._inflight = false;\n this._refreshTimeout = null;\n this._delta = '';\n this._delta_negotiated = false;\n this._tagsFilter = null;\n this._prevValue = null;\n this._unsubPromise = Promise.resolve();\n this._setOptions(options);\n // @ts-ignore – we are hiding some symbols from public API autocompletion.\n if (this._centrifuge._debugEnabled) {\n this.on('state', (ctx) => {\n this._debug('subscription state', channel, ctx.oldState, '->', ctx.newState);\n });\n this.on('error', (ctx) => {\n this._debug('subscription error', channel, ctx);\n });\n }\n else {\n // Avoid unhandled exception in EventEmitter for non-set error handler.\n this.on('error', function () { Function.prototype(); });\n }\n }\n /** ready returns a Promise which resolves upon subscription goes to Subscribed\n * state and rejects in case of subscription goes to Unsubscribed state.\n * Optional timeout can be passed.*/\n ready(timeout) {\n if (this.state === SubscriptionState.Unsubscribed) {\n return Promise.reject({ code: errorCodes.subscriptionUnsubscribed, message: this.state });\n }\n if (this.state === SubscriptionState.Subscribed) {\n return Promise.resolve();\n }\n return new Promise((res, rej) => {\n const ctx = {\n resolve: res,\n reject: rej\n };\n if (timeout) {\n ctx.timeout = setTimeout(function () {\n rej({ code: errorCodes.timeout, message: 'timeout' });\n }, timeout);\n }\n this._promises[this._nextPromiseId()] = ctx;\n });\n }\n /** subscribe to a channel.*/\n subscribe() {\n if (this._isSubscribed()) {\n return;\n }\n this._resubscribeAttempts = 0;\n this._setSubscribing(subscribingCodes.subscribeCalled, 'subscribe called');\n }\n /** unsubscribe from a channel, keeping position state.*/\n unsubscribe() {\n this._unsubPromise = this._setUnsubscribed(unsubscribedCodes.unsubscribeCalled, 'unsubscribe called', true);\n }\n /** publish data to a channel.*/\n publish(data) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this._methodCall();\n return this._centrifuge.publish(this.channel, data);\n });\n }\n /** get online presence for a channel.*/\n presence() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this._methodCall();\n return this._centrifuge.presence(this.channel);\n });\n }\n /** presence stats for a channel (num clients and unique users).*/\n presenceStats() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this._methodCall();\n return this._centrifuge.presenceStats(this.channel);\n });\n }\n /** history for a channel. By default it does not return publications (only current\n * StreamPosition data) – provide an explicit limit > 0 to load publications.*/\n history(opts) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this._methodCall();\n return this._centrifuge.history(this.channel, opts);\n });\n }\n /**\n * Sets server-side tags filter for the subscription.\n * This only applies on the next subscription attempt, not the current one.\n * Cannot be used together with delta option.\n *\n * @param tagsFilter - Filter configuration object or null to remove filter\n * @throws {Error} If both delta and tagsFilter are configured\n *\n * @example\n * ```typescript\n * // Simple equality filter\n * sub.setTagsFilter({\n * key: 'ticker',\n * cmp: 'eq',\n * val: 'BTC'\n * });\n * ```\n *\n * @example\n * ```typescript\n * // Complex filter with logical operators\n * sub.setTagsFilter({\n * op: 'and',\n * nodes: [\n * { key: 'ticker', cmp: 'eq', val: 'BTC' },\n * { key: 'price', cmp: 'gt', val: '50000' }\n * ]\n * });\n * ```\n *\n * @example\n * ```typescript\n * // Filter with IN operator\n * sub.setTagsFilter({\n * key: 'ticker',\n * cmp: 'in',\n * vals: ['BTC', 'ETH', 'SOL']\n * });\n * ```\n */\n setTagsFilter(tagsFilter) {\n if (tagsFilter && this._delta) {\n throw new Error('cannot use delta and tagsFilter together');\n }\n this._tagsFilter = tagsFilter;\n }\n /** setData allows setting subscription data. This only applied on the next subscription attempt,\n * Note that if getData callback is configured, it will override this value during resubscriptions. */\n setData(data) {\n this._data = data;\n }\n _methodCall() {\n if (this._isSubscribed()) {\n return Promise.resolve();\n }\n if (this._isUnsubscribed()) {\n return Promise.reject({\n code: errorCodes.subscriptionUnsubscribed,\n message: this.state\n });\n }\n return new Promise((resolve, reject) => {\n // @ts-ignore – we are hiding some symbols from public API autocompletion.\n const timeoutDuration = this._centrifuge._config.timeout;\n const timeout = setTimeout(() => {\n reject({ code: errorCodes.timeout, message: 'timeout' });\n }, timeoutDuration);\n this._promises[this._nextPromiseId()] = {\n timeout,\n resolve,\n reject\n };\n });\n }\n _nextPromiseId() {\n return ++this._promiseId;\n }\n _needRecover() {\n return this._recover === true;\n }\n _isUnsubscribed() {\n return this.state === SubscriptionState.Unsubscribed;\n }\n _isSubscribing() {\n return this.state === SubscriptionState.Subscribing;\n }\n _isSubscribed() {\n return this.state === SubscriptionState.Subscribed;\n }\n _setState(newState) {\n if (this.state !== newState) {\n const oldState = this.state;\n this.state = newState;\n this.emit('state', { newState, oldState, channel: this.channel });\n return true;\n }\n return false;\n }\n _usesToken() {\n return this._token !== '' || this._getToken !== null;\n }\n _clearSubscribingState() {\n this._resubscribeAttempts = 0;\n this._clearResubscribeTimeout();\n }\n _clearSubscribedState() {\n this._clearRefreshTimeout();\n }\n _setSubscribed(result) {\n if (!this._isSubscribing()) {\n return;\n }\n this._clearSubscribingState();\n if (result.id) {\n this._id = result.id;\n }\n if (result.recoverable) {\n this._recover = true;\n this._offset = result.offset || 0;\n this._epoch = result.epoch || '';\n }\n if (result.delta) {\n this._delta_negotiated = true;\n }\n else {\n this._delta_negotiated = false;\n }\n this._setState(SubscriptionState.Subscribed);\n // @ts-ignore – we are hiding some methods from public API autocompletion.\n const ctx = this._centrifuge._getSubscribeContext(this.channel, result);\n this.emit('subscribed', ctx);\n this._resolvePromises();\n const pubs = result.publications;\n if (pubs && pubs.length > 0) {\n for (const i in pubs) {\n if (!pubs.hasOwnProperty(i)) {\n continue;\n }\n this._handlePublication(pubs[i]);\n }\n }\n if (result.expires === true) {\n this._refreshTimeout = setTimeout(() => this._refresh(), ttlMilliseconds(result.ttl));\n }\n }\n _setSubscribing(code, reason) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._isSubscribing()) {\n return;\n }\n if (this._isSubscribed()) {\n this._clearSubscribedState();\n }\n if (this._setState(SubscriptionState.Subscribing)) {\n this.emit('subscribing', { channel: this.channel, code: code, reason: reason });\n }\n // @ts-ignore – for performance reasons only await _unsubPromise for emulution case where it's required.\n if (this._centrifuge._transport && this._centrifuge._transport.emulation()) {\n yield this._unsubPromise;\n }\n if (!this._isSubscribing()) {\n return;\n }\n this._subscribe();\n });\n }\n _subscribe() {\n this._debug('subscribing on', this.channel);\n if (!this._isTransportOpen()) {\n this._debug('delay subscribe on', this.channel, 'till connected');\n return null;\n }\n if (this._inflight) {\n return null;\n }\n this._inflight = true;\n if (this._canSubscribeWithoutGettingToken()) {\n return this._subscribeWithoutToken();\n }\n this._getSubscriptionToken()\n .then(token => this._handleTokenResponse(token))\n .catch(e => this._handleTokenError(e));\n return null;\n }\n _isTransportOpen() {\n // @ts-ignore – we are hiding some symbols from public API autocompletion.\n return this._centrifuge._transportIsOpen;\n }\n _canSubscribeWithoutGettingToken() {\n return !this._usesToken() || !!this._token;\n }\n _subscribeWithoutToken() {\n if (this._getData) {\n this._getDataAndSubscribe(this._token);\n return null;\n }\n else {\n return this._sendSubscribe(this._token);\n }\n }\n _getDataAndSubscribe(token) {\n if (!this._getData) {\n this._inflight = false;\n return;\n }\n this._getData({ channel: this.channel })\n .then(data => {\n if (!this._isSubscribing()) {\n this._inflight = false;\n return;\n }\n this._data = data;\n this._sendSubscribe(token);\n })\n .catch(e => this._handleGetDataError(e));\n }\n _handleGetDataError(error) {\n if (!this._isSubscribing()) {\n this._inflight = false;\n return;\n }\n if (error instanceof UnauthorizedError) {\n this._inflight = false;\n this._failUnauthorized();\n return;\n }\n this.emit('error', {\n type: 'subscribeData',\n channel: this.channel,\n error: {\n code: errorCodes.badConfiguration,\n message: (error === null || error === void 0 ? void 0 : error.toString()) || ''\n }\n });\n this._inflight = false;\n this._scheduleResubscribe();\n }\n _handleTokenResponse(token) {\n if (!this._isSubscribing()) {\n this._inflight = false;\n return;\n }\n if (!token) {\n this._inflight = false;\n this._failUnauthorized();\n return;\n }\n this._token = token;\n if (this._getData) {\n this._getDataAndSubscribe(token);\n }\n else {\n this._sendSubscribe(token);\n }\n }\n _handleTokenError(error) {\n if (!this._isSubscribing()) {\n this._inflight = false;\n return;\n }\n if (error instanceof UnauthorizedError) {\n this._inflight = false;\n this._failUnauthorized();\n return;\n }\n this.emit('error', {\n type: 'subscribeToken',\n channel: this.channel,\n error: {\n code: errorCodes.subscriptionSubscribeToken,\n message: (error === null || error === void 0 ? void 0 : error.toString()) || ''\n }\n });\n this._inflight = false;\n this._scheduleResubscribe();\n }\n _sendSubscribe(token) {\n if (!this._isTransportOpen()) {\n this._inflight = false;\n return null;\n }\n const cmd = this._buildSubscribeCommand(token);\n // @ts-ignore – we are hiding some symbols from public API autocompletion.\n this._centrifuge._call(cmd).then(resolveCtx => {\n this._inflight = false;\n const result = resolveCtx.reply.subscribe;\n this._handleSubscribeResponse(result);\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n this._inflight = false;\n this._handleSubscribeError(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n return cmd;\n }\n _buildSubscribeCommand(token) {\n const req = { channel: this.channel };\n if (token)\n req.token = token;\n if (this._data)\n req.data = this._data;\n if (this._positioned)\n req.positioned = true;\n if (this._recoverable)\n req.recoverable = true;\n if (this._joinLeave)\n req.join_leave = true;\n req.flag = subscriptionFlags.channelCompaction;\n if (this._needRecover()) {\n req.recover = true;\n const offset = this._getOffset();\n if (offset)\n req.offset = offset;\n const epoch = this._getEpoch();\n if (epoch)\n req.epoch = epoch;\n }\n if (this._delta)\n req.delta = this._delta;\n if (this._tagsFilter)\n req.tf = this._tagsFilter;\n return { subscribe: req };\n }\n _debug(...args) {\n // @ts-ignore – we are hiding some symbols from public API autocompletion.\n this._centrifuge._debug(...args);\n }\n _handleSubscribeError(error) {\n if (!this._isSubscribing()) {\n return;\n }\n if (error.code === errorCodes.timeout) {\n // @ts-ignore – we are hiding some symbols from public API autocompletion.\n this._centrifuge._disconnect(connectingCodes.subscribeTimeout, 'subscribe timeout', true);\n return;\n }\n this._subscribeError(error);\n }\n _handleSubscribeResponse(result) {\n if (!this._isSubscribing()) {\n return;\n }\n this._setSubscribed(result);\n }\n _setUnsubscribed(code, reason, sendUnsubscribe) {\n if (this._isUnsubscribed()) {\n return Promise.resolve();\n }\n let promise = Promise.resolve();\n if (this._isSubscribed()) {\n if (sendUnsubscribe) {\n // @ts-ignore – we are hiding some methods from public API autocompletion.\n promise = this._centrifuge._unsubscribe(this);\n }\n this._clearSubscribedState();\n }\n else if (this._isSubscribing()) {\n if (this._inflight && sendUnsubscribe) {\n // @ts-ignore – we are hiding some methods from public API autocompletion.\n promise = this._centrifuge._unsubscribe(this);\n }\n this._clearSubscribingState();\n }\n this._inflight = false;\n if (this._setState(SubscriptionState.Unsubscribed)) {\n this.emit('unsubscribed', { channel: this.channel, code: code, reason: reason });\n }\n this._rejectPromises({ code: errorCodes.subscriptionUnsubscribed, message: this.state });\n return promise;\n }\n _handlePublication(pub) {\n if (this._delta && this._delta_negotiated) {\n // @ts-ignore – we are hiding some methods from public API autocompletion.\n const { newData, newPrevValue } = this._centrifuge._codec.applyDeltaIfNeeded(pub, this._prevValue);\n pub.data = newData;\n this._prevValue = newPrevValue;\n }\n // @ts-ignore – we are hiding some methods from public API autocompletion.\n const ctx = this._centrifuge._getPublicationContext(this.channel, pub);\n this.emit('publication', ctx);\n if (pub.offset) {\n this._offset = pub.offset;\n }\n }\n _handleJoin(join) {\n // @ts-ignore – we are hiding some methods from public API autocompletion.\n const info = this._centrifuge._getJoinLeaveContext(join.info);\n this.emit('join', { channel: this.channel, info: info });\n }\n _handleLeave(leave) {\n // @ts-ignore – we are hiding some methods from public API autocompletion.\n const info = this._centrifuge._getJoinLeaveContext(leave.info);\n this.emit('leave', { channel: this.channel, info: info });\n }\n _resolvePromises() {\n for (const id in this._promises) {\n if (!this._promises.hasOwnProperty(id)) {\n continue;\n }\n if (this._promises[id].timeout) {\n clearTimeout(this._promises[id].timeout);\n }\n this._promises[id].resolve();\n delete this._promises[id];\n }\n }\n _rejectPromises(err) {\n for (const id in this._promises) {\n if (!this._promises.hasOwnProperty(id)) {\n continue;\n }\n if (this._promises[id].timeout) {\n clearTimeout(this._promises[id].timeout);\n }\n this._promises[id].reject(err);\n delete this._promises[id];\n }\n }\n _scheduleResubscribe() {\n if (!this._isSubscribing()) {\n this._debug('not in subscribing state, skip resubscribe scheduling', this.channel);\n return;\n }\n const self = this;\n const delay = this._getResubscribeDelay();\n this._resubscribeTimeout = setTimeout(function () {\n if (self._isSubscribing()) {\n self._subscribe();\n }\n }, delay);\n this._debug('resubscribe scheduled after ' + delay, this.channel);\n }\n _subscribeError(err) {\n if (!this._isSubscribing()) {\n return;\n }\n if (err.code < 100 || err.code === 109 || err.temporary === true) {\n if (err.code === 109) { // Token expired error.\n this._token = '';\n }\n const errContext = {\n channel: this.channel,\n type: 'subscribe',\n error: err\n };\n if (this._centrifuge.state === State.Connected) {\n this.emit('error', errContext);\n }\n this._scheduleResubscribe();\n }\n else {\n this._setUnsubscribed(err.code, err.message, false);\n }\n }\n _getResubscribeDelay() {\n const delay = backoff(this._resubscribeAttempts, this._minResubscribeDelay, this._maxResubscribeDelay);\n this._resubscribeAttempts++;\n return delay;\n }\n _setOptions(options) {\n if (!options) {\n return;\n }\n if (options.since) {\n this._offset = options.since.offset || 0;\n this._epoch = options.since.epoch || '';\n this._recover = true;\n }\n if (options.data) {\n this._data = options.data;\n }\n if (options.getData) {\n this._getData = options.getData;\n }\n if (options.minResubscribeDelay !== undefined) {\n this._minResubscribeDelay = options.minResubscribeDelay;\n }\n if (options.maxResubscribeDelay !== undefined) {\n this._maxResubscribeDelay = options.maxResubscribeDelay;\n }\n if (options.token) {\n this._token = options.token;\n }\n if (options.getToken) {\n this._getToken = options.getToken;\n }\n if (options.positioned === true) {\n this._positioned = true;\n }\n if (options.recoverable === true) {\n this._recoverable = true;\n }\n if (options.joinLeave === true) {\n this._joinLeave = true;\n }\n if (options.delta) {\n if (options.delta !== 'fossil') {\n throw new Error('unsupported delta format');\n }\n this._delta = options.delta;\n }\n if (options.tagsFilter) {\n this._tagsFilter = options.tagsFilter;\n }\n if (this._tagsFilter && this._delta) {\n throw new Error('cannot use delta and tagsFilter together');\n }\n }\n _getOffset() {\n const offset = this._offset;\n if (offset !== null) {\n return offset;\n }\n return 0;\n }\n _getEpoch() {\n const epoch = this._epoch;\n if (epoch !== null) {\n return epoch;\n }\n return '';\n }\n _clearRefreshTimeout() {\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n }\n _clearResubscribeTimeout() {\n if (this._resubscribeTimeout !== null) {\n clearTimeout(this._resubscribeTimeout);\n this._resubscribeTimeout = null;\n }\n }\n _getSubscriptionToken() {\n this._debug('get subscription token for channel', this.channel);\n const ctx = {\n channel: this.channel\n };\n const getToken = this._getToken;\n if (getToken === null) {\n this.emit('error', {\n type: 'configuration',\n channel: this.channel,\n error: {\n code: errorCodes.badConfiguration,\n message: 'provide a function to get channel subscription token'\n }\n });\n return Promise.reject(new UnauthorizedError(''));\n }\n return getToken(ctx);\n }\n _refresh() {\n this._clearRefreshTimeout();\n const self = this;\n this._getSubscriptionToken().then(function (token) {\n if (!self._isSubscribed()) {\n return;\n }\n if (!token) {\n self._failUnauthorized();\n return;\n }\n self._token = token;\n const req = {\n channel: self.channel,\n token: token\n };\n const msg = {\n 'sub_refresh': req\n };\n // @ts-ignore – we are hiding some symbols from public API autocompletion.\n self._centrifuge._call(msg).then(resolveCtx => {\n const result = resolveCtx.reply.sub_refresh;\n self._refreshResponse(result);\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n self._refreshError(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }).catch(function (e) {\n if (e instanceof UnauthorizedError) {\n self._failUnauthorized();\n return;\n }\n self.emit('error', {\n type: 'refreshToken',\n channel: self.channel,\n error: {\n code: errorCodes.subscriptionRefreshToken,\n message: e !== undefined ? e.toString() : ''\n }\n });\n self._refreshTimeout = setTimeout(() => self._refresh(), self._getRefreshRetryDelay());\n });\n }\n _refreshResponse(result) {\n if (!this._isSubscribed()) {\n return;\n }\n this._debug('subscription token refreshed, channel', this.channel);\n this._clearRefreshTimeout();\n if (result.expires === true) {\n this._refreshTimeout = setTimeout(() => this._refresh(), ttlMilliseconds(result.ttl));\n }\n }\n _refreshError(err) {\n if (!this._isSubscribed()) {\n return;\n }\n if (err.code < 100 || err.temporary === true) {\n this.emit('error', {\n type: 'refresh',\n channel: this.channel,\n error: err\n });\n this._refreshTimeout = setTimeout(() => this._refresh(), this._getRefreshRetryDelay());\n }\n else {\n this._setUnsubscribed(err.code, err.message, true);\n }\n }\n _getRefreshRetryDelay() {\n return backoff(0, 10000, 20000);\n }\n _failUnauthorized() {\n this._setUnsubscribed(unsubscribedCodes.unauthorized, 'unauthorized', true);\n }\n}\n\n/** @internal */\nclass SockjsTransport {\n constructor(endpoint, options) {\n this.endpoint = endpoint;\n this.options = options;\n this._transport = null;\n }\n name() {\n return 'sockjs';\n }\n subName() {\n return 'sockjs-' + this._transport.transport;\n }\n emulation() {\n return false;\n }\n supported() {\n return this.options.sockjs !== null;\n }\n initialize(_protocol, callbacks) {\n this._transport = new this.options.sockjs(this.endpoint, null, this.options.sockjsOptions);\n this._transport.onopen = () => {\n callbacks.onOpen();\n };\n this._transport.onerror = e => {\n callbacks.onError(e);\n };\n this._transport.onclose = closeEvent => {\n callbacks.onClose(closeEvent);\n };\n this._transport.onmessage = event => {\n callbacks.onMessage(event.data);\n };\n }\n close() {\n this._transport.close();\n }\n send(data) {\n this._transport.send(data);\n }\n}\n\n/** @internal */\nclass WebsocketTransport {\n constructor(endpoint, options) {\n this.endpoint = endpoint;\n this.options = options;\n this._transport = null;\n }\n name() {\n return 'websocket';\n }\n subName() {\n return 'websocket';\n }\n emulation() {\n return false;\n }\n supported() {\n return this.options.websocket !== undefined && this.options.websocket !== null;\n }\n initialize(protocol, callbacks) {\n let subProtocol = '';\n if (protocol === 'protobuf') {\n subProtocol = 'centrifuge-protobuf';\n }\n if (subProtocol !== '') {\n this._transport = new this.options.websocket(this.endpoint, subProtocol);\n }\n else {\n this._transport = new this.options.websocket(this.endpoint);\n }\n if (protocol === 'protobuf') {\n this._transport.binaryType = 'arraybuffer';\n }\n this._transport.onopen = () => {\n callbacks.onOpen();\n };\n this._transport.onerror = e => {\n callbacks.onError(e);\n };\n this._transport.onclose = closeEvent => {\n callbacks.onClose(closeEvent);\n };\n this._transport.onmessage = event => {\n callbacks.onMessage(event.data);\n };\n }\n close() {\n this._transport.close();\n }\n send(data) {\n this._transport.send(data);\n }\n}\n\n/** @internal */\nclass HttpStreamTransport {\n constructor(endpoint, options) {\n this.endpoint = endpoint;\n this.options = options;\n this._abortController = null;\n this._utf8decoder = new TextDecoder();\n this._protocol = 'json';\n }\n name() {\n return 'http_stream';\n }\n subName() {\n return 'http_stream';\n }\n emulation() {\n return true;\n }\n _handleErrors(response) {\n if (!response.ok)\n throw new Error(response.status);\n return response;\n }\n _fetchEventTarget(self, endpoint, options) {\n const eventTarget = new EventTarget();\n // fetch with connection timeout maybe? https://github.com/github/fetch/issues/175\n const fetchFunc = self.options.fetch;\n fetchFunc(endpoint, options)\n .then(self._handleErrors)\n .then(response => {\n eventTarget.dispatchEvent(new Event('open'));\n let jsonStreamBuf = '';\n let jsonStreamPos = 0;\n let protoStreamBuf = new Uint8Array();\n const reader = response.body.getReader();\n return new self.options.readableStream({\n start(controller) {\n function pump() {\n return reader.read().then(({ done, value }) => {\n // When no more data needs to be consumed, close the stream\n if (done) {\n eventTarget.dispatchEvent(new Event('close'));\n controller.close();\n return;\n }\n try {\n if (self._protocol === 'json') {\n jsonStreamBuf += self._utf8decoder.decode(value);\n while (jsonStreamPos < jsonStreamBuf.length) {\n if (jsonStreamBuf[jsonStreamPos] === '\\n') {\n const line = jsonStreamBuf.substring(0, jsonStreamPos);\n eventTarget.dispatchEvent(new MessageEvent('message', { data: line }));\n jsonStreamBuf = jsonStreamBuf.substring(jsonStreamPos + 1);\n jsonStreamPos = 0;\n }\n else {\n ++jsonStreamPos;\n }\n }\n }\n else {\n const mergedArray = new Uint8Array(protoStreamBuf.length + value.length);\n mergedArray.set(protoStreamBuf);\n mergedArray.set(value, protoStreamBuf.length);\n protoStreamBuf = mergedArray;\n while (true) {\n const result = self.options.decoder.decodeReply(protoStreamBuf);\n if (result.ok) {\n const data = protoStreamBuf.slice(0, result.pos);\n eventTarget.dispatchEvent(new MessageEvent('message', { data: data }));\n protoStreamBuf = protoStreamBuf.slice(result.pos);\n continue;\n }\n break;\n }\n }\n }\n catch (error) {\n // @ts-ignore - improve later.\n eventTarget.dispatchEvent(new Event('error', { detail: error }));\n eventTarget.dispatchEvent(new Event('close'));\n controller.close();\n return;\n }\n pump();\n }).catch(function (e) {\n // @ts-ignore - improve later.\n eventTarget.dispatchEvent(new Event('error', { detail: e }));\n eventTarget.dispatchEvent(new Event('close'));\n controller.close();\n return;\n });\n }\n return pump();\n }\n });\n })\n .catch(error => {\n // @ts-ignore - improve later.\n eventTarget.dispatchEvent(new Event('error', { detail: error }));\n eventTarget.dispatchEvent(new Event('close'));\n });\n return eventTarget;\n }\n supported() {\n return this.options.fetch !== null &&\n this.options.readableStream !== null &&\n typeof TextDecoder !== 'undefined' &&\n typeof AbortController !== 'undefined' &&\n typeof EventTarget !== 'undefined' &&\n typeof Event !== 'undefined' &&\n typeof MessageEvent !== 'undefined' &&\n typeof Error !== 'undefined';\n }\n initialize(protocol, callbacks, initialData) {\n this._protocol = protocol;\n this._abortController = new AbortController();\n let headers;\n let body;\n if (protocol === 'json') {\n headers = {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n };\n body = initialData;\n }\n else {\n headers = {\n 'Accept': 'application/octet-stream',\n 'Content-Type': 'application/octet-stream'\n };\n body = initialData;\n }\n const fetchOptions = {\n method: 'POST',\n headers: headers,\n body: body,\n mode: 'cors',\n credentials: 'same-origin',\n signal: this._abortController.signal\n };\n const eventTarget = this._fetchEventTarget(this, this.endpoint, fetchOptions);\n eventTarget.addEventListener('open', () => {\n callbacks.onOpen();\n });\n eventTarget.addEventListener('error', (e) => {\n this._abortController.abort();\n callbacks.onError(e);\n });\n eventTarget.addEventListener('close', () => {\n this._abortController.abort();\n callbacks.onClose({\n code: 4,\n reason: 'connection closed'\n });\n });\n eventTarget.addEventListener('message', (e) => {\n callbacks.onMessage(e.data);\n });\n }\n close() {\n this._abortController.abort();\n }\n send(data, session, node) {\n let headers;\n let body;\n const req = {\n session: session,\n node: node,\n data: data\n };\n if (this._protocol === 'json') {\n headers = {\n 'Content-Type': 'application/json'\n };\n body = JSON.stringify(req);\n }\n else {\n headers = {\n 'Content-Type': 'application/octet-stream'\n };\n body = this.options.encoder.encodeEmulationRequest(req);\n }\n const fetchFunc = this.options.fetch;\n const fetchOptions = {\n method: 'POST',\n headers: headers,\n body: body,\n mode: 'cors',\n credentials: 'same-origin',\n };\n fetchFunc(this.options.emulationEndpoint, fetchOptions);\n }\n}\n\n/** @internal */\nclass SseTransport {\n constructor(endpoint, options) {\n this.endpoint = endpoint;\n this.options = options;\n this._protocol = 'json';\n this._transport = null;\n this._onClose = null;\n }\n name() {\n return 'sse';\n }\n subName() {\n return 'sse';\n }\n emulation() {\n return true;\n }\n supported() {\n return this.options.eventsource !== null && this.options.fetch !== null;\n }\n initialize(_protocol, callbacks, initialData) {\n let url;\n if (globalThis && globalThis.document && globalThis.document.baseURI) {\n // Handle case when endpoint is relative, like //example.com/connection/sse\n url = new URL(this.endpoint, globalThis.document.baseURI);\n }\n else {\n url = new URL(this.endpoint);\n }\n url.searchParams.append('cf_connect', initialData);\n const eventsourceOptions = {};\n const eventSource = new this.options.eventsource(url.toString(), eventsourceOptions);\n this._transport = eventSource;\n const self = this;\n eventSource.onopen = function () {\n callbacks.onOpen();\n };\n eventSource.onerror = function (e) {\n eventSource.close();\n callbacks.onError(e);\n callbacks.onClose({\n code: 4,\n reason: 'connection closed'\n });\n };\n eventSource.onmessage = function (e) {\n callbacks.onMessage(e.data);\n };\n self._onClose = function () {\n callbacks.onClose({\n code: 4,\n reason: 'connection closed'\n });\n };\n }\n close() {\n this._transport.close();\n if (this._onClose !== null) {\n this._onClose();\n }\n }\n send(data, session, node) {\n const req = {\n session: session,\n node: node,\n data: data\n };\n const headers = {\n 'Content-Type': 'application/json'\n };\n const body = JSON.stringify(req);\n const fetchFunc = this.options.fetch;\n const fetchOptions = {\n method: 'POST',\n headers: headers,\n body: body,\n mode: 'cors',\n credentials: 'same-origin',\n };\n fetchFunc(this.options.emulationEndpoint, fetchOptions);\n }\n}\n\n/** @internal */\nclass WebtransportTransport {\n constructor(endpoint, options) {\n this.endpoint = endpoint;\n this.options = options;\n this._transport = null;\n this._stream = null;\n this._writer = null;\n this._utf8decoder = new TextDecoder();\n this._protocol = 'json';\n }\n name() {\n return 'webtransport';\n }\n subName() {\n return 'webtransport';\n }\n emulation() {\n return false;\n }\n supported() {\n return this.options.webtransport !== undefined && this.options.webtransport !== null;\n }\n initialize(protocol, callbacks) {\n return __awaiter(this, void 0, void 0, function* () {\n let url;\n if (globalThis && globalThis.document && globalThis.document.baseURI) {\n // Handle case when endpoint is relative, like //example.com/connection/webtransport\n url = new URL(this.endpoint, globalThis.document.baseURI);\n }\n else {\n url = new URL(this.endpoint);\n }\n if (protocol === 'protobuf') {\n url.searchParams.append('cf_protocol', 'protobuf');\n }\n this._protocol = protocol;\n const eventTarget = new EventTarget();\n this._transport = new this.options.webtransport(url.toString());\n this._transport.closed.then(() => {\n callbacks.onClose({\n code: 4,\n reason: 'connection closed'\n });\n }).catch(() => {\n callbacks.onClose({\n code: 4,\n reason: 'connection closed'\n });\n });\n try {\n yield this._transport.ready;\n }\n catch (_a) {\n this.close();\n return;\n }\n let stream;\n try {\n stream = yield this._transport.createBidirectionalStream();\n }\n catch (_b) {\n this.close();\n return;\n }\n this._stream = stream;\n this._writer = this._stream.writable.getWriter();\n eventTarget.addEventListener('close', () => {\n callbacks.onClose({\n code: 4,\n reason: 'connection closed'\n });\n });\n eventTarget.addEventListener('message', (e) => {\n callbacks.onMessage(e.data);\n });\n this._startReading(eventTarget);\n callbacks.onOpen();\n });\n }\n _startReading(eventTarget) {\n return __awaiter(this, void 0, void 0, function* () {\n const reader = this._stream.readable.getReader();\n let jsonStreamBuf = '';\n let jsonStreamPos = 0;\n let protoStreamBuf = new Uint8Array();\n try {\n while (true) {\n const { done, value } = yield reader.read();\n if (value.length > 0) {\n if (this._protocol === 'json') {\n jsonStreamBuf += this._utf8decoder.decode(value);\n while (jsonStreamPos < jsonStreamBuf.length) {\n if (jsonStreamBuf[jsonStreamPos] === '\\n') {\n const line = jsonStreamBuf.substring(0, jsonStreamPos);\n eventTarget.dispatchEvent(new MessageEvent('message', { data: line }));\n jsonStreamBuf = jsonStreamBuf.substring(jsonStreamPos + 1);\n jsonStreamPos = 0;\n }\n else {\n ++jsonStreamPos;\n }\n }\n }\n else {\n const mergedArray = new Uint8Array(protoStreamBuf.length + value.length);\n mergedArray.set(protoStreamBuf);\n mergedArray.set(value, protoStreamBuf.length);\n protoStreamBuf = mergedArray;\n while (true) {\n const result = this.options.decoder.decodeReply(protoStreamBuf);\n if (result.ok) {\n const data = protoStreamBuf.slice(0, result.pos);\n eventTarget.dispatchEvent(new MessageEvent('message', { data: data }));\n protoStreamBuf = protoStreamBuf.slice(result.pos);\n continue;\n }\n break;\n }\n }\n }\n if (done) {\n break;\n }\n }\n }\n catch (_a) {\n eventTarget.dispatchEvent(new Event('close'));\n }\n });\n }\n close() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n if (this._writer) {\n yield this._writer.close();\n }\n this._transport.close();\n }\n catch (e) {\n // already closed.\n }\n });\n }\n send(data) {\n return __awaiter(this, void 0, void 0, function* () {\n let binary;\n if (this._protocol === 'json') {\n // Need extra \\n since WT is non-frame protocol. \n binary = new TextEncoder().encode(data + '\\n');\n }\n else {\n binary = data;\n }\n try {\n yield this._writer.write(binary);\n }\n catch (e) {\n this.close();\n }\n });\n }\n}\n\n/*\nCopyright 2014-2024 Dmitry Chestnykh (JavaScript port)\nCopyright 2007 D. Richard Hipp (original C version)\n\nFossil SCM delta compression algorithm, this is only the applyDelta part extracted\nfrom https://github.com/dchest/fossil-delta-js. The code was slightly modified\nto strip unnecessary parts. The copyright on top of this file is from the original\nrepo on Github licensed under Simplified BSD License.\n*/\nconst zValue = [\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1,\n -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,\n 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, 36, -1, 37,\n 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,\n 57, 58, 59, 60, 61, 62, -1, -1, -1, 63, -1,\n];\n// Reader reads bytes, chars, ints from array.\nclass Reader {\n constructor(array) {\n this.a = array; // source array\n this.pos = 0; // current position in array\n }\n haveBytes() {\n return this.pos < this.a.length;\n }\n getByte() {\n const b = this.a[this.pos];\n this.pos++;\n if (this.pos > this.a.length)\n throw new RangeError(\"out of bounds\");\n return b;\n }\n getChar() {\n return String.fromCharCode(this.getByte());\n }\n // Read base64-encoded unsigned integer.\n getInt() {\n let v = 0;\n let c;\n while (this.haveBytes() && (c = zValue[0x7f & this.getByte()]) >= 0) {\n v = (v << 6) + c;\n }\n this.pos--;\n return v >>> 0;\n }\n}\n// Write writes an array.\nclass Writer {\n constructor() {\n this.a = [];\n }\n toByteArray(sourceType) {\n if (Array.isArray(sourceType)) {\n return this.a;\n }\n return new Uint8Array(this.a);\n }\n // Copy from array at start to end.\n putArray(a, start, end) {\n // TODO: optimize.\n for (let i = start; i < end; i++)\n this.a.push(a[i]);\n }\n}\n// Return a 32-bit checksum of the array.\nfunction checksum(arr) {\n let sum0 = 0, sum1 = 0, sum2 = 0, sum3 = 0, z = 0, N = arr.length;\n //TODO measure if this unrolling is helpful.\n while (N >= 16) {\n sum0 = (sum0 + arr[z + 0]) | 0;\n sum1 = (sum1 + arr[z + 1]) | 0;\n sum2 = (sum2 + arr[z + 2]) | 0;\n sum3 = (sum3 + arr[z + 3]) | 0;\n sum0 = (sum0 + arr[z + 4]) | 0;\n sum1 = (sum1 + arr[z + 5]) | 0;\n sum2 = (sum2 + arr[z + 6]) | 0;\n sum3 = (sum3 + arr[z + 7]) | 0;\n sum0 = (sum0 + arr[z + 8]) | 0;\n sum1 = (sum1 + arr[z + 9]) | 0;\n sum2 = (sum2 + arr[z + 10]) | 0;\n sum3 = (sum3 + arr[z + 11]) | 0;\n sum0 = (sum0 + arr[z + 12]) | 0;\n sum1 = (sum1 + arr[z + 13]) | 0;\n sum2 = (sum2 + arr[z + 14]) | 0;\n sum3 = (sum3 + arr[z + 15]) | 0;\n z += 16;\n N -= 16;\n }\n while (N >= 4) {\n sum0 = (sum0 + arr[z + 0]) | 0;\n sum1 = (sum1 + arr[z + 1]) | 0;\n sum2 = (sum2 + arr[z + 2]) | 0;\n sum3 = (sum3 + arr[z + 3]) | 0;\n z += 4;\n N -= 4;\n }\n sum3 = (((((sum3 + (sum2 << 8)) | 0) + (sum1 << 16)) | 0) + (sum0 << 24)) | 0;\n switch (N) {\n //@ts-ignore fallthrough is needed.\n case 3:\n sum3 = (sum3 + (arr[z + 2] << 8)) | 0; /* falls through */\n //@ts-ignore fallthrough is needed.\n case 2:\n sum3 = (sum3 + (arr[z + 1] << 16)) | 0; /* falls through */\n case 1:\n sum3 = (sum3 + (arr[z + 0] << 24)) | 0; /* falls through */\n }\n return sum3 >>> 0;\n}\n/**\n * Apply a delta byte array to a source byte array, returning the target byte array.\n */\nfunction applyDelta(source, delta) {\n let total = 0;\n const zDelta = new Reader(delta);\n const lenSrc = source.length;\n const lenDelta = delta.length;\n const limit = zDelta.getInt();\n if (zDelta.getChar() !== \"\\n\")\n throw new Error(\"size integer not terminated by '\\\\n'\");\n const zOut = new Writer();\n while (zDelta.haveBytes()) {\n const cnt = zDelta.getInt();\n let ofst;\n switch (zDelta.getChar()) {\n case \"@\":\n ofst = zDelta.getInt();\n if (zDelta.haveBytes() && zDelta.getChar() !== \",\")\n throw new Error(\"copy command not terminated by ','\");\n total += cnt;\n if (total > limit)\n throw new Error(\"copy exceeds output file size\");\n if (ofst + cnt > lenSrc)\n throw new Error(\"copy extends past end of input\");\n zOut.putArray(source, ofst, ofst + cnt);\n break;\n case \":\":\n total += cnt;\n if (total > limit)\n throw new Error(\"insert command gives an output larger than predicted\");\n if (cnt > lenDelta)\n throw new Error(\"insert count exceeds size of delta\");\n zOut.putArray(zDelta.a, zDelta.pos, zDelta.pos + cnt);\n zDelta.pos += cnt;\n break;\n case \";\":\n {\n const out = zOut.toByteArray(source);\n if (cnt !== checksum(out))\n throw new Error(\"bad checksum\");\n if (total !== limit)\n throw new Error(\"generated size does not match predicted size\");\n return out;\n }\n default:\n throw new Error(\"unknown delta operator\");\n }\n }\n throw new Error(\"unterminated delta\");\n}\n\n/** @internal */\nclass JsonCodec {\n name() {\n return 'json';\n }\n encodeCommands(commands) {\n return commands.map(c => JSON.stringify(c)).join('\\n');\n }\n decodeReplies(data) {\n return data.trim().split('\\n').map(r => JSON.parse(r));\n }\n applyDeltaIfNeeded(pub, prevValue) {\n let newData, newPrevValue;\n if (pub.delta) {\n // JSON string delta.\n const valueArray = applyDelta(prevValue, new TextEncoder().encode(pub.data));\n newData = JSON.parse(new TextDecoder().decode(valueArray));\n newPrevValue = valueArray;\n }\n else {\n // Full data as JSON string.\n newData = JSON.parse(pub.data);\n newPrevValue = new TextEncoder().encode(pub.data);\n }\n return { newData, newPrevValue };\n }\n}\n\nconst defaults = {\n headers: {},\n token: '',\n getToken: null,\n data: null,\n getData: null,\n debug: false,\n name: 'js',\n version: '',\n fetch: null,\n readableStream: null,\n websocket: null,\n eventsource: null,\n sockjs: null,\n sockjsOptions: {},\n emulationEndpoint: '/emulation',\n minReconnectDelay: 500,\n maxReconnectDelay: 20000,\n timeout: 5000,\n maxServerPingDelay: 10000,\n networkEventTarget: null,\n};\nclass UnauthorizedError extends Error {\n constructor(message) {\n super(message);\n this.name = this.constructor.name;\n }\n}\n/** Centrifuge is a Centrifuge/Centrifugo bidirectional client. */\nclass Centrifuge extends EventEmitter$1 {\n /** Constructs Centrifuge client. Call connect() method to start connecting. */\n constructor(endpoint, options) {\n super();\n this._reconnectTimeout = null;\n this._refreshTimeout = null;\n this._serverPingTimeout = null;\n this.state = State.Disconnected;\n this._transportIsOpen = false;\n this._endpoint = endpoint;\n this._emulation = false;\n this._transports = [];\n this._currentTransportIndex = 0;\n this._triedAllTransports = false;\n this._transportWasOpen = false;\n this._transport = null;\n this._transportId = 0;\n this._deviceWentOffline = false;\n this._transportClosed = true;\n this._codec = new JsonCodec();\n this._reconnecting = false;\n this._reconnectTimeout = null;\n this._reconnectAttempts = 0;\n this._client = null;\n this._session = '';\n this._node = '';\n this._subs = {};\n this._serverSubs = {};\n this._commandId = 0;\n this._commands = [];\n this._batching = false;\n this._refreshRequired = false;\n this._refreshTimeout = null;\n this._callbacks = {};\n this._token = '';\n this._data = null;\n this._dispatchPromise = Promise.resolve();\n this._serverPing = 0;\n this._serverPingTimeout = null;\n this._sendPong = false;\n this._promises = {};\n this._promiseId = 0;\n this._debugEnabled = false;\n this._networkEventsSet = false;\n this._config = Object.assign(Object.assign({}, defaults), options);\n this._configure();\n if (this._debugEnabled) {\n this.on('state', (ctx) => {\n this._debug('client state', ctx.oldState, '->', ctx.newState);\n });\n this.on('error', (ctx) => {\n this._debug('client error', ctx);\n });\n }\n else {\n // Avoid unhandled exception in EventEmitter for non-set error handler.\n this.on('error', function () { Function.prototype(); });\n }\n }\n /** newSubscription allocates new Subscription to a channel. Since server only allows\n * one subscription per channel per client this method throws if client already has\n * channel subscription in internal registry.\n * */\n newSubscription(channel, options) {\n if (this.getSubscription(channel) !== null) {\n throw new Error('Subscription to the channel ' + channel + ' already exists');\n }\n const sub = new Subscription(this, channel, options);\n this._subs[channel] = sub;\n return sub;\n }\n /** getSubscription returns Subscription if it's registered in the internal\n * registry or null. */\n getSubscription(channel) {\n return this._getSub(channel);\n }\n /** removeSubscription allows removing Subcription from the internal registry. */\n removeSubscription(sub) {\n if (!sub) {\n return;\n }\n if (sub.state !== SubscriptionState.Unsubscribed) {\n sub.unsubscribe();\n }\n this._removeSubscription(sub);\n }\n /** Get a map with all current client-side subscriptions. */\n subscriptions() {\n return this._subs;\n }\n /** ready returns a Promise which resolves upon client goes to Connected\n * state and rejects in case of client goes to Disconnected or Failed state.\n * Users can provide optional timeout in milliseconds. */\n ready(timeout) {\n return __awaiter(this, void 0, void 0, function* () {\n switch (this.state) {\n case State.Disconnected:\n throw { code: errorCodes.clientDisconnected, message: 'client disconnected' };\n case State.Connected:\n return;\n default:\n return new Promise((resolve, reject) => {\n const ctx = { resolve, reject };\n if (timeout) {\n ctx.timeout = setTimeout(() => {\n reject({ code: errorCodes.timeout, message: 'timeout' });\n }, timeout);\n }\n this._promises[this._nextPromiseId()] = ctx;\n });\n }\n });\n }\n /** connect to a server. */\n connect() {\n if (this._isConnected()) {\n this._debug('connect called when already connected');\n return;\n }\n if (this._isConnecting()) {\n this._debug('connect called when already connecting');\n return;\n }\n this._debug('connect called');\n this._reconnectAttempts = 0;\n this._startConnecting();\n }\n /** disconnect from a server. */\n disconnect() {\n this._disconnect(disconnectedCodes.disconnectCalled, 'disconnect called', false);\n }\n /** setToken allows setting connection token. Or resetting used token to be empty. */\n setToken(token) {\n this._token = token;\n }\n /** setData allows setting connection data. This only affects the next connection attempt,\n * not the current one. Note that if getData callback is configured, it will override\n * this value during reconnects. */\n setData(data) {\n this._data = data;\n }\n /** setHeaders allows setting connection emulated headers. */\n setHeaders(headers) {\n this._config.headers = headers;\n }\n /** send asynchronous data to a server (without any response from a server\n * expected, see rpc method if you need response). */\n send(data) {\n return __awaiter(this, void 0, void 0, function* () {\n const cmd = {\n send: {\n data\n }\n };\n yield this._methodCall();\n const sent = this._transportSendCommands([cmd]); // can send message to server without id set\n if (!sent) {\n throw this._createErrorObject(errorCodes.transportWriteError, 'transport write error');\n }\n });\n }\n /** rpc to a server - i.e. a call which waits for a response with data. */\n rpc(method, data) {\n return __awaiter(this, void 0, void 0, function* () {\n const cmd = {\n rpc: {\n method,\n data\n }\n };\n yield this._methodCall();\n const result = yield this._callPromise(cmd, (reply) => reply.rpc);\n return {\n data: result.data\n };\n });\n }\n /** publish data to a channel. */\n publish(channel, data) {\n return __awaiter(this, void 0, void 0, function* () {\n const cmd = {\n publish: {\n channel,\n data\n }\n };\n yield this._methodCall();\n yield this._callPromise(cmd, () => ({}));\n return {};\n });\n }\n /** history for a channel. By default it does not return publications (only current\n * StreamPosition data) – provide an explicit limit > 0 to load publications.*/\n history(channel, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const cmd = {\n history: this._getHistoryRequest(channel, options)\n };\n yield this._methodCall();\n const result = yield this._callPromise(cmd, (reply) => reply.history);\n const publications = [];\n if (result.publications) {\n for (let i = 0; i < result.publications.length; i++) {\n publications.push(this._getPublicationContext(channel, result.publications[i]));\n }\n }\n return {\n publications,\n epoch: result.epoch || '',\n offset: result.offset || 0\n };\n });\n }\n /** presence for a channel. */\n presence(channel) {\n return __awaiter(this, void 0, void 0, function* () {\n const cmd = {\n presence: {\n channel\n }\n };\n yield this._methodCall();\n const result = yield this._callPromise(cmd, (reply) => reply.presence);\n const clients = result.presence;\n for (const clientId in clients) {\n if (Object.prototype.hasOwnProperty.call(clients, clientId)) {\n const rawClient = clients[clientId];\n const connInfo = rawClient['conn_info'];\n const chanInfo = rawClient['chan_info'];\n if (connInfo) {\n rawClient.connInfo = connInfo;\n }\n if (chanInfo) {\n rawClient.chanInfo = chanInfo;\n }\n }\n }\n return { clients };\n });\n }\n presenceStats(channel) {\n return __awaiter(this, void 0, void 0, function* () {\n const cmd = {\n 'presence_stats': {\n channel\n }\n };\n yield this._methodCall();\n const result = yield this._callPromise(cmd, (reply) => {\n return reply.presence_stats;\n });\n return {\n numUsers: result.num_users,\n numClients: result.num_clients\n };\n });\n }\n /** start command batching (collect into temporary buffer without sending to a server)\n * until stopBatching called.*/\n startBatching() {\n // start collecting messages without sending them to Centrifuge until flush\n // method called\n this._batching = true;\n }\n /** stop batching commands and flush collected commands to the\n * network (all in one request/frame).*/\n stopBatching() {\n const self = this;\n // Why so nested? Two levels here requred to deal with promise resolving queue.\n // In Subscription case we wait 2 futures before sending data to connection.\n // Otherwise _batching becomes false before batching decision has a chance to be executed.\n Promise.resolve().then(function () {\n Promise.resolve().then(function () {\n self._batching = false;\n self._flush();\n });\n });\n }\n _debug(...args) {\n if (!this._debugEnabled) {\n return;\n }\n log('debug', args);\n }\n _codecName() {\n return this._codec.name();\n }\n /** @internal */\n _formatOverride() {\n return;\n }\n _configure() {\n if (!('Promise' in globalThis)) {\n throw new Error('Promise polyfill required');\n }\n if (!this._endpoint) {\n throw new Error('endpoint configuration required');\n }\n if (this._config.token !== null) {\n this._token = this._config.token;\n }\n if (this._config.data !== null) {\n this._data = this._config.data;\n }\n this._codec = new JsonCodec();\n this._formatOverride();\n if (this._config.debug === true ||\n (typeof localStorage !== 'undefined' && typeof localStorage.getItem === 'function' && localStorage.getItem('centrifuge.debug'))) {\n this._debugEnabled = true;\n }\n this._debug('config', this._config);\n if (typeof this._endpoint === 'string') ;\n else if (typeof this._endpoint === 'object' && this._endpoint instanceof Array) {\n this._transports = this._endpoint;\n this._emulation = true;\n for (const i in this._transports) {\n if (this._transports.hasOwnProperty(i)) {\n const transportConfig = this._transports[i];\n if (!transportConfig.endpoint || !transportConfig.transport) {\n throw new Error('malformed transport configuration');\n }\n const transportName = transportConfig.transport;\n if (['websocket', 'http_stream', 'sse', 'sockjs', 'webtransport'].indexOf(transportName) < 0) {\n throw new Error('unsupported transport name: ' + transportName);\n }\n }\n }\n }\n else {\n throw new Error('unsupported url configuration type: only string or array of objects are supported');\n }\n }\n _setState(newState) {\n if (this.state !== newState) {\n this._reconnecting = false;\n const oldState = this.state;\n this.state = newState;\n this.emit('state', { newState, oldState });\n return true;\n }\n return false;\n }\n _isDisconnected() {\n return this.state === State.Disconnected;\n }\n _isConnecting() {\n return this.state === State.Connecting;\n }\n _isConnected() {\n return this.state === State.Connected;\n }\n _nextCommandId() {\n return ++this._commandId;\n }\n _setNetworkEvents() {\n if (this._networkEventsSet) {\n return;\n }\n let eventTarget = null;\n if (this._config.networkEventTarget !== null) {\n eventTarget = this._config.networkEventTarget;\n }\n else if (typeof globalThis.addEventListener !== 'undefined') {\n eventTarget = globalThis;\n }\n if (eventTarget) {\n eventTarget.addEventListener('offline', () => {\n this._debug('offline event triggered');\n if (this.state === State.Connected || this.state === State.Connecting) {\n this._disconnect(connectingCodes.transportClosed, 'transport closed', true);\n this._deviceWentOffline = true;\n }\n });\n eventTarget.addEventListener('online', () => {\n this._debug('online event triggered');\n if (this.state !== State.Connecting) {\n return;\n }\n if (this._deviceWentOffline && !this._transportClosed) {\n // This is a workaround for mobile Safari where close callback may be\n // not issued upon device going to the flight mode. We know for sure\n // that transport close was called, so we start reconnecting. In this\n // case if the close callback will be issued for some reason after some\n // time – it will be ignored due to transport ID mismatch.\n this._deviceWentOffline = false;\n this._transportClosed = true;\n }\n this._clearReconnectTimeout();\n this._startReconnecting();\n });\n this._networkEventsSet = true;\n }\n }\n _getReconnectDelay() {\n const delay = backoff(this._reconnectAttempts, this._config.minReconnectDelay, this._config.maxReconnectDelay);\n this._reconnectAttempts += 1;\n return delay;\n }\n _clearOutgoingRequests() {\n // fire errbacks of registered outgoing calls.\n for (const id in this._callbacks) {\n if (this._callbacks.hasOwnProperty(id)) {\n const callbacks = this._callbacks[id];\n clearTimeout(callbacks.timeout);\n const errback = callbacks.errback;\n if (!errback) {\n continue;\n }\n errback({ error: this._createErrorObject(errorCodes.connectionClosed, 'connection closed') });\n }\n }\n this._callbacks = {};\n }\n _clearConnectedState() {\n this._client = null;\n this._clearServerPingTimeout();\n this._clearRefreshTimeout();\n // fire events for client-side subscriptions.\n for (const channel in this._subs) {\n if (!this._subs.hasOwnProperty(channel)) {\n continue;\n }\n const sub = this._subs[channel];\n if (sub.state === SubscriptionState.Subscribed) {\n // @ts-ignore – we are hiding some symbols from public API autocompletion.\n sub._setSubscribing(subscribingCodes.transportClosed, 'transport closed');\n }\n }\n // fire events for server-side subscriptions.\n for (const channel in this._serverSubs) {\n if (this._serverSubs.hasOwnProperty(channel)) {\n this.emit('subscribing', { channel: channel });\n }\n }\n }\n _handleWriteError(commands) {\n for (const command of commands) {\n const id = command.id;\n if (!(id in this._callbacks)) {\n continue;\n }\n const callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n const errback = callbacks.errback;\n errback({ error: this._createErrorObject(errorCodes.transportWriteError, 'transport write error') });\n }\n }\n _transportSendCommands(commands) {\n if (!commands.length) {\n return true;\n }\n if (!this._transport) {\n return false;\n }\n try {\n this._transport.send(this._codec.encodeCommands(commands), this._session, this._node);\n }\n catch (e) {\n this._debug('error writing commands', e);\n this._handleWriteError(commands);\n return false;\n }\n return true;\n }\n _initializeTransport() {\n let websocket;\n if (this._config.websocket !== null) {\n websocket = this._config.websocket;\n }\n else {\n if (!(typeof globalThis.WebSocket !== 'function' && typeof globalThis.WebSocket !== 'object')) {\n websocket = globalThis.WebSocket;\n }\n }\n let sockjs = null;\n if (this._config.sockjs !== null) {\n sockjs = this._config.sockjs;\n }\n else {\n if (typeof globalThis.SockJS !== 'undefined') {\n sockjs = globalThis.SockJS;\n }\n }\n let eventsource = null;\n if (this._config.eventsource !== null) {\n eventsource = this._config.eventsource;\n }\n else {\n if (typeof globalThis.EventSource !== 'undefined') {\n eventsource = globalThis.EventSource;\n }\n }\n let fetchFunc = null;\n if (this._config.fetch !== null) {\n fetchFunc = this._config.fetch;\n }\n else {\n if (typeof globalThis.fetch !== 'undefined') {\n fetchFunc = globalThis.fetch;\n }\n }\n let readableStream = null;\n if (this._config.readableStream !== null) {\n readableStream = this._config.readableStream;\n }\n else {\n if (typeof globalThis.ReadableStream !== 'undefined') {\n readableStream = globalThis.ReadableStream;\n }\n }\n if (!this._emulation) {\n if (startsWith(this._endpoint, 'http')) {\n throw new Error('Provide explicit transport endpoints configuration in case of using HTTP (i.e. using array of TransportEndpoint instead of a single string), or use ws(s):// scheme in an endpoint if you aimed using WebSocket transport');\n }\n else {\n this._debug('client will use websocket');\n this._transport = new WebsocketTransport(this._endpoint, {\n websocket: websocket\n });\n if (!this._transport.supported()) {\n throw new Error('WebSocket constructor not found, make sure it is available globally or passed as a dependency in Centrifuge options');\n }\n }\n }\n else {\n if (this._currentTransportIndex >= this._transports.length) {\n this._triedAllTransports = true;\n this._currentTransportIndex = 0;\n }\n let count = 0;\n while (true) {\n if (count >= this._transports.length) {\n throw new Error('no supported transport found');\n }\n const transportConfig = this._transports[this._currentTransportIndex];\n const transportName = transportConfig.transport;\n const transportEndpoint = transportConfig.endpoint;\n if (transportName === 'websocket') {\n this._debug('trying websocket transport');\n this._transport = new WebsocketTransport(transportEndpoint, {\n websocket: websocket\n });\n if (!this._transport.supported()) {\n this._debug('websocket transport not available');\n this._currentTransportIndex++;\n count++;\n continue;\n }\n }\n else if (transportName === 'webtransport') {\n this._debug('trying webtransport transport');\n this._transport = new WebtransportTransport(transportEndpoint, {\n webtransport: globalThis.WebTransport,\n decoder: this._codec,\n encoder: this._codec\n });\n if (!this._transport.supported()) {\n this._debug('webtransport transport not available');\n this._currentTransportIndex++;\n count++;\n continue;\n }\n }\n else if (transportName === 'http_stream') {\n this._debug('trying http_stream transport');\n this._transport = new HttpStreamTransport(transportEndpoint, {\n fetch: fetchFunc,\n readableStream: readableStream,\n emulationEndpoint: this._config.emulationEndpoint,\n decoder: this._codec,\n encoder: this._codec\n });\n if (!this._transport.supported()) {\n this._debug('http_stream transport not available');\n this._currentTransportIndex++;\n count++;\n continue;\n }\n }\n else if (transportName === 'sse') {\n this._debug('trying sse transport');\n this._transport = new SseTransport(transportEndpoint, {\n eventsource: eventsource,\n fetch: fetchFunc,\n emulationEndpoint: this._config.emulationEndpoint,\n });\n if (!this._transport.supported()) {\n this._debug('sse transport not available');\n this._currentTransportIndex++;\n count++;\n continue;\n }\n }\n else if (transportName === 'sockjs') {\n this._debug('trying sockjs');\n this._transport = new SockjsTransport(transportEndpoint, {\n sockjs: sockjs,\n sockjsOptions: this._config.sockjsOptions\n });\n if (!this._transport.supported()) {\n this._debug('sockjs transport not available');\n this._currentTransportIndex++;\n count++;\n continue;\n }\n }\n else {\n throw new Error('unknown transport ' + transportName);\n }\n break;\n }\n }\n const self = this;\n const transport = this._transport;\n const transportId = this._nextTransportId();\n self._debug(\"id of transport\", transportId);\n let wasOpen = false;\n const initialCommands = [];\n if (this._transport.emulation()) {\n const connectCommand = self._sendConnect(true);\n initialCommands.push(connectCommand);\n }\n this._setNetworkEvents();\n const initialData = this._codec.encodeCommands(initialCommands);\n this._transportClosed = false;\n let connectTimeout;\n connectTimeout = setTimeout(function () {\n transport.close();\n }, this._config.timeout);\n this._transport.initialize(this._codecName(), {\n onOpen: function () {\n if (connectTimeout) {\n clearTimeout(connectTimeout);\n connectTimeout = null;\n }\n if (self._transportId != transportId) {\n self._debug('open callback from non-actual transport');\n transport.close();\n return;\n }\n wasOpen = true;\n self._debug(transport.subName(), 'transport open');\n if (transport.emulation()) {\n return;\n }\n self._transportIsOpen = true;\n self._transportWasOpen = true;\n self.startBatching();\n self._sendConnect(false);\n self._sendSubscribeCommands();\n self.stopBatching();\n //@ts-ignore must be used only for debug and test purposes. Exposed only for non-emulation transport.\n self.emit('__centrifuge_debug:connect_frame_sent', {});\n },\n onError: function (e) {\n if (self._transportId != transportId) {\n self._debug('error callback from non-actual transport');\n return;\n }\n self._debug('transport level error', e);\n },\n onClose: function (closeEvent) {\n if (connectTimeout) {\n clearTimeout(connectTimeout);\n connectTimeout = null;\n }\n if (self._transportId != transportId) {\n self._debug('close callback from non-actual transport');\n return;\n }\n self._debug(transport.subName(), 'transport closed');\n self._transportClosed = true;\n self._transportIsOpen = false;\n let reason = 'connection closed';\n let needReconnect = true;\n let code = 0;\n if (closeEvent && 'code' in closeEvent && closeEvent.code) {\n code = closeEvent.code;\n }\n if (closeEvent && closeEvent.reason) {\n try {\n const advice = JSON.parse(closeEvent.reason);\n reason = advice.reason;\n needReconnect = advice.reconnect;\n }\n catch (e) {\n reason = closeEvent.reason;\n if ((code >= 3500 && code < 4000) || (code >= 4500 && code < 5000)) {\n needReconnect = false;\n }\n }\n }\n if (code < 3000) {\n if (code === 1009) {\n code = disconnectedCodes.messageSizeLimit;\n reason = 'message size limit exceeded';\n needReconnect = false;\n }\n else {\n code = connectingCodes.transportClosed;\n reason = 'transport closed';\n }\n if (self._emulation && !self._transportWasOpen) {\n self._currentTransportIndex++;\n if (self._currentTransportIndex >= self._transports.length) {\n self._triedAllTransports = true;\n self._currentTransportIndex = 0;\n }\n }\n }\n else {\n // Codes >= 3000 are sent from a server application level.\n self._transportWasOpen = true;\n }\n if (self._isConnecting() && !wasOpen) {\n self.emit('error', {\n type: 'transport',\n error: {\n code: errorCodes.transportClosed,\n message: 'transport closed'\n },\n transport: transport.name()\n });\n }\n self._reconnecting = false;\n self._disconnect(code, reason, needReconnect);\n },\n onMessage: function (data) {\n self._dataReceived(data);\n }\n }, initialData);\n //@ts-ignore must be used only for debug and test purposes.\n self.emit('__centrifuge_debug:transport_initialized', {});\n }\n _sendConnect(skipSending) {\n const connectCommand = this._constructConnectCommand();\n const self = this;\n this._call(connectCommand, skipSending).then(resolveCtx => {\n const result = resolveCtx.reply.connect;\n self._connectResponse(result);\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n self._connectError(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n return connectCommand;\n }\n _startReconnecting() {\n this._debug('start reconnecting');\n if (!this._isConnecting()) {\n this._debug('stop reconnecting: client not in connecting state');\n return;\n }\n if (this._reconnecting) {\n this._debug('reconnect already in progress, return from reconnect routine');\n return;\n }\n if (this._transportClosed === false) {\n this._debug('waiting for transport close');\n return;\n }\n this._reconnecting = true;\n const emptyToken = this._token === '';\n const needTokenRefresh = this._refreshRequired || (emptyToken && this._config.getToken !== null);\n if (!needTokenRefresh) {\n if (this._config.getData) {\n this._config.getData().then(data => {\n if (!this._isConnecting()) {\n return;\n }\n this._data = data;\n this._initializeTransport();\n })\n .catch(e => this._handleGetDataError(e));\n }\n else {\n this._initializeTransport();\n }\n return;\n }\n const self = this;\n this._getToken().then(function (token) {\n if (!self._isConnecting()) {\n return;\n }\n if (token == null || token == undefined) {\n self._failUnauthorized();\n return;\n }\n self._token = token;\n self._debug('connection token refreshed');\n if (self._config.getData) {\n self._config.getData().then(function (data) {\n if (!self._isConnecting()) {\n return;\n }\n self._data = data;\n self._initializeTransport();\n })\n .catch(e => self._handleGetDataError(e));\n }\n else {\n self._initializeTransport();\n }\n }).catch(function (e) {\n if (!self._isConnecting()) {\n return;\n }\n if (e instanceof UnauthorizedError) {\n self._failUnauthorized();\n return;\n }\n self.emit('error', {\n 'type': 'connectToken',\n 'error': {\n code: errorCodes.clientConnectToken,\n message: e !== undefined ? e.toString() : ''\n }\n });\n const delay = self._getReconnectDelay();\n self._debug('error on getting connection token, reconnect after ' + delay + ' milliseconds', e);\n self._reconnecting = false;\n self._reconnectTimeout = setTimeout(() => {\n self._startReconnecting();\n }, delay);\n });\n }\n _handleGetDataError(e) {\n if (e instanceof UnauthorizedError) {\n this._failUnauthorized();\n return;\n }\n this.emit('error', {\n type: 'connectData',\n error: {\n code: errorCodes.badConfiguration,\n message: (e === null || e === void 0 ? void 0 : e.toString()) || ''\n }\n });\n const delay = this._getReconnectDelay();\n this._debug('error on getting connect data, reconnect after ' + delay + ' milliseconds', e);\n this._reconnecting = false;\n this._reconnectTimeout = setTimeout(() => {\n this._startReconnecting();\n }, delay);\n }\n _connectError(err) {\n if (this.state !== State.Connecting) {\n return;\n }\n if (err.code === 109) { // token expired.\n // next connect attempt will try to refresh token.\n this._refreshRequired = true;\n }\n if (err.code < 100 || err.temporary === true || err.code === 109) {\n this.emit('error', {\n 'type': 'connect',\n 'error': err\n });\n this._debug('closing transport due to connect error');\n this._disconnect(err.code, err.message, true);\n }\n else {\n this._disconnect(err.code, err.message, false);\n }\n }\n _scheduleReconnect() {\n if (!this._isConnecting()) {\n return;\n }\n let isInitialHandshake = false;\n if (this._emulation && !this._transportWasOpen && !this._triedAllTransports) {\n isInitialHandshake = true;\n }\n let delay = this._getReconnectDelay();\n if (isInitialHandshake) {\n delay = 0;\n }\n this._debug('reconnect after ' + delay + ' milliseconds');\n this._clearReconnectTimeout();\n this._reconnectTimeout = setTimeout(() => {\n this._startReconnecting();\n }, delay);\n }\n _constructConnectCommand() {\n const req = {};\n if (this._token) {\n req.token = this._token;\n }\n if (this._data) {\n req.data = this._data;\n }\n if (this._config.name) {\n req.name = this._config.name;\n }\n if (this._config.version) {\n req.version = this._config.version;\n }\n if (Object.keys(this._config.headers).length > 0) {\n req.headers = this._config.headers;\n }\n const subs = {};\n let hasSubs = false;\n for (const channel in this._serverSubs) {\n if (this._serverSubs.hasOwnProperty(channel) && this._serverSubs[channel].recoverable) {\n hasSubs = true;\n const sub = {\n 'recover': true\n };\n if (this._serverSubs[channel].offset) {\n sub['offset'] = this._serverSubs[channel].offset;\n }\n if (this._serverSubs[channel].epoch) {\n sub['epoch'] = this._serverSubs[channel].epoch;\n }\n subs[channel] = sub;\n }\n }\n if (hasSubs) {\n req.subs = subs;\n }\n return {\n connect: req\n };\n }\n _getHistoryRequest(channel, options) {\n const req = {\n channel: channel\n };\n if (options !== undefined) {\n if (options.since) {\n req.since = {\n offset: options.since.offset\n };\n if (options.since.epoch) {\n req.since.epoch = options.since.epoch;\n }\n }\n if (options.limit !== undefined) {\n req.limit = options.limit;\n }\n if (options.reverse === true) {\n req.reverse = true;\n }\n }\n return req;\n }\n _methodCall() {\n if (this._isConnected()) {\n return Promise.resolve();\n }\n return new Promise((res, rej) => {\n const timeout = setTimeout(function () {\n rej({ code: errorCodes.timeout, message: 'timeout' });\n }, this._config.timeout);\n this._promises[this._nextPromiseId()] = {\n timeout: timeout,\n resolve: res,\n reject: rej\n };\n });\n }\n _callPromise(cmd, resultCB) {\n return new Promise((resolve, reject) => {\n this._call(cmd, false).then((resolveCtx) => {\n var _a;\n const result = resultCB(resolveCtx.reply);\n resolve(result);\n (_a = resolveCtx.next) === null || _a === void 0 ? void 0 : _a.call(resolveCtx);\n }, (rejectCtx) => {\n var _a;\n reject(rejectCtx.error);\n (_a = rejectCtx.next) === null || _a === void 0 ? void 0 : _a.call(rejectCtx);\n });\n });\n }\n _dataReceived(data) {\n if (this._serverPing > 0) {\n this._waitServerPing();\n }\n const replies = this._codec.decodeReplies(data);\n // We have to guarantee order of events in replies processing - i.e. start processing\n // next reply only when we finished processing of current one. Without syncing things in\n // this way we could get wrong publication events order as reply promises resolve\n // on next loop tick so for loop continues before we finished emitting all reply events.\n this._dispatchPromise = this._dispatchPromise.then(() => {\n let finishDispatch;\n this._dispatchPromise = new Promise(resolve => {\n finishDispatch = resolve;\n });\n this._dispatchSynchronized(replies, finishDispatch);\n });\n }\n _dispatchSynchronized(replies, finishDispatch) {\n let p = Promise.resolve();\n for (const i in replies) {\n if (replies.hasOwnProperty(i)) {\n p = p.then(() => {\n return this._dispatchReply(replies[i]);\n });\n }\n }\n p = p.then(() => {\n finishDispatch();\n });\n }\n _dispatchReply(reply) {\n let next;\n const p = new Promise(resolve => {\n next = resolve;\n });\n if (reply === undefined || reply === null) {\n this._debug('dispatch: got undefined or null reply');\n next();\n return p;\n }\n const id = reply.id;\n if (id && id > 0) {\n this._handleReply(reply, next);\n }\n else {\n if (!reply.push) {\n this._handleServerPing(next);\n }\n else {\n this._handlePush(reply.push, next);\n }\n }\n return p;\n }\n _call(cmd, skipSending) {\n return new Promise((resolve, reject) => {\n cmd.id = this._nextCommandId();\n this._registerCall(cmd.id, resolve, reject);\n if (!skipSending) {\n this._addCommand(cmd);\n }\n });\n }\n _startConnecting() {\n this._debug('start connecting');\n if (this._setState(State.Connecting)) {\n this.emit('connecting', { code: connectingCodes.connectCalled, reason: 'connect called' });\n }\n this._client = null;\n this._startReconnecting();\n }\n _disconnect(code, reason, reconnect) {\n if (this._isDisconnected()) {\n return;\n }\n // we mark transport is closed right away, because _clearConnectedState will move subscriptions to subscribing state\n // if transport will still be open at this time, subscribe frames will be sent to closing transport\n this._transportIsOpen = false;\n const previousState = this.state;\n this._reconnecting = false;\n const ctx = {\n code: code,\n reason: reason\n };\n let needEvent = false;\n if (reconnect) {\n needEvent = this._setState(State.Connecting);\n }\n else {\n needEvent = this._setState(State.Disconnected);\n this._rejectPromises({ code: errorCodes.clientDisconnected, message: 'disconnected' });\n }\n this._clearOutgoingRequests();\n if (previousState === State.Connecting) {\n this._clearReconnectTimeout();\n }\n if (previousState === State.Connected) {\n this._clearConnectedState();\n }\n if (needEvent) {\n if (this._isConnecting()) {\n this.emit('connecting', ctx);\n }\n else {\n this.emit('disconnected', ctx);\n }\n }\n if (this._transport) {\n this._debug(\"closing existing transport\");\n const transport = this._transport;\n this._transport = null;\n transport.close(); // Close only after setting this._transport to null to avoid recursion when calling transport close().\n // Need to mark as closed here, because connect call may be sync called after disconnect,\n // transport onClose callback will not be called yet\n this._transportClosed = true;\n this._nextTransportId();\n }\n else {\n this._debug(\"no transport to close\");\n }\n this._scheduleReconnect();\n }\n _failUnauthorized() {\n this._disconnect(disconnectedCodes.unauthorized, 'unauthorized', false);\n }\n _getToken() {\n this._debug('get connection token');\n if (!this._config.getToken) {\n this.emit('error', {\n type: 'configuration',\n error: {\n code: errorCodes.badConfiguration,\n message: 'token expired but no getToken function set in the configuration'\n }\n });\n return Promise.reject(new UnauthorizedError(''));\n }\n return this._config.getToken({});\n }\n _refresh() {\n const clientId = this._client;\n const self = this;\n this._getToken().then(function (token) {\n if (clientId !== self._client) {\n return;\n }\n if (!token) {\n self._failUnauthorized();\n return;\n }\n self._token = token;\n self._debug('connection token refreshed');\n if (!self._isConnected()) {\n return;\n }\n const cmd = {\n refresh: { token: self._token }\n };\n self._call(cmd, false).then(resolveCtx => {\n const result = resolveCtx.reply.refresh;\n self._refreshResponse(result);\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n self._refreshError(rejectCtx.error);\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n });\n }).catch(function (e) {\n if (!self._isConnected()) {\n return;\n }\n if (e instanceof UnauthorizedError) {\n self._failUnauthorized();\n return;\n }\n self.emit('error', {\n type: 'refreshToken',\n error: {\n code: errorCodes.clientRefreshToken,\n message: e !== undefined ? e.toString() : ''\n }\n });\n self._refreshTimeout = setTimeout(() => self._refresh(), self._getRefreshRetryDelay());\n });\n }\n _refreshError(err) {\n if (err.code < 100 || err.temporary === true) {\n this.emit('error', {\n type: 'refresh',\n error: err\n });\n this._refreshTimeout = setTimeout(() => this._refresh(), this._getRefreshRetryDelay());\n }\n else {\n this._disconnect(err.code, err.message, false);\n }\n }\n _getRefreshRetryDelay() {\n return backoff(0, 5000, 10000);\n }\n _refreshResponse(result) {\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n if (result.expires) {\n this._client = result.client;\n this._refreshTimeout = setTimeout(() => this._refresh(), ttlMilliseconds(result.ttl));\n }\n }\n _removeSubscription(sub) {\n if (sub === null) {\n return;\n }\n delete this._subs[sub.channel];\n }\n _unsubscribe(sub) {\n if (!this._transportIsOpen) {\n return Promise.resolve();\n }\n const req = {\n channel: sub.channel\n };\n const cmd = { unsubscribe: req };\n const self = this;\n const unsubscribePromise = new Promise((resolve, _) => {\n this._call(cmd, false).then(resolveCtx => {\n resolve();\n if (resolveCtx.next) {\n resolveCtx.next();\n }\n }, rejectCtx => {\n resolve();\n if (rejectCtx.next) {\n rejectCtx.next();\n }\n self._disconnect(connectingCodes.unsubscribeError, 'unsubscribe error', true);\n });\n });\n return unsubscribePromise;\n }\n _getSub(channel, id) {\n if (id && id > 0) {\n for (const ch in this._subs) {\n if (this._subs.hasOwnProperty(ch)) {\n const sub = this._subs[ch];\n // @ts-ignore – we are accessing private property for internal use\n if (sub._id === id) {\n return sub;\n }\n }\n }\n return null;\n }\n const sub = this._subs[channel];\n if (!sub) {\n return null;\n }\n return sub;\n }\n _isServerSub(channel) {\n return this._serverSubs[channel] !== undefined;\n }\n _sendSubscribeCommands() {\n const commands = [];\n for (const channel in this._subs) {\n if (!this._subs.hasOwnProperty(channel)) {\n continue;\n }\n const sub = this._subs[channel];\n // @ts-ignore – we are hiding some symbols from public API autocompletion.\n if (sub._inflight === true) {\n continue;\n }\n if (sub.state === SubscriptionState.Subscribing) {\n // @ts-ignore – we are hiding some symbols from public API autocompletion.\n const cmd = sub._subscribe();\n if (cmd) {\n commands.push(cmd);\n }\n }\n }\n return commands;\n }\n _connectResponse(result) {\n this._transportIsOpen = true;\n this._transportWasOpen = true;\n this._reconnectAttempts = 0;\n this._refreshRequired = false;\n if (this._isConnected()) {\n return;\n }\n this._client = result.client;\n this._setState(State.Connected);\n if (this._refreshTimeout) {\n clearTimeout(this._refreshTimeout);\n }\n if (result.expires) {\n this._refreshTimeout = setTimeout(() => this._refresh(), ttlMilliseconds(result.ttl));\n }\n this._session = result.session;\n this._node = result.node;\n this.startBatching();\n this._sendSubscribeCommands();\n this.stopBatching();\n const ctx = {\n client: result.client,\n transport: this._transport.subName()\n };\n if (result.data) {\n ctx.data = result.data;\n }\n this.emit('connected', ctx);\n this._resolvePromises();\n this._processServerSubs(result.subs || {});\n if (result.ping && result.ping > 0) {\n this._serverPing = result.ping * 1000;\n this._sendPong = result.pong === true;\n this._waitServerPing();\n }\n else {\n this._serverPing = 0;\n }\n }\n _processServerSubs(subs) {\n for (const channel in subs) {\n if (!subs.hasOwnProperty(channel)) {\n continue;\n }\n const sub = subs[channel];\n this._serverSubs[channel] = {\n 'offset': sub.offset,\n 'epoch': sub.epoch,\n 'recoverable': sub.recoverable || false\n };\n const subCtx = this._getSubscribeContext(channel, sub);\n this.emit('subscribed', subCtx);\n }\n for (const channel in subs) {\n if (!subs.hasOwnProperty(channel)) {\n continue;\n }\n const sub = subs[channel];\n if (sub.recovered) {\n const pubs = sub.publications;\n if (pubs && pubs.length > 0) {\n for (const i in pubs) {\n if (pubs.hasOwnProperty(i)) {\n this._handlePublication(channel, pubs[i]);\n }\n }\n }\n }\n }\n for (const channel in this._serverSubs) {\n if (!this._serverSubs.hasOwnProperty(channel)) {\n continue;\n }\n if (!subs[channel]) {\n this.emit('unsubscribed', { channel: channel });\n delete this._serverSubs[channel];\n }\n }\n }\n _clearRefreshTimeout() {\n if (this._refreshTimeout !== null) {\n clearTimeout(this._refreshTimeout);\n this._refreshTimeout = null;\n }\n }\n _clearReconnectTimeout() {\n if (this._reconnectTimeout !== null) {\n clearTimeout(this._reconnectTimeout);\n this._reconnectTimeout = null;\n }\n }\n _clearServerPingTimeout() {\n if (this._serverPingTimeout !== null) {\n clearTimeout(this._serverPingTimeout);\n this._serverPingTimeout = null;\n }\n }\n _waitServerPing() {\n if (this._config.maxServerPingDelay === 0) {\n return;\n }\n if (!this._isConnected()) {\n return;\n }\n this._clearServerPingTimeout();\n this._serverPingTimeout = setTimeout(() => {\n if (!this._isConnected()) {\n return;\n }\n this._disconnect(connectingCodes.noPing, 'no ping', true);\n }, this._serverPing + this._config.maxServerPingDelay);\n }\n _getSubscribeContext(channel, result) {\n const ctx = {\n channel: channel,\n positioned: false,\n recoverable: false,\n wasRecovering: false,\n recovered: false,\n hasRecoveredPublications: false,\n };\n if (result.recovered) {\n ctx.recovered = true;\n }\n if (result.positioned) {\n ctx.positioned = true;\n }\n if (result.recoverable) {\n ctx.recoverable = true;\n }\n if (result.was_recovering) {\n ctx.wasRecovering = true;\n }\n let epoch = '';\n if ('epoch' in result) {\n epoch = result.epoch;\n }\n let offset = 0;\n if ('offset' in result) {\n offset = result.offset;\n }\n if (ctx.positioned || ctx.recoverable) {\n ctx.streamPosition = {\n 'offset': offset,\n 'epoch': epoch\n };\n }\n if (Array.isArray(result.publications) && result.publications.length > 0) {\n ctx.hasRecoveredPublications = true;\n }\n if (result.data) {\n ctx.data = result.data;\n }\n return ctx;\n }\n _handleReply(reply, next) {\n const id = reply.id;\n if (!(id in this._callbacks)) {\n next();\n return;\n }\n const callbacks = this._callbacks[id];\n clearTimeout(this._callbacks[id].timeout);\n delete this._callbacks[id];\n if (!errorExists(reply)) {\n const callback = callbacks.callback;\n if (!callback) {\n return;\n }\n callback({ reply, next });\n }\n else {\n const errback = callbacks.errback;\n if (!errback) {\n next();\n return;\n }\n const error = { code: reply.error.code, message: reply.error.message || '', temporary: reply.error.temporary || false };\n errback({ error, next });\n }\n }\n _handleJoin(channel, join, id) {\n const sub = this._getSub(channel, id);\n if (!sub && channel) {\n if (this._isServerSub(channel)) {\n const ctx = { channel: channel, info: this._getJoinLeaveContext(join.info) };\n this.emit('join', ctx);\n }\n return;\n }\n // @ts-ignore – we are hiding some symbols from public API autocompletion.\n sub._handleJoin(join);\n }\n _handleLeave(channel, leave, id) {\n const sub = this._getSub(channel, id);\n if (!sub && channel) {\n if (this._isServerSub(channel)) {\n const ctx = { channel: channel, info: this._getJoinLeaveContext(leave.info) };\n this.emit('leave', ctx);\n }\n return;\n }\n // @ts-ignore – we are hiding some symbols from public API autocompletion.\n sub._handleLeave(leave);\n }\n _handleUnsubscribe(channel, unsubscribe) {\n const sub = this._getSub(channel, 0);\n if (!sub && channel) {\n if (this._isServerSub(channel)) {\n delete this._serverSubs[channel];\n this.emit('unsubscribed', { channel: channel });\n }\n return;\n }\n if (unsubscribe.code < 2500) {\n // @ts-ignore – we are hiding some symbols from public API autocompletion.\n sub._setUnsubscribed(unsubscribe.code, unsubscribe.reason, false);\n }\n else {\n // @ts-ignore – we are hiding some symbols from public API autocompletion.\n sub._setSubscribing(unsubscribe.code, unsubscribe.reason);\n }\n }\n _handleSubscribe(channel, sub) {\n this._serverSubs[channel] = {\n 'offset': sub.offset,\n 'epoch': sub.epoch,\n 'recoverable': sub.recoverable || false\n };\n this.emit('subscribed', this._getSubscribeContext(channel, sub));\n }\n _handleDisconnect(disconnect) {\n const code = disconnect.code;\n let reconnect = true;\n if ((code >= 3500 && code < 4000) || (code >= 4500 && code < 5000)) {\n reconnect = false;\n }\n this._disconnect(code, disconnect.reason, reconnect);\n }\n _getPublicationContext(channel, pub) {\n const ctx = {\n channel: channel,\n data: pub.data\n };\n if (pub.offset) {\n ctx.offset = pub.offset;\n }\n if (pub.info) {\n ctx.info = this._getJoinLeaveContext(pub.info);\n }\n if (pub.tags) {\n ctx.tags = pub.tags;\n }\n return ctx;\n }\n _getJoinLeaveContext(clientInfo) {\n const info = {\n client: clientInfo.client,\n user: clientInfo.user\n };\n const connInfo = clientInfo['conn_info'];\n if (connInfo) {\n info.connInfo = connInfo;\n }\n const chanInfo = clientInfo['chan_info'];\n if (chanInfo) {\n info.chanInfo = chanInfo;\n }\n return info;\n }\n _handlePublication(channel, pub, id) {\n const sub = this._getSub(channel, id);\n if (!sub && channel) {\n if (this._isServerSub(channel)) {\n const ctx = this._getPublicationContext(channel, pub);\n this.emit('publication', ctx);\n if (pub.offset !== undefined) {\n this._serverSubs[channel].offset = pub.offset;\n }\n }\n return;\n }\n // @ts-ignore – we are hiding some symbols from public API autocompletion.\n sub._handlePublication(pub);\n }\n _handleMessage(message) {\n this.emit('message', { data: message.data });\n }\n _handleServerPing(next) {\n if (this._sendPong) {\n const cmd = {};\n this._transportSendCommands([cmd]);\n }\n next();\n }\n _handlePush(data, next) {\n const channel = data.channel;\n const id = data.id;\n if (data.pub) {\n this._handlePublication(channel, data.pub, id);\n }\n else if (data.message) {\n this._handleMessage(data.message);\n }\n else if (data.join) {\n this._handleJoin(channel, data.join, id);\n }\n else if (data.leave) {\n this._handleLeave(channel, data.leave, id);\n }\n else if (data.unsubscribe) {\n this._handleUnsubscribe(channel, data.unsubscribe);\n }\n else if (data.subscribe) {\n this._handleSubscribe(channel, data.subscribe);\n }\n else if (data.disconnect) {\n this._handleDisconnect(data.disconnect);\n }\n next();\n }\n _flush() {\n const commands = this._commands.slice(0);\n this._commands = [];\n this._transportSendCommands(commands);\n }\n _createErrorObject(code, message, temporary) {\n const errObject = {\n code: code,\n message: message\n };\n if (temporary) {\n errObject.temporary = true;\n }\n return errObject;\n }\n _registerCall(id, callback, errback) {\n this._callbacks[id] = {\n callback: callback,\n errback: errback,\n timeout: null\n };\n this._callbacks[id].timeout = setTimeout(() => {\n delete this._callbacks[id];\n if (isFunction(errback)) {\n errback({ error: this._createErrorObject(errorCodes.timeout, 'timeout') });\n }\n }, this._config.timeout);\n }\n _addCommand(command) {\n if (this._batching) {\n this._commands.push(command);\n }\n else {\n this._transportSendCommands([command]);\n }\n }\n _nextPromiseId() {\n return ++this._promiseId;\n }\n _nextTransportId() {\n return ++this._transportId;\n }\n _resolvePromises() {\n for (const id in this._promises) {\n if (!this._promises.hasOwnProperty(id)) {\n continue;\n }\n if (this._promises[id].timeout) {\n clearTimeout(this._promises[id].timeout);\n }\n this._promises[id].resolve();\n delete this._promises[id];\n }\n }\n _rejectPromises(err) {\n for (const id in this._promises) {\n if (!this._promises.hasOwnProperty(id)) {\n continue;\n }\n if (this._promises[id].timeout) {\n clearTimeout(this._promises[id].timeout);\n }\n this._promises[id].reject(err);\n delete this._promises[id];\n }\n }\n}\nCentrifuge.SubscriptionState = SubscriptionState;\nCentrifuge.State = State;\nCentrifuge.UnauthorizedError = UnauthorizedError;\n\nexport { Centrifuge, State, Subscription, SubscriptionState, UnauthorizedError, connectingCodes, disconnectedCodes, errorCodes, subscribingCodes, subscriptionFlags, unsubscribedCodes };\n"],"names":["uuid","validate","TypeError","v","Uint8Array","of","parseInt","slice","_state","v1Bytes","rnds","msecs","nsecs","clockseq","node","buf","offset","arguments","length","undefined","Error","RangeError","concat","Date","now","tl","tmh","n","options","_options$_v","_options","bytes","isV6","_v6","optionsKeys","Object","keys","_ref","_options$random","_options$rng","_options2","random","rng","call","state","_state$msecs","_state$nsecs","Infinity","updateV1State","unsafeStringify","v1ToV6","v6Bytes","_v1ToV6","parse","getOutputLength","inputLength8","safeAdd","x","y","lsw","md5cmn","q","a","b","s","t","num","cnt","md5ff","c","d","md5gg","md5hh","md5ii","input","i","uint32ToUint8","len","xpad","Uint32Array","fill","set","olda","oldb","oldc","oldd","wordsToMd5","output","uint8ToUint32","DNS","URL","v35","version","hash","value","namespace","_namespace","valueBytes","str","unescape","encodeURIComponent","charCodeAt","stringToBytes","namespaceBytes","v3","md5","f","z","ROTL","K","H","newBytes","l","N","Math","ceil","M","Array","arr","j","pow","floor","W","e","T","v5","sha1","v1","_objectSpread","v6ToV1","_v6ToV1","v7Bytes","seq","_state$seq","updateV7State","E_TIMEOUT","E_ALREADY_LOCKED","E_CANCELED","__awaiter$2","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","apply","Semaphore","constructor","_value","_cancelError","this","_queue","_weightedWaiters","acquire","weight","priority","task","findIndexFromEnd","other","_dispatchItem","splice","runExclusive","callback_1","callback","_this","release","waitForUnlock","_couldLockImmediately","insertSorted","isLocked","getValue","setValue","_dispatchQueue","cancel","forEach","entry","_drainUnlockWaiters","shift","item","previousValue","_newReleaser","called","waiters","waiter","queuedPriority","findIndex","predicate","__awaiter$1","Mutex","cancelError","_semaphore","_this2","releaser","__awaiter","withTimeout","sync","timeout","timeoutError","weightOrPriority","isSemaphore","isTimeout","handle","setTimeout","ticket","isArray","clearTimeout","tryAcquire","_optionalChain","ops","lastAccessLHS","op","fn","_len","args","_key","_class","_class2","_class3","_class4","_class5","defineProperty","exports","obj","_eventemitter3","require","_eventemitter32","__esModule","default","ClientState","ClientState2","ErrorCode","ErrorCode2","ProtocolError","code","message","super","name","SessionError","TransportError","CryptoError","BaseClient","__init","session","__init2","on","event","listener","transport","keymanager","sessionstore","prototype","error","emit","async","_","_2","keyPair","_3","privateKey","checkSessionExpiry","decryptMessage","payload","data","handleMessage","reconnect","resume","sessionId","get","validatePeerKey","theirPublicKey","connect","subscribe","channel","disconnect","clear","delete","id","sendMessage","plaintext","JSON","stringify","encrypted","encrypt","publish","expiresAt","_4","_5","_6","decrypted","decrypt","msg","String","CONNECTION_MODES","_asyncmutex","SessionStore","_SessionStore","__initStatic","SESSION_PREFIX","__initStatic2","MASTER_LIST_KEY","__init3","mutex","create","kvstore","store","garbageCollect","Number","isNaN","publicKeyB64","Buffer","from","publicKey","toString","privateKeyB64","theirPublicKeyB64","key","getSessionKey","addToMasterList","raw","e2","list","ids","getMasterList","sessions","push","removeFromMasterList","all","map","e3","includes","filtered","filter","_centrifuge","delay","ms","SubscriptionProxy","realSub","parent","__init4","hasUnsubscribed","unsubscribe","removeSubscription","history","once","off","SharedCentrifuge","_SharedCentrifuge","__initStatic3","contexts","Map","__init5","channels","Set","__init6","disconnected","__init7","eventListeners","url","opts","has","context2","validateOptions","centrifuge","Centrifuge","refcount","subscriptions","reconnectPromise","context","attachEventListeners","setImmediate","detachEventListeners","decrementChannelRef","ctx","newSubscription","subs","subInfo2","count","sub","add","subInfo","getSubscription","proxiedSubs","real","_7","lhs","_8","_9","rhsFn","size","existingOpts","newOpts","criticalKeys","existing","incoming","console","warn","_uuid","WebSocketTransportStorage","_WebSocketTransportStorage","clientIdKey","getClientIdKey","clientId","v4","getClientId","getNextNonce","getNonceKey","nextNonce","getLatestNonces","getLatestNoncesKey","parsed","entries","setLatestNonces","nonces","fromEntries","nonceKey","latestNoncesKey","WebSocketTransport","_WebSocketTransport","__init8","queue","__init9","isProcessingQueue","__init10","storage","minReconnectDelay","maxReconnectDelay","websocket","useSharedConnection","setState","_processQueue","values","recoverable","positioned","_sub","_fetchHistory","_handleIncomingMessage","subscription","promise","newState","rawData","nonce","latestNonces","latestNonce","limit","pub","publications","_10","_process","attempt","attempts","backoff","retry","DEFAULT_SESSION_TTL","isValidConnectionMode","timingSafeEqual","getDefaultExportFromCjs","hasOwnProperty","SuppressedError","ReflectOwnKeys","events","R","Reflect","ReflectApply","target","receiver","Function","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","EventEmitter","init","emitter","errorListener","err","removeListener","resolver","eventTargetAgnosticAddListener","handler","flags","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","that","_addListener","type","prepend","m","warning","newListener","unshift","warned","w","onceWrapper","fired","wrapFn","_onceWrap","wrapped","bind","_listeners","unwrap","evlistener","ret","unwrapListeners","arrayClone","listenerCount","copy","addEventListener","wrapListener","arg","removeEventListener","enumerable","getPrototypeOf","setMaxListeners","getMaxListeners","doError","er","listeners","addListener","prependListener","prependOnceListener","position","originalListener","index","pop","spliceOne","removeAllListeners","rawListeners","eventNames","errorCodes","connectingCodes","disconnectedCodes","subscribingCodes","unsubscribedCodes","subscriptionFlags","State","SubscriptionState","EventEmitter$1","isFunction","min","max","interval","randomInt","ttlMilliseconds","ttl","Subscription","_resubscribeTimeout","_refreshTimeout","Unsubscribed","_token","_getToken","_data","_getData","_recover","_offset","_epoch","_id","_recoverable","_positioned","_joinLeave","_minResubscribeDelay","_maxResubscribeDelay","_resubscribeAttempts","_promises","_promiseId","_inflight","_delta","_delta_negotiated","_tagsFilter","_prevValue","_unsubPromise","_setOptions","_debugEnabled","_debug","oldState","ready","subscriptionUnsubscribed","Subscribed","res","rej","_nextPromiseId","_isSubscribed","_setSubscribing","subscribeCalled","_setUnsubscribed","unsubscribeCalled","_methodCall","presence","presenceStats","setTagsFilter","tagsFilter","setData","_isUnsubscribed","timeoutDuration","_config","_needRecover","_isSubscribing","Subscribing","_setState","_usesToken","_clearSubscribingState","_clearResubscribeTimeout","_clearSubscribedState","_clearRefreshTimeout","_setSubscribed","epoch","delta","_getSubscribeContext","_resolvePromises","pubs","_handlePublication","expires","_refresh","reason","_transport","emulation","_subscribe","_isTransportOpen","_canSubscribeWithoutGettingToken","_subscribeWithoutToken","_getSubscriptionToken","token","_handleTokenResponse","catch","_handleTokenError","_transportIsOpen","_getDataAndSubscribe","_sendSubscribe","_handleGetDataError","UnauthorizedError","_failUnauthorized","badConfiguration","_scheduleResubscribe","subscriptionSubscribeToken","cmd","_buildSubscribeCommand","_call","resolveCtx","reply","_handleSubscribeResponse","rejectCtx","_handleSubscribeError","req","join_leave","flag","channelCompaction","recover","_getOffset","_getEpoch","tf","_subscribeError","_disconnect","subscribeTimeout","sendUnsubscribe","_unsubscribe","_rejectPromises","newData","newPrevValue","_codec","applyDeltaIfNeeded","_getPublicationContext","_handleJoin","join","info","_getJoinLeaveContext","_handleLeave","leave","self","_getResubscribeDelay","temporary","errContext","Connected","since","getData","minResubscribeDelay","maxResubscribeDelay","getToken","joinLeave","sub_refresh","_refreshResponse","_refreshError","subscriptionRefreshToken","_getRefreshRetryDelay","unauthorized","SockjsTransport","endpoint","subName","supported","sockjs","initialize","_protocol","callbacks","sockjsOptions","onopen","onOpen","onerror","onError","onclose","closeEvent","onClose","onmessage","onMessage","close","send","WebsocketTransport","protocol","subProtocol","binaryType","HttpStreamTransport","_abortController","_utf8decoder","TextDecoder","_handleErrors","response","ok","status","_fetchEventTarget","eventTarget","EventTarget","fetchFunc","fetch","dispatchEvent","Event","jsonStreamBuf","jsonStreamPos","protoStreamBuf","reader","body","getReader","readableStream","start","controller","pump","read","decode","line","substring","MessageEvent","mergedArray","decoder","decodeReply","pos","detail","AbortController","initialData","headers","fetchOptions","method","mode","credentials","signal","abort","encoder","encodeEmulationRequest","emulationEndpoint","SseTransport","_onClose","eventsource","globalThis","document","baseURI","searchParams","append","eventSource","WebtransportTransport","_stream","_writer","webtransport","closed","_a","stream","createBidirectionalStream","_b","writable","getWriter","_startReading","readable","binary","TextEncoder","encode","write","zValue","Reader","array","haveBytes","getByte","getChar","fromCharCode","getInt","Writer","toByteArray","sourceType","putArray","end","checksum","sum0","sum1","sum2","sum3","JsonCodec","encodeCommands","commands","decodeReplies","trim","split","r","prevValue","valueArray","source","total","zDelta","lenSrc","lenDelta","zOut","ofst","out","applyDelta","defaults","debug","maxServerPingDelay","networkEventTarget","_reconnectTimeout","_serverPingTimeout","Disconnected","_endpoint","_emulation","_transports","_currentTransportIndex","_triedAllTransports","_transportWasOpen","_transportId","_deviceWentOffline","_transportClosed","_reconnecting","_reconnectAttempts","_client","_session","_node","_subs","_serverSubs","_commandId","_commands","_batching","_refreshRequired","_callbacks","_dispatchPromise","_serverPing","_sendPong","_networkEventsSet","assign","_configure","_getSub","_removeSubscription","clientDisconnected","_isConnected","_isConnecting","_startConnecting","disconnectCalled","setToken","setHeaders","_transportSendCommands","_createErrorObject","transportWriteError","rpc","_callPromise","_getHistoryRequest","clients","rawClient","connInfo","chanInfo","presence_stats","numUsers","num_users","numClients","num_clients","startBatching","stopBatching","_flush","level","logger","log","_codecName","_formatOverride","localStorage","getItem","transportConfig","transportName","indexOf","_isDisconnected","Connecting","_nextCommandId","_setNetworkEvents","transportClosed","_clearReconnectTimeout","_startReconnecting","_getReconnectDelay","_clearOutgoingRequests","errback","connectionClosed","_clearConnectedState","_clearServerPingTimeout","_handleWriteError","command","_initializeTransport","WebSocket","SockJS","EventSource","ReadableStream","transportEndpoint","WebTransport","prefix","lastIndexOf","transportId","_nextTransportId","wasOpen","initialCommands","connectCommand","_sendConnect","connectTimeout","_sendSubscribeCommands","needReconnect","advice","messageSizeLimit","_dataReceived","skipSending","_constructConnectCommand","_connectResponse","_connectError","emptyToken","clientConnectToken","_scheduleReconnect","isInitialHandshake","hasSubs","reverse","resultCB","_waitServerPing","replies","finishDispatch","_dispatchSynchronized","p","_dispatchReply","_handleReply","_handlePush","_handleServerPing","_registerCall","_addCommand","connectCalled","previousState","needEvent","refresh","clientRefreshToken","client","unsubscribeError","ch","_isServerSub","_processServerSubs","ping","pong","subCtx","recovered","noPing","wasRecovering","hasRecoveredPublications","was_recovering","streamPosition","_handleUnsubscribe","_handleSubscribe","_handleDisconnect","tags","clientInfo","user","_handleMessage","errObject"],"sourceRoot":""}