@bounded-sh/core 0.0.49 → 0.0.51

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.
Files changed (24) hide show
  1. package/dist/{index-D6xrWKP7.js → index-BaSw33ec.js} +131 -19
  2. package/dist/index-BaSw33ec.js.map +1 -0
  3. package/dist/{index-CXyMnWgK.mjs → index-DpfaeNTQ.mjs} +130 -20
  4. package/dist/index-DpfaeNTQ.mjs.map +1 -0
  5. package/dist/index.d.ts +2 -0
  6. package/dist/index.js +3 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/index.mjs +1 -1
  9. package/dist/{realtime-store-Djb_Dm-M.mjs → realtime-store-CBdRkQfZ.mjs} +2 -2
  10. package/dist/{realtime-store-Djb_Dm-M.mjs.map → realtime-store-CBdRkQfZ.mjs.map} +1 -1
  11. package/dist/{realtime-store-HkfnxBu3.js → realtime-store-PVPxsvPr.js} +2 -2
  12. package/dist/{realtime-store-HkfnxBu3.js.map → realtime-store-PVPxsvPr.js.map} +1 -1
  13. package/dist/{solana-message-CTUg0Tqd.js → solana-message-BVJWVB6C.js} +2 -2
  14. package/dist/{solana-message-CTUg0Tqd.js.map → solana-message-BVJWVB6C.js.map} +1 -1
  15. package/dist/{solana-message-l5OZo1j2.mjs → solana-message-kTeT43eQ.mjs} +2 -2
  16. package/dist/{solana-message-l5OZo1j2.mjs.map → solana-message-kTeT43eQ.mjs.map} +1 -1
  17. package/dist/{solana-operations-TSE5Tbgo.mjs → solana-operations-B8UyHL26.mjs} +2 -2
  18. package/dist/{solana-operations-TSE5Tbgo.mjs.map → solana-operations-B8UyHL26.mjs.map} +1 -1
  19. package/dist/{solana-operations-CSh2uF_0.js → solana-operations-bXuuPlov.js} +2 -2
  20. package/dist/{solana-operations-CSh2uF_0.js.map → solana-operations-bXuuPlov.js.map} +1 -1
  21. package/dist/utils/api.d.ts +12 -0
  22. package/package.json +2 -2
  23. package/dist/index-CXyMnWgK.mjs.map +0 -1
  24. package/dist/index-D6xrWKP7.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DpfaeNTQ.mjs","sources":["../.rollup-tmp/client/config.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/buffer/index.js","../node_modules/is-retry-allowed/index.js","../node_modules/axios-retry/dist/esm/index.js","../.rollup-tmp/utils/auth-api.js","../.rollup-tmp/utils/web-session-manager.js","../.rollup-tmp/utils/rn-session-manager.js","../.rollup-tmp/utils/session-manager.js","../.rollup-tmp/utils/server-session-manager.js","../.rollup-tmp/utils/core-platform.js","../.rollup-tmp/utils/evm/evm-utils.js","../.rollup-tmp/utils/utils.js","../.rollup-tmp/client/decline.js","../.rollup-tmp/utils/api.js","../.rollup-tmp/utils/evm/evm-transaction-validation.js","../.rollup-tmp/client/operations.js","../.rollup-tmp/client/subscription-v2.js","../.rollup-tmp/client/subscription.js","../.rollup-tmp/client/field-values.js","../.rollup-tmp/time.js","../.rollup-tmp/utils/sol/sol-accessors.js","../.rollup-tmp/client/functions.js","../.rollup-tmp/client/live.js","../.rollup-tmp/client/live-effects.js"],"sourcesContent":["export let clientConfig = {\n // User configured settings\n name: '',\n logoUrl: '',\n // Bounded production is the endpoint default. Apps still choose one explicit\n // auth method at init time. Pass `network: 'bounded-staging'` to target staging.\n network: 'bounded-production',\n wsApiUrl: 'wss://realtime.bounded.sh',\n apiUrl: 'https://realtime.bounded.sh',\n authApiUrl: 'https://wallet-auth.bounded.sh',\n humanAuthApiUrl: 'https://auth.bounded.sh',\n functionsUrl: 'https://functions.bounded.sh',\n devApiUrl: 'https://dev-api.bounded.sh',\n appId: '',\n // No hidden modal fallback: browser clients start hosted Bounded Auth with\n // loginWithRedirect/loginWithPopup. For crypto/onchain wallet login use\n // authMethod:'phantom' (Solana / Phantom), and use signInAnonymously() for\n // zero-friction guest accounts. ('wallet' is an unimplemented stub; don't use.)\n authMethod: 'none',\n chain: '',\n rpcUrl: '',\n skipBackendInit: true,\n authProvider: null,\n isServer: false,\n};\nlet isInitialized = false;\n// Callers awaiting getConfig() before init() completes. Resolved synchronously\n// by init() — the previous 50ms setInterval poll added up to 50ms of latency\n// to the first SDK operation after init for no reason.\nlet initWaiters = [];\nexport const BOUNDED_NETWORKS = {\n 'bounded-staging': {\n wsApiUrl: 'wss://realtime-staging.bounded.sh',\n apiUrl: 'https://realtime-staging.bounded.sh',\n authApiUrl: 'https://wallet-auth-staging.bounded.sh',\n humanAuthApiUrl: 'https://auth-staging.bounded.sh',\n functionsUrl: 'https://functions-staging.bounded.sh',\n devApiUrl: 'https://dev-api-staging.bounded.sh',\n },\n 'bounded-production': {\n // All on bounded.sh custom domains. authApiUrl = WALLET/SIWS issuer\n // (wallet + guest providers); humanAuthApiUrl = human email-OTP issuer\n // (the 'email' provider). realtime.bounded.sh fronts the realtime worker.\n wsApiUrl: 'wss://realtime.bounded.sh',\n apiUrl: 'https://realtime.bounded.sh',\n authApiUrl: 'https://wallet-auth.bounded.sh',\n humanAuthApiUrl: 'https://auth.bounded.sh',\n functionsUrl: 'https://functions.bounded.sh',\n devApiUrl: 'https://dev-api.bounded.sh',\n },\n};\n// `network: 'bounded'` is an alias for the current GA target.\nBOUNDED_NETWORKS['bounded'] = BOUNDED_NETWORKS['bounded-production'];\n/**\n * The hosted `/.well-known/bounded-webhook-keys.json` URL for the configured\n * Bounded network, or `undefined` when no Bounded network is set. Used by\n * `verifyWebhook` so a staging receiver that did `init({ network:\n * 'bounded-staging' })` verifies against the STAGING signing keys instead of\n * the production default. Synchronous and non-blocking on purpose: a pure\n * webhook receiver may never call `init()`, so we read the already-applied\n * config rather than awaiting `getConfig()` (which blocks on initialization).\n * Returns `undefined` when the network is unknown so the caller keeps its\n * fail-closed production default (audit SDK LOW-7).\n */\nexport function getWebhookKeysUrl() {\n const net = clientConfig.network;\n const preset = net ? BOUNDED_NETWORKS[net] : undefined;\n const host = preset === null || preset === void 0 ? void 0 : preset.apiUrl;\n if (!host)\n return undefined;\n return host.replace(/\\/$/, '') + '/.well-known/bounded-webhook-keys.json';\n}\n/**\n * True when init() configured a Bounded network (the Cloudflare-native stack).\n * Synchronous + non-blocking. Used to route reads/writes that behave differently\n * on Bounded vs the legacy backend (e.g. `count`/`aggregate`, which on\n * Bounded must use the deterministic server aggregation, not the legacy AI query).\n */\nexport function isBoundedNetwork() {\n const net = clientConfig.network;\n return typeof net === 'string' && net in BOUNDED_NETWORKS;\n}\nexport function init(newConfig) {\n return new Promise((resolve, reject) => {\n if (!newConfig.appId) {\n reject(new Error('No app ID provided.'));\n return;\n }\n // Bounded is client-driven: defaults are Bounded production, `network`\n // switches the whole endpoint set (e.g. 'bounded-staging'), and anything\n // passed explicitly wins. No `/config` round-trip; browser SDKs still pass\n // one explicit authMethod so there is no hidden auth-provider fallback.\n // defaults (bounded-production) < network preset < explicit newConfig\n if (newConfig.network !== undefined && !(newConfig.network in BOUNDED_NETWORKS)) {\n reject(new Error(`Unsupported Bounded network \"${String(newConfig.network)}\". Expected bounded, bounded-staging, or bounded-production.`));\n return;\n }\n const preset = newConfig.network ? BOUNDED_NETWORKS[newConfig.network] : {};\n clientConfig = Object.assign(Object.assign(Object.assign({}, clientConfig), preset), newConfig);\n isInitialized = true;\n const waiters = initWaiters;\n initWaiters = [];\n for (const wake of waiters)\n wake();\n resolve();\n });\n}\nfunction waitForInitialization() {\n if (isInitialized)\n return Promise.resolve();\n return new Promise((resolve) => { initWaiters.push(resolve); });\n}\nexport async function getConfig() {\n await waitForInitialization();\n return clientConfig;\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","'use strict';\n\nconst denyList = new Set([\n\t'ENOTFOUND',\n\t'ENETUNREACH',\n\n\t// SSL errors from https://github.com/nodejs/node/blob/fc8e3e2cdc521978351de257030db0076d79e0ab/src/crypto/crypto_common.cc#L301-L328\n\t'UNABLE_TO_GET_ISSUER_CERT',\n\t'UNABLE_TO_GET_CRL',\n\t'UNABLE_TO_DECRYPT_CERT_SIGNATURE',\n\t'UNABLE_TO_DECRYPT_CRL_SIGNATURE',\n\t'UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY',\n\t'CERT_SIGNATURE_FAILURE',\n\t'CRL_SIGNATURE_FAILURE',\n\t'CERT_NOT_YET_VALID',\n\t'CERT_HAS_EXPIRED',\n\t'CRL_NOT_YET_VALID',\n\t'CRL_HAS_EXPIRED',\n\t'ERROR_IN_CERT_NOT_BEFORE_FIELD',\n\t'ERROR_IN_CERT_NOT_AFTER_FIELD',\n\t'ERROR_IN_CRL_LAST_UPDATE_FIELD',\n\t'ERROR_IN_CRL_NEXT_UPDATE_FIELD',\n\t'OUT_OF_MEM',\n\t'DEPTH_ZERO_SELF_SIGNED_CERT',\n\t'SELF_SIGNED_CERT_IN_CHAIN',\n\t'UNABLE_TO_GET_ISSUER_CERT_LOCALLY',\n\t'UNABLE_TO_VERIFY_LEAF_SIGNATURE',\n\t'CERT_CHAIN_TOO_LONG',\n\t'CERT_REVOKED',\n\t'INVALID_CA',\n\t'PATH_LENGTH_EXCEEDED',\n\t'INVALID_PURPOSE',\n\t'CERT_UNTRUSTED',\n\t'CERT_REJECTED',\n\t'HOSTNAME_MISMATCH'\n]);\n\n// TODO: Use `error?.code` when targeting Node.js 14\nmodule.exports = error => !denyList.has(error && error.code);\n","import isRetryAllowed from 'is-retry-allowed';\nexport const namespace = 'axios-retry';\nexport function isNetworkError(error) {\n const CODE_EXCLUDE_LIST = ['ERR_CANCELED', 'ECONNABORTED'];\n if (error.response) {\n return false;\n }\n if (!error.code) {\n return false;\n }\n // Prevents retrying timed out & cancelled requests\n if (CODE_EXCLUDE_LIST.includes(error.code)) {\n return false;\n }\n // Prevents retrying unsafe errors\n return isRetryAllowed(error);\n}\nconst SAFE_HTTP_METHODS = ['get', 'head', 'options'];\nconst IDEMPOTENT_HTTP_METHODS = SAFE_HTTP_METHODS.concat(['put', 'delete']);\nexport function isRetryableError(error) {\n return (error.code !== 'ECONNABORTED' &&\n (!error.response ||\n error.response.status === 429 ||\n (error.response.status >= 500 && error.response.status <= 599)));\n}\nexport function isSafeRequestError(error) {\n if (!error.config?.method) {\n // Cannot determine if the request can be retried\n return false;\n }\n return isRetryableError(error) && SAFE_HTTP_METHODS.indexOf(error.config.method) !== -1;\n}\nexport function isIdempotentRequestError(error) {\n if (!error.config?.method) {\n // Cannot determine if the request can be retried\n return false;\n }\n return isRetryableError(error) && IDEMPOTENT_HTTP_METHODS.indexOf(error.config.method) !== -1;\n}\nexport function isNetworkOrIdempotentRequestError(error) {\n return isNetworkError(error) || isIdempotentRequestError(error);\n}\nexport function retryAfter(error = undefined) {\n const retryAfterHeader = error?.response?.headers['retry-after'];\n if (!retryAfterHeader) {\n return 0;\n }\n // if the retry after header is a number, convert it to milliseconds\n let retryAfterMs = (Number(retryAfterHeader) || 0) * 1000;\n // If the retry after header is a date, get the number of milliseconds until that date\n if (retryAfterMs === 0) {\n retryAfterMs = (new Date(retryAfterHeader).valueOf() || 0) - Date.now();\n }\n return Math.max(0, retryAfterMs);\n}\nfunction noDelay(_retryNumber = 0, error = undefined) {\n return Math.max(0, retryAfter(error));\n}\nexport function exponentialDelay(retryNumber = 0, error = undefined, delayFactor = 100) {\n const calculatedDelay = 2 ** retryNumber * delayFactor;\n const delay = Math.max(calculatedDelay, retryAfter(error));\n const randomSum = delay * 0.2 * Math.random(); // 0-20% of the delay\n return delay + randomSum;\n}\n/**\n * Linear delay\n * @param {number | undefined} delayFactor - delay factor in milliseconds (default: 100)\n * @returns {function} (retryNumber: number, error: AxiosError | undefined) => number\n */\nexport function linearDelay(delayFactor = 100) {\n return (retryNumber = 0, error = undefined) => {\n const delay = retryNumber * delayFactor;\n return Math.max(delay, retryAfter(error));\n };\n}\nexport const DEFAULT_OPTIONS = {\n retries: 3,\n retryCondition: isNetworkOrIdempotentRequestError,\n retryDelay: noDelay,\n shouldResetTimeout: false,\n onRetry: () => { },\n onMaxRetryTimesExceeded: () => { },\n validateResponse: null\n};\nfunction getRequestOptions(config, defaultOptions) {\n return { ...DEFAULT_OPTIONS, ...defaultOptions, ...config[namespace] };\n}\nfunction setCurrentState(config, defaultOptions, resetLastRequestTime = false) {\n const currentState = getRequestOptions(config, defaultOptions || {});\n currentState.retryCount = currentState.retryCount || 0;\n if (!currentState.lastRequestTime || resetLastRequestTime) {\n currentState.lastRequestTime = Date.now();\n }\n config[namespace] = currentState;\n return currentState;\n}\nfunction fixConfig(axiosInstance, config) {\n // @ts-ignore\n if (axiosInstance.defaults.agent === config.agent) {\n // @ts-ignore\n delete config.agent;\n }\n if (axiosInstance.defaults.httpAgent === config.httpAgent) {\n delete config.httpAgent;\n }\n if (axiosInstance.defaults.httpsAgent === config.httpsAgent) {\n delete config.httpsAgent;\n }\n}\nasync function shouldRetry(currentState, error) {\n const { retries, retryCondition } = currentState;\n const shouldRetryOrPromise = (currentState.retryCount || 0) < retries && retryCondition(error);\n // This could be a promise\n if (typeof shouldRetryOrPromise === 'object') {\n try {\n const shouldRetryPromiseResult = await shouldRetryOrPromise;\n // keep return true unless shouldRetryPromiseResult return false for compatibility\n return shouldRetryPromiseResult !== false;\n }\n catch (_err) {\n return false;\n }\n }\n return shouldRetryOrPromise;\n}\nasync function handleRetry(axiosInstance, currentState, error, config) {\n currentState.retryCount += 1;\n const { retryDelay, shouldResetTimeout, onRetry } = currentState;\n const delay = retryDelay(currentState.retryCount, error);\n // Axios fails merging this configuration to the default configuration because it has an issue\n // with circular structures: https://github.com/mzabriskie/axios/issues/370\n fixConfig(axiosInstance, config);\n if (!shouldResetTimeout && config.timeout && currentState.lastRequestTime) {\n const lastRequestDuration = Date.now() - currentState.lastRequestTime;\n const timeout = config.timeout - lastRequestDuration - delay;\n if (timeout <= 0) {\n return Promise.reject(error);\n }\n config.timeout = timeout;\n }\n config.transformRequest = [(data) => data];\n await onRetry(currentState.retryCount, error, config);\n if (config.signal?.aborted) {\n return Promise.resolve(axiosInstance(config));\n }\n return new Promise((resolve) => {\n const abortListener = () => {\n clearTimeout(timeout);\n resolve(axiosInstance(config));\n };\n const timeout = setTimeout(() => {\n resolve(axiosInstance(config));\n if (config.signal?.removeEventListener) {\n config.signal.removeEventListener('abort', abortListener);\n }\n }, delay);\n if (config.signal?.addEventListener) {\n config.signal.addEventListener('abort', abortListener, { once: true });\n }\n });\n}\nasync function handleMaxRetryTimesExceeded(currentState, error) {\n if (currentState.retryCount >= currentState.retries)\n await currentState.onMaxRetryTimesExceeded(error, currentState.retryCount);\n}\nconst axiosRetry = (axiosInstance, defaultOptions) => {\n const requestInterceptorId = axiosInstance.interceptors.request.use((config) => {\n setCurrentState(config, defaultOptions, true);\n if (config[namespace]?.validateResponse) {\n // by setting this, all HTTP responses will be go through the error interceptor first\n config.validateStatus = () => false;\n }\n return config;\n });\n const responseInterceptorId = axiosInstance.interceptors.response.use(null, async (error) => {\n const { config } = error;\n // If we have no information to retry the request\n if (!config) {\n return Promise.reject(error);\n }\n const currentState = setCurrentState(config, defaultOptions);\n if (error.response && currentState.validateResponse?.(error.response)) {\n // no issue with response\n return error.response;\n }\n if (await shouldRetry(currentState, error)) {\n return handleRetry(axiosInstance, currentState, error, config);\n }\n await handleMaxRetryTimesExceeded(currentState, error);\n return Promise.reject(error);\n });\n return { requestInterceptorId, responseInterceptorId };\n};\n// Compatibility with CommonJS\naxiosRetry.isNetworkError = isNetworkError;\naxiosRetry.isSafeRequestError = isSafeRequestError;\naxiosRetry.isIdempotentRequestError = isIdempotentRequestError;\naxiosRetry.isNetworkOrIdempotentRequestError = isNetworkOrIdempotentRequestError;\naxiosRetry.exponentialDelay = exponentialDelay;\naxiosRetry.linearDelay = linearDelay;\naxiosRetry.isRetryableError = isRetryableError;\nexport default axiosRetry;\n","import axios from 'axios';\nimport { getConfig } from '../client/config';\n/**\n * Resolve the refresh/revoke base URL to a CONFIGURED issuer only. The session's\n * `issuer` is persisted in client storage; if that storage is tampered (e.g. XSS)\n * a raw value could redirect the refresh token to an attacker host. So we accept the\n * stored issuer only when it exactly matches a configured allowlisted issuer\n * (authApiUrl / humanAuthApiUrl); otherwise we fall back to authApiUrl. The refresh\n * token is therefore never POSTed anywhere except a Bounded-configured origin.\n */\nfunction resolveIssuerBase(issuer, cfg) {\n const norm = (u) => (u || '').replace(/\\/$/, '');\n const allow = [norm(cfg.authApiUrl), norm(cfg.humanAuthApiUrl)].filter(Boolean);\n const want = norm(issuer);\n if (want && allow.includes(want))\n return want;\n return norm(cfg.authApiUrl);\n}\nlet axiosClient;\nasync function getAxiosAuthClient() {\n if (!axiosClient) {\n const config = await getConfig();\n axiosClient = axios.create({\n baseURL: config.authApiUrl,\n headers: {\n 'Content-Type': 'application/json',\n },\n timeout: 30000, // 30s timeout, matching makeApiRequest\n });\n }\n return axiosClient;\n}\nexport async function genNonce() {\n const client = await getAxiosAuthClient();\n const response = await client.post('/nonce');\n return response.data;\n}\nexport async function genAuthNonce() {\n const client = await getAxiosAuthClient();\n const config = await getConfig();\n const appId = config.appId;\n const response = await client.post('/auth/nonce', {\n appId\n });\n return response.data.nonce;\n}\n// authMethods that the /session issuer treats as a Solana wallet-signature flow.\n// createSessionWithSignature ALWAYS exchanges an Ed25519 signature over the\n// canonical genSolanaMessage prompt (server keypair, Phantom, mobile wallet,\n// guest device key), so the method it reports must be a wallet method — never a\n// human-login method like 'email' (the SDK default). Both issuers reject a\n// signature carrying a non-wallet authMethod: the bounded-auth worker returns\n// 501 (\"email-OTP not yet enabled\") and the legacy session-management server\n// returns 400 (\"EVM/SIWE auth is no longer supported\"). See routes.ts /session.\n// Wallet/signature methods whose authMethod is forwarded verbatim to the /session\n// issuer. 'guest' is included so anonymous (device-keypair) logins arrive as\n// authMethod:\"guest\" — the issuer gates them on the app's anonymous opt-in and\n// stamps an is_anonymous claim. Without this a guest would be indistinguishable\n// from 'phantom' and couldn't be gated or flagged.\nconst SIGNATURE_AUTH_METHODS = new Set(['phantom', 'mobile-wallet-adapter', 'guest']);\n// Maps a client authMethod to the /session issuer's signature discriminator when\n// they differ. EVM WALLET LOGIN (config.authMethod 'evm-wallet') exchanges a SIWE\n// (EIP-4361 personal_sign, secp256k1) signature, which the bounded-auth issuer\n// routes on authMethod:\"siwe\" (index.ts /session → parseSiweMessage/recoverSiweSigner)\n// and mints under custom:evmWalletAddress. The EVM provider also passes 'siwe'\n// explicitly (authMethodOverride), so this map is the belt-and-suspenders path.\nconst SESSION_METHOD_ALIASES = { 'evm-wallet': 'siwe' };\n/**\n * Exchange a wallet signature for a Bounded session at the /session issuer.\n *\n * @param authMethodOverride the exact /session discriminator to send (e.g. 'siwe'\n * for the SIWE/EVM path). When omitted the method is derived from config: an\n * aliased method (evm-wallet → siwe) maps through SESSION_METHOD_ALIASES, a\n * Solana wallet/guest method passes through verbatim, and anything else\n * defaults to the canonical 'phantom' the issuer accepts for a signature.\n */\nexport async function createSessionWithSignature(address, message, signature, authMethodOverride) {\n var _a, _b, _c;\n const client = await getAxiosAuthClient();\n const config = await getConfig();\n const appId = config.appId;\n // Preserve a wallet authMethod when one is configured (so the backend records\n // the real method, e.g. mobile-wallet-adapter); otherwise default to the\n // canonical Solana wallet method 'phantom' that every /session issuer accepts\n // for a signature exchange. This is what makes the server SDK + guest device\n // keypair work under the email-default config.\n const authMethod = (_a = authMethodOverride !== null && authMethodOverride !== void 0 ? authMethodOverride : SESSION_METHOD_ALIASES[config.authMethod]) !== null && _a !== void 0 ? _a : (SIGNATURE_AUTH_METHODS.has(config.authMethod) ? config.authMethod : 'phantom');\n try {\n const response = await client.post('/session', {\n appId,\n address,\n message,\n signature,\n authMethod\n });\n return response.data;\n }\n catch (err) {\n // Surface the issuer's actionable message (e.g. \"Anonymous auth is not enabled for\n // this app. Add \\\"auth\\\": { \\\"anonymous\\\": true } to policy.json and redeploy.\")\n // instead of axios's generic \"Request failed with status code 403\".\n const d = (_b = err === null || err === void 0 ? void 0 : err.response) === null || _b === void 0 ? void 0 : _b.data;\n if (d && (d.message || d.error)) {\n const e = new Error(String(d.message || d.error));\n e.code = d.error;\n e.status = (_c = err === null || err === void 0 ? void 0 : err.response) === null || _c === void 0 ? void 0 : _c.status;\n e.hint = d.hint;\n throw e;\n }\n throw err;\n }\n}\n// Deduplicate concurrent refreshSession calls to prevent multiple code paths\n// (WebSocket reconnection, periodic refresh, API 401 retry) from all hitting\n// /session/refresh simultaneously.\n// Note: module-level state is shared across requests in SSR/Node — acceptable\n// since there is only one active session per server instance (same pattern as\n// refreshInFlight in api.ts).\nlet refreshInFlight = null;\nlet refreshInFlightToken = null;\nexport async function refreshSession(refreshToken, issuer) {\n // Dedupe per (issuer, token): the rotating token is single-use, so two\n // concurrent refreshes of the SAME token must share one in-flight request or\n // the second would look like reuse and revoke the family.\n const dedupeKey = `${issuer || ''}::${refreshToken}`;\n if (refreshInFlight && refreshInFlightToken === dedupeKey) {\n return refreshInFlight;\n }\n refreshInFlightToken = dedupeKey;\n let currentFlight;\n currentFlight = refreshInFlight = (async () => {\n try {\n const config = await getConfig();\n const appId = config.appId;\n // Route to the issuer that MINTED this session (email/social ->\n // humanAuthApiUrl, wallet/guest -> authApiUrl), validated against the\n // configured allowlist so a tampered stored issuer can't exfiltrate the token.\n const base = resolveIssuerBase(issuer, config);\n const response = await axios.post(`${base}/session/refresh`, {\n refreshToken,\n appId\n }, { headers: { 'Content-Type': 'application/json' }, timeout: 30000 });\n return response.data;\n }\n finally {\n // Only clear if we're still the active in-flight request.\n // A second call with a different token may have replaced us.\n if (refreshInFlight === currentFlight) {\n refreshInFlight = null;\n refreshInFlightToken = null;\n }\n }\n })();\n return refreshInFlight;\n}\nexport class SessionRevokeError extends Error {\n constructor(message, cause) {\n super(message);\n this.name = 'SessionRevokeError';\n this.cause = cause;\n }\n}\nfunction revokeFailureMessage(err) {\n var _a, _b;\n const status = (_a = err === null || err === void 0 ? void 0 : err.response) === null || _a === void 0 ? void 0 : _a.status;\n const statusText = (_b = err === null || err === void 0 ? void 0 : err.response) === null || _b === void 0 ? void 0 : _b.statusText;\n const suffix = typeof status === 'number'\n ? ` (HTTP ${status}${statusText ? ` ${statusText}` : ''})`\n : '';\n return `Failed to revoke refresh token server-side${suffix}. The refresh-token family may still be active.`;\n}\n/**\n * Revoke a session's refresh-token family server-side (logout). Routes to the\n * minting issuer and rejects if the revoke request fails.\n */\nexport async function revokeSession(refreshToken, issuer) {\n if (!refreshToken)\n return;\n try {\n const config = await getConfig();\n const base = resolveIssuerBase(issuer, config);\n await axios.post(`${base}/session/revoke`, {\n refreshToken,\n appId: config.appId,\n }, {\n headers: { 'Content-Type': 'application/json' },\n timeout: 15000,\n // Preserve the transport error for programmatic diagnostics while\n // ensuring AxiosError.toJSON() cannot serialize the live token body\n // into logs, telemetry, UI state, or crash reports.\n redact: ['data'],\n });\n }\n catch (err) {\n throw new SessionRevokeError(revokeFailureMessage(err), err);\n }\n}\nexport async function signSessionCreateMessage(_signMessageFunction) {\n}\n","import { refreshSession } from \"./auth-api\";\nimport { getConfig } from \"../client/config\";\nexport class WebSessionManager {\n /**\n * Decode a base64url-encoded string (used by JWT payloads).\n * Normalises base64url → standard base64 before calling browser atob().\n */\n static decodeBase64Url(input) {\n let b64 = input.replace(/-/g, '+').replace(/_/g, '/');\n const pad = b64.length % 4;\n if (pad === 2)\n b64 += '==';\n else if (pad === 3)\n b64 += '=';\n return atob(b64);\n }\n /* ------------------------------------------------------------------ */\n /* STORE */\n /* ------------------------------------------------------------------ */\n static async storeSession(address, accessToken, idToken, refreshToken, issuer) {\n var _a;\n if (typeof window === \"undefined\")\n return;\n // JWT-wallet binding: refuse to store a session whose idToken is bound\n // to a different wallet than `address`. Prevents races that would otherwise\n // leave localStorage with mismatched address/token state.\n try {\n const payloadB64 = idToken.split(\".\")[1];\n if (payloadB64) {\n const payload = JSON.parse(this.decodeBase64Url(payloadB64));\n const tokenWallet = payload[\"custom:walletAddress\"];\n if (tokenWallet && tokenWallet !== address) {\n throw new Error(`[WebSessionManager] Refusing to store session: address (${address}) does not match idToken custom:walletAddress (${tokenWallet})`);\n }\n if (!tokenWallet) {\n console.warn(\"[WebSessionManager] storeSession: idToken has no custom:walletAddress claim — writing without validation\");\n }\n }\n }\n catch (err) {\n if (typeof (err === null || err === void 0 ? void 0 : err.message) === \"string\" && err.message.includes(\"Refusing to store session\")) {\n throw err;\n }\n console.warn(\"[WebSessionManager] storeSession: failed to decode idToken for validation. reason:\", (_a = err === null || err === void 0 ? void 0 : err.name) !== null && _a !== void 0 ? _a : \"decode_failed\");\n }\n const config = await getConfig();\n const currentAppId = config.appId;\n // The auth issuer base that minted this session, so silent refresh POSTs to\n // the RIGHT /session/refresh. Email overrides with humanAuthApiUrl; all\n // wallet/guest/signature flows default to authApiUrl (the bounded-auth issuer).\n const sessionIssuer = (issuer || config.authApiUrl || \"\").replace(/\\/$/, \"\");\n localStorage.setItem(this.BOUNDED_SESSION_STORAGE_KEY, JSON.stringify(Object.assign({ address,\n accessToken,\n idToken,\n refreshToken, appId: currentAppId }, (sessionIssuer ? { issuer: sessionIssuer } : {}))));\n }\n /* ------------------------------------------------------------------ */\n /* GET */\n /* ------------------------------------------------------------------ */\n static async getSession() {\n if (typeof window === \"undefined\")\n return null;\n const session = localStorage.getItem(this.BOUNDED_SESSION_STORAGE_KEY);\n if (!session)\n return null;\n const sessionObj = JSON.parse(session);\n /* ---------- validate app-id ---------- */\n const config = await getConfig();\n if (sessionObj.appId && sessionObj.appId !== config.appId) {\n this.clearSession();\n return null;\n }\n /* ---------- check JWT expiration ---------- */\n try {\n // Check expiry on the ID TOKEN — it is ALWAYS a JWT. The OIDC access_token for\n // email/social (hosted) logins is an OPAQUE string (not a JWT), so decoding IT\n // here threw and the catch below wiped a perfectly valid session — breaking\n // hosted login. The idToken carries the canonical identity (@user.id) + exp.\n const { idToken } = sessionObj;\n const { exp } = JSON.parse(this.decodeBase64Url(idToken.split(\".\")[1]));\n if (Date.now() > exp * 1000) {\n const { refreshToken } = sessionObj;\n if (!refreshToken)\n return null;\n const refreshed = await refreshSession(refreshToken, sessionObj.issuer);\n if ((refreshed === null || refreshed === void 0 ? void 0 : refreshed.idToken) && (refreshed === null || refreshed === void 0 ? void 0 : refreshed.accessToken)) {\n await this.updateIdTokenAndAccessToken(refreshed.idToken, refreshed.accessToken, \n // Persist the ROTATED refresh token — the old one is now\n // single-use spent; reusing it would revoke the family.\n refreshed.refreshToken);\n const newSession = localStorage.getItem(this.BOUNDED_SESSION_STORAGE_KEY);\n if (!newSession)\n return null;\n const newObj = JSON.parse(newSession);\n return { address: newObj.address, session: newObj };\n }\n // Refresh failed — clear stale session to prevent retry loops\n this.clearSession();\n return null;\n }\n }\n catch (err) {\n // Token decode or refresh failed — clear stale session to prevent retry loops\n this.clearSession();\n return null;\n }\n return { address: sessionObj.address, session: sessionObj };\n }\n /* ------------------------------------------------------------------ */\n /* CLEAR */\n /* ------------------------------------------------------------------ */\n static clearSession() {\n if (typeof window === \"undefined\")\n return;\n localStorage.removeItem(this.BOUNDED_SESSION_STORAGE_KEY);\n }\n /* ------------------------------------------------------------------ */\n /* IS-AUTH */\n /* ------------------------------------------------------------------ */\n static isAuthenticated() {\n // NOTE: this remains synchronous to stay backward compatible\n return !!localStorage.getItem(this.BOUNDED_SESSION_STORAGE_KEY);\n }\n /* ------------------------------------------------------------------ */\n /* TOKEN HELPERS */\n /* ------------------------------------------------------------------ */\n static getIdToken() {\n if (typeof window === \"undefined\")\n return null;\n const session = localStorage.getItem(this.BOUNDED_SESSION_STORAGE_KEY);\n return session ? JSON.parse(session).idToken : null;\n }\n static getRefreshToken() {\n if (typeof window === \"undefined\")\n return null;\n const session = localStorage.getItem(this.BOUNDED_SESSION_STORAGE_KEY);\n return session ? JSON.parse(session).refreshToken : null;\n }\n /** The issuer base that minted this session (for routing silent refresh). */\n static getIssuer() {\n var _a;\n if (typeof window === \"undefined\")\n return null;\n const session = localStorage.getItem(this.BOUNDED_SESSION_STORAGE_KEY);\n return session ? ((_a = JSON.parse(session).issuer) !== null && _a !== void 0 ? _a : null) : null;\n }\n /* ------------------------------------------------------------------ */\n /* UPDATE TOKENS */\n /* ------------------------------------------------------------------ */\n static async updateIdTokenAndAccessToken(idToken, accessToken, refreshToken) {\n var _a;\n if (typeof window === \"undefined\")\n return;\n const session = localStorage.getItem(this.BOUNDED_SESSION_STORAGE_KEY);\n if (!session)\n return;\n const sessionObj = JSON.parse(session);\n /* ---------- app-id guard ---------- */\n const config = await getConfig();\n if (sessionObj.appId && sessionObj.appId !== config.appId) {\n this.clearSession();\n return;\n }\n sessionObj.idToken = idToken;\n sessionObj.accessToken = accessToken;\n // Persist the rotated refresh token when the issuer returns a new one.\n if (typeof refreshToken === \"string\" && refreshToken.length > 0) {\n sessionObj.refreshToken = refreshToken;\n }\n (_a = sessionObj.appId) !== null && _a !== void 0 ? _a : (sessionObj.appId = config.appId);\n localStorage.setItem(this.BOUNDED_SESSION_STORAGE_KEY, JSON.stringify(sessionObj));\n }\n}\nWebSessionManager.BOUNDED_SESSION_STORAGE_KEY = \"bounded_session_storage\";\n","import { refreshSession } from \"./auth-api\";\nimport { getConfig } from \"../client/config\";\nlet _config = null;\nexport class ReactNativeSessionManager {\n /**\n * Must be called once before any other method.\n *\n * ```ts\n * import { ReactNativeSessionManager } from '@bounded-sh/core';\n * import { MMKV } from 'react-native-mmkv';\n * import { decode } from 'base-64';\n *\n * const mmkv = new MMKV();\n * ReactNativeSessionManager.configure({\n * storage: {\n * getItem: (k) => mmkv.getString(k) ?? null,\n * setItem: (k, v) => mmkv.set(k, v),\n * removeItem: (k) => mmkv.delete(k),\n * },\n * atob: decode,\n * });\n * ```\n */\n static configure(cfg) {\n _config = cfg;\n }\n /**\n * Whether configure() has been called. This is the canonical \"are we on\n * React Native?\" signal used by getActiveSessionManager(): RN consumers MUST\n * call configure() at startup, while web/Node never do. Far more reliable\n * than sniffing `typeof window` (React Native defines a global `window`, so\n * that test misclassifies RN as web and routes session writes to a\n * non-existent localStorage).\n */\n static isConfigured() {\n return _config !== null;\n }\n static getStorage() {\n if (!_config) {\n throw new Error(\"ReactNativeSessionManager.configure() must be called before using session methods.\");\n }\n return _config.storage;\n }\n static decodeBase64(input) {\n if (!_config) {\n throw new Error(\"ReactNativeSessionManager.configure() must be called before using session methods.\");\n }\n return _config.atob(input);\n }\n /**\n * Decode a base64url-encoded string (used by JWT payloads).\n * Normalises base64url → standard base64 before decoding.\n */\n static decodeBase64Url(input) {\n let b64 = input.replace(/-/g, '+').replace(/_/g, '/');\n const pad = b64.length % 4;\n if (pad === 2)\n b64 += '==';\n else if (pad === 3)\n b64 += '=';\n return this.decodeBase64(b64);\n }\n /* ------------------------------------------------------------------ */\n /* STORE */\n /* ------------------------------------------------------------------ */\n static async storeSession(address, accessToken, idToken, refreshToken, issuer) {\n var _a;\n // JWT-wallet binding: refuse to store a session whose idToken is bound\n // to a different wallet than `address`. Prevents races that would otherwise\n // leave storage with mismatched address/token state.\n try {\n const payloadB64 = idToken.split(\".\")[1];\n if (payloadB64) {\n const payload = JSON.parse(this.decodeBase64Url(payloadB64));\n const tokenWallet = payload[\"custom:walletAddress\"];\n if (tokenWallet && tokenWallet !== address) {\n throw new Error(`[ReactNativeSessionManager] Refusing to store session: address (${address}) does not match idToken custom:walletAddress (${tokenWallet})`);\n }\n if (!tokenWallet) {\n console.warn(\"[ReactNativeSessionManager] storeSession: idToken has no custom:walletAddress claim — writing without validation\");\n }\n }\n }\n catch (err) {\n if (typeof (err === null || err === void 0 ? void 0 : err.message) === \"string\" && err.message.includes(\"Refusing to store session\")) {\n throw err;\n }\n console.warn(\"[ReactNativeSessionManager] storeSession: failed to decode idToken for validation. reason:\", (_a = err === null || err === void 0 ? void 0 : err.name) !== null && _a !== void 0 ? _a : \"decode_failed\");\n }\n const config = await getConfig();\n const currentAppId = config.appId;\n // Issuer base for silent refresh (email overrides w/ humanAuthApiUrl; wallet/\n // guest default to authApiUrl). See WebSessionManager for the rationale.\n const sessionIssuer = (issuer || config.authApiUrl || \"\").replace(/\\/$/, \"\");\n this.getStorage().setItem(this.BOUNDED_SESSION_STORAGE_KEY, JSON.stringify(Object.assign({ address,\n accessToken,\n idToken,\n refreshToken, appId: currentAppId }, (sessionIssuer ? { issuer: sessionIssuer } : {}))));\n }\n /* ------------------------------------------------------------------ */\n /* GET */\n /* ------------------------------------------------------------------ */\n static async getSession() {\n const session = this.getStorage().getItem(this.BOUNDED_SESSION_STORAGE_KEY);\n if (!session)\n return null;\n const sessionObj = JSON.parse(session);\n /* ---------- validate app-id ---------- */\n const config = await getConfig();\n if (sessionObj.appId && sessionObj.appId !== config.appId) {\n this.clearSession();\n return null;\n }\n /* ---------- check JWT expiration ---------- */\n try {\n // Expiry on the ID TOKEN (always a JWT). The OIDC access_token for email/social\n // logins is opaque, so decoding it threw → the catch wiped a valid session.\n const { idToken } = sessionObj;\n const { exp } = JSON.parse(this.decodeBase64Url(idToken.split(\".\")[1]));\n if (Date.now() > exp * 1000) {\n const { refreshToken } = sessionObj;\n if (!refreshToken)\n return null;\n const refreshed = await refreshSession(refreshToken, sessionObj.issuer);\n if ((refreshed === null || refreshed === void 0 ? void 0 : refreshed.idToken) && (refreshed === null || refreshed === void 0 ? void 0 : refreshed.accessToken)) {\n await this.updateIdTokenAndAccessToken(refreshed.idToken, refreshed.accessToken, refreshed.refreshToken);\n const newSession = this.getStorage().getItem(this.BOUNDED_SESSION_STORAGE_KEY);\n if (!newSession)\n return null;\n const newObj = JSON.parse(newSession);\n return { address: newObj.address, session: newObj };\n }\n // Refresh failed — clear stale session to prevent retry loops\n this.clearSession();\n return null;\n }\n }\n catch (err) {\n // Token decode or refresh failed — clear stale session to prevent retry loops\n this.clearSession();\n return null;\n }\n return { address: sessionObj.address, session: sessionObj };\n }\n /* ------------------------------------------------------------------ */\n /* CLEAR */\n /* ------------------------------------------------------------------ */\n static clearSession() {\n this.getStorage().removeItem(this.BOUNDED_SESSION_STORAGE_KEY);\n }\n /* ------------------------------------------------------------------ */\n /* IS-AUTH */\n /* ------------------------------------------------------------------ */\n static isAuthenticated() {\n return !!this.getStorage().getItem(this.BOUNDED_SESSION_STORAGE_KEY);\n }\n /* ------------------------------------------------------------------ */\n /* TOKEN HELPERS */\n /* ------------------------------------------------------------------ */\n static getIdToken() {\n try {\n const session = this.getStorage().getItem(this.BOUNDED_SESSION_STORAGE_KEY);\n return session ? JSON.parse(session).idToken : null;\n }\n catch (_a) {\n return null;\n }\n }\n /** The issuer base that minted this session (for routing silent refresh). */\n static getIssuer() {\n var _a;\n try {\n const session = this.getStorage().getItem(this.BOUNDED_SESSION_STORAGE_KEY);\n return session ? ((_a = JSON.parse(session).issuer) !== null && _a !== void 0 ? _a : null) : null;\n }\n catch (_b) {\n return null;\n }\n }\n static getRefreshToken() {\n try {\n const session = this.getStorage().getItem(this.BOUNDED_SESSION_STORAGE_KEY);\n return session ? JSON.parse(session).refreshToken : null;\n }\n catch (_a) {\n return null;\n }\n }\n /* ------------------------------------------------------------------ */\n /* UPDATE TOKENS */\n /* ------------------------------------------------------------------ */\n static async updateIdTokenAndAccessToken(idToken, accessToken, refreshToken) {\n var _a;\n const session = this.getStorage().getItem(this.BOUNDED_SESSION_STORAGE_KEY);\n if (!session)\n return;\n const sessionObj = JSON.parse(session);\n /* ---------- app-id guard ---------- */\n const config = await getConfig();\n if (sessionObj.appId && sessionObj.appId !== config.appId) {\n this.clearSession();\n return;\n }\n sessionObj.idToken = idToken;\n sessionObj.accessToken = accessToken;\n if (typeof refreshToken === \"string\" && refreshToken.length > 0) {\n sessionObj.refreshToken = refreshToken;\n }\n (_a = sessionObj.appId) !== null && _a !== void 0 ? _a : (sessionObj.appId = config.appId);\n this.getStorage().setItem(this.BOUNDED_SESSION_STORAGE_KEY, JSON.stringify(sessionObj));\n }\n}\nReactNativeSessionManager.BOUNDED_SESSION_STORAGE_KEY = \"bounded_session_storage\";\n","import { WebSessionManager } from './web-session-manager';\nimport { ReactNativeSessionManager } from './rn-session-manager';\n/**\n * Return the active CLIENT session manager for the current runtime.\n *\n * This is the single source of truth for \"which store holds the session token\"\n * and MUST be used everywhere the client reads/writes the session (login,\n * restore, logout, and — critically — the per-request auth-header path in\n * utils.ts). Previously this decision was made ad-hoc with\n * `typeof window !== 'undefined' ? WebSessionManager : ReactNativeSessionManager`,\n * which is wrong on React Native: RN defines a global `window`, so that test\n * picked WebSessionManager and then hit a non-existent `localStorage` — the\n * session was silently dropped (or threw), so every authenticated request 403'd.\n *\n * Decision rule: if a consumer configured the React Native session manager\n * (ReactNativeSessionManager.configure(), which RN apps call once at startup and\n * web/Node never do), we're on RN — use it. Otherwise use the localStorage-backed\n * WebSessionManager (which itself no-ops gracefully in Node/SSR where there is no\n * `window`). This changes ONLY React Native behavior; web and Node are unchanged.\n *\n * NOTE: this intentionally does NOT cover the SERVER (keypair) path — callers that\n * branch on `isServer` keep using ServerSessionManager and only fall through to\n * getActiveSessionManager() for the browser/RN client case.\n */\nexport function getActiveSessionManager() {\n return ReactNativeSessionManager.isConfigured()\n ? ReactNativeSessionManager\n : WebSessionManager;\n}\n","import { Buffer } from 'buffer';\nimport nacl from \"tweetnacl\";\nimport { createSessionWithSignature, genAuthNonce } from \"./auth-api\";\nconst NO_AMBIENT_SERVER_SESSION = \"Server sessions are not process-global. Use createWalletClient({ keypair }) and call that wallet client's methods.\";\n/* ------------------------------------------------------------------ */\n/* SESSION MANAGER */\n/* ------------------------------------------------------------------ */\nexport class ServerSessionManager {\n constructor(keypair, sessionFactory) {\n /* Private cache (lives for the life of the instance) */\n this.session = null;\n /* Coalesce concurrent getSession() calls into a single in-flight request */\n this.pendingSession = null;\n this.keypair = keypair !== null && keypair !== void 0 ? keypair : null;\n this.sessionFactory = sessionFactory !== null && sessionFactory !== void 0 ? sessionFactory : null;\n }\n /**\n * Create a session manager for a specific keypair.\n * Each instance has its own independent session cache.\n */\n static forKeypair(keypair) {\n return new ServerSessionManager(keypair);\n }\n /**\n * Create an isolated server session manager for a non-Solana signer (currently\n * EVM/SIWE). The factory must perform the signature exchange and return the\n * canonical signer address with its tokens; no signer state becomes global.\n */\n static forSessionFactory(factory) {\n if (typeof factory !== 'function')\n throw new Error('A server session factory is required');\n return new ServerSessionManager(undefined, factory);\n }\n /* ---------------------------------------------- *\n * Session creation (instance method)\n * ---------------------------------------------- */\n async createSession() {\n if (this.sessionFactory) {\n const session = await this.sessionFactory();\n if (!session || typeof session.address !== 'string' || !session.address ||\n typeof session.idToken !== 'string' || !session.idToken ||\n typeof session.accessToken !== 'string' || !session.accessToken ||\n typeof session.refreshToken !== 'string' || !session.refreshToken) {\n throw new Error('Server signer session factory returned an invalid session');\n }\n return session;\n }\n if (!this.keypair) {\n throw new Error(NO_AMBIENT_SERVER_SESSION);\n }\n const kp = this.keypair;\n const address = kp.publicKey.toBase58();\n /* fetch nonce from auth API */\n const nonce = await genAuthNonce();\n const { genSolanaMessage } = await import(\"./sol/solana-message\");\n const message = await genSolanaMessage(address, nonce);\n /* sign the message */\n const sigBytes = nacl.sign.detached(new TextEncoder().encode(message), kp.secretKey);\n const signature = Buffer.from(sigBytes).toString(\"base64\");\n /* call auth API */\n const { accessToken, idToken, refreshToken, } = await createSessionWithSignature(address, message, signature);\n return { address, accessToken, idToken, refreshToken };\n }\n /* ---------------------------------------------- *\n * GET (lazy-fetch)\n * ---------------------------------------------- */\n async getSession() {\n if (this.session !== null) {\n return this.session;\n }\n // If a session creation is already in-flight, reuse that promise\n // instead of firing a second concurrent request.\n if (this.pendingSession !== null) {\n return this.pendingSession;\n }\n this.pendingSession = this.createSession()\n .then((session) => {\n this.session = session;\n return session;\n })\n .finally(() => {\n this.pendingSession = null;\n });\n return this.pendingSession;\n }\n /* ---------------------------------------------- *\n * STORE (overwrites the cached value)\n * ---------------------------------------------- */\n setSession(session) {\n this.session = session;\n }\n /* ---------------------------------------------- *\n * CLEAR (e.g. after explicit logout)\n * ---------------------------------------------- */\n clearSession() {\n this.session = null;\n this.pendingSession = null;\n }\n /* ---------------------------------------------- *\n * QUICK helpers\n * ---------------------------------------------- */\n isAuthenticated() {\n return this.session !== null;\n }\n getIdToken() {\n var _a, _b;\n return (_b = (_a = this.session) === null || _a === void 0 ? void 0 : _a.idToken) !== null && _b !== void 0 ? _b : null;\n }\n getRefreshToken() {\n var _a, _b;\n return (_b = (_a = this.session) === null || _a === void 0 ? void 0 : _a.refreshToken) !== null && _b !== void 0 ? _b : null;\n }\n}\n/* The default singleton exists only so top-level server calls fail closed. */\nServerSessionManager.instance = new ServerSessionManager();\n","/**\n * Safe base64 helpers for bounded-core.\n *\n * Uses the global atob/btoa when available (browser, RN with polyfill),\n * falls back to the 'buffer' package (Node.js / SSR / RN without polyfill).\n *\n * These are used instead of bare `atob()`/`btoa()` so the core package\n * works in React Native without requiring the consumer to polyfill globals.\n */\nimport { Buffer } from 'buffer';\nexport function safeAtob(input) {\n if (typeof globalThis.atob === 'function') {\n return globalThis.atob(input);\n }\n return Buffer.from(input, 'base64').toString('binary');\n}\nexport function safeBtoa(input) {\n if (typeof globalThis.btoa === 'function') {\n return globalThis.btoa(input);\n }\n return Buffer.from(input, 'binary').toString('base64');\n}\n/**\n * Decode a base64url-encoded string (used by JWT payloads).\n * Normalises base64url → standard base64 before decoding.\n */\nexport function decodeBase64Url(input) {\n let b64 = input.replace(/-/g, '+').replace(/_/g, '/');\n const pad = b64.length % 4;\n if (pad === 2)\n b64 += '==';\n else if (pad === 3)\n b64 += '=';\n return safeAtob(b64);\n}\n","// evm-utils.ts — the EVM twin of sol/sol-utils.ts's genSolanaMessage. It builds\n// the canonical EIP-4361 (Sign-In with Ethereum, SIWE) prompt the bounded-auth\n// issuer verifies, and normalizes EVM addresses to the single canonical form the\n// identity layer matches on.\n//\n// The SIWE message MUST match bounded-auth's parser byte-for-byte\n// (packages/cdk/cloudflare/bounded-auth/src/verify-siwe.ts → parseSiweMessage):\n// <domain> wants you to sign in with your Ethereum account:\n// <address>\n// <blank>\n// <statement>\n// <blank>\n// URI: <uri>\n// Version: 1\n// Chain ID: <chainId>\n// Nonce: <nonce>\n// Issued At: <ISO8601>\n// Expiration Time: <ISO8601>\n// Resources:\n// - bounded:app:<appId>\n//\n// Bindings the verifier enforces (so we produce them exactly): the address is\n// lowercased (identity match is case-sensitive, so lowercase-at-boundary is\n// mandatory), the single `bounded:app:<appId>` resource binds the signature to\n// THIS app (a signature for one app must not mint a session for another — the\n// SIWE analog of genSolanaMessage's `App ID:` line), and Expiration Time is\n// REQUIRED and must fall within the issuer's 10-minute max validity window.\n/** Default statement — kept identical to genSolanaMessage's for a consistent prompt. */\nconst DEFAULT_STATEMENT = 'Sign this message to authenticate with our application.';\n/** Match bounded-auth's MAX_AUTH_WINDOW_MS (10 min); we default to a 5-min window. */\nconst DEFAULT_VALIDITY_MS = 5 * 60 * 1000;\n/**\n * Build the canonical EIP-4361 SIWE message the bounded-auth issuer verifies.\n *\n * @param address the connected EVM account (lowercased into the prompt).\n * @param nonce single-use nonce from genAuthNonce().\n * @param appId the target app id (bound as the sole `bounded:app:<appId>` resource).\n * @param domain RFC-3986 authority of the requesting site (e.g. window.location.host).\n * @param uri the requesting URI; its origin is bound to the domain and actual browser Origin.\n */\nexport function genSiweMessage(address, nonce, appId, domain, uri, options = {}) {\n var _a, _b, _c, _d, _e;\n const addr = normalizeEvmAddress(address);\n if (!addr)\n throw new Error('SIWE address must be a 20-byte 0x-prefixed EVM address');\n const statement = (_a = options.statement) !== null && _a !== void 0 ? _a : DEFAULT_STATEMENT;\n const version = (_b = options.version) !== null && _b !== void 0 ? _b : '1';\n const chainId = (_c = options.chainId) !== null && _c !== void 0 ? _c : 1;\n if (statement !== DEFAULT_STATEMENT)\n throw new Error('SIWE statement must use the canonical Bounded authentication text');\n if (version !== '1')\n throw new Error('SIWE version must be 1');\n if (!Number.isSafeInteger(chainId) || chainId <= 0)\n throw new Error('SIWE chainId must be a positive safe integer');\n if (!/^[A-Za-z0-9]{8,}$/.test(nonce))\n throw new Error('SIWE nonce must be at least 8 alphanumeric characters');\n if (!appId || /[\\r\\n]/.test(appId))\n throw new Error('SIWE appId is required and must be single-line');\n if (!domain || domain !== domain.trim() || /[\\s/@?#\\\\]/.test(domain))\n throw new Error('SIWE domain must be an RFC-3986 authority');\n try {\n const parsedAuthority = new URL(`https://${domain}`);\n if (parsedAuthority.username || parsedAuthority.password || parsedAuthority.pathname !== '/' ||\n parsedAuthority.search || parsedAuthority.hash || parsedAuthority.host.toLowerCase() !== domain) {\n throw new Error('non-canonical authority');\n }\n }\n catch (_f) {\n throw new Error('SIWE domain must be a canonical lowercase RFC-3986 authority');\n }\n let parsedUri;\n try {\n parsedUri = new URL(uri);\n }\n catch (_g) {\n throw new Error('SIWE URI must be an absolute URL');\n }\n const local = parsedUri.hostname === 'localhost' || parsedUri.hostname === '127.0.0.1' || parsedUri.hostname === '[::1]';\n if (parsedUri.protocol !== 'https:' && !(local && parsedUri.protocol === 'http:')) {\n throw new Error('SIWE URI must use HTTPS (HTTP is allowed only for localhost)');\n }\n if (parsedUri.username || parsedUri.password || parsedUri.hash || parsedUri.host.toLowerCase() !== domain.toLowerCase()) {\n throw new Error('SIWE URI authority must match the SIWE domain');\n }\n const issuedAtDate = (_d = options.issuedAt) !== null && _d !== void 0 ? _d : new Date();\n const expirationDate = (_e = options.expirationTime) !== null && _e !== void 0 ? _e : new Date(issuedAtDate.getTime() + DEFAULT_VALIDITY_MS);\n if (!Number.isFinite(issuedAtDate.getTime()) || !Number.isFinite(expirationDate.getTime()) || expirationDate <= issuedAtDate) {\n throw new Error('SIWE validity window is invalid');\n }\n if (expirationDate.getTime() - issuedAtDate.getTime() > 10 * 60 * 1000) {\n throw new Error('SIWE validity window exceeds 10 minutes');\n }\n const issuedAt = issuedAtDate.toISOString();\n const expirationTime = expirationDate.toISOString();\n return (`${domain} wants you to sign in with your Ethereum account:\\n${addr}\\n\\n` +\n `${statement}\\n\\n` +\n `URI: ${parsedUri.toString()}\\n` +\n `Version: ${version}\\n` +\n `Chain ID: ${chainId}\\n` +\n `Nonce: ${nonce}\\n` +\n `Issued At: ${issuedAt}\\n` +\n `Expiration Time: ${expirationTime}\\n` +\n `Resources:\\n` +\n `- bounded:app:${appId}`);\n}\n/**\n * Lowercase an EVM address to the canonical identity form. EVM addresses are\n * case-insensitive on-chain but the identity layer (@user.evmAddress) matches\n * case-sensitively, so every boundary normalizes to lowercase. Does not validate\n * shape — use normalizeEvmAddress() when the input is untrusted.\n */\nexport function toLowerEvmAddress(address) {\n return address.trim().toLowerCase();\n}\n/**\n * Normalize an untrusted EVM address to canonical lowercase 0x-hex, or null when\n * it isn't a well-formed 20-byte hex address. Mirrors the realtime-worker's\n * normalizeEvmAddress (auth.ts) EXACTLY so a client-derived @user.evmAddress and\n * the server-authenticated one are byte-identical (fail-closed on malformed).\n */\nexport function normalizeEvmAddress(raw) {\n if (typeof raw !== 'string')\n return null;\n const v = raw.trim().toLowerCase();\n return /^0x[0-9a-f]{40}$/.test(v) ? v : null;\n}\n","import { getConfig } from '../client/config';\nimport { getActiveSessionManager } from './session-manager';\nimport { ServerSessionManager } from './server-session-manager';\nimport { decodeBase64Url } from './core-platform';\nimport { normalizeEvmAddress } from './evm/evm-utils';\nexport async function getMessageStatement() {\n const config = await getConfig();\n return `Authenticating to Bounded App With ID ${config.appId}`;\n}\nasync function createBearerToken(isServer) {\n if (isServer) {\n const sessionMgr = ServerSessionManager.instance;\n const session = await sessionMgr.getSession();\n if (!(session === null || session === void 0 ? void 0 : session.idToken)) {\n return null;\n }\n return `Bearer ${session.idToken}`;\n }\n const idToken = getActiveSessionManager().getIdToken();\n if (!idToken) {\n return null;\n }\n return `Bearer ${idToken}`;\n}\nexport async function createAuthHeader(isServer) {\n const bearerToken = await createBearerToken(isServer);\n if (!bearerToken) {\n return null;\n }\n return {\n Authorization: bearerToken\n };\n}\nexport async function getUserInfo(isServer) {\n const idToken = await getIdToken(isServer);\n if (!idToken) {\n return null;\n }\n // Decode the JWT to get user info (base64url-safe)\n const payload = JSON.parse(decodeBase64Url(idToken.split('.')[1]));\n return payload;\n}\n;\n/**\n * Derive { id, address, email } from an idToken's claims.\n *\n * Mirrors the realtime-worker auth.ts identity resolution so the client-side\n * `user` object matches what the backend authenticates as:\n * - id = custom:userId only.\n * - address = custom:walletAddress only (a REAL wallet). NEVER falls back to the\n * identity: an opaque id is not a spendable onchain address. null for\n * email-only sessions.\n * - email = the token's `email` claim, lowercased to match the canonical form\n * policy equality compares against. null when absent (wallet/SIWS).\n *\n * Returns all-null when the token can't be decoded (caller treats as no identity).\n */\nexport function deriveUserIdentityFromIdToken(idToken) {\n const empty = { id: null, address: null, email: null, evmAddress: null };\n if (!idToken)\n return empty;\n try {\n const parts = idToken.split('.');\n if (parts.length < 2)\n return empty;\n const payload = JSON.parse(decodeBase64Url(parts[1]));\n const walletClaim = payload['custom:walletAddress'];\n const address = (typeof walletClaim === 'string' && walletClaim.length > 0)\n ? walletClaim\n : null;\n const userIdClaim = payload['custom:userId'];\n let id = (typeof userIdClaim === 'string' && userIdClaim.length > 0)\n ? userIdClaim\n : null;\n const emailClaim = payload['email'];\n const email = (typeof emailClaim === 'string' && emailClaim.length > 0)\n ? emailClaim.toLowerCase()\n : null;\n // EVM wallet — carried on the `custom:evmWalletAddress` claim (an EVM login\n // OMITS custom:walletAddress). Normalized to canonical lowercase 0x-hex the\n // SAME way the realtime-worker does, so the client @user.evmAddress and the\n // server-authenticated one are byte-identical (fail-closed on malformed).\n const evmAddress = normalizeEvmAddress(payload['custom:evmWalletAddress']);\n // A SIWE identity uses its EVM address as custom:userId. Normalize legacy\n // mixed-case tokens at this boundary too so the principal and\n // @user.evmAddress cannot diverge solely by hex casing. Opaque human-login\n // ids remain byte-for-byte unchanged even when they have a linked wallet.\n if (evmAddress && id && normalizeEvmAddress(id) === evmAddress)\n id = evmAddress;\n return { id, address, email, evmAddress };\n }\n catch (_a) {\n return empty;\n }\n}\nexport async function getIdToken(isServer) {\n if (isServer) {\n const sessionMgr = ServerSessionManager.instance;\n const session = await sessionMgr.getSession();\n return session === null || session === void 0 ? void 0 : session.idToken;\n }\n return getActiveSessionManager().getIdToken();\n}\nexport async function getRefreshToken(isServer) {\n if (isServer) {\n const sessionMgr = ServerSessionManager.instance;\n const session = await sessionMgr.getSession();\n return session === null || session === void 0 ? void 0 : session.refreshToken;\n }\n return getActiveSessionManager().getRefreshToken();\n}\n/** The auth issuer base that minted the active client session, so a refresh POSTs\n * to the right /session/refresh. Undefined on the server (keypair, no refresh). */\nexport function getSessionIssuer(isServer) {\n var _a;\n if (isServer)\n return undefined;\n return (_a = getActiveSessionManager().getIssuer()) !== null && _a !== void 0 ? _a : undefined;\n}\nexport async function updateIdTokenAndAccessToken(idToken, accessToken, isServer = false, refreshToken) {\n if (isServer) {\n const sessionMgr = ServerSessionManager.instance;\n // Ensure we have a session to update; if missing, let lazy creation happen on next request.\n let session = null;\n try {\n session = await sessionMgr.getSession();\n }\n catch (_a) {\n return;\n }\n if (!session) {\n return;\n }\n sessionMgr.setSession(Object.assign(Object.assign(Object.assign({}, session), { idToken,\n accessToken }), (refreshToken ? { refreshToken } : {})));\n return;\n }\n await getActiveSessionManager().updateIdTokenAndAccessToken(idToken, accessToken, refreshToken);\n}\n","// ---------------------------------------------------------------------------\n// decline.ts -- the structured \"declined write\" surface.\n//\n// When a data-plane write violates a proven policy rule or invariant, the\n// realtime backend rejects it: HTTP 403 { verdict:'declined', reason:'rule' }\n// or 409 { verdict:'declined', reason:'invariant', invariant } on the request\n// path, or a coded error frame over the room socket. This module turns those\n// rejections into a first-class, share-worthy decline:\n//\n// - `BoundedDeclineError` -- the thrown error. Keeps every legacy field apps\n// already catch (code/status/statusCode/requestId/...), and adds `.decline`\n// (the structured object below) plus a stable `.isBoundedDecline` flag.\n// - `deriveDecline(body, status)` -- normalizes a server rejection body into a\n// `BoundedDecline`, trusting a backend-sent `decline` object when present\n// and synthesizing a minimal one from legacy fields otherwise. Returns\n// `null` when the rejection is not a policy/invariant decline.\n// - `dispatchDeclineEvent(decline, appId?)` -- in a browser, fires the\n// `bounded:decline` CustomEvent the hosted widget listens to. Fire-and-\n// forget: guarded for non-browser/SSR, never throws, never delays the throw.\n// ---------------------------------------------------------------------------\nconst RULE_DEFAULT_MESSAGE = 'This write is not allowed by policy.';\nconst INVARIANT_DEFAULT_MESSAGE = 'This write would violate a proven invariant.';\n/** The window event the hosted widget listens to for rendering a decline card. */\nexport const DECLINE_EVENT_NAME = 'bounded:decline';\n/**\n * Normalize a server rejection body into a structured `BoundedDecline`, or\n * `null` when the rejection is not a policy/invariant decline.\n *\n * Prefers a backend-sent `decline` object verbatim; otherwise synthesizes a\n * minimal `{ verdict, reason, invariant?, message }` from the legacy envelope\n * (`verdict` / `reason` / `code` / `invariant`). Only strong signals count —\n * a bare 403/409 with no policy marker is left alone (returns `null`).\n */\nexport function deriveDecline(body, status) {\n if (!body || typeof body !== 'object')\n return null;\n // Trust a backend-sent structured decline verbatim.\n const provided = body.decline;\n if (provided && typeof provided === 'object' && provided.verdict === 'declined') {\n return provided;\n }\n const rawReason = body.reason;\n const code = body.code;\n const hasInvariant = body.invariant != null;\n let reason = rawReason === 'rule' || rawReason === 'invariant' ? rawReason : undefined;\n if (!reason) {\n if (code === 'invariant_violation' || hasInvariant)\n reason = 'invariant';\n else if (code === 'policy_denied')\n reason = 'rule';\n }\n const isDecline = body.verdict === 'declined' || reason === 'rule' || reason === 'invariant';\n if (!isDecline)\n return null;\n const resolvedReason = reason !== null && reason !== void 0 ? reason : (status === 409 ? 'invariant' : 'rule');\n const rawMessage = body.message;\n const message = typeof rawMessage === 'string' && rawMessage.length > 0\n ? rawMessage\n : resolvedReason === 'invariant'\n ? INVARIANT_DEFAULT_MESSAGE\n : RULE_DEFAULT_MESSAGE;\n const decline = { verdict: 'declined', reason: resolvedReason, message };\n if (hasInvariant)\n decline.invariant = body.invariant;\n if (typeof body.collection === 'string')\n decline.collection = body.collection;\n if (typeof body.op === 'string')\n decline.op = body.op;\n if (body.boundary && typeof body.boundary === 'object')\n decline.boundary = body.boundary;\n if (typeof body.provenAtDeploy === 'boolean')\n decline.provenAtDeploy = body.provenAtDeploy;\n return decline;\n}\n/**\n * In a browser, dispatch a `bounded:decline` CustomEvent for the surfaced\n * decline. Fire-and-forget: guarded for non-browser/SSR (no `window`/\n * `CustomEvent`), never throws, and never delays the rejection it accompanies.\n */\nexport function dispatchDeclineEvent(decline, appId) {\n try {\n if (typeof window === 'undefined')\n return;\n const Ctor = globalThis.CustomEvent;\n if (typeof Ctor !== 'function')\n return;\n const detail = Object.assign({}, decline);\n if (appId)\n detail.appId = appId;\n detail.at = Date.now();\n window.dispatchEvent(new Ctor(DECLINE_EVENT_NAME, { detail }));\n }\n catch (_a) {\n // Fire-and-forget: a widget/telemetry hiccup must never mask the decline.\n }\n}\n/**\n * A rejected write that violated a proven policy rule or invariant. Thrown by\n * the data-plane write paths (set/setMany/update/delete) in place of a bare\n * Error, and attached (as `.decline`) to live-intent rejections.\n *\n * Back-compatible: the full server envelope (code/status/statusCode/requestId/\n * ...) is copied onto the instance, so existing `catch` handlers keep working;\n * new code reads `.decline`. Detect it with `err.name === 'BoundedDeclineError'`\n * or the bundle-copy-safe `err.isBoundedDecline === true`.\n */\nexport class BoundedDeclineError extends Error {\n constructor(decline, envelope) {\n super(`Declined: ${decline.message}`);\n // Copy the legacy envelope FIRST, then re-assert our own fields so a\n // stray envelope key can never clobber name/message/decline/flag.\n if (envelope && typeof envelope === 'object')\n Object.assign(this, envelope);\n this.name = 'BoundedDeclineError';\n this.message = `Declined: ${decline.message}`;\n this.decline = decline;\n this.isBoundedDecline = true;\n }\n}\n","import axios from \"axios\";\nimport axiosRetry from \"axios-retry\";\nimport { getConfig } from \"../client/config\";\nimport { createAuthHeader, getRefreshToken, getSessionIssuer, updateIdTokenAndAccessToken, } from \"../utils/utils\";\nimport { refreshSession } from \"../utils/auth-api\";\nimport { deriveDecline, dispatchDeclineEvent, BoundedDeclineError } from \"../client/decline\";\nconst apiClient = axios.create();\nconst TRANSIENT_GET_STATUSES = new Set([500, 502, 503, 504]);\nconst RATE_LIMIT_RETRY_BASE_DELAY_MS = 100;\n/** The window event emitted when the API responds with HTTP 429. */\nexport const RATE_LIMIT_EVENT_NAME = 'bounded:ratelimit';\n/** Dispatch a rate-limit event without affecting request error handling. */\nexport function dispatchRateLimitEvent(detail) {\n try {\n if (typeof window === 'undefined')\n return;\n const Ctor = globalThis.CustomEvent;\n if (typeof Ctor !== 'function')\n return;\n window.dispatchEvent(new Ctor(RATE_LIMIT_EVENT_NAME, {\n detail: Object.assign(Object.assign({}, detail), { at: Date.now() }),\n }));\n }\n catch (_a) {\n // Fire-and-forget: event consumers must never delay or mask the request.\n }\n}\nfunction getRateLimitEventDetail(error, attempt, willRetry) {\n var _a, _b;\n const endpoint = typeof ((_a = error.config) === null || _a === void 0 ? void 0 : _a.url) === 'string' ? error.config.url : '';\n let path = endpoint;\n try {\n const parsed = new URL(endpoint);\n path = `${parsed.pathname}${parsed.search}`;\n }\n catch (_c) {\n // Keep a relative or otherwise non-standard endpoint as-is.\n }\n const responseBody = (_b = error.response) === null || _b === void 0 ? void 0 : _b.data;\n const body = responseBody && typeof responseBody === 'object' && !Array.isArray(responseBody)\n ? responseBody\n : responseBody == null\n ? {}\n : { message: String(responseBody) };\n return Object.assign(Object.assign({}, body), { endpoint,\n path, status: 429, attempt,\n willRetry });\n}\nfunction getRateLimitAttempt(error) {\n var _a, _b;\n const retryCount = (_b = (_a = error.config) === null || _a === void 0 ? void 0 : _a['axios-retry']) === null || _b === void 0 ? void 0 : _b.retryCount;\n return typeof retryCount === 'number' ? retryCount + 1 : 1;\n}\naxiosRetry(apiClient, {\n retries: 2,\n retryCondition: (error) => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n // A caller cancellation is final. In particular, never turn a route\n // unmount into a fresh GET after its AbortSignal has fired.\n const canceled = axios.isCancel(error)\n || error.code === 'ERR_CANCELED'\n || ((_b = (_a = error.config) === null || _a === void 0 ? void 0 : _a.signal) === null || _b === void 0 ? void 0 : _b.aborted);\n if (canceled) {\n if (((_c = error.response) === null || _c === void 0 ? void 0 : _c.status) === 429) {\n dispatchRateLimitEvent(getRateLimitEventDetail(error, getRateLimitAttempt(error), false));\n }\n return false;\n }\n // A 429 means the server did not execute the request, so retrying is\n // safe for every method, including POST requests to the queries API.\n if (((_d = error.response) === null || _d === void 0 ? void 0 : _d.status) === 429)\n return true;\n // Only retry idempotent GETs. Network failures and the small set of\n // conventional transient gateway/runtime statuses get two bounded\n // retries; auth, policy, invariant, and other terminal responses stay final.\n // Writes are never retried because the server may already have applied\n // them before the response was lost.\n if (((_f = (_e = error.config) === null || _e === void 0 ? void 0 : _e.method) === null || _f === void 0 ? void 0 : _f.toLowerCase()) !== 'get')\n return false;\n return axiosRetry.isNetworkError(error)\n || TRANSIENT_GET_STATUSES.has((_h = (_g = error.response) === null || _g === void 0 ? void 0 : _g.status) !== null && _h !== void 0 ? _h : 0);\n },\n retryDelay: (retryCount, error) => {\n var _a;\n if (((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 429) {\n const exponentialCap = RATE_LIMIT_RETRY_BASE_DELAY_MS * (2 ** retryCount);\n return Math.floor(Math.random() * exponentialCap);\n }\n return axiosRetry.exponentialDelay(retryCount, error);\n },\n shouldResetTimeout: true,\n onRetry: (retryCount, error, requestConfig) => {\n var _a, _b, _c;\n if (((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 429) {\n dispatchRateLimitEvent(getRateLimitEventDetail(error, retryCount, !((_b = requestConfig.signal) === null || _b === void 0 ? void 0 : _b.aborted)));\n }\n console.warn(`[bounded-sdk] retry ${retryCount} for ${(_c = requestConfig.method) === null || _c === void 0 ? void 0 : _c.toUpperCase()} ${requestConfig.url} - ${error.code || error.message}`);\n },\n onMaxRetryTimesExceeded: (error, retryCount) => {\n var _a;\n if (((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 429) {\n dispatchRateLimitEvent(getRateLimitEventDetail(error, retryCount + 1, false));\n }\n },\n});\nconst refreshInFlight = new Map();\nasync function refreshAuthSessionOnce(appId, isServer) {\n const key = `${isServer ? \"server\" : \"web\"}:${appId}`;\n const existing = refreshInFlight.get(key);\n if (existing) {\n return existing;\n }\n const refreshPromise = (async () => {\n var _a, _b;\n try {\n const refreshToken = await getRefreshToken(isServer);\n if (!refreshToken) {\n return false;\n }\n const refreshData = await refreshSession(refreshToken, getSessionIssuer(isServer));\n if (!(refreshData === null || refreshData === void 0 ? void 0 : refreshData.idToken) || !(refreshData === null || refreshData === void 0 ? void 0 : refreshData.accessToken)) {\n return false;\n }\n await updateIdTokenAndAccessToken(refreshData.idToken, refreshData.accessToken, isServer, \n // Persist the ROTATED refresh token — the old one is single-use spent.\n refreshData.refreshToken);\n return true;\n }\n catch (error) {\n if (!isServer && (((_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.status) === 401 || ((_b = error === null || error === void 0 ? void 0 : error.response) === null || _b === void 0 ? void 0 : _b.status) === 403)) {\n const { getActiveSessionManager } = await import(\"../utils/session-manager\");\n getActiveSessionManager().clearSession();\n }\n return false;\n }\n finally {\n refreshInFlight.delete(key);\n }\n })();\n refreshInFlight.set(key, refreshPromise);\n return refreshPromise;\n}\nexport async function makeApiRequest(method, urlPath, data, _overrides) {\n var _a, _b, _c, _d, _e, _f;\n const config = await getConfig();\n async function executeRequest() {\n var _a;\n // When _getAuthHeaders is provided (wallet client), use it as the sole auth source.\n // Otherwise use the global createAuthHeader (default path).\n const authHeader = (_overrides === null || _overrides === void 0 ? void 0 : _overrides._getAuthHeaders)\n ? await _overrides._getAuthHeaders()\n : await createAuthHeader(config.isServer);\n const headers = Object.assign({ \"Content-Type\": \"application/json\", \"X-App-Id\": config.appId }, authHeader);\n // Apply custom headers from _overrides\n if (_overrides === null || _overrides === void 0 ? void 0 : _overrides.headers) {\n Object.assign(headers, _overrides.headers);\n }\n // Writes (PUT/POST/DELETE) can take significantly longer than reads —\n // server-side they may trigger ad-hoc LUT creation (create + extend +\n // wait-for-finalization, ~15-30s on mainnet). Use a larger default for\n // non-GET so the SDK doesn't time out before client-api responds.\n const isRead = method.toUpperCase() === \"GET\";\n const defaultTimeout = isRead ? 30000 : 90000;\n const requestConfig = {\n method,\n url: `${config.apiUrl}${urlPath.startsWith(\"/\") ? urlPath : `/${urlPath}`}`,\n headers,\n timeout: (_a = _overrides === null || _overrides === void 0 ? void 0 : _overrides.timeout) !== null && _a !== void 0 ? _a : defaultTimeout,\n signal: _overrides === null || _overrides === void 0 ? void 0 : _overrides.signal,\n };\n if (method !== \"GET\" && method !== \"get\") {\n requestConfig.data = data ? JSON.stringify(data) : {};\n }\n const response = await apiClient(requestConfig);\n return { data: response.data, status: response.status, headers: response.headers };\n }\n try {\n return await executeRequest();\n }\n catch (error) {\n if (((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401) {\n // Wallet client path: use client-specific retry, skip global fallback entirely\n if (_overrides === null || _overrides === void 0 ? void 0 : _overrides._clearAuth) {\n await _overrides._clearAuth();\n return await executeRequest();\n // If this throws, let it propagate — do NOT clear global ServerSessionManager\n }\n // Default path (no wallet client): refresh global session\n try {\n const refreshed = await refreshAuthSessionOnce(config.appId, config.isServer);\n if (!refreshed) {\n throw new Error(\"Unable to refresh auth session\");\n }\n return await executeRequest();\n }\n catch (_g) {\n throw error;\n }\n }\n if (((_b = error.response) === null || _b === void 0 ? void 0 : _b.status) == 404) {\n return { data: null, status: 404 };\n }\n if ((_c = error.response) === null || _c === void 0 ? void 0 : _c.data) {\n const responseData = typeof error.response.data === 'object'\n ? error.response.data\n : { message: String(error.response.data) };\n const httpStatus = (_d = error.response) === null || _d === void 0 ? void 0 : _d.status;\n // A policy/invariant denial (403 rule / 409 invariant) is surfaced as\n // a first-class BoundedDeclineError carrying `.decline`; every other\n // failure stays a bare enriched Error (unchanged behavior).\n const decline = deriveDecline(responseData, httpStatus);\n const apiError = decline\n ? new BoundedDeclineError(decline)\n : new Error(responseData.message || error.message || 'Request failed');\n Object.assign(apiError, responseData);\n apiError.statusCode = httpStatus;\n // Surface the structured error envelope { code, status, requestId } so\n // callers can branch on the stable category (e.g.\n // `if (e.code === 'invariant_violation')`) without parsing the message.\n // `code` is a stable category ('policy_denied' | 'invariant_violation');\n // `status` is the HTTP status; `requestId` correlates with the decision log.\n apiError.code = (_e = responseData.code) !== null && _e !== void 0 ? _e : apiError.code;\n apiError.status = httpStatus !== null && httpStatus !== void 0 ? httpStatus : responseData.status;\n apiError.requestId = (_f = responseData.requestId) !== null && _f !== void 0 ? _f : apiError.requestId;\n if (decline) {\n // Re-assert decline-owned fields after the envelope copy, then\n // notify the browser widget. Fire-and-forget: never delays or\n // masks the throw.\n apiError.decline = decline;\n apiError.name = 'BoundedDeclineError';\n apiError.isBoundedDecline = true;\n apiError.message = `Declined: ${decline.message}`;\n dispatchDeclineEvent(decline, config.appId);\n }\n throw apiError;\n }\n throw error;\n }\n}\n","import { normalizeEvmAddress } from './evm-utils';\n/**\n * Selectors derived from the canonical BoundedRuntime signatures (BoundedTypes.sol):\n *\n * cast sig 'setDocuments(string,(string[],bool,(string,uint8,uint8,bytes)[])[])'\n * => 0x0827b094\n * cast sig 'setDocumentsAttested(string,(string[],bool,(string,uint8,uint8,bytes)[])[],(bytes32,uint256,uint256,uint8,bytes32,bytes32))'\n * => 0x87b111c4\n *\n * Keep the signatures beside the constants: changing either Solidity tuple is an\n * ABI break and must deliberately update these values and the Foundry goldens.\n */\nexport const BOUNDED_RUNTIME_SET_DOCUMENTS_SELECTOR = '0x0827b094';\nexport const BOUNDED_RUNTIME_SET_DOCUMENTS_ATTESTED_SELECTOR = '0x87b111c4';\nconst SET_DOCUMENTS_SELECTOR = BOUNDED_RUNTIME_SET_DOCUMENTS_SELECTOR.slice(2);\nconst SET_DOCUMENTS_ATTESTED_SELECTOR = BOUNDED_RUNTIME_SET_DOCUMENTS_ATTESTED_SELECTOR.slice(2);\nconst MAX_CALLDATA_BYTES = 1024 * 1024;\nconst MAX_ARRAY_ITEMS = 2048;\nconst BIGINT_ZERO = BigInt(0);\nconst BIGINT_ONE = BigInt(1);\nconst BIGINT_EIGHT = BigInt(8);\nconst SECP256K1_N = BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141');\nconst SECP256K1_HALF_N = BigInt('0x7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0');\nfunction hexBytes(raw) {\n if (typeof raw !== 'string' || !/^0x[0-9a-fA-F]*$/.test(raw) || raw.length % 2 !== 0) {\n throw new Error('EVM transaction calldata must be even-length 0x hex');\n }\n const hex = raw.slice(2);\n if (hex.length / 2 > MAX_CALLDATA_BYTES)\n throw new Error('EVM transaction calldata exceeds the client safety limit');\n const out = new Uint8Array(hex.length / 2);\n for (let i = 0; i < out.length; i++)\n out[i] = Number.parseInt(hex.slice(i * 2, i * 2 + 2), 16);\n return out;\n}\nclass AbiReader {\n constructor(bytes) {\n this.bytes = bytes;\n this.maxRead = 0;\n this.dynamicPayloadBytes = 0;\n this.utf8 = new TextDecoder('utf-8', { fatal: true, ignoreBOM: false });\n }\n range(offset, length, label) {\n if (!Number.isSafeInteger(offset) || !Number.isSafeInteger(length) || offset < 0 || length < 0 || offset + length > this.bytes.length) {\n throw new Error(`Malformed EVM setDocuments calldata (${label})`);\n }\n this.maxRead = Math.max(this.maxRead, offset + length);\n }\n word(offset, label) {\n this.range(offset, 32, label);\n let value = BIGINT_ZERO;\n for (let i = 0; i < 32; i++)\n value = (value << BIGINT_EIGHT) | BigInt(this.bytes[offset + i]);\n return value;\n }\n numberWord(offset, label, max = Number.MAX_SAFE_INTEGER) {\n const value = this.word(offset, label);\n if (value > BigInt(max))\n throw new Error(`Malformed EVM setDocuments calldata (${label} too large)`);\n return Number(value);\n }\n offset(base, wordOffset, min, label) {\n const relative = this.numberWord(wordOffset, `${label} offset`, this.bytes.length);\n if (relative < min || relative % 32 !== 0)\n throw new Error(`Malformed EVM setDocuments calldata (${label} offset)`);\n const absolute = base + relative;\n this.range(absolute, 0, label);\n return absolute;\n }\n dynamicBytes(at, label) {\n const length = this.numberWord(at, `${label} length`, MAX_CALLDATA_BYTES);\n this.dynamicPayloadBytes += length;\n // ABI offsets may alias. Cap the cumulative decoded payload so a malicious\n // 1 MB tail referenced by thousands of fields cannot amplify into a\n // multi-gigabyte allocation/UTF-8 decode in the wallet process.\n if (this.dynamicPayloadBytes > MAX_CALLDATA_BYTES) {\n throw new Error('Malformed EVM setDocuments calldata (dynamic payload amplification)');\n }\n const start = at + 32;\n const padded = Math.ceil(length / 32) * 32;\n this.range(start, padded, label);\n for (let i = start + length; i < start + padded; i++) {\n if (this.bytes[i] !== 0)\n throw new Error(`Malformed EVM setDocuments calldata (${label} padding)`);\n }\n return this.bytes.slice(start, start + length);\n }\n dynamicEnd(at, label) {\n const length = this.numberWord(at, `${label} length`, MAX_CALLDATA_BYTES);\n const end = at + 32 + Math.ceil(length / 32) * 32;\n this.range(at + 32, Math.ceil(length / 32) * 32, label);\n return end;\n }\n string(at, label) {\n try {\n return this.utf8.decode(this.dynamicBytes(at, label));\n }\n catch (_a) {\n throw new Error(`Malformed EVM setDocuments calldata (${label} utf8)`);\n }\n }\n finish() {\n if (this.maxRead !== this.bytes.length)\n throw new Error('Malformed EVM setDocuments calldata (unreferenced trailing bytes)');\n }\n}\nfunction assertCanonicalOffset(actual, expected, label) {\n if (actual !== expected)\n throw new Error(`Malformed EVM setDocuments calldata (${label} non-canonical offset)`);\n}\nfunction decodeStringArray(reader, at, label) {\n const count = reader.numberWord(at, `${label} count`, MAX_ARRAY_ITEMS);\n const head = at + 32;\n const min = count * 32;\n const out = [];\n let expectedTail = head + min;\n for (let i = 0; i < count; i++) {\n const itemAt = reader.offset(head, head + i * 32, min, `${label}[${i}]`);\n assertCanonicalOffset(itemAt, expectedTail, `${label}[${i}]`);\n out.push(reader.string(itemAt, `${label}[${i}]`));\n expectedTail = reader.dynamicEnd(itemAt, `${label}[${i}]`);\n }\n return { value: out, end: expectedTail };\n}\nfunction decodeFields(reader, at) {\n const count = reader.numberWord(at, 'fields count', MAX_ARRAY_ITEMS);\n const head = at + 32;\n const min = count * 32;\n const out = [];\n let expectedTail = head + min;\n for (let i = 0; i < count; i++) {\n const tuple = reader.offset(head, head + i * 32, min, `field[${i}]`);\n assertCanonicalOffset(tuple, expectedTail, `field[${i}]`);\n const nameAt = reader.offset(tuple, tuple, 128, `field[${i}].name`);\n assertCanonicalOffset(nameAt, tuple + 128, `field[${i}].name`);\n const name = reader.string(nameAt, `field[${i}].name`);\n const nameEnd = reader.dynamicEnd(nameAt, `field[${i}].name`);\n const ftype = reader.numberWord(tuple + 32, `field[${i}].ftype`, 255);\n const op = reader.numberWord(tuple + 64, `field[${i}].op`, 255);\n const valueAt = reader.offset(tuple, tuple + 96, 128, `field[${i}].value`);\n assertCanonicalOffset(valueAt, nameEnd, `field[${i}].value`);\n const value = reader.dynamicBytes(valueAt, `field[${i}].value`);\n expectedTail = reader.dynamicEnd(valueAt, `field[${i}].value`);\n out.push({ name, ftype, op, value });\n }\n return { value: out, end: expectedTail };\n}\nfunction decodeRuntimeWrite(rawData) {\n const bytes = hexBytes(rawData);\n if (bytes.length < 68)\n throw new Error('Malformed EVM setDocuments calldata');\n const selector = Array.from(bytes.slice(0, 4)).map((b) => b.toString(16).padStart(2, '0')).join('');\n const kind = selector === SET_DOCUMENTS_SELECTOR\n ? 'setDocuments'\n : selector === SET_DOCUMENTS_ATTESTED_SELECTOR\n ? 'setDocumentsAttested'\n : null;\n if (!kind)\n throw new Error('EVM transaction is not a supported BoundedRuntime document write');\n const reader = new AbiReader(bytes);\n reader.maxRead = 4;\n const args = 4;\n // ExternalCallAttestation is a fully-static six-word tuple and is therefore\n // expanded inline into the top-level head: 2 dynamic offsets + 6 words.\n const headBytes = kind === 'setDocumentsAttested' ? 256 : 64;\n const appAt = reader.offset(args, args, headBytes, 'appId');\n assertCanonicalOffset(appAt, args + headBytes, 'appId');\n const opsAt = reader.offset(args, args + 32, headBytes, 'ops');\n const appId = reader.string(appAt, 'appId');\n const appEnd = reader.dynamicEnd(appAt, 'appId');\n assertCanonicalOffset(opsAt, appEnd, 'ops');\n const count = reader.numberWord(opsAt, 'ops count', MAX_ARRAY_ITEMS);\n const head = opsAt + 32;\n const min = count * 32;\n const ops = [];\n let expectedTail = head + min;\n for (let i = 0; i < count; i++) {\n const tuple = reader.offset(head, head + i * 32, min, `op[${i}]`);\n assertCanonicalOffset(tuple, expectedTail, `op[${i}]`);\n const pathAt = reader.offset(tuple, tuple, 96, `op[${i}].path`);\n assertCanonicalOffset(pathAt, tuple + 96, `op[${i}].path`);\n const deleteWord = reader.numberWord(tuple + 32, `op[${i}].isDelete`, 1);\n const fieldsAt = reader.offset(tuple, tuple + 64, 96, `op[${i}].fields`);\n const path = decodeStringArray(reader, pathAt, `op[${i}].path`);\n assertCanonicalOffset(fieldsAt, path.end, `op[${i}].fields`);\n const fields = decodeFields(reader, fieldsAt);\n expectedTail = fields.end;\n ops.push({\n pathSegments: path.value,\n isDelete: deleteWord === 1,\n fields: fields.value,\n });\n }\n let attestation;\n if (kind === 'setDocumentsAttested') {\n const callsHash = reader.word(args + 64, 'attestation.callsHash');\n const nonce = reader.word(args + 96, 'attestation.nonce');\n const deadline = reader.word(args + 128, 'attestation.deadline');\n const v = reader.numberWord(args + 160, 'attestation.v', 255);\n const r = reader.word(args + 192, 'attestation.r');\n const s = reader.word(args + 224, 'attestation.s');\n if (v !== 27 && v !== 28)\n throw new Error('Malformed EVM setDocuments calldata (attestation.v must be 27 or 28)');\n if (r === BIGINT_ZERO || r >= SECP256K1_N)\n throw new Error('Malformed EVM setDocuments calldata (attestation.r is not canonical)');\n if (s === BIGINT_ZERO || s > SECP256K1_HALF_N)\n throw new Error('Malformed EVM setDocuments calldata (attestation.s is not canonical low-s)');\n attestation = { callsHash, nonce, deadline, v, r, s };\n }\n if (expectedTail !== bytes.length)\n throw new Error('Malformed EVM setDocuments calldata (unreferenced trailing bytes)');\n reader.finish();\n return Object.assign({ kind, appId, ops }, (attestation ? { attestation } : {}));\n}\n/**\n * Fail closed unless calldata is a byte-for-byte canonical ABI encoding of one\n * supported BoundedRuntime write. This is the defense used by direct signer\n * surfaces; the higher-level write validator below additionally binds app/ops.\n */\nexport function assertCanonicalBoundedRuntimeWriteCalldata(rawData) {\n decodeRuntimeWrite(rawData);\n}\nconst MAX_EVM_DOCUMENT_PATH_UTF8_BYTES = 1024;\nfunction canonicalUtf8ByteLength(value) {\n let bytes = 0;\n for (let i = 0; i < value.length; i++) {\n const unit = value.charCodeAt(i);\n if (unit <= 0x7f)\n bytes += 1;\n else if (unit <= 0x7ff)\n bytes += 2;\n else if (unit >= 0xd800 && unit <= 0xdbff) {\n const low = value.charCodeAt(++i);\n if (!(low >= 0xdc00 && low <= 0xdfff))\n throw new Error(`Invalid EVM write path: ${value}`);\n bytes += 4;\n }\n else if (unit >= 0xdc00 && unit <= 0xdfff) {\n throw new Error(`Invalid EVM write path: ${value}`);\n }\n else\n bytes += 3;\n }\n return bytes;\n}\nfunction normalizedPathSegments(path) {\n if (typeof path !== 'string' || path.length === 0 ||\n canonicalUtf8ByteLength(path) > MAX_EVM_DOCUMENT_PATH_UTF8_BYTES) {\n throw new Error(`Invalid EVM write path: ${path}`);\n }\n const segments = path.split('/');\n if (segments.length < 2 || segments.length % 2 !== 0 ||\n segments[0].startsWith('__') ||\n segments.some((s) => !s || s === '.' || s === '..' || /[\\\\\\u0000-\\u001f\\u007f]/.test(s))) {\n throw new Error(`Invalid EVM write path: ${path}`);\n }\n return segments;\n}\nfunction bytesBigInt(bytes, signed) {\n if (bytes.length !== 32)\n throw new Error('EVM field value is not one ABI word');\n let value = BIGINT_ZERO;\n for (const b of bytes)\n value = (value << BIGINT_EIGHT) | BigInt(b);\n if (signed && (value & (BIGINT_ONE << BigInt(255))) !== BIGINT_ZERO)\n value -= BIGINT_ONE << BigInt(256);\n return value;\n}\nfunction decodedAbiString(bytes) {\n const reader = new AbiReader(bytes);\n const at = reader.offset(0, 0, 32, 'field string');\n const value = reader.string(at, 'field string');\n reader.finish();\n return value;\n}\nfunction assertSetValue(field, expected) {\n if (field.op !== 0)\n throw new Error(`EVM field ${field.name} changes the requested SET action`);\n if (typeof expected === 'boolean') {\n if (field.ftype !== 3 || bytesBigInt(field.value, false) !== (expected ? BIGINT_ONE : BIGINT_ZERO))\n throw new Error(`EVM field ${field.name} value mismatch`);\n return;\n }\n if (typeof expected === 'number') {\n if (!Number.isFinite(expected))\n throw new Error(`EVM field ${field.name} is not finite`);\n if (Number.isInteger(expected)) {\n if (!Number.isSafeInteger(expected)) {\n throw new Error(`EVM field ${field.name} integer must be a safe number or canonical decimal string`);\n }\n const actual = field.ftype === 1 ? bytesBigInt(field.value, false) : field.ftype === 2 ? bytesBigInt(field.value, true) : null;\n if (actual === null || actual !== BigInt(expected))\n throw new Error(`EVM field ${field.name} value mismatch`);\n return;\n }\n if (field.ftype !== 4 || decodedAbiString(field.value) !== expected.toString())\n throw new Error(`EVM field ${field.name} value mismatch`);\n return;\n }\n if (typeof expected === 'bigint') {\n const actual = field.ftype === 1 ? bytesBigInt(field.value, false) : field.ftype === 2 ? bytesBigInt(field.value, true) : null;\n if (actual === null || actual !== expected)\n throw new Error(`EVM field ${field.name} value mismatch`);\n return;\n }\n if (typeof expected === 'string') {\n if (field.ftype === 4 && decodedAbiString(field.value) === expected)\n return;\n if ((field.ftype === 1 || field.ftype === 2) && expected.length <= 20 && /^-?(?:0|[1-9][0-9]*)$/.test(expected)) {\n const exact = BigInt(expected);\n if (exact >= BigInt(Number.MIN_SAFE_INTEGER) && exact <= BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new Error(`EVM field ${field.name} safe integer must be supplied as a number`);\n }\n const inRange = field.ftype === 1\n ? exact >= BIGINT_ZERO && exact <= ((BIGINT_ONE << BigInt(64)) - BIGINT_ONE)\n : exact >= -(BIGINT_ONE << BigInt(63)) && exact <= ((BIGINT_ONE << BigInt(63)) - BIGINT_ONE);\n const actual = bytesBigInt(field.value, field.ftype === 2);\n if (inRange && actual === exact)\n return;\n throw new Error(`EVM field ${field.name} value mismatch`);\n }\n if (field.ftype === 5 && normalizeEvmAddress(expected)) {\n const word = field.value;\n if (word.length === 32 && word.slice(0, 12).every((b) => b === 0)) {\n const actual = `0x${Array.from(word.slice(12)).map((b) => b.toString(16).padStart(2, '0')).join('')}`;\n if (actual === normalizeEvmAddress(expected))\n return;\n }\n }\n throw new Error(`EVM field ${field.name} value mismatch`);\n }\n if (expected === undefined || expected === null) {\n throw new Error(`EVM field ${field.name} cannot be represented safely on EVM; use a document delete or omit the field`);\n }\n const json = JSON.stringify(expected);\n if (typeof json !== 'string' || field.ftype !== 4 || decodedAbiString(field.value) !== json) {\n throw new Error(`EVM field ${field.name} value mismatch`);\n }\n}\nfunction assertField(field, expected) {\n if (expected === null) {\n if (field.op !== 2 || field.ftype < 1 || field.ftype > 5 || field.value.length !== 0) {\n throw new Error(`EVM field ${field.name} deletion mismatch`);\n }\n return;\n }\n if (expected && typeof expected === 'object' && !Array.isArray(expected)) {\n const operation = expected.operation;\n if (operation === 'increment') {\n const delta = expected.value;\n const actual = field.ftype === 1 || field.ftype === 2\n ? bytesBigInt(field.value, true)\n : null;\n if (!Number.isSafeInteger(delta) || field.op !== 3 || actual === null || actual !== BigInt(delta)) {\n throw new Error(`EVM field ${field.name} increment mismatch`);\n }\n return;\n }\n if (operation === 'time' && expected.value === 'now') {\n if (field.op !== 4 || (field.ftype !== 1 && field.ftype !== 2) || field.value.length !== 0) {\n throw new Error(`EVM field ${field.name} timestamp mismatch`);\n }\n return;\n }\n }\n assertSetValue(field, expected);\n}\nfunction assertOp(decoded, path, document) {\n const expectedSegments = normalizedPathSegments(path);\n if (decoded.pathSegments.length !== expectedSegments.length || decoded.pathSegments.some((s, i) => s !== expectedSegments[i])) {\n throw new Error(`EVM transaction path does not match requested write: ${path}`);\n }\n if (decoded.isDelete !== (document === null))\n throw new Error(`EVM transaction action does not match requested write: ${path}`);\n if (document === null) {\n if (decoded.fields.length !== 0)\n throw new Error(`EVM delete unexpectedly carries fields: ${path}`);\n return;\n }\n if (!document || typeof document !== 'object' || Array.isArray(document))\n throw new Error(`EVM document must be a plain object or null: ${path}`);\n const expectedEntries = Object.entries(document);\n if (expectedEntries.some(([name]) => name.startsWith('_')))\n throw new Error(`Reserved EVM field reached transaction validation: ${path}`);\n const expected = new Map(expectedEntries);\n const seen = new Set();\n for (const field of decoded.fields) {\n if (!field.name || seen.has(field.name) || !expected.has(field.name))\n throw new Error(`EVM transaction contains unexpected or duplicate field ${field.name}`);\n seen.add(field.name);\n assertField(field, expected.get(field.name));\n }\n const missing = [...expected.keys()].filter((name) => !seen.has(name));\n if (missing.length > 0)\n throw new Error(`EVM transaction omits requested fields: ${missing.join(', ')}`);\n}\nfunction zeroWei(raw) {\n if (raw === undefined || raw === null || raw === '')\n return true;\n if (typeof raw !== 'string' && typeof raw !== 'number')\n return false;\n try {\n return BigInt(raw) === BIGINT_ZERO;\n }\n catch (_a) {\n return false;\n }\n}\n/** Verify the untrusted 202 payload is exactly the governed write the app asked for. */\nexport function assertEvmTransactionMatchesWrite(transaction, context) {\n var _a, _b;\n if (!transaction || !Number.isSafeInteger(transaction.chainId) || transaction.chainId <= 0) {\n throw new Error('EVM transaction chainId is required');\n }\n const chainId = transaction.chainId;\n const policy = context.policy;\n if (!policy)\n throw new Error('EVM transaction signing requires an explicit runtime/chain policy');\n if (policy.chainId !== undefined && policy.chainId !== chainId)\n throw new Error(`EVM transaction chain ${chainId} does not match configured chain ${policy.chainId}`);\n const expectedRuntime = (_b = (_a = policy.runtimeAddresses) === null || _a === void 0 ? void 0 : _a[String(chainId)]) !== null && _b !== void 0 ? _b : (policy.chainId === chainId ? policy.runtimeAddress : undefined);\n const normalizedRuntime = normalizeEvmAddress(expectedRuntime);\n if (!normalizedRuntime)\n throw new Error(`No trusted BoundedRuntime address configured for EVM chain ${chainId}`);\n if (normalizeEvmAddress(transaction.to) !== normalizedRuntime)\n throw new Error('EVM transaction target is not the configured BoundedRuntime');\n if (!zeroWei(transaction.value))\n throw new Error('BoundedRuntime.setDocuments must not transfer native value');\n if (transaction.nonce !== undefined)\n throw new Error('Server-supplied EVM nonce is not accepted');\n const decoded = decodeRuntimeWrite(transaction.data);\n if (decoded.appId !== context.appId)\n throw new Error('EVM transaction appId does not match configured appId');\n if (decoded.ops.length !== context.documents.length)\n throw new Error('EVM transaction operation count does not match requested writes');\n // The worker's contract ABI groups upserts first and document deletes second.\n const expectedOps = [\n ...context.documents.filter((entry) => entry.document !== null),\n ...context.documents.filter((entry) => entry.document === null),\n ];\n const paths = new Set();\n for (let i = 0; i < expectedOps.length; i++) {\n const expected = expectedOps[i];\n const canonicalPath = normalizedPathSegments(expected.destinationPath).join('/');\n if (paths.has(canonicalPath))\n throw new Error(`Duplicate EVM write path is not allowed: ${canonicalPath}`);\n paths.add(canonicalPath);\n assertOp(decoded.ops[i], canonicalPath, expected.document);\n }\n}\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Buffer } from 'buffer';\nimport { makeApiRequest } from '../utils/api';\nimport { getConfig, isBoundedNetwork } from './config';\nimport { getIdToken } from '../utils/utils';\nimport { safeBtoa } from '../utils/core-platform';\nimport { assertEvmTransactionMatchesWrite } from '../utils/evm/evm-transaction-validation';\n/**\n * Thrown when a user's wallet doesn't have enough SOL to cover the transaction.\n * Apps can catch this to trigger an onramp/funding flow.\n */\nexport class InsufficientBalanceError extends Error {\n constructor(address, balanceLamports, estimatedCostLamports, deficitLamports, deficitSol) {\n super(`Insufficient balance: wallet ${address} needs ~${deficitSol.toFixed(6)} SOL more to complete this transaction.`);\n this.name = 'InsufficientBalanceError';\n this.address = address;\n this.balanceLamports = balanceLamports;\n this.estimatedCostLamports = estimatedCostLamports;\n this.deficitLamports = deficitLamports;\n this.deficitSol = deficitSol;\n }\n}\nconst getCache = {};\nconst pendingRequests = {};\n// Default cache TTL (500ms = 0.5 seconds)\nconst GET_CACHE_TTL = 500; // Adjust this value as needed (in milliseconds)\nfunction getReadCacheEntry(cacheKey, principalValue) {\n var _a;\n return (_a = getCache[cacheKey]) === null || _a === void 0 ? void 0 : _a.find(entry => entry.principalValue === principalValue);\n}\nfunction setReadCacheEntry(cacheKey, principalValue, data, expiresAt) {\n var _a;\n const bucket = (_a = getCache[cacheKey]) !== null && _a !== void 0 ? _a : [];\n const reusableEntries = bucket.filter(entry => (entry.principalValue !== principalValue && entry.expiresAt >= Date.now()));\n reusableEntries.push({ data, expiresAt, principalValue });\n getCache[cacheKey] = reusableEntries;\n}\n// Last time we cleaned up the cache\nlet lastCacheCleanup = Date.now();\nlet uncacheableReadKeyCounter = 0;\n/**\n * Return the leaf document key (last path segment) for a document path.\n *\n * Bounded rows carry `_id` (and `pathId`) set to the FULL document path\n * (e.g. `\"rooms/r1/prompts/8rd49se3sg\"`). Apps that build a child path from a\n * row naturally want the bare doc key, not the whole path — using the full path\n * doubles it (`rooms/r1/prompts/rooms/r1/prompts/8rd.../votes/...`) → 403/404.\n * `docId` extracts that leaf key. Tolerates leading slashes and a trailing `*`.\n *\n * @example docId(\"rooms/r1/prompts/8rd49se3sg\") // \"8rd49se3sg\"\n */\nexport function docId(path) {\n if (typeof path !== 'string')\n return '';\n let p = path.startsWith('/') ? path.slice(1) : path;\n if (p.endsWith('*') && p.length > 1)\n p = p.slice(0, -1);\n if (p.endsWith('/'))\n p = p.slice(0, -1);\n const segments = p.split('/').filter(Boolean);\n return segments.length ? segments[segments.length - 1] : '';\n}\n/**\n * Additively attach a convenience bare `id` (the leaf doc key) to a returned row.\n *\n * Rows already carry `_id`/`pathId` = the full document path; this leaves those\n * untouched and adds `id` = the last path segment so `row.id` is the doc key apps\n * expect. No-ops for non-objects, arrays, and rows that already define `id`\n * (never clobber a user field named `id`). Source for the leaf is `_id` (falling\n * back to `pathId`/`relativePath`/`absolutePath`).\n */\nfunction withBareId(row) {\n var _a, _b, _c;\n if (!row || typeof row !== 'object' || Array.isArray(row))\n return row;\n const r = row;\n if ('id' in r)\n return row; // don't clobber an explicit user field\n const source = (_c = (_b = (_a = r._id) !== null && _a !== void 0 ? _a : r.pathId) !== null && _b !== void 0 ? _b : r.relativePath) !== null && _c !== void 0 ? _c : r.absolutePath;\n if (typeof source !== 'string' || source.length === 0)\n return row;\n const leaf = docId(source);\n if (!leaf)\n return row;\n return Object.assign(Object.assign({}, r), { id: leaf });\n}\n/**\n * Normalize a raw read response from the worker into the SDK's stable shape and\n * attach the bare `id` to every returned row (Bug 1 + Bug 2).\n *\n * - Single-document path: returns EXACTLY ONE shape — the resolved document, or\n * `null` if missing (Firebase/Mongo convention). Unwraps the ambiguous\n * `{ data, status }` envelope the worker sometimes emits for a single doc so a\n * single-doc `get` never sometimes-returns the doc and sometimes the envelope.\n * - Collection path: preserves the `{ data, nextCursor, ... }` envelope and maps\n * the bare `id` onto each row in `data`.\n */\nfunction normalizeReadResult(responseData, pathIsDocument) {\n if (pathIsDocument) {\n let doc = responseData;\n // Unwrap the single-doc envelope `{ data, status }` (Bug 2). A real document\n // never has the exact shape `{ data, status }` with nothing else meaningful,\n // so detect the envelope by `data` + numeric `status` AND the absence of a\n // top-level `_id` (a real stored doc always carries `_id`/`pathId` from the\n // worker; the envelope wrapper does not). This avoids unwrapping a genuine\n // document that merely happens to own `data`/`status` fields.\n if (doc && typeof doc === 'object' && !Array.isArray(doc) &&\n 'data' in doc && 'status' in doc && typeof doc.status === 'number' &&\n !('_id' in doc) && !('pathId' in doc)) {\n doc = doc.data;\n }\n if (doc === undefined || doc === null)\n return null;\n return withBareId(doc);\n }\n // Collection read. The worker body is `{ data: rows[], nextCursor?, status? }`.\n if (responseData && typeof responseData === 'object' && !Array.isArray(responseData) && Array.isArray(responseData.data)) {\n return Object.assign(Object.assign({}, responseData), { data: responseData.data.map((row) => withBareId(row)) });\n }\n // Some paths return a bare array of rows — map id onto each.\n if (Array.isArray(responseData)) {\n return responseData.map((row) => withBareId(row));\n }\n return responseData;\n}\nfunction hashForKey(value) {\n let h = 5381;\n for (let i = 0; i < value.length; i++) {\n h = ((h << 5) + h + value.charCodeAt(i)) & 0x7fffffff;\n }\n return h.toString(36);\n}\n// Memoize the compact principal hash per exact credential string. Every read\n// hashed the entire (~1KB) bearer/idToken on every call; a session presents\n// the same handful of credentials for its lifetime. Bounded size — a rotation\n// simply inserts the new token and stale entries fall off on clear.\nconst principalHashCache = new Map();\nfunction hashForKeyCached(value) {\n const hit = principalHashCache.get(value);\n if (hit !== undefined)\n return hit;\n const h = hashForKey(value);\n if (principalHashCache.size >= 50)\n principalHashCache.clear();\n principalHashCache.set(value, h);\n return h;\n}\nfunction hasAuthHeader(headers) {\n if (!headers)\n return false;\n return (Object.prototype.hasOwnProperty.call(headers, 'Authorization') ||\n Object.prototype.hasOwnProperty.call(headers, 'authorization'));\n}\nfunction authValueFromHeaders(headers) {\n return (headers === null || headers === void 0 ? void 0 : headers.Authorization) || (headers === null || headers === void 0 ? void 0 : headers.authorization) || '';\n}\nfunction principalFromAuthValue(authValue) {\n return authValue ? `h${hashForKeyCached(authValue)}` : null;\n}\nfunction principalFromIdToken(idToken) {\n return idToken ? `t${hashForKeyCached(idToken)}` : null;\n}\nfunction uncacheableReadKey(appId, scope) {\n uncacheableReadKeyCounter += 1;\n return `${appId}:${scope}-uncacheable-${uncacheableReadKeyCounter}`;\n}\n/**\n * SECURITY (H1): Read caches must be keyed by the caller's principal, not just\n * by path/filter/shape. In a shared process / SSR worker / browser login-switch,\n * keying by path alone lets User B receive User A's cached private read before\n * any server read rule runs. This returns `appId:<principal>` for the opaque\n * auth material a given read will actually authenticate with. No-auth reads are\n * deliberately marked uncacheable instead of sharing an implicit `anon` bucket.\n * JWTs are intentionally treated as opaque unverified bearer material — never\n * decoded claims and never caller identity hints such as `_walletAddress`.\n */\nasync function getReadPrincipalKey(overrides) {\n const config = await getConfig();\n const appId = config.appId || '';\n // makeApiRequest applies overrides.headers AFTER its computed auth header, so\n // caller-supplied Authorization is the real request auth when present.\n if (hasAuthHeader(overrides === null || overrides === void 0 ? void 0 : overrides.headers)) {\n const authValue = authValueFromHeaders(overrides === null || overrides === void 0 ? void 0 : overrides.headers);\n const principal = principalFromAuthValue(authValue);\n return principal\n ? { key: `${appId}:${principal}`, cacheable: true, principalValue: authValue }\n : { key: uncacheableReadKey(appId, 'h'), cacheable: false, principalValue: null };\n }\n // Per-request auth-header override (wallet client). Key by the exact opaque\n // header it produces, not decoded claims or the unverified _walletAddress hint.\n if (overrides === null || overrides === void 0 ? void 0 : overrides._getAuthHeaders) {\n try {\n const headers = await overrides._getAuthHeaders();\n const authValue = authValueFromHeaders(headers);\n const principal = principalFromAuthValue(authValue);\n return principal\n ? { key: `${appId}:o${principal}`, cacheable: true, principalValue: authValue }\n : { key: uncacheableReadKey(appId, 'o'), cacheable: false, principalValue: null };\n }\n catch (_a) {\n // If we can't resolve the override identity, do not read/write cache.\n return { key: uncacheableReadKey(appId, 'o'), cacheable: false, principalValue: null };\n }\n }\n // Ambient session principal.\n const idToken = await getIdToken(config.isServer);\n const principal = principalFromIdToken(idToken);\n return principal\n ? { key: `${appId}:${principal}`, cacheable: true, principalValue: idToken !== null && idToken !== void 0 ? idToken : null }\n : { key: uncacheableReadKey(appId, 'a'), cacheable: false, principalValue: null };\n}\n/**\n * Validates that a field name is a safe identifier (alphanumeric, underscores, dots for nested paths).\n * Prevents prompt injection via crafted field names.\n */\nfunction validateFieldName(field) {\n if (!/^[a-zA-Z0-9_.]+$/.test(field)) {\n throw new Error(`Invalid field name \"${field}\". Field names must only contain letters, numbers, underscores, and dots.`);\n }\n}\n/**\n * Parses a raw aggregation result (e.g. [{ count: 42 }] or [{ _id: null, total: 100 }])\n * into a single numeric value.\n */\nfunction parseAggregateValue(result) {\n if (typeof result === 'number')\n return result;\n if (Array.isArray(result)) {\n if (result.length === 0)\n return 0;\n // Multiple elements — not a collapsed aggregate result\n if (result.length > 1) {\n throw new Error(`Unexpected aggregate result: got array with ${result.length} elements. The AI may have returned full documents instead of an aggregation.`);\n }\n const first = result[0];\n if (typeof first === 'number')\n return first;\n if (first && typeof first === 'object') {\n // $count stage returns { count: N }\n if (typeof first.count === 'number')\n return first.count;\n // $group stage returns { _id: null, result: N } — expect _id + one numeric field\n const numericEntries = Object.entries(first).filter(([key, val]) => key !== '_id' && typeof val === 'number');\n if (numericEntries.length === 1)\n return numericEntries[0][1];\n }\n // Avoid leaking document contents into error messages\n const shape = first && typeof first === 'object' ? `{${Object.keys(first).join(', ')}}` : String(first);\n throw new Error(`Unexpected aggregate result shape: ${shape}. Expected {count: N} or {_id: null, <field>: N}.`);\n }\n if (result && typeof result === 'object' && typeof result.count === 'number') {\n return result.count;\n }\n throw new Error(`Unexpected aggregate result type: ${typeof result}. Expected a number, array, or object with a count field.`);\n}\n/**\n * Count items in a collection path. Returns a numeric result.\n *\n * This uses the AI query engine with a count-specific prompt prefix,\n * so Bounded will generate a $count aggregation pipeline and return\n * just the count rather than full documents.\n *\n * IMPORTANT: This only works for collections where the read policy is \"true\".\n * If the read policy requires per-document checks, the server will return\n * an error because aggregate counts cannot be performed without pulling all\n * documents for access control evaluation.\n *\n * @param path - Collection path (e.g., \"posts\", \"users/abc/comments\")\n * @param opts - Optional filter prompt and overrides\n * @returns AggregateResult with the count value\n */\nexport async function count(path, opts = {}) {\n var _a, _b;\n // On Bounded, the worker has no AI query engine — a prompt-based count returns\n // the raw documents, not an aggregation. Use the deterministic server\n // aggregation (queryAggregate) instead.\n if (isBoundedNetwork()) {\n const rows = await queryAggregate(path, { count: true }, { filter: opts.filter, _overrides: opts._overrides });\n return { value: (_b = (_a = rows[0]) === null || _a === void 0 ? void 0 : _a.count) !== null && _b !== void 0 ? _b : 0 };\n }\n const prefix = 'Return ONLY the total count of matching documents. Use the $count stage to produce a field named \"count\". Do NOT return the documents themselves.';\n const fullPrompt = opts.prompt\n ? `${prefix} Filter: ${opts.prompt}`\n : prefix;\n const result = await get(path, { prompt: fullPrompt, bypassCache: true, _overrides: opts._overrides });\n return { value: parseAggregateValue(result) };\n}\n/**\n * Bounded-native implementation of `aggregate`: map the single-scalar operation\n * onto the deterministic `queryAggregate` server aggregation and pull the value\n * out of the (single, ungrouped) result row. Empty collection → 0.\n */\nasync function boundedAggregate(path, operation, opts) {\n var _a, _b, _c;\n const qopts = { filter: opts.filter, _overrides: opts._overrides };\n if (operation === 'count') {\n const rows = await queryAggregate(path, { count: true }, qopts);\n return (_b = (_a = rows[0]) === null || _a === void 0 ? void 0 : _a.count) !== null && _b !== void 0 ? _b : 0;\n }\n if (!opts.field)\n throw new Error(`aggregate \"${operation}\" requires a field option`);\n validateFieldName(opts.field);\n if (operation === 'uniqueCount') {\n // distinct values = number of groups when grouping by the field.\n const rows = await queryAggregate(path, { groupBy: [opts.field] }, qopts);\n return rows.length;\n }\n // sum / avg / min / max → one bucket keyed by the field on the single row.\n const rows = await queryAggregate(path, { [operation]: [opts.field] }, qopts);\n const bucket = (_c = rows[0]) === null || _c === void 0 ? void 0 : _c[operation];\n const v = bucket === null || bucket === void 0 ? void 0 : bucket[opts.field];\n return typeof v === 'number' ? v : 0;\n}\n/**\n * Run an aggregate operation on a collection path. Returns a numeric result.\n *\n * Supported operations:\n * - count: Total number of documents\n * - uniqueCount: Number of distinct values for a field\n * - sum: Sum of a numeric field\n * - avg: Average of a numeric field\n * - min: Minimum value of a numeric field\n * - max: Maximum value of a numeric field\n *\n * IMPORTANT: This only works for collections where the read policy is \"true\".\n * If the read policy requires per-document checks, the server will return\n * an error because aggregate operations cannot be performed without pulling\n * all documents for access control evaluation.\n *\n * @param path - Collection path (e.g., \"posts\", \"users/abc/comments\")\n * @param operation - The aggregate operation to perform\n * @param opts - Options including optional filter prompt and field name\n * @returns AggregateResult with the computed numeric value\n */\nexport async function aggregate(path, operation, opts = {}) {\n // On Bounded, route through the deterministic server aggregation — the legacy\n // AI-prompt path returns raw documents on the worker (no AI query engine).\n if (isBoundedNetwork()) {\n return { value: await boundedAggregate(path, operation, opts) };\n }\n let prefix;\n switch (operation) {\n case 'count':\n prefix = 'Return ONLY the total count of matching documents. Use the $count stage to produce a field named \"count\". Do NOT return the documents themselves.';\n break;\n case 'uniqueCount':\n if (!opts.field)\n throw new Error('aggregate \"uniqueCount\" requires a field option');\n validateFieldName(opts.field);\n prefix = `Return ONLY the count of unique/distinct values of the \"${opts.field}\" field. Use $group with _id set to \"$${opts.field}\" then $count to produce a field named \"count\". Do NOT return the documents themselves.`;\n break;\n case 'sum':\n if (!opts.field)\n throw new Error('aggregate \"sum\" requires a field option');\n validateFieldName(opts.field);\n prefix = `Return ONLY the sum of the \"${opts.field}\" field across all matching documents. Use $group with _id: null and result: { $sum: \"$${opts.field}\" }. Do NOT return the documents themselves.`;\n break;\n case 'avg':\n if (!opts.field)\n throw new Error('aggregate \"avg\" requires a field option');\n validateFieldName(opts.field);\n prefix = `Return ONLY the average of the \"${opts.field}\" field across all matching documents. Use $group with _id: null and result: { $avg: \"$${opts.field}\" }. Do NOT return the documents themselves.`;\n break;\n case 'min':\n if (!opts.field)\n throw new Error('aggregate \"min\" requires a field option');\n validateFieldName(opts.field);\n prefix = `Return ONLY the minimum value of the \"${opts.field}\" field across all matching documents. Use $group with _id: null and result: { $min: \"$${opts.field}\" }. Do NOT return the documents themselves.`;\n break;\n case 'max':\n if (!opts.field)\n throw new Error('aggregate \"max\" requires a field option');\n validateFieldName(opts.field);\n prefix = `Return ONLY the maximum value of the \"${opts.field}\" field across all matching documents. Use $group with _id: null and result: { $max: \"$${opts.field}\" }. Do NOT return the documents themselves.`;\n break;\n default:\n throw new Error(`Unsupported aggregate operation: ${operation}`);\n }\n const fullPrompt = opts.prompt\n ? `${prefix} Filter: ${opts.prompt}`\n : prefix;\n const result = await get(path, { prompt: fullPrompt, bypassCache: true, _overrides: opts._overrides });\n // For uniqueCount, the AI may return $group results without the final $count\n // stage, producing [{_id: \"val1\"}, {_id: \"val2\"}, ...]. Verify elements look\n // like $group output (only _id key) before using array length as the count.\n if (operation === 'uniqueCount' && Array.isArray(result) && result.length > 1) {\n const looksLikeGroupOutput = result.every((el) => el && typeof el === 'object' && Object.keys(el).length === 1 && '_id' in el);\n if (looksLikeGroupOutput) {\n return { value: result.length };\n }\n throw new Error(`Unexpected uniqueCount result: got ${result.length} elements that don't match $group output shape.`);\n }\n return { value: parseAggregateValue(result) };\n}\n/**\n * Structured, grouped aggregation over a collection. Returns one row per group\n * (or a single row when `spec.groupBy` is omitted). Read rules are enforced — the\n * aggregation only sees documents the caller can read.\n *\n * ```ts\n * const byCat = await queryAggregate(\"spend\", { groupBy: [\"category\"], count: true, sum: [\"amount\"] });\n * // [{ group: { category: \"food\" }, count: 2, sum: { amount: 70 } }, ...]\n * ```\n */\nexport async function queryAggregate(path, spec, opts = {}) {\n var _a, _b, _c, _d, _e;\n let normalizedPath = path.startsWith(\"/\") ? path.slice(1) : path;\n if (normalizedPath.endsWith(\"*\") && normalizedPath.length > 1) {\n normalizedPath = normalizedPath.slice(0, -1);\n }\n if (!normalizedPath || normalizedPath.length === 0) {\n throw new Error(\"Invalid path provided.\");\n }\n // Validate every referenced field name to prevent injection via crafted keys.\n // Each of these takes an ARRAY of field names — catch the common mistake of\n // passing an object/string (e.g. `sum: { field: \"n\" }`) with a clear error\n // instead of a cryptic \"list is not iterable\" from the for-of below.\n for (const key of ['groupBy', 'sum', 'avg', 'min', 'max']) {\n const list = spec[key];\n if (list == null)\n continue;\n if (!Array.isArray(list)) {\n throw new Error(`queryAggregate: spec.${key} must be an array of field names ` +\n `(e.g. ${key}: [\"amount\"]), got ${typeof list}`);\n }\n for (const f of list)\n validateFieldName(f);\n }\n const cleanSpec = {};\n if ((_a = spec.groupBy) === null || _a === void 0 ? void 0 : _a.length)\n cleanSpec.groupBy = spec.groupBy;\n if (spec.count)\n cleanSpec.count = true;\n if ((_b = spec.sum) === null || _b === void 0 ? void 0 : _b.length)\n cleanSpec.sum = spec.sum;\n if ((_c = spec.avg) === null || _c === void 0 ? void 0 : _c.length)\n cleanSpec.avg = spec.avg;\n if ((_d = spec.min) === null || _d === void 0 ? void 0 : _d.length)\n cleanSpec.min = spec.min;\n if ((_e = spec.max) === null || _e === void 0 ? void 0 : _e.length)\n cleanSpec.max = spec.max;\n const aggParam = `&aggregate=${encodeURIComponent(JSON.stringify(cleanSpec))}`;\n const filterParam = opts.filter ? `&filter=${encodeURIComponent(JSON.stringify(opts.filter))}` : '';\n const apiPath = `items?path=${encodeURIComponent(normalizedPath)}${aggParam}${filterParam}`;\n const response = await makeApiRequest('GET', apiPath, null, opts._overrides);\n const body = response.data;\n // Worker returns { data: AggregateRow[], nextCursor, status } for aggregate queries.\n if (Array.isArray(body))\n return body;\n if (body && Array.isArray(body.data))\n return body.data;\n return [];\n}\n/**\n * Full-text search a collection declared with `search: { fields: [...] }`.\n *\n * The match runs over the collection's indexed fields (or the subset passed in\n * `opts.fields`) and respects each document's `read` rule — results the caller\n * cannot read are omitted. Returns the matching documents (optionally paged via\n * `opts.limit`/`opts.cursor`).\n *\n * @param path Collection path, e.g. \"orgs/o1/docs\"\n * @param query Free-text query string (non-empty)\n */\nexport async function search(path, query, opts = {}) {\n let normalizedPath = path.startsWith(\"/\") ? path.slice(1) : path;\n if (normalizedPath.endsWith(\"*\") && normalizedPath.length > 1) {\n normalizedPath = normalizedPath.slice(0, -1);\n }\n if (!normalizedPath || normalizedPath.length === 0) {\n throw new Error(\"Invalid path provided.\");\n }\n if (typeof query !== \"string\" || query.trim().length === 0) {\n throw new Error(\"search query must be a non-empty string\");\n }\n if (opts.fields) {\n for (const f of opts.fields)\n validateFieldName(f);\n }\n const spec = { query };\n if (opts.fields && opts.fields.length > 0)\n spec.fields = opts.fields;\n const searchParam = `&search=${encodeURIComponent(JSON.stringify(spec))}`;\n const limitParam = opts.limit !== undefined ? `&limit=${opts.limit}` : '';\n const cursorParam = opts.cursor ? `&cursor=${encodeURIComponent(opts.cursor)}` : '';\n const apiPath = `items?path=${encodeURIComponent(normalizedPath)}${searchParam}${limitParam}${cursorParam}`;\n const response = await makeApiRequest('GET', apiPath, null, opts._overrides);\n return response.data;\n}\nexport async function get(path, opts = {}) {\n var _a, _b, _c;\n try {\n let normalizedPath = path.startsWith(\"/\") ? path.slice(1) : path;\n // Remove last '*' if it exists in the path\n if (normalizedPath.endsWith(\"*\") && normalizedPath.length > 1) {\n normalizedPath = normalizedPath.slice(0, -1);\n }\n if (!normalizedPath || normalizedPath.length === 0) {\n throw new Error(\"Invalid path provided.\");\n }\n // Create cache key combining path, prompt, filter, sort, includeSubPaths,\n // shape, limit, cursor — and (H1) the caller's appId + compact principal\n // bucket. Exact opaque credential equality is checked inside that bucket,\n // so a private read cached for one user is never served to another in a\n // shared process / SSR worker / browser login-switch. The cache is opt-in\n // and disabled for no-auth reads, which get an uncacheable unique key.\n const shapeKey = opts.shape ? JSON.stringify(opts.shape) : '';\n const includeSubPathsKey = opts.includeSubPaths ? ':subpaths' : '';\n const limitKey = opts.limit !== undefined ? `:l${opts.limit}` : '';\n const cursorKey = opts.cursor ? `:c${hashForKey(opts.cursor)}` : '';\n const filterKey = opts.filter ? `:f${hashForKey(JSON.stringify(opts.filter))}` : '';\n const sortKey = opts.sort ? `:s${hashForKey(JSON.stringify(opts.sort))}` : '';\n const principalKey = await getReadPrincipalKey(opts._overrides);\n const cacheKey = `${principalKey.key}|${normalizedPath}:${opts.prompt || ''}${filterKey}${sortKey}${includeSubPathsKey}:${shapeKey}${limitKey}${cursorKey}`;\n const cacheEnabled = opts.cache === true && !opts.bypassCache && principalKey.cacheable;\n const now = Date.now();\n // Check for valid cache entry when the caller explicitly opted in.\n const cachedEntry = getReadCacheEntry(cacheKey, principalKey.principalValue);\n if (cacheEnabled &&\n cachedEntry &&\n now < cachedEntry.expiresAt) {\n return cachedEntry.data;\n }\n // If we're bypassing cache, we should still coalesce identical requests\n // but need a different key to avoid interfering with regular requests.\n // Abortable calls are deliberately never coalesced: sharing one Axios\n // promise would let an old route's AbortSignal cancel a newer consumer of\n // the same path, or make the newer consumer inherit the old cancellation.\n const requestKey = opts.bypassCache ? `bypass:${cacheKey}` : cacheKey;\n const shouldCoalesce = !((_a = opts._overrides) === null || _a === void 0 ? void 0 : _a.signal);\n // The compact principal hash is only an index bucket. Coalesce only when\n // the exact opaque credential also matches, so collisions stay isolated.\n const existingPending = shouldCoalesce\n ? (_b = pendingRequests[requestKey]) === null || _b === void 0 ? void 0 : _b.find(entry => entry.principalValue === principalKey.principalValue)\n : undefined;\n if (existingPending) {\n return existingPending.promise;\n }\n // Create a new request promise and store it\n let requestPromise;\n requestPromise = (async () => {\n var _a;\n try {\n const pathIsDocument = normalizedPath.split(\"/\").length % 2 === 0;\n // Cache miss or bypass - proceed with HTTP API request\n let response;\n // Build common query params\n const includeSubPathsParam = opts.includeSubPaths ? '&includeSubPaths=true' : '';\n const shapeParam = opts.shape ? `&shape=${encodeURIComponent(JSON.stringify(opts.shape))}` : '';\n const limitParam = opts.limit !== undefined ? `&limit=${opts.limit}` : '';\n const cursorParam = opts.cursor ? `&cursor=${encodeURIComponent(opts.cursor)}` : '';\n const filterParam = opts.filter ? `&filter=${encodeURIComponent(JSON.stringify(opts.filter))}` : '';\n const sortParam = opts.sort ? `&sort=${encodeURIComponent(JSON.stringify(opts.sort))}` : '';\n if (pathIsDocument) {\n const itemId = encodeURIComponent(normalizedPath);\n const queryParams = [includeSubPathsParam, shapeParam].filter(p => p).join('');\n const apiPath = queryParams ? `items/${itemId}?${queryParams.substring(1)}` : `items/${itemId}`;\n response = await makeApiRequest('GET', apiPath, null, opts._overrides);\n }\n else {\n const path = encodeURIComponent(normalizedPath);\n const promptQueryParam = (opts === null || opts === void 0 ? void 0 : opts.prompt) ? `&prompt=${safeBtoa(opts.prompt)}` : \"\";\n const apiPath = `items?path=${path}${promptQueryParam}${filterParam}${sortParam}${includeSubPathsParam}${shapeParam}${limitParam}${cursorParam}`;\n response = await makeApiRequest('GET', apiPath, null, opts._overrides);\n }\n // Normalize the worker's raw body into the SDK's stable shape:\n // - single-doc path → the resolved document or null (Bug 2), and\n // - collection path → `{ data, nextCursor }` preserved,\n // with the bare `id` (leaf doc key) attached to every returned row (Bug 1).\n const responseData = normalizeReadResult(response.data, pathIsDocument);\n // Cache the response only when explicitly requested and principal-bound.\n if (cacheEnabled) {\n setReadCacheEntry(cacheKey, principalKey.principalValue, responseData, now + GET_CACHE_TTL);\n // Periodically clean up expired cache entries (every 5 seconds)\n if (now - lastCacheCleanup > 5000) {\n cleanupExpiredCache();\n lastCacheCleanup = now;\n }\n }\n // Return the data from the response\n return responseData;\n }\n finally {\n // Remove only this exact request. A colliding principal can legitimately\n // have another request in the same compact-hash bucket.\n if (shouldCoalesce) {\n const bucket = pendingRequests[requestKey];\n const index = (_a = bucket === null || bucket === void 0 ? void 0 : bucket.findIndex(entry => entry.promise === requestPromise)) !== null && _a !== void 0 ? _a : -1;\n if (index >= 0)\n bucket.splice(index, 1);\n if ((bucket === null || bucket === void 0 ? void 0 : bucket.length) === 0)\n delete pendingRequests[requestKey];\n }\n }\n })();\n // Store the promise so only callers with the exact same credential join it.\n if (shouldCoalesce) {\n ((_c = pendingRequests[requestKey]) !== null && _c !== void 0 ? _c : (pendingRequests[requestKey] = [])).push({\n principalValue: principalKey.principalValue,\n promise: requestPromise,\n });\n }\n // Return the promise\n return requestPromise;\n }\n catch (error) {\n throw error;\n }\n}\n// Helper to clean up expired cache entries\nfunction cleanupExpiredCache() {\n const now = Date.now();\n Object.keys(getCache).forEach(key => {\n var _a, _b;\n const activeEntries = (_b = (_a = getCache[key]) === null || _a === void 0 ? void 0 : _a.filter(entry => entry.expiresAt >= now)) !== null && _b !== void 0 ? _b : [];\n if (activeEntries.length > 0)\n getCache[key] = activeEntries;\n else\n delete getCache[key];\n });\n lastCacheCleanup = now;\n}\nfunction classifyGetManyBatchError(error) {\n var _a, _b, _c;\n const err = error;\n const status = (_b = (_a = err === null || err === void 0 ? void 0 : err.status) !== null && _a !== void 0 ? _a : err === null || err === void 0 ? void 0 : err.statusCode) !== null && _b !== void 0 ? _b : (_c = err === null || err === void 0 ? void 0 : err.response) === null || _c === void 0 ? void 0 : _c.status;\n const message = error instanceof Error\n ? error.message\n : typeof (err === null || err === void 0 ? void 0 : err.message) === 'string'\n ? err.message\n : 'Unknown error';\n if (status === 401 || status === 403) {\n return { code: 'UNAUTHORIZED', message };\n }\n if (status === 400) {\n return { code: 'INVALID_PATH', message };\n }\n return { code: 'REQUEST_FAILED', message };\n}\nexport async function getMany(paths, opts = {}) {\n var _a, _b, _c, _d, _e;\n if (paths.length === 0) {\n return [];\n }\n if (paths.length > 30) {\n throw new Error('Cannot fetch more than 30 documents at once');\n }\n const normalizedPaths = [];\n for (const path of paths) {\n let normalizedPath = path.startsWith(\"/\") ? path.slice(1) : path;\n if (normalizedPath.endsWith(\"*\") && normalizedPath.length > 1) {\n normalizedPath = normalizedPath.slice(0, -1);\n }\n if (!normalizedPath || normalizedPath.length === 0) {\n throw new Error(`Invalid path provided: ${path}`);\n }\n const pathIsDocument = normalizedPath.split(\"/\").length % 2 === 0;\n if (!pathIsDocument) {\n throw new Error(`Path must point to a document (even number of segments): ${path}`);\n }\n normalizedPaths.push(normalizedPath);\n }\n const now = Date.now();\n // H1: principal-scope getMany cache keys so one user's batch reads are never\n // served to another. Same `<appId:principal>|<path>:` shape used by get().\n const principalKey = await getReadPrincipalKey(opts._overrides);\n const cacheEnabled = opts.cache === true && !opts.bypassCache && principalKey.cacheable;\n const results = new Array(paths.length);\n const uncachedIndices = [];\n const uncachedPaths = [];\n for (let i = 0; i < normalizedPaths.length; i++) {\n const normalizedPath = normalizedPaths[i];\n const cacheKey = `${principalKey.key}|${normalizedPath}:`;\n const cachedEntry = getReadCacheEntry(cacheKey, principalKey.principalValue);\n if (cacheEnabled &&\n cachedEntry &&\n now < cachedEntry.expiresAt) {\n results[i] = { path: normalizedPath, data: cachedEntry.data };\n }\n else {\n uncachedIndices.push(i);\n uncachedPaths.push(normalizedPath);\n }\n }\n if (uncachedPaths.length > 0) {\n try {\n const response = await makeApiRequest('POST', 'items/batch', { paths: uncachedPaths }, opts._overrides);\n if (response.status === 404 && response.data == null) {\n const endpointError = new Error('Batch read endpoint returned 404');\n endpointError.status = 404;\n throw endpointError;\n }\n // makeApiRequest returns `{ data: <httpBody> }`, and the worker's items/batch\n // httpBody is `{ data: { results: [...] }, status }` — so the results are\n // double-nested at response.data.data.results. (Reading response.data.results\n // here is undefined → \"serverResults is not iterable\".) Tolerate both shapes.\n const serverResults = (_e = (_c = (_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.results) !== null && _c !== void 0 ? _c : (_d = response.data) === null || _d === void 0 ? void 0 : _d.results) !== null && _e !== void 0 ? _e : [];\n const serverResultsMap = new Map();\n for (const result of serverResults) {\n serverResultsMap.set(result.path, result);\n }\n for (let i = 0; i < uncachedIndices.length; i++) {\n const originalIndex = uncachedIndices[i];\n const normalizedPath = uncachedPaths[i];\n const serverResult = serverResultsMap.get(normalizedPath);\n if (serverResult) {\n // getMany batches single-doc paths — attach the bare `id` (leaf doc\n // key) to each returned doc, additive (Bug 1), matching get().\n const normalizedResult = serverResult.error\n ? serverResult\n : Object.assign(Object.assign({}, serverResult), { data: withBareId(serverResult.data) });\n results[originalIndex] = normalizedResult;\n if (!normalizedResult.error && cacheEnabled) {\n const cacheKey = `${principalKey.key}|${normalizedPath}:`;\n setReadCacheEntry(cacheKey, principalKey.principalValue, normalizedResult.data, now + GET_CACHE_TTL);\n }\n }\n else {\n results[originalIndex] = {\n path: normalizedPath,\n data: null,\n error: { code: 'NOT_FOUND', message: `No result returned for path ${normalizedPath}` }\n };\n }\n }\n if (cacheEnabled && now - lastCacheCleanup > 5000) {\n cleanupExpiredCache();\n lastCacheCleanup = now;\n }\n }\n catch (error) {\n const batchError = classifyGetManyBatchError(error);\n for (const originalIndex of uncachedIndices) {\n results[originalIndex] = {\n path: normalizedPaths[originalIndex],\n data: null,\n error: batchError,\n };\n }\n }\n }\n return results;\n}\nconst MAX_RUN_QUERIES_PER_POST = 10;\nlet pendingRunQueries = [];\nlet runQueryFlushScheduled = false;\nfunction unwrapRunQueryRow(row, entry) {\n var _a;\n // The worker disambiguates a computed null from a failed/undeclared query\n // with a per-row `error` string, so surface it instead of returning undefined.\n if ((row === null || row === void 0 ? void 0 : row.error) != null) {\n const err = new Error(String(row.error));\n err.isQueryError = true;\n err.queryName = entry.queryName;\n err.path = entry.absolutePath;\n throw err;\n }\n return (_a = row === null || row === void 0 ? void 0 : row.result) !== null && _a !== void 0 ? _a : null;\n}\nfunction flushPendingRunQueries() {\n const pending = pendingRunQueries;\n pendingRunQueries = [];\n runQueryFlushScheduled = false;\n // Calls with any request overrides bypass this buffer, so every entry here\n // belongs to the same default-overrides identity bucket.\n for (let offset = 0; offset < pending.length; offset += MAX_RUN_QUERIES_PER_POST) {\n const chunk = pending.slice(offset, offset + MAX_RUN_QUERIES_PER_POST);\n void runQueryManyRows(chunk.map(({ entry }) => entry)).then((rows) => {\n chunk.forEach((caller, index) => {\n try {\n caller.resolve(unwrapRunQueryRow(rows[index], caller.entry));\n }\n catch (error) {\n caller.reject(error);\n }\n });\n }, (error) => {\n chunk.forEach(({ reject }) => reject(error));\n });\n }\n}\nexport async function runQuery(absolutePath, queryName, queryArgs, opts) {\n const entry = { absolutePath, queryName, queryArgs };\n // Auth, custom headers, timeout, and signal overrides must remain local to\n // one request, so any override-bearing call deliberately bypasses coalescing.\n if ((opts === null || opts === void 0 ? void 0 : opts._overrides) != null) {\n const rows = await runQueryManyRows([entry], opts);\n return unwrapRunQueryRow(rows[0], entry);\n }\n return new Promise((resolve, reject) => {\n pendingRunQueries.push({ entry, resolve, reject });\n if (!runQueryFlushScheduled) {\n runQueryFlushScheduled = true;\n queueMicrotask(flushPendingRunQueries);\n }\n });\n}\nexport async function runQueryMany(many, opts) {\n // Batch shape stays an array of result values (errored rows map to null) so\n // existing callers keep working; use runQuery for per-row error surfacing.\n const rows = await runQueryManyRows(many, opts);\n return rows.map((row) => { var _a; return (_a = row === null || row === void 0 ? void 0 : row.result) !== null && _a !== void 0 ? _a : null; });\n}\nasync function runQueryManyRows(many, opts) {\n var _a, _b, _c, _d;\n try {\n let queries = [];\n for (const { absolutePath, queryName, queryArgs } of many) {\n const normalizedPath = absolutePath.startsWith(\"/\") ? absolutePath.slice(1) : absolutePath;\n const pathIsDocument = normalizedPath.split(\"/\").length % 2 === 0;\n if (!pathIsDocument) {\n throw new Error(`Invalid path provided make sure it is pointing to a document: ${absolutePath}`);\n }\n queries.push({ path: normalizedPath, queryName, queryArgs });\n }\n const response = await makeApiRequest('POST', 'queries', { queries }, opts === null || opts === void 0 ? void 0 : opts._overrides);\n // makeApiRequest returns `{ data: <httpBody> }`, and the worker's httpBody\n // is `{ data: { queries: [...] }, status }` — so the rows are double-nested\n // at response.data.data.queries. (Reading response.data.queries here is\n // undefined → \"Cannot read properties of undefined\".) Tolerate both shapes,\n // same as getMany does for items/batch.\n const rows = (_c = (_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.queries) !== null && _c !== void 0 ? _c : (_d = response.data) === null || _d === void 0 ? void 0 : _d.queries;\n if (!Array.isArray(rows)) {\n throw new Error(`queries endpoint returned an unexpected response shape (status ${response.status})`);\n }\n return rows;\n }\n catch (error) {\n throw error;\n }\n}\n// NEW: Ad-hoc expression execution - first-class feature\nexport async function runExpression(expression, queryArgs, options) {\n const results = await runExpressionMany([Object.assign({ expression, queryArgs }, options)]);\n return results[0];\n}\nexport async function runExpressionMany(many) {\n var _a, _b, _c, _d;\n try {\n let queries = [];\n let overrides = undefined;\n for (const { expression, queryArgs, returnType, _overrides } of many) {\n // Collect overrides from first query that has them (all queries share same request)\n if (_overrides && !overrides) {\n overrides = _overrides;\n }\n queries.push({ queryArgs, expression, returnType });\n }\n const response = await makeApiRequest('POST', 'queries', { queries }, overrides);\n // Same double-nesting as runQueryMany: the worker's httpBody is\n // { data: { queries: [...] }, status } under makeApiRequest's own\n // { data: <httpBody> } wrapper. Tolerate both shapes.\n const rows = (_c = (_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.queries) !== null && _c !== void 0 ? _c : (_d = response.data) === null || _d === void 0 ? void 0 : _d.queries;\n if (!Array.isArray(rows)) {\n throw new Error(`queries endpoint returned an unexpected response shape (status ${response.status})`);\n }\n // Map results - trace is automatically included by server for non-mainnet networks\n return rows.map((queryResult) => {\n const result = { result: queryResult.result };\n // Include trace if present (server includes it for non-mainnet networks)\n if (queryResult.trace) {\n result.trace = queryResult.trace;\n }\n // Pass through the server's per-row failure so callers can distinguish\n // a computed null from a failed row.\n if (queryResult.error != null) {\n result.error = String(queryResult.error);\n }\n return result;\n });\n }\n catch (error) {\n throw error;\n }\n}\n/**\n * Write a document at `path`. Sugar for a one-element {@link setMany}.\n *\n * **Delete:** pass `null` as the document to delete it — `set(path, null)` is\n * the delete (there is no separate `del`/`remove`). It is routed through the\n * collection's policy `delete` rule and broadcasts a delete to subscribers.\n */\nexport async function set(path, document, options) {\n // setMany already invalidates the read cache for the affected document and\n // collection paths — no second sweep needed here.\n return setMany([{ path, document }], options);\n}\nexport async function setMany(many, options) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n // Returns the data that was set, or undefined if the document was already set.\n try {\n const config = await getConfig();\n const authProvider = (_b = (_a = options === null || options === void 0 ? void 0 : options._overrides) === null || _a === void 0 ? void 0 : _a.authProvider) !== null && _b !== void 0 ? _b : config.authProvider;\n if (!authProvider) {\n throw new Error('Auth provider not initialized');\n }\n let documents = [];\n const pathsToInvalidate = new Set();\n for (const { path, document: documentWithReservedFields } of many) {\n // for setting, we should remove any pieces of the document that start with '_' as they are internal and shouldn't be updated. The API would block it if it is one of the reserved ones\n let document = documentWithReservedFields;\n if (documentWithReservedFields) {\n document = Object.fromEntries(Object.entries(documentWithReservedFields).filter(([key]) => !key.startsWith('_')));\n }\n const normalizedPath = path.startsWith(\"/\") ? path.slice(1) : path;\n pathsToInvalidate.add(normalizedPath);\n const pathIsDocument = normalizedPath.split(\"/\").length % 2 === 0;\n let curItemId = \"\";\n if (pathIsDocument) {\n curItemId = normalizedPath.split(\"/\").pop() ? normalizedPath.split(\"/\").pop() : \"\";\n }\n else {\n curItemId = Math.random().toString(36).slice(2).substring(0, 12);\n }\n // if the path is a document, we need to append the document id to the path\n const collectionPath = pathIsDocument ? normalizedPath.split(\"/\").slice(0, -1).join(\"/\") : normalizedPath;\n pathsToInvalidate.add(collectionPath);\n let destinationPath = collectionPath;\n if (curItemId && curItemId.length > 0) {\n destinationPath = `${destinationPath}/${curItemId}`;\n }\n documents.push({ destinationPath, document });\n }\n let setResponse;\n try {\n setResponse = await makeApiRequest('PUT', `items`, { documents }, options === null || options === void 0 ? void 0 : options._overrides);\n }\n catch (error) {\n if ((error === null || error === void 0 ? void 0 : error.statusCode) === 402 && (error === null || error === void 0 ? void 0 : error.error) === 'INSUFFICIENT_BALANCE') {\n const deficitLamports = Number((_c = error.deficitLamports) !== null && _c !== void 0 ? _c : 0);\n const deficitSol = Number((_d = error.deficitSol) !== null && _d !== void 0 ? _d : deficitLamports / 1000000000);\n throw new InsufficientBalanceError(String((_e = error.address) !== null && _e !== void 0 ? _e : ''), Number((_f = error.balanceLamports) !== null && _f !== void 0 ? _f : 0), Number((_g = error.estimatedCostLamports) !== null && _g !== void 0 ? _g : 0), deficitLamports, deficitSol);\n }\n throw error;\n }\n // Invalidate caches and pending requests for affected paths\n pathsToInvalidate.forEach(path => {\n clearCacheByPrefix(path);\n });\n if (setResponse.status === 202) {\n // This means that the document needs to be set on-chain (or signed for offchain),\n // the API did nothing and gave us the required info to run this transaction.\n const { transactions, offchainTransaction } = setResponse.data;\n // Handle offchain transaction flow (for 'offchain' protocol apps)\n if (offchainTransaction && Array.isArray(transactions) && transactions.length > 0) {\n throw new Error('Ambiguous write response mixes offchain and onchain transaction targets');\n }\n if (offchainTransaction) {\n const transactionResult = await handleOffchainTransaction(offchainTransaction, authProvider, options);\n return Object.assign(Object.assign({}, documents.map(d => d.document)), { transactionId: transactionResult.signature, signedTransaction: transactionResult.signedTransaction });\n }\n // Handle Solana on-chain transaction flow\n if (!Array.isArray(transactions) || transactions.length !== 1) {\n throw new Error(`Expected exactly one on-chain transaction, received ${Array.isArray(transactions) ? transactions.length : 0}`);\n }\n const curTx = transactions[0];\n const hasEvmTarget = (curTx === null || curTx === void 0 ? void 0 : curTx.evmTransaction) != null;\n const hasSerializedSolanaTarget = (curTx === null || curTx === void 0 ? void 0 : curTx.serializedTransaction) != null;\n const hasBuiltSolanaTarget = (curTx === null || curTx === void 0 ? void 0 : curTx.transactionArgs) != null || (curTx === null || curTx === void 0 ? void 0 : curTx.remainingAccounts) != null ||\n (curTx === null || curTx === void 0 ? void 0 : curTx.idl) != null || (curTx === null || curTx === void 0 ? void 0 : curTx.txData) != null || (curTx === null || curTx === void 0 ? void 0 : curTx.preInstructions) != null;\n if ((hasEvmTarget && (hasSerializedSolanaTarget || hasBuiltSolanaTarget)) ||\n (hasSerializedSolanaTarget && hasBuiltSolanaTarget)) {\n throw new Error('Ambiguous on-chain write response mixes EVM and/or Solana transaction target formats');\n }\n let transactionResult;\n const expectedWritePaths = documents.map(d => d.destinationPath);\n // EVM onchain write: the worker returns a PRE-BUILT EIP-1559 tx on\n // `transactions[0].evmTransaction` (the EVM twin of Solana's pre-built\n // `serializedTransaction`). WORKER 202 CONTRACT (field name + shape the\n // worker side must emit to match):\n // { transactions: [ { evmTransaction: {\n // to, data, value?, chainId, gas?, maxFeePerGas?, maxPriorityFeePerGas?, nonce?\n // } } ] }\n // We hand it to the EVM auth provider's runTransaction(evmTx, undefined, options)\n // (eth_sendTransaction — the wallet signs + submits). syncItems below is\n // identical to the Solana path.\n if (curTx.evmTransaction) {\n assertEvmTransactionMatchesWrite(curTx.evmTransaction, {\n appId: config.appId,\n documents,\n policy: (_k = (_j = (_h = options === null || options === void 0 ? void 0 : options._overrides) === null || _h === void 0 ? void 0 : _h._evmTransactionPolicy) !== null && _j !== void 0 ? _j : config.evmWalletConfig) !== null && _k !== void 0 ? _k : null,\n });\n transactionResult = await handleEvmTransaction(curTx.evmTransaction, authProvider, options);\n }\n else if (curTx.serializedTransaction) {\n const { handlePreBuiltTransaction } = await import('./solana-operations');\n transactionResult = await handlePreBuiltTransaction(curTx, authProvider, options, expectedWritePaths);\n }\n else {\n const { handleSolanaTransaction } = await import('./solana-operations');\n transactionResult = await handleSolanaTransaction(curTx, authProvider, options, expectedWritePaths);\n }\n // Sync items after all transactions are confirmed\n // Wait for 1.5 seconds to ensure all transactions are confirmed\n await new Promise(resolve => setTimeout(resolve, 1500));\n await syncItems(many.map(m => m.path), options);\n // TODO: Should we wait here or do the optimistic subscription updates like below?\n return Object.assign(Object.assign({}, documents.map(d => d.document)), { transactionId: transactionResult.transactionSignature, signedTransaction: transactionResult.signedTransaction });\n }\n else if (setResponse.status === 200) {\n // This means that the document was set successfully.\n // TODO: If we're able to be smarter about it, we can return the document here, and get it back from the server\n // rather than just using what we set.\n // TODO: We can also trigger subscriptions here maybe? Can even recall all relevant subscriptions here.\n if (setResponse.data === true) {\n return Object.assign(Object.assign({}, documents.map(d => d.document)), { transactionId: null });\n }\n else if (setResponse.data &&\n typeof setResponse.data === 'object' &&\n setResponse.data.success === true) {\n const _l = setResponse.data, { success: _success } = _l, rest = __rest(_l, [\"success\"]);\n return Object.assign(Object.assign(Object.assign({}, documents.map(d => d.document)), rest), { transactionId: null });\n }\n else {\n return Object.assign(Object.assign({}, setResponse.data), { transactionId: null });\n }\n }\n else {\n throw new Error(`Failed to set document: ${setResponse}`);\n }\n }\n catch (error) {\n throw error;\n }\n // EVM onchain write: hand the worker's pre-built EIP-1559 tx to the EVM auth\n // provider, which eth_sendTransaction-s it (the wallet signs + submits in one\n // step). Mirrors handlePreBuiltTransaction's shape but routes through the EVM\n // slot of runTransaction (Solana slot undefined). shouldSubmitTx is honored by\n // the provider itself.\n async function handleEvmTransaction(evmTransaction, authProvider, options) {\n return authProvider.runTransaction(evmTransaction, undefined, options);\n }\n async function handleOffchainTransaction(tx, authProvider, options) {\n var _a, _b, _c, _d, _e, _f;\n const config = await getConfig();\n // 1. Sign the transaction message using the provider's canonical signer.\n const signature = await authProvider.signMessage(tx.message);\n // 2. Create signed transaction\n const signedTx = {\n transaction: tx,\n signature\n };\n // 3. If shouldSubmitTx is false, return signed but not submitted\n if ((options === null || options === void 0 ? void 0 : options.shouldSubmitTx) === false) {\n return {\n signature: '',\n signedTransaction: Buffer.from(JSON.stringify(signedTx)).toString('base64')\n };\n }\n // 4. Submit to RPC endpoint via makeApiRequest (gets auth headers + 401 retry)\n const appId = ((_b = (_a = options === null || options === void 0 ? void 0 : options._overrides) === null || _a === void 0 ? void 0 : _a.headers) === null || _b === void 0 ? void 0 : _b['x-app-id']) || ((_d = (_c = options === null || options === void 0 ? void 0 : options._overrides) === null || _c === void 0 ? void 0 : _c.headers) === null || _d === void 0 ? void 0 : _d['X-App-Id']) || config.appId;\n const rpcResponse = await makeApiRequest('POST', `/app/${appId}/rpc`, {\n jsonrpc: '2.0',\n id: 1,\n method: 'sendTransaction',\n params: [Buffer.from(JSON.stringify(signedTx)).toString('base64')]\n }, options === null || options === void 0 ? void 0 : options._overrides);\n if ((_e = rpcResponse.data) === null || _e === void 0 ? void 0 : _e.error) {\n throw new Error(rpcResponse.data.error.message);\n }\n return { signature: (_f = rpcResponse.data) === null || _f === void 0 ? void 0 : _f.result };\n }\n}\n/**\n * Extract the document/collection path from a cache key. Keys are\n * `<appId:principal>|<path>:<...>` (H1 principal-scoped) — strip the principal\n * prefix (everything up to and including the first `|`, if present) before\n * splitting off the path segment.\n */\nfunction pathFromCacheKey(key) {\n const barIdx = key.indexOf('|');\n const afterPrincipal = barIdx >= 0 ? key.slice(barIdx + 1) : key;\n return afterPrincipal.split(':')[0];\n}\n// Helper to clear cache entries by prefix (across ALL principals — a write\n// invalidates every cached read of that path regardless of which user cached it)\nfunction clearCacheByPrefix(prefix) {\n // Fixed: Use prefix instead of undefined 'path' variable\n const normalizedPrefix = prefix.startsWith(\"/\") ? prefix.slice(1) : prefix;\n // Clear cache entries\n Object.keys(getCache).forEach(key => {\n const path = pathFromCacheKey(key);\n if (path === normalizedPrefix || path.startsWith(`${normalizedPrefix}/`)) {\n delete getCache[key];\n }\n });\n // Cancel pending requests for this path\n Object.keys(pendingRequests).forEach(key => {\n // Skip bypass-specific requests which have a different format\n const lookupKey = key.startsWith('bypass:') ? key.slice('bypass:'.length) : key;\n const path = pathFromCacheKey(lookupKey);\n if (path === normalizedPrefix || path.startsWith(`${normalizedPrefix}/`)) {\n // We don't actually abort the fetch (we could with AbortController),\n // but we remove it from pending so new requests won't coalesce with it\n delete pendingRequests[key];\n }\n });\n}\n// Utility functions for cache management\nexport function clearCache(path, opts) {\n if (path) {\n // Clear cache entries for this path across ALL principals. Keys are now\n // principal-scoped (`<appId:principal>|<path>:<...>`), so we can't compute a\n // single deterministic key — match by the path segment instead. When a\n // prompt is supplied, only drop entries for that exact prompt.\n const normalizedPath = path.startsWith(\"/\") ? path.slice(1) : path;\n const prompt = (opts === null || opts === void 0 ? void 0 : opts.prompt) || '';\n const matches = (key) => {\n const barIdx = key.indexOf('|');\n const afterPrincipal = barIdx >= 0 ? key.slice(barIdx + 1) : key;\n const colonIdx = afterPrincipal.indexOf(':');\n if (colonIdx < 0)\n return false;\n const keyPath = afterPrincipal.slice(0, colonIdx);\n if (keyPath !== normalizedPath)\n return false;\n if (!(opts === null || opts === void 0 ? void 0 : opts.prompt))\n return true;\n // The prompt is the segment immediately after the path's first colon.\n const rest = afterPrincipal.slice(colonIdx + 1);\n return rest === prompt || rest.startsWith(`${prompt}:`) || rest.startsWith(prompt);\n };\n Object.keys(getCache).forEach(key => { if (matches(key))\n delete getCache[key]; });\n Object.keys(pendingRequests).forEach(key => {\n const lookupKey = key.startsWith('bypass:') ? key.slice('bypass:'.length) : key;\n if (matches(lookupKey))\n delete pendingRequests[key];\n });\n }\n else {\n // Clear entire cache\n Object.keys(getCache).forEach(key => delete getCache[key]);\n Object.keys(pendingRequests).forEach(key => delete pendingRequests[key]);\n }\n}\n/**\n * SECURITY (H1): Wipe ALL HTTP read caches + in-flight reads. Call this whenever\n * the logged-in identity changes (login / logout / switch identity) so a freshly\n * authenticated principal can never observe data cached for the previous one.\n * This is invoked from the WS auth-change path (reconnectWithNewAuthV2).\n */\nexport function clearReadCacheForAuthChange() {\n Object.keys(getCache).forEach(key => delete getCache[key]);\n Object.keys(pendingRequests).forEach(key => delete pendingRequests[key]);\n}\nexport async function getFiles(path, options) {\n try {\n const normalizedPath = path.startsWith(\"/\") ? path.slice(1) : path;\n if (!normalizedPath || normalizedPath.length === 0) {\n throw new Error(\"Invalid path provided.\");\n }\n const apiPath = `storage?path=${normalizedPath}`;\n const response = await makeApiRequest('GET', apiPath, null, options === null || options === void 0 ? void 0 : options._overrides);\n return response.data;\n }\n catch (error) {\n throw error;\n }\n}\nexport async function setFile(path, file, options) {\n var _a;\n // 1) Get the presigned URL from your backend\n const requestBody = {\n destinationPath: path,\n operation: file ? 'upload' : 'delete',\n };\n // Send file size so the server can enforce upload limits before issuing a presigned URL\n if (file) {\n requestBody.contentLength = file.size;\n requestBody.contentType = file.type || undefined;\n // Declared metadata fields set atomically with the create (server validates\n // them against the storage collection's `fields` and applies the CREATE rule).\n if (options === null || options === void 0 ? void 0 : options.metadata) {\n requestBody.metadata = options.metadata;\n }\n }\n const response = await makeApiRequest('POST', 'storage/url', requestBody, options === null || options === void 0 ? void 0 : options._overrides);\n if (file == null) {\n return true;\n }\n if (!((_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.s3Url)) {\n throw new Error(\"No s3Url in response\");\n }\n // Client-side size guard using the limit returned by the server\n const maxFileSize = response.data.maxFileSize;\n if (maxFileSize && file.size > maxFileSize) {\n throw new Error(`File size ${(file.size / (1024 * 1024)).toFixed(2)} MB exceeds the maximum upload size of ${(maxFileSize / (1024 * 1024)).toFixed(0)} MB.`);\n }\n const presignedUrl = response.data.s3Url;\n // 2) Upload the file directly to S3 with a PUT request\n const uploadResponse = await fetch(presignedUrl, {\n method: 'PUT',\n headers: {\n 'Content-Type': file.type,\n },\n body: file\n });\n // 3) Check if the upload was successful\n if (!uploadResponse.ok) {\n await uploadResponse.text();\n throw new Error(`Upload failed with status: ${uploadResponse.status}`);\n }\n return true;\n}\nexport async function signMessage(message) {\n const config = await getConfig();\n if (!config.authProvider) {\n throw new Error('Auth provider not initialized. Please call init() first.');\n }\n return config.authProvider.signMessage(message);\n}\nexport async function signTransaction(transaction) {\n const config = await getConfig();\n if (!config.authProvider) {\n throw new Error('Auth provider not initialized. Please call init() first.');\n }\n return config.authProvider.signTransaction(transaction);\n}\nexport async function signAndSubmitTransaction(transaction, feePayer) {\n const config = await getConfig();\n if (!config.authProvider) {\n throw new Error('Auth provider not initialized. Please call init() first.');\n }\n return config.authProvider.signAndSubmitTransaction(transaction, feePayer);\n}\nexport async function syncItems(paths, options) {\n try {\n const response = await makeApiRequest('PUT', 'items/sync', { paths }, options === null || options === void 0 ? void 0 : options._overrides);\n return response.data;\n }\n catch (error) {\n throw error;\n }\n}\n","/**\n * WebSocket v2 Subscription Manager\n *\n * This module implements multiplexed subscriptions over a single WebSocket connection.\n * It maintains the same external API as v1 but uses the new v2 protocol internally.\n */\nimport { getConfig } from './config';\nimport { getIdToken, getRefreshToken, getSessionIssuer, updateIdTokenAndAccessToken } from '../utils/utils';\nimport { refreshSession } from '../utils/auth-api';\nimport { decodeBase64Url, safeBtoa } from '../utils/core-platform';\nimport { docId } from './operations';\nimport { deriveDecline, dispatchDeclineEvent } from './decline';\nimport ReconnectingWebSocket from 'reconnecting-websocket';\n// ============ Global State ============\n// One connection per routing target (appId, or appId#room#<collection>/<roomId>)\nconst connections = new Map();\n// Coalesce concurrent first-use/auth-preflight calls for the same routing target.\n// React commonly mounts several subscriptions in one render; without this map,\n// every call can pass the empty `connections` check, await auth, and create an\n// orphan ReconnectingWebSocket before the first call publishes its connection.\n// Keyed by the identity-bucket lease key (see connectionLeaseKey) so two distinct\n// wallet tokens never share one in-flight socket even under a compact-hash collision.\nconst connectionFlights = new Map();\n// A subscriber holds a routing-target lease from connection acquisition until\n// its callback/subscription is registered. The last old-route unsubscribe must\n// not close a connection already captured by a new route awaiting auth. Keyed by\n// the same identity-bucket lease key as connectionFlights.\nconst connectionAcquisitions = new Map();\n// Compact identity hashes remain useful bounded-size indexes, but collisions\n// share a bucket instead of sharing authority. Each exact bearer keeps its own\n// cache entry so collision isolation does not evict another principal's cache.\nconst responseCache = new Map();\nconst CACHE_TTL = 5 * 60 * 1000; // 5 minutes\nconst TOKEN_REFRESH_BUFFER = 10 * 60 * 1000; // Refresh token 10 minutes before expiry\nconst TOKEN_CHECK_INTERVAL = 5 * 60 * 1000; // Check token freshness every 5 minutes\nfunction getResponseCacheEntry(cacheKey, identityToken) {\n var _a;\n return (_a = responseCache.get(cacheKey)) === null || _a === void 0 ? void 0 : _a.find(entry => entry.identityToken === identityToken);\n}\nfunction setResponseCacheEntry(cacheKey, identityToken, data) {\n var _a;\n const now = Date.now();\n const bucket = (_a = responseCache.get(cacheKey)) !== null && _a !== void 0 ? _a : [];\n const reusableEntries = bucket.filter(entry => (entry.identityToken !== identityToken && now - entry.timestamp < CACHE_TTL));\n reusableEntries.push({ data, timestamp: now, identityToken });\n responseCache.set(cacheKey, reusableEntries);\n}\n// ============ WebSocket Config ============\nconst BASE_MIN_RECONNECT_DELAY_MS = 1000;\nconst MIN_RECONNECT_DELAY_JITTER_MS = 1000;\nconst MAX_RECONNECT_DELAY_MS = 300000;\nconst RECONNECT_DELAY_GROW_FACTOR = 1.8;\nconst MIN_BROWSER_RECONNECT_INTERVAL_MS = 5000;\nconst WS_AUTH_EXPIRED_CODE = 'auth_expired';\n// React runs old-route effect cleanup before new-route effects. Keep an\n// otherwise-idle socket for one short handoff window so the new route can\n// cancel teardown and reuse it; genuinely idle sockets still close promptly.\nconst IDLE_CONNECTION_CLOSE_GRACE_MS = 5000;\nconst SUBSCRIPTION_CONFIRM_TIMEOUT_MS = 10000;\nconst WS_CONFIG = {\n // Keep retrying indefinitely so long outages recover without page refresh.\n maxRetries: Infinity,\n // Conservative starting delay with jitter spreads reconnects across clients.\n minReconnectionDelay: BASE_MIN_RECONNECT_DELAY_MS + Math.floor(Math.random() * MIN_RECONNECT_DELAY_JITTER_MS),\n // Stretch backoff to 5 minutes during prolonged outages to protect backend pools.\n maxReconnectionDelay: MAX_RECONNECT_DELAY_MS,\n // Moderate growth to avoid rapid retry bursts while still converging to max delay.\n reconnectionDelayGrowFactor: RECONNECT_DELAY_GROW_FACTOR,\n // Give handshakes more time before considering the attempt failed.\n connectionTimeout: 10000,\n};\nconst WS_V2_PATH = '/ws/v2';\nlet browserReconnectHooksAttached = false;\nlet lastBrowserTriggeredReconnectAt = 0;\nlet reconnectInProgress = null;\nlet ambientAuthFailure = null;\n// ============ Helper Functions ============\nfunction generateSubscriptionId() {\n return `sub_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;\n}\nfunction hashForKey(value) {\n let h = 5381;\n for (let i = 0; i < value.length; i++) {\n h = ((h << 5) + h + value.charCodeAt(i)) & 0x7fffffff;\n }\n return h.toString(36);\n}\n/**\n * SECURITY (H1): Response-cache keys must be scoped to the caller's identity, not\n * just the path/filter/shape. The compact `identity` prefix selects a bucket;\n * exact opaque bearer equality is required inside it before reuse. Together they\n * keep a private snapshot from being delivered to a different user with the same\n * options (shared process / SSR worker / browser login-switch; this cache has a\n * 5-minute TTL). Callers must opt in before entries are read or written; no-auth\n * subscriptions never populate an implicit anonymous cache bucket.\n */\nfunction getCacheKey(path, prompt, shape, limit, cursor, filter, identity) {\n const normalizedPath = path.startsWith('/') ? path.slice(1) : path;\n const shapeKey = shape && Object.keys(shape).length > 0 ? JSON.stringify(shape) : '';\n const limitKey = limit !== undefined ? `:l${limit}` : '';\n const cursorKey = cursor ? `:c${hashForKey(cursor)}` : '';\n const filterKey = filter && Object.keys(filter).length > 0 ? `:f${hashForKey(JSON.stringify(filter))}` : '';\n return `${identity}|${normalizedPath}:${prompt || 'default'}:${shapeKey}${limitKey}${cursorKey}${filterKey}`;\n}\n/**\n * Derive an opaque identity string for the bearer material a subscription sends.\n * JWT payloads are deliberately not trusted here: cache isolation must happen\n * before the server has verified any claims.\n */\nfunction principalFromIdToken(idToken) {\n return idToken ? `t${hashForKey(idToken)}` : null;\n}\nfunction livePrincipalFromIdToken(idToken) {\n if (!idToken)\n return null;\n try {\n const payload = JSON.parse(decodeBase64Url(idToken.split('.')[1]));\n const userId = payload['custom:userId'];\n if (typeof userId === 'string' && userId.length > 0)\n return userId;\n const walletAddress = payload['custom:walletAddress'];\n if (typeof walletAddress === 'string' && walletAddress.length > 0)\n return walletAddress;\n const subject = payload.sub;\n return typeof subject === 'string' && subject.length > 0 ? subject : null;\n }\n catch (_a) {\n return null;\n }\n}\nfunction authSnapshotFromToken(idToken) {\n return {\n tokenValue: idToken !== null && idToken !== void 0 ? idToken : null,\n principal: livePrincipalFromIdToken(idToken),\n };\n}\nfunction connectionMatchesAuthToken(connection, idToken) {\n const current = authSnapshotFromToken(idToken);\n if (!current.tokenValue) {\n return connection.authTokenValue === null && connection.authPrincipal === null;\n }\n if (connection.authTokenValue && connection.authTokenValue === current.tokenValue) {\n return true;\n }\n return !!connection.authPrincipal && !!current.principal && connection.authPrincipal === current.principal;\n}\nasync function canSendAuthenticatedLiveIntent(connection, isServer) {\n const currentToken = await getIdToken(isServer);\n if (!currentToken)\n return false;\n if (!connection.authTokenValue && !connection.authPrincipal)\n return false;\n return connectionMatchesAuthToken(connection, currentToken);\n}\nasync function getSubscriptionIdentity(effectiveAppId, isServer, overrides) {\n // Per-subscription wallet override (server WalletClient.subscribe): key by\n // the wallet's own opaque token material, mirroring getReadPrincipalKey. Do\n // not trust decoded claims or the unverified _walletAddress hint.\n if (overrides === null || overrides === void 0 ? void 0 : overrides._getAuthHeaders) {\n try {\n const bearer = bearerFromAuthHeaders(await overrides._getAuthHeaders());\n const principal = principalFromIdToken(bearer);\n return principal\n ? { key: `${effectiveAppId}:o${principal}`, cacheable: true, token: bearer }\n : { key: `${effectiveAppId}:oanon`, cacheable: false, token: null };\n }\n catch (_a) {\n // Couldn't resolve the override identity — do not use response cache.\n return { key: `${effectiveAppId}:o-uncacheable-${safeBtoa(String(connectionEpoch++))}`, cacheable: false, token: null };\n }\n }\n const idToken = await getIdToken(isServer);\n const principal = principalFromIdToken(idToken);\n return principal\n ? { key: `${effectiveAppId}:${principal}`, cacheable: true, token: idToken !== null && idToken !== void 0 ? idToken : null }\n : { key: `${effectiveAppId}:anon`, cacheable: false, token: null };\n}\n/** Extract the bare bearer token from a `{ Authorization: 'Bearer <jwt>' }` map. */\nfunction bearerFromAuthHeaders(headers) {\n const auth = (headers === null || headers === void 0 ? void 0 : headers.Authorization) || (headers === null || headers === void 0 ? void 0 : headers.authorization) || '';\n return auth.startsWith('Bearer ') ? auth.slice('Bearer '.length) : auth;\n}\n// Monotonic counter for unique-ish fallback identity keys (no Date.now in some envs).\nlet connectionEpoch = 0;\nfunction isTokenExpired(token) {\n var _a;\n try {\n const payload = JSON.parse(decodeBase64Url(token.split('.')[1]));\n const expirationTime = payload.exp * 1000;\n const currentTime = Date.now();\n return currentTime > (expirationTime - 60000); // 60 second buffer\n }\n catch (error) {\n console.error('[WS v2] Error checking token expiration. reason:', (_a = error === null || error === void 0 ? void 0 : error.name) !== null && _a !== void 0 ? _a : 'decode_failed');\n return true;\n }\n}\nfunction getTokenExpirationTime(token) {\n try {\n const payload = JSON.parse(decodeBase64Url(token.split('.')[1]));\n return payload.exp ? payload.exp * 1000 : null;\n }\n catch (_a) {\n return null;\n }\n}\nfunction makeAuthExpiredError(message, status) {\n const err = new Error(`${WS_AUTH_EXPIRED_CODE}: ${message}`);\n err.code = WS_AUTH_EXPIRED_CODE;\n if (status !== undefined)\n err.status = status;\n return err;\n}\nfunction isAuthExpiredError(error) {\n return !!error && typeof error === 'object' && error.code === WS_AUTH_EXPIRED_CODE;\n}\nfunction normalizeAuthExpiredError(error, fallbackMessage) {\n var _a, _b;\n if (isAuthExpiredError(error))\n return error;\n const status = (_b = (_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.status) !== null && _b !== void 0 ? _b : error === null || error === void 0 ? void 0 : error.code;\n return makeAuthExpiredError(fallbackMessage, status);\n}\nfunction rememberAmbientAuthFailure(error) {\n ambientAuthFailure = error;\n return error;\n}\nfunction failConnectionAuth(connection, error) {\n connection.authFailure = error;\n connection.pendingAuthToken = null;\n connection.pendingAuthSnapshot = null;\n connection.authTokenValue = null;\n connection.authPrincipal = null;\n connection.isConnecting = false;\n connection.isConnected = false;\n connection.isAuthenticating = false;\n for (const subscriptionId of Array.from(connection.pendingSubscriptions.keys())) {\n rejectPendingSubscriptionConfirmation(connection, subscriptionId, error);\n }\n for (const subscription of connection.subscriptions.values()) {\n notifyErrorCallbacks(subscription, error);\n rejectSubscriptionRefresh(subscription, error);\n }\n}\nfunction scheduleTokenRefresh(connection, isServer) {\n // Clear any existing timer\n if (connection.tokenRefreshTimer) {\n clearInterval(connection.tokenRefreshTimer);\n connection.tokenRefreshTimer = null;\n }\n // Periodic check: every TOKEN_CHECK_INTERVAL, check if the token needs refreshing.\n // This replaces the old single setTimeout approach which was unreliable for long\n // delays (browsers throttle/suspend timers in background tabs).\n connection.tokenRefreshTimer = setInterval(async () => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n try {\n const currentToken = await getIdToken(isServer);\n if (!currentToken)\n return; // Unauthenticated, nothing to refresh\n const expirationTime = getTokenExpirationTime(currentToken);\n if (!expirationTime)\n return;\n const timeUntilExpiry = expirationTime - Date.now();\n if (timeUntilExpiry <= TOKEN_REFRESH_BUFFER) {\n console.info('[WS v2] Token expiring soon, proactively refreshing');\n // Refresh the token and store it. Do NOT reconnect — the server only\n // verifies JWT at $connect time, so the existing connection continues\n // working. The fresh token is picked up by urlProvider the next time\n // a reconnect naturally happens (network drop, keepalive timeout, etc.).\n try {\n const currentRefreshToken = await getRefreshToken(isServer);\n if (!currentRefreshToken) {\n console.warn('[WS v2] No refresh token available for proactive refresh');\n return;\n }\n const refreshData = await refreshSession(currentRefreshToken, getSessionIssuer(isServer));\n if (refreshData && refreshData.idToken && refreshData.accessToken) {\n await updateIdTokenAndAccessToken(refreshData.idToken, refreshData.accessToken, isServer, refreshData.refreshToken);\n console.info('[WS v2] Token refreshed successfully, stored for next connection');\n }\n else {\n console.warn('[WS v2] Proactive token refresh returned incomplete data');\n }\n }\n catch (refreshError) {\n // If the refresh token itself is invalid (401/403), stop retrying —\n // the token won't magically become valid next interval, and continuing\n // to hammer /session/refresh causes 429 rate-limit storms.\n if (((_a = refreshError === null || refreshError === void 0 ? void 0 : refreshError.response) === null || _a === void 0 ? void 0 : _a.status) === 401 || ((_b = refreshError === null || refreshError === void 0 ? void 0 : refreshError.response) === null || _b === void 0 ? void 0 : _b.status) === 403) {\n console.warn('[WS v2] Refresh token rejected (401/403), stopping periodic refresh');\n if (connection.tokenRefreshTimer) {\n clearInterval(connection.tokenRefreshTimer);\n connection.tokenRefreshTimer = null;\n }\n return;\n }\n // Log only the status — the raw axios error carries config.data\n // (the refresh token) and must never hit the console / log sinks.\n console.warn('[WS v2] Proactive token refresh failed, will retry next interval. status:', (_e = (_d = (_c = refreshError === null || refreshError === void 0 ? void 0 : refreshError.response) === null || _c === void 0 ? void 0 : _c.status) !== null && _d !== void 0 ? _d : refreshError === null || refreshError === void 0 ? void 0 : refreshError.code) !== null && _e !== void 0 ? _e : 'unknown');\n }\n }\n }\n catch (error) {\n console.error('[WS v2] Error in periodic token check. status:', (_h = (_g = (_f = error === null || error === void 0 ? void 0 : error.response) === null || _f === void 0 ? void 0 : _f.status) !== null && _g !== void 0 ? _g : error === null || error === void 0 ? void 0 : error.code) !== null && _h !== void 0 ? _h : 'unknown');\n }\n }, TOKEN_CHECK_INTERVAL);\n}\nasync function getFreshAuthToken(isServer) {\n var _a, _b, _c, _d, _e;\n const currentToken = await getIdToken(isServer);\n if (!currentToken) {\n if (ambientAuthFailure) {\n throw ambientAuthFailure;\n }\n return null;\n }\n if (!isTokenExpired(currentToken)) {\n ambientAuthFailure = null;\n return currentToken;\n }\n if (ambientAuthFailure) {\n throw ambientAuthFailure;\n }\n // Token is expired — attempt refresh\n const refreshToken = await getRefreshToken(isServer);\n if (!refreshToken) {\n console.warn('[WS v2] Token expired but no refresh token available');\n throw rememberAmbientAuthFailure(makeAuthExpiredError('Authentication expired and no refresh token is available'));\n }\n try {\n const refreshData = await refreshSession(refreshToken, getSessionIssuer(isServer));\n if (refreshData && refreshData.idToken && refreshData.accessToken) {\n await updateIdTokenAndAccessToken(refreshData.idToken, refreshData.accessToken, isServer, refreshData.refreshToken);\n ambientAuthFailure = null;\n return refreshData.idToken;\n }\n throw makeAuthExpiredError('Authentication refresh returned an incomplete session');\n }\n catch (error) {\n // Log only the status — the raw axios error carries config.data (the refresh\n // token) and must never reach the console / log sinks.\n console.error('[WS v2] Error refreshing token. status:', (_c = (_b = (_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.status) !== null && _b !== void 0 ? _b : error === null || error === void 0 ? void 0 : error.code) !== null && _c !== void 0 ? _c : 'unknown');\n // If the refresh token is permanently invalid (401/403), clear the stale\n // session from storage so future attempts don't keep retrying with it.\n if (!isServer && (((_d = error === null || error === void 0 ? void 0 : error.response) === null || _d === void 0 ? void 0 : _d.status) === 401 || ((_e = error === null || error === void 0 ? void 0 : error.response) === null || _e === void 0 ? void 0 : _e.status) === 403)) {\n try {\n const { getActiveSessionManager } = await import('../utils/session-manager');\n getActiveSessionManager().clearSession();\n }\n catch (clearError) {\n console.warn('[WS v2] Failed to clear stale session:', clearError);\n }\n }\n throw rememberAmbientAuthFailure(normalizeAuthExpiredError(error, 'Authentication expired and refresh failed'));\n }\n}\nasync function getConnectionAuthToken(isServer, authTokenProvider) {\n if (!authTokenProvider) {\n return getFreshAuthToken(isServer);\n }\n try {\n const token = await authTokenProvider();\n if (token)\n return token;\n throw makeAuthExpiredError('Authenticated websocket token provider returned no token');\n }\n catch (error) {\n throw normalizeAuthExpiredError(error, 'Authenticated websocket token provider failed');\n }\n}\nfunction hasDisconnectedActiveConnections() {\n for (const connection of connections.values()) {\n if (!connection.ws) {\n continue;\n }\n // Only nudge reconnection when socket is fully closed.\n // If ReconnectingWebSocket is already in CONNECTING/backoff state, don't interfere.\n if (connection.ws.readyState === WS_READY_STATE_CLOSED) {\n return true;\n }\n }\n return false;\n}\nfunction maybeReconnectFromBrowserSignal() {\n const now = Date.now();\n if (now - lastBrowserTriggeredReconnectAt < MIN_BROWSER_RECONNECT_INTERVAL_MS) {\n return;\n }\n if (!hasDisconnectedActiveConnections()) {\n return;\n }\n lastBrowserTriggeredReconnectAt = now;\n reconnectWithNewAuthV2().catch((error) => {\n console.error('[WS v2] Browser-triggered reconnect failed:', error);\n });\n}\nfunction attachBrowserReconnectHooksOnce() {\n if (browserReconnectHooksAttached) {\n return;\n }\n if (typeof window === 'undefined') {\n return;\n }\n browserReconnectHooksAttached = true;\n window.addEventListener('online', () => {\n maybeReconnectFromBrowserSignal();\n });\n if (typeof document !== 'undefined') {\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState === 'visible') {\n maybeReconnectFromBrowserSignal();\n }\n });\n }\n}\n// ============ Connection Management ============\n/**\n * Derive the stable `<collection>/<roomId>` room key from a routePath hint.\n * Returns null when the hint isn't a room path (fewer than 2 segments).\n */\nfunction roomKeyFromRoutePath(routePath) {\n if (!routePath)\n return null;\n const segs = routePath.replace(/^\\/+/, '').split('/').filter(Boolean);\n if (segs.length < 2)\n return null;\n return `${segs[0]}/${segs[1]}`;\n}\nfunction replaySubscriptions(connection) {\n for (const sub of connection.subscriptions.values()) {\n sub.lastData = undefined;\n if (!connection.pendingSubscriptions.has(sub.subscriptionId)) {\n registerDetachedReplayConfirmation(connection, sub);\n }\n sendSubscribeWithConfirmation(connection, sub);\n }\n}\n/**\n * Derive the stable identity-bucket lease key used to coalesce (singleflight)\n * and refcount (acquisition / idle-close) connection use. Ambient app/room\n * connections key by their routing target; wallet-scoped connections pin the\n * exact bearer so two distinct tokens never share a flight or a lease, even\n * when their compact `#id#<principalKey>` hashes collide.\n */\nfunction connectionLeaseKey(appId, routePath, principalKey, principalToken) {\n const roomKey = roomKeyFromRoutePath(routePath);\n const base = roomKey ? `${appId}#room#${roomKey}` : appId;\n if (!principalKey)\n return base;\n const bucket = `${base}#id#${principalKey}`;\n return principalToken ? `${bucket}#tok#${principalToken}` : bucket;\n}\nfunction cancelIdleConnectionClose(connection) {\n if (!connection.idleCloseTimer)\n return;\n clearTimeout(connection.idleCloseTimer);\n connection.idleCloseTimer = null;\n}\nfunction closeConnectionNow(connection) {\n if (connections.get(connection.key) !== connection)\n return;\n if (!connection.ws)\n return;\n cancelIdleConnectionClose(connection);\n if (connection.tokenRefreshTimer) {\n clearInterval(connection.tokenRefreshTimer);\n connection.tokenRefreshTimer = null;\n }\n const ws = connection.ws;\n connection.ws = null;\n connection.isConnecting = false;\n connection.isConnected = false;\n connection.isAuthenticating = false;\n const closeError = new Error('WebSocket connection closed');\n for (const subscriptionId of Array.from(connection.pendingSubscriptions.keys())) {\n rejectPendingSubscriptionConfirmation(connection, subscriptionId, closeError);\n }\n for (const subscription of connection.subscriptions.values()) {\n rejectSubscriptionRefresh(subscription, closeError);\n }\n connections.delete(connection.key);\n try {\n ws.close();\n }\n catch ( /* already closing */_a) { /* already closing */ }\n}\nfunction scheduleConnectionCloseIfIdle(connection) {\n var _a;\n if (connections.get(connection.key) !== connection)\n return;\n if (connection.subscriptions.size > 0)\n return;\n if (((_a = connectionAcquisitions.get(connection.acquisitionKey)) !== null && _a !== void 0 ? _a : 0) > 0)\n return;\n if (!connection.ws || connection.idleCloseTimer)\n return;\n connection.idleCloseTimer = setTimeout(() => {\n var _a;\n connection.idleCloseTimer = null;\n if (connection.subscriptions.size > 0)\n return;\n if (((_a = connectionAcquisitions.get(connection.acquisitionKey)) !== null && _a !== void 0 ? _a : 0) > 0)\n return;\n closeConnectionNow(connection);\n }, IDLE_CONNECTION_CLOSE_GRACE_MS);\n}\n/**\n * Acquire a connection under a routing-target lease. The lease is refcounted on\n * the identity-bucket key and held across the caller's auth preflight so a\n * concurrent old-route teardown cannot close a socket a new route is about to\n * reuse. The lease is released once the caller has registered its\n * subscription/callback.\n */\nasync function acquireConnection(appId, isServer, routePath, authTokenProvider, principalKey, principalToken) {\n var _a;\n const leaseKey = connectionLeaseKey(appId, routePath, principalKey, principalToken);\n connectionAcquisitions.set(leaseKey, ((_a = connectionAcquisitions.get(leaseKey)) !== null && _a !== void 0 ? _a : 0) + 1);\n let released = false;\n let releaseTimer = null;\n const release = (connection) => {\n var _a;\n if (released)\n return;\n released = true;\n if (releaseTimer) {\n clearTimeout(releaseTimer);\n releaseTimer = null;\n }\n const remaining = ((_a = connectionAcquisitions.get(leaseKey)) !== null && _a !== void 0 ? _a : 1) - 1;\n if (remaining > 0)\n connectionAcquisitions.set(leaseKey, remaining);\n else\n connectionAcquisitions.delete(leaseKey);\n if (connection)\n scheduleConnectionCloseIfIdle(connection);\n };\n try {\n const connection = await getOrCreateConnection(appId, isServer, routePath, authTokenProvider, principalKey, principalToken);\n const releaseConnection = () => release(connection);\n // Registration is synchronous after the caller's await. This fail-safe\n // releases on the next task even if an option getter/callback throws\n // before subscribeV2 reaches its explicit release path.\n releaseTimer = setTimeout(releaseConnection, 0);\n return { connection, release: releaseConnection };\n }\n catch (error) {\n release();\n throw error;\n }\n}\nasync function getOrCreateConnection(appId, isServer, routePath, authTokenProvider, principalKey, principalToken) {\n // Singleflight: concurrent first-use of the same routing target shares one\n // in-flight connection rather than each creating an orphan socket. Keyed by\n // the identity-bucket lease key so distinct wallet tokens never coalesce.\n const leaseKey = connectionLeaseKey(appId, routePath, principalKey, principalToken);\n const activeFlight = connectionFlights.get(leaseKey);\n if (activeFlight)\n return activeFlight;\n const flight = getOrCreateConnectionOnce(appId, isServer, routePath, authTokenProvider, principalKey, principalToken, leaseKey);\n connectionFlights.set(leaseKey, flight);\n try {\n return await flight;\n }\n finally {\n if (connectionFlights.get(leaseKey) === flight) {\n connectionFlights.delete(leaseKey);\n }\n }\n}\nasync function getOrCreateConnectionOnce(appId, isServer, routePath, authTokenProvider, principalKey, principalToken, leaseKey) {\n attachBrowserReconnectHooksOnce();\n // A per-room subscription gets its OWN connection routed to the room DO; all\n // other subscriptions share the app-level connection (project DO). The worker\n // derives the room from the `?path=` we attach below and is the final routing\n // authority — `routePath` is only a hint.\n const roomKey = roomKeyFromRoutePath(routePath);\n // A wallet-scoped subscription (server WalletClient) gets its OWN connection\n // keyed by the wallet identity, so its WS authenticates as that wallet and\n // never shares a connection (or token) with any top-level server caller.\n const base = roomKey ? `${appId}#room#${roomKey}` : appId;\n const identityBucketKey = principalKey\n ? `${base}#id#${principalKey}`\n : base;\n let connKey = identityBucketKey;\n let connection;\n if (principalKey && principalToken) {\n // The 31-bit hash selects a small bucket only. Exact token equality is\n // authoritative, and a rare collision gets an independent map slot.\n for (const [candidateKey, candidate] of connections) {\n if ((candidateKey === identityBucketKey || candidateKey.startsWith(`${identityBucketKey}#collision#`)) &&\n candidate.connectionIdentityToken === principalToken) {\n connKey = candidateKey;\n connection = candidate;\n break;\n }\n }\n if (!connection && connections.has(connKey)) {\n let collisionIndex = 1;\n while (connections.has(`${identityBucketKey}#collision#${collisionIndex}`))\n collisionIndex += 1;\n connKey = `${identityBucketKey}#collision#${collisionIndex}`;\n }\n }\n else {\n connection = connections.get(connKey);\n }\n if (connection && connection.ws) {\n // We may reuse this connection; cancel any pending idle-close so it is\n // not torn down during the auth preflight below. The held acquisition\n // lease also guards this window, but cancelling here avoids a needless\n // grace-timer round-trip on the common reuse path.\n cancelIdleConnectionClose(connection);\n if (connection.authFailure) {\n throw connection.authFailure;\n }\n let currentAuthToken;\n try {\n currentAuthToken = await getConnectionAuthToken(isServer, authTokenProvider);\n }\n catch (error) {\n const authError = normalizeAuthExpiredError(error, 'Authentication expired and refresh failed');\n failConnectionAuth(connection, authError);\n throw authError;\n }\n if (connection.isConnected &&\n !connection.isAuthenticating &&\n !connectionMatchesAuthToken(connection, currentAuthToken)) {\n closeConnectionNow(connection);\n }\n else {\n connection.authFailure = null;\n return connection;\n }\n connection.authFailure = null;\n }\n let initialAuthToken = await getConnectionAuthToken(isServer, authTokenProvider);\n // Create new connection\n connection = {\n ws: null,\n subscriptions: new Map(),\n pendingSubscriptions: new Map(),\n pendingUnsubscriptions: new Map(),\n pendingRequests: new Map(),\n isConnecting: false,\n isConnected: false,\n isAuthenticating: false,\n appId,\n key: connKey,\n acquisitionKey: leaseKey,\n routePath: roomKey ? routePath : undefined,\n authTokenProvider,\n connectionIdentityToken: principalToken !== null && principalToken !== void 0 ? principalToken : null,\n pendingAuthToken: null,\n pendingAuthSnapshot: null,\n authTokenValue: null,\n authPrincipal: null,\n socketGeneration: 0,\n tokenRefreshTimer: null,\n idleCloseTimer: null,\n consecutiveAuthFailures: 0,\n authFailure: null,\n };\n connections.set(connKey, connection);\n // URL provider for reconnection with fresh tokens\n const urlProvider = async () => {\n const config = await getConfig();\n const wsUrl = new URL(config.wsApiUrl);\n // Always use v2 path\n wsUrl.pathname = WS_V2_PATH;\n // Set appId from the configured SDK source, or an explicit per-call\n // override passed through subscribeV2. Do not consult ambient globals:\n // app identity must come from init({ appId }) or an explicit call option.\n wsUrl.searchParams.append('appId', appId || config.appId);\n // Per-room connection: carry the room path so the worker routes this WS\n // to the room DO (appId#room#roomId) where the live view fan-out lives.\n if (connection.routePath) {\n wsUrl.searchParams.append('routePath', connection.routePath);\n }\n // Resolve auth token if available. A wallet-scoped connection resolves\n // its token from the wallet's own session (self-refreshing); all others\n // use the browser session or fail closed for top-level server calls. The token is sent as the first WS\n // frame after open, never as a URL query parameter.\n let authToken;\n try {\n authToken = initialAuthToken !== undefined\n ? initialAuthToken\n : await getConnectionAuthToken(isServer, connection.authTokenProvider);\n initialAuthToken = undefined;\n }\n catch (error) {\n const authError = normalizeAuthExpiredError(error, 'Authentication expired and refresh failed');\n failConnectionAuth(connection, authError);\n throw authError;\n }\n connection.pendingAuthToken = authToken || null;\n connection.pendingAuthSnapshot = authSnapshotFromToken(authToken);\n if (authToken) {\n // Successful token acquisition — reset failure counter\n connection.consecutiveAuthFailures = 0;\n connection.authFailure = null;\n }\n return wsUrl.toString();\n };\n // Create WebSocket connection\n connection.isConnecting = true;\n const ws = new ReconnectingWebSocket(urlProvider, [], Object.assign(Object.assign({}, WS_CONFIG), { debug: false }));\n connection.ws = ws;\n // Handle connection open\n ws.addEventListener('open', () => {\n var _a, _b;\n connection.socketGeneration += 1;\n connection.isConnecting = false;\n connection.isConnected = true;\n // NOTE: Do NOT reset consecutiveAuthFailures here. It is reset when a\n // fresh auth token is actually obtained or on an explicit auth change.\n // Schedule periodic token freshness checks\n scheduleTokenRefresh(connection, isServer);\n if (connection.pendingAuthToken) {\n connection.isAuthenticating = true;\n try {\n (_a = connection.ws) === null || _a === void 0 ? void 0 : _a.send(JSON.stringify({ type: 'auth', token: connection.pendingAuthToken }));\n }\n catch (error) {\n connection.isAuthenticating = false;\n connection.isConnected = false;\n console.error('[WS v2] Error sending auth message:', error);\n try {\n (_b = connection.ws) === null || _b === void 0 ? void 0 : _b.close(1008, 'Authentication send failed');\n }\n catch (_c) {\n // Already closed.\n }\n }\n }\n else {\n connection.isAuthenticating = false;\n connection.authTokenValue = null;\n connection.authPrincipal = null;\n replaySubscriptions(connection);\n }\n });\n // Handle incoming messages\n ws.addEventListener('message', (event) => {\n try {\n const message = JSON.parse(event.data);\n handleServerMessage(connection, message);\n }\n catch (error) {\n console.error('[WS v2] Error parsing message:', error);\n }\n });\n // Handle errors\n ws.addEventListener('error', (event) => {\n console.error('[WS v2] WebSocket error:', event);\n const wsError = new Error('WebSocket error');\n for (const subscriptionId of Array.from(connection.pendingSubscriptions.keys())) {\n rejectPendingSubscriptionConfirmation(connection, subscriptionId, wsError);\n }\n for (const subscription of connection.subscriptions.values()) {\n rejectSubscriptionRefresh(subscription, wsError);\n }\n });\n // Handle close\n ws.addEventListener('close', () => {\n connection.isConnected = false;\n connection.isAuthenticating = false;\n const disconnectError = new Error('WebSocket disconnected');\n for (const subscriptionId of Array.from(connection.pendingSubscriptions.keys())) {\n rejectPendingSubscriptionConfirmation(connection, subscriptionId, disconnectError);\n }\n if (connection.tokenRefreshTimer) {\n clearInterval(connection.tokenRefreshTimer);\n connection.tokenRefreshTimer = null;\n }\n // Reject all pending WS CRUD requests on disconnect (fail fast)\n for (const [id, pending] of connection.pendingRequests) {\n clearTimeout(pending.timer);\n pending.reject(disconnectError);\n }\n connection.pendingRequests.clear();\n });\n return connection;\n}\nfunction handleServerMessage(connection, message) {\n var _a, _b, _c, _d, _e;\n switch (message.type) {\n case 'authenticated': {\n connection.isAuthenticating = false;\n connection.authTokenValue = (_b = (_a = connection.pendingAuthSnapshot) === null || _a === void 0 ? void 0 : _a.tokenValue) !== null && _b !== void 0 ? _b : null;\n connection.authPrincipal = (_d = (_c = connection.pendingAuthSnapshot) === null || _c === void 0 ? void 0 : _c.principal) !== null && _d !== void 0 ? _d : null;\n replaySubscriptions(connection);\n break;\n }\n case 'subscribed': {\n const subscription = connection.subscriptions.get(message.subscriptionId);\n if (subscription) {\n const refresh = subscription.refresh;\n // A data update can race ahead of subscribed during reconnect.\n // If we already received data for this subscription, treat subscribed\n // as an ack only and avoid regressing to an older snapshot.\n if (refresh) {\n const hadBaseline = subscription.lastData !== undefined;\n if (subscription.dataRevision === refresh.dataRevisionAtStart) {\n if (subscription.cache) {\n const cacheKey = getCacheKey(subscription.path, subscription.prompt, subscription.shape, subscription.limit, subscription.cursor, subscription.filter, subscription.identity);\n setResponseCacheEntry(cacheKey, subscription.identityToken, message.data);\n }\n subscription.lastData = message.data;\n subscription.dataRevision += 1;\n if (hadBaseline) {\n const callbacks = Array.from(refresh.callbacks)\n .filter((callback) => subscription.callbacks.includes(callback));\n notifyCallbackOptions(callbacks, message.data);\n }\n else {\n // The refresh joined an original registration or a\n // reconnect replay before its first baseline arrived.\n // Every active callback needs that initial snapshot.\n notifyCallbacks(subscription, message.data);\n }\n }\n else if (refresh.callbacks.size > 0 && subscription.lastData !== undefined) {\n // A newer authorized data frame arrived after this refresh\n // began. Do not regress lastData to the older subscribed\n // snapshot; use that newer frame for callbacks that joined\n // after it was broadcast.\n const callbacks = Array.from(refresh.callbacks)\n .filter((callback) => subscription.callbacks.includes(callback));\n notifyCallbackOptions(callbacks, subscription.lastData);\n }\n resolveSubscriptionRefresh(subscription);\n }\n else if (subscription.lastData === undefined) {\n if (subscription.cache) {\n const cacheKey = getCacheKey(subscription.path, subscription.prompt, subscription.shape, subscription.limit, subscription.cursor, subscription.filter, subscription.identity);\n setResponseCacheEntry(cacheKey, subscription.identityToken, message.data);\n }\n subscription.lastData = message.data;\n subscription.dataRevision += 1;\n notifyCallbacks(subscription, message.data);\n }\n }\n // Resolve pending subscription promise\n const pending = connection.pendingSubscriptions.get(message.subscriptionId);\n if (pending) {\n resolvePendingSubscriptionConfirmation(connection, message.subscriptionId);\n }\n break;\n }\n case 'unsubscribed': {\n // Resolve pending unsubscription promise\n const pending = connection.pendingUnsubscriptions.get(message.subscriptionId);\n if (pending) {\n pending.resolve();\n connection.pendingUnsubscriptions.delete(message.subscriptionId);\n }\n break;\n }\n case 'data': {\n const subscription = connection.subscriptions.get(message.subscriptionId);\n if (subscription) {\n // Update cache\n if (subscription.cache) {\n const cacheKey = getCacheKey(subscription.path, subscription.prompt, subscription.shape, subscription.limit, subscription.cursor, subscription.filter, subscription.identity);\n setResponseCacheEntry(cacheKey, subscription.identityToken, message.data);\n }\n // Store last data\n subscription.lastData = message.data;\n subscription.dataRevision += 1;\n // Notify callbacks\n notifyCallbacks(subscription, message.data);\n // A data frame is itself a full, freshly authorized snapshot.\n // It satisfies every joined callback even if the duplicate\n // subscribed ACK was lost; resolving here prevents a false\n // refresh timeout ten seconds after the UI already rendered.\n if (subscription.refresh) {\n resolveSubscriptionRefresh(subscription);\n }\n }\n // A data frame is a full, authorized snapshot and therefore also\n // confirms an initial registration when its `subscribed` ACK was\n // lost. Resolve the originating promise without duplicating state.\n resolvePendingSubscriptionConfirmation(connection, message.subscriptionId);\n break;\n }\n case 'response': {\n const pendingReq = connection.pendingRequests.get(message.requestId);\n if (pendingReq) {\n connection.pendingRequests.delete(message.requestId);\n clearTimeout(pendingReq.timer);\n if (message.status >= 400) {\n pendingReq.reject(new Error(`Request failed with status ${message.status}`));\n }\n else {\n pendingReq.resolve(message.data);\n }\n }\n break;\n }\n case 'setResponse': {\n const pendingSet = connection.pendingRequests.get(message.requestId);\n if (pendingSet) {\n connection.pendingRequests.delete(message.requestId);\n clearTimeout(pendingSet.timer);\n if (message.statusCode >= 400) {\n pendingSet.reject(new Error(((_e = message.body) === null || _e === void 0 ? void 0 : _e.message) || `Set failed with status ${message.statusCode}`));\n }\n else {\n pendingSet.resolve(message.body);\n }\n }\n break;\n }\n case 'error': {\n console.error('[WS v2] Server error:', message.code, message.message);\n // Build an Error that ALSO carries the stable `code` as a structured\n // field (not just string-interpolated into the message) so callers can\n // branch on it — e.g. `catch (e) { if (e.code === 'invariant_violation') }`\n // — symmetric with the HTTP path in utils/api.ts. requestId (CRUD) /\n // subscriptionId are attached for correlation with the decision log.\n const buildWsError = () => {\n const err = new Error(`${message.code}: ${message.message}`);\n err.code = message.code;\n if (message.requestId)\n err.requestId = message.requestId;\n if (message.subscriptionId)\n err.subscriptionId = message.subscriptionId;\n // A policy/invariant denial over the socket carries the same\n // structured decline as the HTTP path (live-intent acks, WS\n // writes). Mirror `.decline` and notify the browser widget.\n const declineBody = message.decline\n ? { decline: message.decline }\n : {\n code: message.code,\n message: message.message,\n reason: message.reason,\n invariant: message.invariant,\n verdict: message.verdict,\n };\n const decline = deriveDecline(declineBody);\n if (decline) {\n err.decline = decline;\n err.isBoundedDecline = true;\n dispatchDeclineEvent(decline, connection.appId);\n }\n return err;\n };\n const wsError = buildWsError();\n // Handle CRUD request errors (requestId present)\n if (message.requestId) {\n const pendingReq = connection.pendingRequests.get(message.requestId);\n if (pendingReq) {\n connection.pendingRequests.delete(message.requestId);\n clearTimeout(pendingReq.timer);\n pendingReq.reject(wsError);\n }\n }\n if (message.subscriptionId) {\n // Reject pending subscription if this is a subscription error\n const pending = connection.pendingSubscriptions.get(message.subscriptionId);\n if (pending) {\n rejectPendingSubscriptionConfirmation(connection, message.subscriptionId, wsError);\n }\n // Notify error callbacks for this subscription\n const subscription = connection.subscriptions.get(message.subscriptionId);\n if (subscription) {\n notifyErrorCallbacks(subscription, wsError);\n rejectSubscriptionRefresh(subscription, wsError);\n }\n }\n break;\n }\n }\n}\n/**\n * Additively attach the bare `id` (leaf doc key) to a subscription row (Bug 1).\n * Rows carry `_id`/`pathId` = the full document path; this leaves those as-is and\n * adds `id` = the last path segment so `row.id` is the doc key apps expect. No-ops\n * for non-objects and rows that already define `id`.\n */\nfunction withSubscriptionId(row) {\n var _a, _b, _c;\n if (!row || typeof row !== 'object' || Array.isArray(row))\n return row;\n if ('id' in row)\n return row;\n const source = (_c = (_b = (_a = row._id) !== null && _a !== void 0 ? _a : row.pathId) !== null && _b !== void 0 ? _b : row.relativePath) !== null && _c !== void 0 ? _c : row.absolutePath;\n if (typeof source !== 'string' || source.length === 0)\n return row;\n const leaf = docId(source);\n if (!leaf)\n return row;\n return Object.assign(Object.assign({}, row), { id: leaf });\n}\n/**\n * The `onData` payload follows the path: a collection delivers a bare array of\n * rows, a single-doc path delivers the document (or null). Attach the bare `id`\n * to each returned row in either case, additive (Bug 1).\n */\nfunction addIdsToSubscriptionData(data) {\n if (Array.isArray(data))\n return data.map(withSubscriptionId);\n return withSubscriptionId(data);\n}\nfunction notifyCallbackOptions(callbacks, data) {\n var _a;\n // Attach the bare `id` (leaf doc key) to every delivered row (Bug 1).\n const decorated = addIdsToSubscriptionData(data);\n for (const callback of callbacks) {\n try {\n (_a = callback.onData) === null || _a === void 0 ? void 0 : _a.call(callback, decorated);\n }\n catch (error) {\n console.error('[WS v2] Error in subscription callback:', error);\n }\n }\n}\nfunction notifyCallbacks(subscription, data) {\n // Snapshot the callbacks array so that unsubscriptions during\n // notification don't cause callbacks to be skipped.\n notifyCallbackOptions(subscription.callbacks.slice(), data);\n}\nfunction notifyErrorCallback(callback, error) {\n let delivered = false;\n try {\n const onError = callback.onError;\n if (!onError)\n return false;\n onError(error);\n delivered = true;\n }\n catch (callbackError) {\n console.error('[WS v2] Error in subscription error callback:', callbackError);\n }\n return delivered;\n}\nfunction notifyErrorCallbacks(subscription, error) {\n let delivered = false;\n const callbacks = subscription.callbacks.slice();\n for (const callback of callbacks) {\n delivered = notifyErrorCallback(callback, error) || delivered;\n }\n if (delivered)\n error.__boundedDeliveredToOnError = true;\n return delivered;\n}\n// WebSocket readyState constants\nconst WS_READY_STATE_OPEN = 1;\nconst WS_READY_STATE_CLOSED = 3;\nfunction sendSubscribe(connection, subscription) {\n if (!connection.ws || connection.ws.readyState !== WS_READY_STATE_OPEN) {\n return;\n }\n const message = {\n type: 'subscribe',\n subscriptionId: subscription.subscriptionId,\n path: subscription.path,\n filter: subscription.filter,\n sort: subscription.sort,\n prompt: subscription.prompt ? safeBtoa(subscription.prompt) : undefined,\n includeSubPaths: subscription.includeSubPaths,\n shape: subscription.shape && Object.keys(subscription.shape).length > 0\n ? subscription.shape\n : undefined,\n limit: subscription.limit,\n cursor: subscription.cursor,\n };\n try {\n connection.ws.send(JSON.stringify(message));\n }\n catch (error) {\n console.error('[WS v2] Error sending subscribe message:', error);\n }\n}\nfunction resolvePendingSubscriptionConfirmation(connection, subscriptionId) {\n const pending = connection.pendingSubscriptions.get(subscriptionId);\n if (!pending)\n return false;\n connection.pendingSubscriptions.delete(subscriptionId);\n if (pending.timer) {\n clearTimeout(pending.timer);\n pending.timer = null;\n }\n pending.resolve();\n return true;\n}\nfunction rejectPendingSubscriptionConfirmation(connection, subscriptionId, error) {\n const pending = connection.pendingSubscriptions.get(subscriptionId);\n if (!pending)\n return false;\n connection.pendingSubscriptions.delete(subscriptionId);\n if (pending.timer) {\n clearTimeout(pending.timer);\n pending.timer = null;\n }\n pending.reject(error);\n return true;\n}\nfunction armSubscriptionConfirmationTimeout(connection, subscription, pending) {\n pending.timer = setTimeout(() => {\n if (connection.pendingSubscriptions.get(subscription.subscriptionId) !== pending)\n return;\n pending.timer = null;\n const sameReadySocket = connection.ws === pending.socket &&\n connection.socketGeneration === pending.socketGeneration &&\n connection.authTokenValue === pending.authTokenValue &&\n connection.authPrincipal === pending.authPrincipal &&\n connection.isConnected &&\n !connection.isAuthenticating &&\n pending.socket.readyState === WS_READY_STATE_OPEN;\n const sameRegistration = connection.subscriptions.get(subscription.subscriptionId) === subscription;\n if (!pending.retrySent && sameReadySocket && sameRegistration) {\n pending.retrySent = true;\n // Arm the terminal timeout before sending: browser/test transports\n // may synchronously dispatch the acknowledgement from send().\n armSubscriptionConfirmationTimeout(connection, subscription, pending);\n sendSubscribe(connection, subscription);\n return;\n }\n rejectPendingSubscriptionConfirmation(connection, subscription.subscriptionId, new Error('Subscription timeout'));\n }, SUBSCRIPTION_CONFIRM_TIMEOUT_MS);\n}\n/**\n * Bind an existing confirmation promise to the exact socket session that is\n * about to carry its subscribe frame. Cold-start registrations create the\n * promise before the socket opens; replay uses this helper to move the timeout\n * from the connection wait onto the authenticated socket without allocating a\n * second promise or leaving the original timer behind.\n */\nfunction sendSubscribeWithConfirmation(connection, subscription) {\n const pending = connection.pendingSubscriptions.get(subscription.subscriptionId);\n const socket = connection.ws;\n if (pending && socket && socket.readyState === WS_READY_STATE_OPEN) {\n if (pending.timer) {\n clearTimeout(pending.timer);\n pending.timer = null;\n }\n pending.socket = socket;\n pending.socketGeneration = connection.socketGeneration;\n pending.authTokenValue = connection.authTokenValue;\n pending.authPrincipal = connection.authPrincipal;\n // Arm before send: browser/test transports may synchronously dispatch\n // the subscribed/data/error response from send().\n armSubscriptionConfirmationTimeout(connection, subscription, pending);\n }\n sendSubscribe(connection, subscription);\n}\n/**\n * A reconnect replay has no caller awaiting subscribeV2 anymore, but it still\n * needs the same bounded confirmation/retry guarantee. Attach the rejection\n * handler immediately so this recovery record can never become an unhandled\n * promise. Structured server errors are delivered by handleServerMessage;\n * terminal local timeouts are surfaced here exactly once to active callbacks.\n */\nfunction registerDetachedReplayConfirmation(connection, subscription) {\n const socket = connection.ws;\n if (!socket || connection.pendingSubscriptions.has(subscription.subscriptionId))\n return;\n let resolve;\n let reject;\n const promise = new Promise((resolvePromise, rejectPromise) => {\n resolve = resolvePromise;\n reject = rejectPromise;\n });\n const pending = {\n resolve,\n reject,\n timer: null,\n retrySent: false,\n socket,\n socketGeneration: connection.socketGeneration,\n authTokenValue: connection.authTokenValue,\n authPrincipal: connection.authPrincipal,\n };\n connection.pendingSubscriptions.set(subscription.subscriptionId, pending);\n void promise.catch((error) => {\n if (error.__boundedDeliveredToOnError)\n return;\n if (connection.subscriptions.get(subscription.subscriptionId) !== subscription)\n return;\n // Ordinary socket/auth-change close paths will replay again and did not\n // historically poison every established callback. Only a healthy socket\n // exhausting its bounded confirmation retry is a new terminal condition.\n if (error.message === 'Subscription timeout') {\n const delivered = notifyErrorCallbacks(subscription, error);\n if (!delivered) {\n console.warn('[WS v2] Replayed subscription confirmation timed out:', subscription.path);\n }\n }\n });\n}\nfunction resolveSubscriptionRefresh(subscription) {\n const refresh = subscription.refresh;\n if (!refresh)\n return;\n subscription.refresh = null;\n if (refresh.timer)\n clearTimeout(refresh.timer);\n refresh.callbacks.clear();\n refresh.resolve();\n}\nfunction rejectSubscriptionRefresh(subscription, error) {\n const refresh = subscription.refresh;\n if (!refresh)\n return;\n subscription.refresh = null;\n if (refresh.timer)\n clearTimeout(refresh.timer);\n refresh.callbacks.clear();\n refresh.reject(error);\n}\n/**\n * A callback joining an already-registered non-cache subscription cannot be\n * seeded from `lastData`: that snapshot may predate the callback's auth\n * preflight. Re-send the same subscription id so the server re-runs read auth\n * and returns a fresh baseline, without allocating another websocket or\n * replacing the logical client subscription.\n */\nfunction requestFreshSubscriptionSnapshot(connection, subscription, callback) {\n let refresh = subscription.refresh;\n if (!refresh) {\n let resolve;\n let reject;\n const promise = new Promise((resolvePromise, rejectPromise) => {\n resolve = resolvePromise;\n reject = rejectPromise;\n });\n refresh = {\n promise,\n resolve,\n reject,\n timer: null,\n callbacks: new Set(),\n dataRevisionAtStart: subscription.dataRevision,\n };\n subscription.refresh = refresh;\n refresh.timer = setTimeout(() => {\n if (subscription.refresh !== refresh)\n return;\n rejectSubscriptionRefresh(subscription, new Error('Subscription timeout'));\n }, 10000);\n }\n // Register before sendSubscribe: test/browser transports may synchronously\n // dispatch the subscribed response from send().\n refresh.callbacks.add(callback);\n // Every newly joined callback gets an idempotent same-id resend when the\n // authenticated socket is ready. Do not suppress this because an initial\n // confirmation or an earlier refresh is pending: that pending frame may\n // have been lost or displaced, and sharing it is exactly how an entire\n // route remount can inherit one doomed timeout. When connecting or\n // authenticating, replaySubscriptions will send after auth completes.\n if (connection.isConnected && !connection.isAuthenticating) {\n sendSubscribe(connection, subscription);\n }\n return refresh.promise;\n}\nfunction sendUnsubscribe(connection, subscriptionId) {\n if (!connection.ws || connection.ws.readyState !== WS_READY_STATE_OPEN) {\n return;\n }\n const message = {\n type: 'unsubscribe',\n subscriptionId,\n };\n try {\n connection.ws.send(JSON.stringify(message));\n }\n catch (error) {\n console.error('[WS v2] Error sending unsubscribe message:', error);\n }\n}\n// ============ Public API ============\n/**\n * Subscribe to data at a path using WebSocket v2.\n * Returns an unsubscribe function.\n */\n/**\n * @param roomRoutePath INTERNAL ONLY. A `<sessionCollection>/<roomId>` room path\n * used by `live.subscribeView` to route this subscription's connection to the\n * per-room DO (where live view fan-out lives). It is NOT part of the public\n * subscribe API — app code never passes routing; the worker remains the\n * authority on the destination DO (it derives the room from the `?path=` we\n * attach). This argument only tells the client which connection to multiplex\n * the subscription onto, since a WS connection routes to a single DO.\n */\nexport async function subscribeV2(path, subscriptionOptions, roomRoutePath) {\n var _a, _b, _c, _d, _e;\n const config = await getConfig();\n const normalizedPath = path.startsWith('/') ? path.slice(1) : path;\n // Use explicit appId override if provided, otherwise fall back to config\n const effectiveAppId = subscriptionOptions.appId || config.appId;\n // H1: scope the response cache to the caller's identity so a private snapshot\n // cached for one principal is never delivered to a different principal who\n // subscribes with identical options (shared process / SSR / login-switch).\n // Per-subscription wallet override (server WalletClient.subscribe). When set,\n // the connection authenticates + caches under the wallet's identity instead of\n // any top-level server caller — so a `createWalletClient` caller can\n // subscribe through its explicit wallet session.\n const overrides = subscriptionOptions._overrides;\n const authTokenProvider = (overrides === null || overrides === void 0 ? void 0 : overrides._getAuthHeaders)\n ? async () => bearerFromAuthHeaders(await overrides._getAuthHeaders()) || null\n : undefined;\n const identityInfo = await getSubscriptionIdentity(effectiveAppId, config.isServer, overrides);\n const identity = identityInfo.key;\n const identityToken = identityInfo.token;\n const responseCacheEnabled = subscriptionOptions.cache === true && identityInfo.cacheable;\n // Preserve the existing compact connection-key shape, but use the exact\n // token as a secondary in-memory equality check within that hash bucket.\n const principalKey = authTokenProvider ? identity : undefined;\n const principalToken = authTokenProvider\n ? (identityToken !== null && identityToken !== void 0 ? identityToken : identity)\n : undefined;\n const cacheKey = responseCacheEnabled\n ? getCacheKey(normalizedPath, subscriptionOptions.prompt, subscriptionOptions.shape, subscriptionOptions.limit, subscriptionOptions.cursor, subscriptionOptions.filter, identity)\n : null;\n // Acquire a connection for this routing target (room-scoped when a room route\n // is supplied by the live helper, else the app-level connection). The lease is\n // held across auth preflight and released once this call registers below, so a\n // concurrent old-route teardown cannot close a socket we are about to reuse.\n let connection;\n let releaseConnection;\n try {\n const acquisition = await acquireConnection(effectiveAppId, config.isServer, roomRoutePath, authTokenProvider, principalKey, principalToken);\n connection = acquisition.connection;\n releaseConnection = acquisition.release;\n }\n catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n if (subscriptionOptions.onError) {\n subscriptionOptions.onError(err);\n return async () => { };\n }\n throw err;\n }\n const cachedEntry = cacheKey ? getResponseCacheEntry(cacheKey, identityToken) : undefined;\n // Check if we already have a subscription for this path+prompt+shape+limit+cursor+filter+sort\n let existingSubscription;\n let specKey = '';\n try {\n // Stringify THIS call's specs once; existing subscriptions carry their\n // precomputed specKey, so the scan is a string compare per entry\n // (previously each new subscribe re-stringified every existing\n // subscription's shape/filter/sort — O(N²) with many live hooks).\n specKey = JSON.stringify([\n (_a = subscriptionOptions.shape) !== null && _a !== void 0 ? _a : null,\n (_b = subscriptionOptions.filter) !== null && _b !== void 0 ? _b : null,\n (_c = subscriptionOptions.sort) !== null && _c !== void 0 ? _c : null,\n ]);\n for (const sub of connection.subscriptions.values()) {\n // H1: also require the same principal identity (compact hash AND exact\n // token) — a different logged-in user must not piggy-back on (and\n // inherit lastData from) another user's existing subscription, even\n // with identical path/prompt/shape/filter/sort.\n if (sub.identity === identity && sub.identityToken === identityToken && sub.path === normalizedPath && sub.prompt === subscriptionOptions.prompt && sub.specKey === specKey && sub.includeSubPaths === ((_d = subscriptionOptions.includeSubPaths) !== null && _d !== void 0 ? _d : false) && sub.limit === subscriptionOptions.limit && sub.cursor === subscriptionOptions.cursor) {\n existingSubscription = sub;\n break;\n }\n }\n }\n catch (error) {\n releaseConnection();\n throw error;\n }\n if (existingSubscription) {\n let replayData = undefined;\n let replayOnData;\n if (responseCacheEnabled) {\n // Read callback getters before mutating the shared subscription. If\n // a caller supplied a throwing getter, the acquisition fail-safe can\n // release cleanly without leaving a ghost callback behind.\n replayOnData = subscriptionOptions.onData;\n replayData = existingSubscription.lastData !== undefined\n ? existingSubscription.lastData\n : cachedEntry && Date.now() - cachedEntry.timestamp < CACHE_TTL\n ? cachedEntry.data\n : undefined;\n }\n if (responseCacheEnabled) {\n existingSubscription.cache = true;\n }\n // Add callback to existing subscription\n existingSubscription.callbacks.push(subscriptionOptions);\n let refreshPromise = null;\n if (responseCacheEnabled) {\n // Explicit, principal-bound cache opt-in may replay exactly one\n // snapshot. Prefer the active subscription's lastData, falling back\n // to the short-lived response cache while a reconnect is in flight.\n if (replayData !== undefined && replayOnData) {\n setTimeout(() => {\n replayOnData === null || replayOnData === void 0 ? void 0 : replayOnData(addIdsToSubscriptionData(replayData));\n }, 0);\n }\n }\n else {\n // Default (non-cache) subscriptions require a fresh authorized\n // baseline for every newly joined callback. Reuse the same logical\n // subscription id and socket, but make the server re-run the read.\n refreshPromise = requestFreshSubscriptionSnapshot(connection, existingSubscription, subscriptionOptions);\n }\n releaseConnection();\n if (refreshPromise) {\n try {\n await refreshPromise;\n }\n catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n let deliveredLocally = false;\n if (!err.__boundedDeliveredToOnError) {\n deliveredLocally = notifyErrorCallback(subscriptionOptions, err);\n }\n if (!subscriptionOptions.onError) {\n await removeCallbackFromSubscription(connection, existingSubscription.subscriptionId, subscriptionOptions);\n throw err;\n }\n if (!err.__boundedDeliveredToOnError && !deliveredLocally) {\n console.warn('[WS v2] Subscription refresh failed, keeping for reconnect recovery:', error);\n }\n }\n }\n return async () => {\n await removeCallbackFromSubscription(connection, existingSubscription.subscriptionId, subscriptionOptions);\n };\n }\n // Deliver cached data immediately for a new logical subscription, but only\n // after connection auth preflight has succeeded. An expired authenticated\n // session must receive an auth error, not a stale private snapshot followed\n // by a failed connect.\n if (cachedEntry && Date.now() - cachedEntry.timestamp < CACHE_TTL && subscriptionOptions.onData) {\n setTimeout(() => {\n var _a;\n (_a = subscriptionOptions.onData) === null || _a === void 0 ? void 0 : _a.call(subscriptionOptions, addIdsToSubscriptionData(cachedEntry.data));\n }, 0);\n }\n // Create new subscription\n const subscriptionId = generateSubscriptionId();\n let subscription;\n try {\n subscription = {\n subscriptionId,\n path: normalizedPath,\n filter: subscriptionOptions.filter,\n sort: subscriptionOptions.sort,\n prompt: subscriptionOptions.prompt,\n shape: subscriptionOptions.shape,\n limit: subscriptionOptions.limit,\n cursor: subscriptionOptions.cursor,\n includeSubPaths: (_e = subscriptionOptions.includeSubPaths) !== null && _e !== void 0 ? _e : false,\n callbacks: [subscriptionOptions],\n lastData: undefined,\n dataRevision: 0,\n refresh: null,\n cache: responseCacheEnabled,\n identity,\n identityToken,\n specKey,\n };\n connection.subscriptions.set(subscriptionId, subscription);\n }\n catch (error) {\n releaseConnection();\n throw error;\n }\n releaseConnection();\n // Register the confirmation before any possible synchronous send/ACK. This\n // includes the first subscription on a cold socket: replaySubscriptions()\n // will bind this same pending record to the authenticated socket and send it.\n const subscriptionPromise = new Promise((resolve, reject) => {\n const socket = connection.ws;\n if (!socket) {\n reject(new Error('WebSocket disconnected'));\n return;\n }\n const pending = {\n resolve,\n reject,\n timer: null,\n retrySent: false,\n socket,\n socketGeneration: connection.socketGeneration,\n authTokenValue: connection.authTokenValue,\n authPrincipal: connection.authPrincipal,\n };\n connection.pendingSubscriptions.set(subscriptionId, pending);\n // Bound a cold connection/auth wait as well. Once the socket becomes\n // ready, sendSubscribeWithConfirmation() replaces this timer with a\n // fresh per-socket confirmation window.\n armSubscriptionConfirmationTimeout(connection, subscription, pending);\n });\n if (connection.isConnected && !connection.isAuthenticating) {\n sendSubscribeWithConfirmation(connection, subscription);\n }\n try {\n await subscriptionPromise;\n }\n catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n let deliveredLocally = false;\n if (!err.__boundedDeliveredToOnError) {\n // A local confirmation timeout belongs to the caller that\n // originated it. Joined callbacks may already have a viable\n // same-id refresh and must not be poisoned by that old attempt.\n deliveredLocally = notifyErrorCallback(subscriptionOptions, err);\n }\n if (!subscriptionOptions.onError) {\n rejectPendingSubscriptionConfirmation(connection, subscriptionId, err);\n // This registration may have acquired joined callbacks while\n // its confirmation was pending. Remove only the originating\n // callback; deleting the whole logical subscription would\n // orphan those remounted consumers and their refresh flight.\n await removeCallbackFromSubscription(connection, subscriptionId, subscriptionOptions);\n throw err;\n }\n if (!err.__boundedDeliveredToOnError && !deliveredLocally) {\n console.warn('[WS v2] Subscription confirmation failed, keeping for reconnect recovery:', error);\n }\n }\n // Return unsubscribe function\n return async () => {\n await removeCallbackFromSubscription(connection, subscriptionId, subscriptionOptions);\n };\n}\nasync function removeCallbackFromSubscription(connection, subscriptionId, callback) {\n var _a;\n const subscription = connection.subscriptions.get(subscriptionId);\n if (!subscription) {\n return;\n }\n // Remove this callback\n subscription.callbacks = subscription.callbacks.filter(cb => cb !== callback);\n (_a = subscription.refresh) === null || _a === void 0 ? void 0 : _a.callbacks.delete(callback);\n // If there are still callbacks, don't unsubscribe\n if (subscription.callbacks.length > 0) {\n return;\n }\n // No more callbacks, unsubscribe from server\n connection.subscriptions.delete(subscriptionId);\n rejectPendingSubscriptionConfirmation(connection, subscriptionId, new Error('Subscription unsubscribed'));\n if (connection.isConnected && !connection.isAuthenticating) {\n // Create a promise to wait for unsubscription confirmation\n const unsubscribePromise = new Promise((resolve, reject) => {\n connection.pendingUnsubscriptions.set(subscriptionId, { resolve, reject });\n // Timeout after 5 seconds\n setTimeout(() => {\n if (connection.pendingUnsubscriptions.has(subscriptionId)) {\n connection.pendingUnsubscriptions.delete(subscriptionId);\n resolve(); // Don't throw on unsubscribe timeout\n }\n }, 5000);\n });\n sendUnsubscribe(connection, subscriptionId);\n await unsubscribePromise;\n }\n // If no more subscriptions, let the connection close after a short idle\n // grace so an immediately-following route remount can reclaim the socket.\n scheduleConnectionCloseIfIdle(connection);\n}\n/**\n * Close all v2 subscriptions.\n */\nexport async function closeAllSubscriptionsV2() {\n const closePromises = [];\n for (const [appId, connection] of connections) {\n cancelIdleConnectionClose(connection);\n const closeError = new Error('Subscriptions closed');\n for (const subscriptionId of Array.from(connection.pendingSubscriptions.keys())) {\n rejectPendingSubscriptionConfirmation(connection, subscriptionId, closeError);\n }\n for (const subscription of connection.subscriptions.values()) {\n rejectSubscriptionRefresh(subscription, closeError);\n }\n if (connection.tokenRefreshTimer) {\n clearInterval(connection.tokenRefreshTimer);\n connection.tokenRefreshTimer = null;\n }\n if (connection.ws) {\n const ws = connection.ws;\n connection.ws = null;\n connection.isConnected = false;\n if (ws.readyState !== WS_READY_STATE_CLOSED) {\n closePromises.push(new Promise((resolve) => {\n ws.addEventListener('close', () => {\n resolve();\n });\n ws.close();\n }));\n }\n }\n connections.delete(appId);\n }\n connectionAcquisitions.clear();\n await Promise.all(closePromises);\n}\n/**\n * Clear the v2 cache.\n */\nexport function clearCacheV2(path) {\n if (path) {\n const normalizedPath = path.startsWith('/') ? path.slice(1) : path;\n // Clear all cache entries for this path across ALL identities. Keys are\n // now `<identity>|<path>:...` (H1 principal-scoping), so match the path\n // portion AFTER the identity prefix — otherwise this is a silent no-op.\n for (const key of responseCache.keys()) {\n const sep = key.indexOf('|');\n const pathPart = sep >= 0 ? key.slice(sep + 1) : key;\n if (pathPart.startsWith(normalizedPath)) {\n responseCache.delete(key);\n }\n }\n }\n else {\n responseCache.clear();\n }\n}\n/**\n * Get cached data for a path (v2).\n */\nexport function getCachedDataV2(path, prompt) {\n const normalizedPath = path.startsWith('/') ? path.slice(1) : path;\n // H1: response caches are identity-scoped (`<identity>|<path>:...`) and\n // opt-in. Resolve the caller's identity from an active cache-enabled\n // subscription for this path. No matching sub → null (safe).\n let identity;\n let identityToken;\n outer: for (const connection of connections.values()) {\n for (const sub of connection.subscriptions.values()) {\n if (sub.cache && sub.path === normalizedPath && sub.prompt === prompt) {\n identity = sub.identity;\n identityToken = sub.identityToken;\n break outer;\n }\n }\n }\n if (!identity) {\n return null;\n }\n const cacheKey = getCacheKey(path, prompt, undefined, undefined, undefined, undefined, identity);\n const cachedEntry = getResponseCacheEntry(cacheKey, identityToken !== null && identityToken !== void 0 ? identityToken : null);\n if (cachedEntry && Date.now() - cachedEntry.timestamp < CACHE_TTL) {\n return cachedEntry.data;\n }\n return null;\n}\n/**\n * Reconnect all v2 WebSocket connections with fresh authentication.\n * Call this when the user's auth state changes (login/logout).\n *\n * This will:\n * 1. Close existing connections\n * 2. Re-establish with new auth token\n * 3. Re-subscribe to all active paths\n *\n * Note: Existing subscriptions will receive new initial data after reconnection.\n */\nexport async function reconnectWithNewAuthV2() {\n if (reconnectInProgress) {\n return reconnectInProgress;\n }\n reconnectInProgress = doReconnectWithNewAuth();\n try {\n await reconnectInProgress;\n }\n finally {\n reconnectInProgress = null;\n }\n}\nasync function doReconnectWithNewAuth() {\n ambientAuthFailure = null;\n // SECURITY (H1): the logged-in identity is changing (login / logout / switch).\n // Wipe ALL principal-scoped read caches so the new identity can never observe\n // data cached for the previous one. Clear both the WS response cache and the\n // HTTP get() cache (the latter lives in operations.ts — imported dynamically\n // to avoid a static import cycle).\n responseCache.clear();\n // Drop in-memory per-subscription snapshots so they are not redelivered as the\n // previous identity's data after the socket reconnects under new auth.\n for (const connection of connections.values()) {\n for (const sub of connection.subscriptions.values()) {\n sub.lastData = undefined;\n }\n }\n try {\n const { clearReadCacheForAuthChange } = await import('./operations');\n clearReadCacheForAuthChange();\n }\n catch (error) {\n console.warn('[WS v2] Failed to clear HTTP read cache on auth change:', error);\n }\n try {\n const { reconnectRealtimeStoreWithNewAuth } = await import('./realtime-store');\n await reconnectRealtimeStoreWithNewAuth();\n }\n catch (error) {\n console.warn('[WS v2] Failed to reset legacy realtime store on auth change:', error);\n }\n for (const [appId, connection] of connections) {\n if (!connection.ws) {\n continue;\n }\n cancelIdleConnectionClose(connection);\n const reconnectError = new Error('Connection reconnecting due to auth change');\n for (const subscriptionId of Array.from(connection.pendingSubscriptions.keys())) {\n rejectPendingSubscriptionConfirmation(connection, subscriptionId, reconnectError);\n }\n for (const subscription of connection.subscriptions.values()) {\n rejectSubscriptionRefresh(subscription, reconnectError);\n }\n for (const [, pending] of connection.pendingUnsubscriptions) {\n pending.resolve();\n }\n connection.pendingUnsubscriptions.clear();\n // Reset auth failure counter — this is a proactive reconnect (login, token refresh)\n connection.consecutiveAuthFailures = 0;\n connection.authFailure = null;\n // Close the WebSocket (this triggers reconnection in ReconnectingWebSocket)\n // We use reconnect() which will close and re-open with fresh URL (including new token)\n try {\n connection.ws.reconnect();\n }\n catch (error) {\n console.error('[WS v2] Error reconnecting:', error);\n }\n }\n}\n/**\n * Force close and reconnect all connections.\n * This is more aggressive than reconnectWithNewAuthV2() and ensures\n * a complete teardown and rebuild of connections.\n */\nexport async function forceReconnectV2() {\n const reconnectPromises = [];\n const isServer = (await getConfig()).isServer;\n for (const [appId, connection] of connections) {\n if (!connection.ws) {\n continue;\n }\n cancelIdleConnectionClose(connection);\n // Store subscriptions to restore\n const subscriptionsToRestore = Array.from(connection.subscriptions.values());\n // Close the connection\n connection.ws.close();\n connection.ws = null;\n connection.isConnected = false;\n connections.delete(appId);\n // If there were active subscriptions, re-establish connection\n if (subscriptionsToRestore.length > 0) {\n const reconnectPromise = (async () => {\n // Get fresh connection\n const newConnection = await getOrCreateConnection(appId, isServer);\n // Re-register all subscriptions\n for (const sub of subscriptionsToRestore) {\n newConnection.subscriptions.set(sub.subscriptionId, sub);\n }\n // Wait for connection to be ready, then re-subscribe\n // The 'open' handler in getOrCreateConnection will send subscribe messages\n })();\n reconnectPromises.push(reconnectPromise);\n }\n }\n await Promise.all(reconnectPromises);\n}\n// ============ WebSocket request helpers ============\nconst WS_REQUEST_TIMEOUT_MS = 30000;\nfunction generateRequestId() {\n return `req_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;\n}\n/**\n * Returns true if there is an active v2 WebSocket connection open.\n */\nexport function hasActiveConnection() {\n for (const connection of connections.values()) {\n if (connection.ws && connection.isConnected && !connection.isAuthenticating) {\n return true;\n }\n }\n return false;\n}\n/**\n * Send a live-room intent over the EXISTING per-room socket (fire-and-forget).\n * Returns true if it was sent over an open connection, false if there is no\n * live socket for this room yet (caller falls back to HTTP). The worker is the\n * room authority — the connection is already routed to the room DO, so the\n * client never names a destination.\n */\nexport async function wsIntent(appId, roomRoutePath, intent, isServer) {\n const roomKey = roomKeyFromRoutePath(roomRoutePath);\n const connKey = roomKey ? `${appId}#room#${roomKey}` : appId;\n const connection = connections.get(connKey);\n if (!connection || !connection.ws || connection.ws.readyState !== WS_READY_STATE_OPEN || connection.isAuthenticating) {\n return false;\n }\n // Identity-aware send gate. The server attributes intents to the\n // CONNECTION's authenticated principal, so the only correct reasons to\n // refuse the socket are identity ones:\n // - the socket is anonymous while the user is now authenticated, or\n // - the current principal DIFFERS from the socket principal.\n // A mere token rotation for the SAME principal, or a transiently-null\n // token mid-refresh, must NOT reroute a 30Hz command stream to\n // per-command HTTP — that collapses delivery rate and unbounds the game's\n // ack lag (field-debugged: server 500+ commands behind).\n const currentToken = await getIdToken(isServer).catch(() => null);\n if (!currentToken) {\n // Mid-refresh: the socket principal still governs server-side.\n if (!connection.authTokenValue && !connection.authPrincipal)\n return false;\n }\n else if (!connection.authTokenValue && !connection.authPrincipal) {\n // Anonymous socket + authenticated user: do not attribute this user's\n // input to the anon principal. Reauth the socket; caller may fall back.\n void maybeReauthRoomConnection(connection, isServer);\n return false;\n }\n else if (!connectionMatchesAuthToken(connection, currentToken)) {\n // Different principal (identity switch): never send as the old user.\n void maybeReauthRoomConnection(connection, isServer);\n return false;\n }\n try {\n connection.ws.send(JSON.stringify({ type: 'intent', intent }));\n return true;\n }\n catch (_a) {\n return false;\n }\n}\n// Debounced background reauth: when the client's current token no longer\n// matches the connection's authenticated identity (token rotation), refresh the\n// socket auth ONCE rather than degrading every subsequent send.\nconst reauthInFlight = new WeakSet();\nasync function maybeReauthRoomConnection(connection, isServer) {\n try {\n if (reauthInFlight.has(connection))\n return;\n reauthInFlight.add(connection);\n try {\n await reconnectWithNewAuthV2();\n }\n finally {\n reauthInFlight.delete(connection);\n }\n }\n catch (_a) {\n // Best-effort: the next send retries; the server still enforces auth.\n }\n}\n/** True when an OPEN room socket exists for this room path. */\nexport function hasOpenRoomConnection(appId, roomRoutePath) {\n const roomKey = roomKeyFromRoutePath(roomRoutePath);\n const connKey = roomKey ? `${appId}#room#${roomKey}` : appId;\n const connection = connections.get(connKey);\n return !!(connection && connection.ws && connection.ws.readyState === WS_READY_STATE_OPEN);\n}\n/**\n * Send a live-room intent over the EXISTING per-room socket and AWAIT the server\n * ack — so a policy/auth denial (401/403/404/503) REJECTS instead of being\n * silently dropped (the fire-and-forget `wsIntent` discards request-less error\n * frames). Use for semantically important intents (join/ready/leave). Returns a\n * Promise that resolves on ack / rejects on error, or `undefined` if no live\n * socket exists yet (caller falls back to HTTP, which also surfaces errors).\n */\nexport async function wsIntentReliable(appId, roomRoutePath, intent, isServer) {\n const roomKey = roomKeyFromRoutePath(roomRoutePath);\n const connKey = roomKey ? `${appId}#room#${roomKey}` : appId;\n const connection = connections.get(connKey);\n if (!connection || !connection.ws || connection.ws.readyState !== WS_READY_STATE_OPEN || connection.isAuthenticating) {\n return undefined;\n }\n if (!(await canSendAuthenticatedLiveIntent(connection, isServer))) {\n return undefined;\n }\n const requestId = generateRequestId();\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n connection.pendingRequests.delete(requestId);\n reject(new Error(`Live intent ack timed out after ${WS_REQUEST_TIMEOUT_MS}ms`));\n }, WS_REQUEST_TIMEOUT_MS);\n connection.pendingRequests.set(requestId, {\n resolve: (data) => resolve((data !== null && data !== void 0 ? data : { ok: true })),\n reject,\n timer,\n });\n try {\n connection.ws.send(JSON.stringify({ type: 'intent', requestId, intent }));\n }\n catch (e) {\n connection.pendingRequests.delete(requestId);\n clearTimeout(timer);\n reject(e);\n }\n });\n}\n","/**\n * WebSocket Subscription Module\n *\n * This module provides real-time data subscriptions using WebSocket v2 protocol\n * with multiplexed connections (one connection per client, multiple subscriptions).\n *\n * The external API remains unchanged - just use subscribe(path, options) as before.\n */\nimport { subscribeV2, closeAllSubscriptionsV2, clearCacheV2, getCachedDataV2, reconnectWithNewAuthV2, } from './subscription-v2';\n/**\n * Subscribe to real-time updates for a path.\n *\n * @param path - The path to subscribe to (e.g., 'users/123' or 'posts')\n * @param subscriptionOptions - Options including onData and onError callbacks\n * @returns A function to unsubscribe\n *\n * @example\n * ```typescript\n * const unsubscribe = await subscribe('users/123', {\n * onData: (data) => console.log('User updated:', data),\n * onError: (error) => console.error('Subscription error:', error),\n * });\n *\n * // Later, to unsubscribe:\n * await unsubscribe();\n * ```\n */\nexport async function subscribe(path, subscriptionOptions) {\n // Forgive the most natural mistake: `subscribe(path, (data) => ...)`. Without\n // this, a bare callback is taken as the options object, `.onData` is undefined,\n // and the subscription silently never fires (no error) — it just looks broken.\n // Coerce a function into `{ onData }` so the natural form works.\n const opts = typeof subscriptionOptions === 'function'\n ? { onData: subscriptionOptions }\n : subscriptionOptions;\n return subscribeV2(path, opts);\n}\n/**\n * Close all active subscriptions.\n * Call this when cleaning up (e.g., on logout or component unmount).\n */\nexport async function closeAllSubscriptions() {\n return closeAllSubscriptionsV2();\n}\n/**\n * Clear the subscription cache.\n *\n * @param path - Optional path to clear. If not provided, clears all cached data.\n */\nexport function clearCache(path) {\n clearCacheV2(path);\n}\n/**\n * Get cached data for a path without making a network request.\n *\n * @param path - The path to get cached data for\n * @param prompt - Optional prompt that was used for the subscription\n * @returns The cached data, or null if not cached or expired\n */\nexport function getCachedData(path, prompt) {\n return getCachedDataV2(path, prompt);\n}\n/**\n * Reconnect all WebSocket connections with fresh authentication.\n * Call this when the user's auth state changes (login/logout).\n *\n * This will:\n * 1. Close existing connections\n * 2. Re-establish with new auth token\n * 3. Re-subscribe to all active paths\n *\n * Existing subscriptions will receive new initial data after reconnection.\n */\nexport async function reconnectWithNewAuth() {\n return reconnectWithNewAuthV2();\n}\n","// ---------------------------------------------------------------------------\n// field-values.ts -- Server-resolved field-value operations for set()/setMany().\n//\n// A field in a write payload may be a plain value OR an \"operation object\" that\n// the server resolves atomically when the write commits:\n//\n// set(\"counters/likes\", { n: increment(1) }) // atomic server-side +1\n// set(\"posts/p1\", { createdAt: serverTimestamp() }) // server unix-seconds clock\n//\n// The Durable Object serializes writes per room, so concurrent increments never\n// lose updates (verified: 20 concurrent +1 -> exactly 20). These helpers just\n// construct the operation objects the worker's resolveOperationFields understands\n// (and which the optimistic store mirrors locally), so prefer them over writing\n// `{ operation: \"increment\", value: 1 }` by hand.\n// ---------------------------------------------------------------------------\n/**\n * Atomically add `value` to a numeric field when the write commits, server-side.\n * Use a negative `value` to decrement. The field starts from 0 if the document\n * (or field) does not exist yet. Concurrent increments are race-free.\n *\n * await set(\"counters/likes\", { n: increment(1) });\n * await set(\"scores/p1\", { points: increment(-5) });\n */\nexport function increment(value) {\n return { operation: 'increment', value };\n}\n/**\n * Stamp a field with the server's clock (Unix seconds) when the write commits —\n * the trustworthy \"when did this happen\" you can't get from a client clock.\n *\n * await set(\"posts/p1\", { createdAt: serverTimestamp() });\n */\nexport function serverTimestamp() {\n return { operation: 'time', value: 'now' };\n}\n","/**\n * Time units in Bounded — read this once and never get a 1000× timestamp bug.\n *\n * **Bounded's policy/proof layer is Unix SECONDS.** `@time.now` in a rule,\n * `rollingSum` `windowSeconds`, `scheduledAt`, and any timestamp *field your\n * policy compares against `@time.now`* are all **seconds**. (This is also what\n * the chain uses — Solana's on-chain clock is `unix_timestamp` in seconds — so a\n * single seconds unit works for both onchain and offchain rules.)\n *\n * **JavaScript is MILLISECONDS.** `Date.now()`, `new Date().getTime()`, and the\n * auto-stamped system fields `_createdAt` / `_updatedAt` are all **ms**.\n *\n * Comparing across the two (e.g. `@time.now - myField` where `myField` was set\n * from `Date.now()`) is 1000× off, so a freshness / TTL check silently treats\n * every row as ancient (or far-future) and drops it — which reads as \"realtime\n * isn't delivering\" when the data is actually fine.\n *\n * **The rules:**\n * - To **write** a timestamp a policy will read, prefer **`serverTimestamp()`**\n * (from this package) — the *server* stamps it in seconds, so it matches\n * `@time.now` AND can't be forged by the client (use it for TTLs, rate windows,\n * anti-cheat). Use `now()` only when you need the value in client code before\n * the write.\n * - To **compare** timestamps in client/render code, use `now()` (seconds), not\n * `Date.now()` (ms), and `toSeconds()` to convert the ms system fields\n * (`_createdAt`/`_updatedAt`) or any `Date.now()` value first.\n */\n/**\n * Current time as a **Unix timestamp in seconds** — the unit Bounded policy rules\n * use (`@time.now`). Use this (not `Date.now()`) when you need a timestamp in\n * client code (e.g. a freshness check). For a value you *store* and a policy\n * reads, prefer the server-authoritative {@link serverTimestamp} instead.\n *\n * ```ts\n * // stale if >15s old — seconds vs seconds ✓\n * if (now() - doc.lastSeenSeconds > 15) renderStale();\n * ```\n */\nexport function now() {\n return Math.floor(Date.now() / 1000);\n}\n/**\n * Convert a JavaScript millisecond timestamp to Bounded's **seconds**. Accepts a\n * `Date`, or an ms number such as `Date.now()` or a doc's `_createdAt` /\n * `_updatedAt` system field.\n *\n * ```ts\n * // doc is >15s old (compare the ms system field in seconds):\n * if (now() - toSeconds(doc._updatedAt) > 15) renderStale();\n * ```\n */\nexport function toSeconds(msOrDate) {\n const ms = msOrDate instanceof Date ? msOrDate.getTime() : msOrDate;\n return Math.floor(ms / 1000);\n}\n/**\n * Convert a Bounded **seconds** timestamp back to JavaScript **milliseconds** —\n * e.g. to build a `Date` or do client-side date math/formatting.\n *\n * ```ts\n * new Date(toMillis(doc.createdAtSeconds)).toLocaleString();\n * ```\n */\nexport function toMillis(seconds) {\n return seconds * 1000;\n}\n","import BN from \"bn.js\";\nimport { Buffer } from \"buffer\";\n/** Load the Anchor/Web3 transaction builder only when an onchain write uses it. */\nexport async function buildSetDocumentsTransaction(connection, idl, programProvider, payerPublicKey, args, remainingAccounts, lutKey, preInstructions, simulate, additionalLutAddresses) {\n const implementation = await import(\"./sol-utils\");\n return implementation.buildSetDocumentsTransaction(connection, idl, programProvider, payerPublicKey, args, remainingAccounts, lutKey, preInstructions, simulate, additionalLutAddresses);\n}\n/** SIWS message creation is async already, so its onchain module can be lazy. */\nexport async function genSolanaMessage(address, nonce) {\n const implementation = await import(\"./solana-message\");\n return implementation.genSolanaMessage(address, nonce);\n}\nconst BASE58_ALPHABET = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\nconst BASE58_INDEX = new Map(Array.from(BASE58_ALPHABET, (character, index) => [character, index]));\nfunction decodeBase58(value) {\n if (!value)\n return new Uint8Array();\n const bytes = [0];\n for (const character of value) {\n const digit = BASE58_INDEX.get(character);\n if (digit === undefined)\n throw new Error(`Non-base58 character in public key: ${character}`);\n let carry = digit;\n for (let i = 0; i < bytes.length; i++) {\n carry += bytes[i] * 58;\n bytes[i] = carry & 0xff;\n carry >>= 8;\n }\n while (carry > 0) {\n bytes.push(carry & 0xff);\n carry >>= 8;\n }\n }\n for (let i = 0; i < value.length - 1 && value[i] === \"1\"; i++)\n bytes.push(0);\n return Uint8Array.from(bytes.reverse());\n}\nfunction encodeBase58(value) {\n if (value.length === 0)\n return \"\";\n const digits = [0];\n for (const byte of value) {\n let carry = byte;\n for (let i = 0; i < digits.length; i++) {\n carry += digits[i] << 8;\n digits[i] = carry % 58;\n carry = Math.floor(carry / 58);\n }\n while (carry > 0) {\n digits.push(carry % 58);\n carry = Math.floor(carry / 58);\n }\n }\n let result = \"\";\n for (let i = 0; i < value.length - 1 && value[i] === 0; i++)\n result += \"1\";\n for (let i = digits.length - 1; i >= 0; i--)\n result += BASE58_ALPHABET[digits[i]];\n return result;\n}\n/**\n * Structural PublicKey used by this synchronous legacy helper. Web3's PublicKey\n * constructor accepts objects carrying `_bn`, and Anchor/Web3 transaction paths\n * consume the standard methods below, so callers keep the synchronous shape\n * without evaluating the full Web3 module in the data-only entry.\n */\nfunction publicKeyWithoutLoadingChainSdk(value) {\n if (value && typeof value.toBase58 === \"function\" && typeof value.toBytes === \"function\") {\n return value;\n }\n const decoded = decodeBase58(String(value));\n if (decoded.length !== 32)\n throw new Error(\"Invalid public key input\");\n const bytes = Uint8Array.from(decoded);\n const key = {\n _bn: new BN(bytes),\n equals(other) {\n const otherBytes = typeof (other === null || other === void 0 ? void 0 : other.toBytes) === \"function\" ? other.toBytes() : decodeBase58(String(other));\n return bytes.length === otherBytes.length && bytes.every((byte, index) => byte === otherBytes[index]);\n },\n toBase58() { return encodeBase58(bytes); },\n toJSON() { return encodeBase58(bytes); },\n toString() { return encodeBase58(bytes); },\n toBytes() { return Uint8Array.from(bytes); },\n toBuffer() { return Buffer.from(bytes); },\n };\n return key;\n}\nexport function convertRemainingAccounts(remainingAccounts) {\n return remainingAccounts.map((account) => ({\n pubkey: publicKeyWithoutLoadingChainSdk(account.pubkey),\n isWritable: account.isWritable,\n isSigner: account.isSigner,\n }));\n}\n","// ---------------------------------------------------------------------------\n// functions.ts -- Bounded Functions client (the imperative escape hatch).\n//\n// `bounded.functions.invoke(name, args, opts?)` POSTs to the dispatcher's\n// /invoke endpoint, attaching the caller's session token AUTOMATICALLY (the\n// exact same token the SDK uses for data reads/writes). Works client + server.\n// The dispatcher verifies the token, evaluates the function's `auth` policy\n// rule, and dispatches to the function — returning its JSON, or throwing on\n// 403 / error.\n// ---------------------------------------------------------------------------\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { getConfig } from './config';\nimport { createAuthHeader } from '../utils/utils';\n/** Prod functions dispatcher; overridable via init({ functionsUrl }) or network preset. */\nconst DEFAULT_FUNCTIONS_URL = 'https://functions.bounded.sh';\nexport class FunctionInvokeError extends Error {\n constructor(message, statusCode, details) {\n super(message);\n this.statusCode = statusCode;\n this.details = details;\n this.name = 'FunctionInvokeError';\n }\n}\nfunction stripAuthHeaders(headers) {\n if (!headers)\n return undefined;\n const { Authorization, authorization } = headers, rest = __rest(headers, [\"Authorization\", \"authorization\"]);\n return Object.keys(rest).length > 0 ? rest : undefined;\n}\n/**\n * Invoke a deployed Bounded Function by name. Returns the function's JSON.\n *\n * const res = await bounded.functions.invoke('syncStripe', { customerId });\n *\n * Throws FunctionInvokeError on 401 (not logged in / bad token), 403 (the\n * function's auth policy rule denied this caller), 404 (unknown function),\n * 503 (Workers for Platforms not configured), or any non-2xx / transport error.\n */\nexport async function invoke(name, args = {}, opts = {}) {\n var _a, _b, _c, _d, _e, _f;\n if (!name || typeof name !== 'string') {\n throw new FunctionInvokeError('A function name is required');\n }\n const config = await getConfig();\n const base = (config.functionsUrl || DEFAULT_FUNCTIONS_URL).replace(/\\/$/, '');\n // Attach the caller's session token automatically (same token as data calls).\n // A wallet-scoped call (server WalletClient.invoke) resolves the token from the\n // wallet's own session; browser calls use the active web session. Top-level\n // server calls fail closed because there is no ambient server signer.\n const authHeader = ((_a = opts._overrides) === null || _a === void 0 ? void 0 : _a._getAuthHeaders)\n ? await opts._overrides._getAuthHeaders()\n : await createAuthHeader(config.isServer);\n const headers = Object.assign(Object.assign({ 'Content-Type': 'application/json', 'X-App-Id': config.appId }, ((_b = stripAuthHeaders(opts.headers)) !== null && _b !== void 0 ? _b : {})), (authHeader !== null && authHeader !== void 0 ? authHeader : {}));\n const controller = new AbortController();\n const timeoutMs = (_c = opts.timeoutMs) !== null && _c !== void 0 ? _c : 60000;\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n let res;\n try {\n res = await fetch(`${base}/invoke`, {\n method: 'POST',\n headers,\n body: JSON.stringify({ appId: config.appId, functionName: name, args }),\n signal: controller.signal,\n });\n }\n catch (err) {\n clearTimeout(timer);\n if ((err === null || err === void 0 ? void 0 : err.name) === 'AbortError') {\n throw new FunctionInvokeError(`Function \"${name}\" invocation timed out after ${timeoutMs}ms`);\n }\n throw new FunctionInvokeError(`Failed to reach the functions dispatcher: ${(_d = err === null || err === void 0 ? void 0 : err.message) !== null && _d !== void 0 ? _d : String(err)}`);\n }\n clearTimeout(timer);\n let body = null;\n const text = await res.text();\n if (text) {\n try {\n body = JSON.parse(text);\n }\n catch (_g) {\n body = { raw: text };\n }\n }\n if (!res.ok) {\n const message = (_f = (_e = body === null || body === void 0 ? void 0 : body.error) !== null && _e !== void 0 ? _e : body === null || body === void 0 ? void 0 : body.message) !== null && _f !== void 0 ? _f : `Function \"${name}\" failed with HTTP ${res.status}`;\n throw new FunctionInvokeError(message, res.status, body);\n }\n // The dispatcher returns the function's JSON directly.\n return body;\n}\n/** The `bounded.functions` namespace surface. */\nexport const functions = { invoke };\n","// ---------------------------------------------------------------------------\n// live.ts -- Bounded Live client (drive a server-authoritative room).\n//\n// A Bounded \"live\" room is a native module (init/tick/views) loaded into an\n// isolated Durable Object facet inside the per-room DO. The worker runs tick\n// ~30Hz server-authoritatively and fans per-player views out on an ephemeral\n// collection. This file is the consumer surface around that runtime:\n//\n// bounded.live.intent(roomPath, intent) -> POST {realtime}/live/intent\n// bounded.live.status(roomPath) -> GET {realtime}/live/status\n//\n// It mirrors `functions.invoke` exactly: it attaches the caller's session token\n// AUTOMATICALLY (the same token the SDK uses for data reads/writes), and throws\n// a typed error on any non-2xx / transport / timeout.\n//\n// The runtime serves any server-authoritative realtime room (Figma clones,\n// editors, dashboards, multiplayer games, ...). Games remain a valid use case;\n// the primitive itself is just \"live\".\n//\n// Addressing: clients address rooms BY PATH (the `path` field in the body). The\n// worker derives the roomId from `body.path` and sets X-Room-Id internally;\n// clients NEVER set X-Room-Id. The caller's address is taken server-side from\n// the Authorization header (auth.userId/userAddress) — it is NOT sent in the\n// body.\n//\n// Subscribing to your view: a per-player view doc lives at\n// `<roomPath>/view/<myUserId>` (the policy declares\n// `rooms/$roomId/view/$userId` ephemeral with `read: $userId == @user.id`).\n// View paths key only by @user.id; wallet-address aliases are intentionally not\n// accepted by this helper.\n// ---------------------------------------------------------------------------\nimport { getConfig } from './config';\nimport { createAuthHeader, getUserInfo } from '../utils/utils';\nimport { subscribeV2, wsIntent, wsIntentReliable } from './subscription-v2';\nimport { deriveDecline, dispatchDeclineEvent } from './decline';\nexport class LiveIntentError extends Error {\n constructor(message, statusCode, details) {\n super(message);\n this.statusCode = statusCode;\n this.details = details;\n this.name = 'LiveIntentError';\n }\n}\n/**\n * Derive the realtime worker's HTTP base from the configured WS API URL.\n * The realtime worker serves both WS and HTTP on the same host, so we reuse\n * `config.wsApiUrl` (wss:// -> https://, ws:// -> http://). The data API\n * (`config.apiUrl`) is a DIFFERENT host and must NOT be used for /live/*.\n */\nfunction realtimeHttpBase(wsApiUrl) {\n const url = new URL(wsApiUrl);\n if (url.protocol === 'wss:')\n url.protocol = 'https:';\n else if (url.protocol === 'ws:')\n url.protocol = 'http:';\n // Strip trailing slash from the resulting origin+path.\n return url.toString().replace(/\\/$/, '');\n}\nfunction withoutAuthorization(headers) {\n if (!headers)\n return undefined;\n const clean = {};\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() === 'authorization')\n continue;\n clean[key] = value;\n }\n return Object.keys(clean).length > 0 ? clean : undefined;\n}\nfunction hasAuthorization(headers) {\n if (!headers)\n return false;\n return Object.entries(headers).some(([key, value]) => key.toLowerCase() === 'authorization' &&\n typeof value === 'string' &&\n /^Bearer\\s+\\S+$/i.test(value.trim()));\n}\nasync function liveAuthHeader(configIsServer, overrides) {\n if (overrides === null || overrides === void 0 ? void 0 : overrides._getAuthHeaders) {\n return overrides._getAuthHeaders();\n }\n return createAuthHeader(configIsServer);\n}\n/**\n * Send a player intent to a running live room. Returns `{ ok: true }`.\n *\n * await bounded.live.intent('rooms/abc', { type: 'move', dir: 'up' });\n *\n * `roomPath` is the document path of the room (e.g. `rooms/abc`). The worker\n * derives the room from this path and reads `intent` as the opaque per-tick\n * input. The caller's address is taken from the attached session token.\n *\n * Throws LiveIntentError on 401 (not logged in / bad token), 404 (room has no\n * live module), 503 (live runtime/module unavailable), or any non-2xx /\n * transport error / timeout.\n */\nexport async function intent(roomPath, intent, opts = {}) {\n var _a, _b, _c, _d, _e, _f, _g;\n if (!roomPath || typeof roomPath !== 'string') {\n throw new LiveIntentError('A room path is required');\n }\n const config = await getConfig();\n const initialAuthHeader = await liveAuthHeader(config.isServer, opts._overrides);\n if (!hasAuthorization(initialAuthHeader)) {\n if (opts.fireAndForget)\n return { ok: true };\n throw new LiveIntentError('Authentication required to send a live intent. Call init() and sign in before sending live room intents.', 401);\n }\n // Ride the already-open per-room socket instead of a fresh HTTP POST per\n // intent. That is what makes high-frequency input (~20-30Hz) cheap — one\n // persistent connection, no per-intent TCP/TLS or connection-pool contention\n // (which was head-of-line-blocking the view stream). The worker is the room\n // authority (the connection is routed to the room DO), so we pass no\n // destination.\n //\n // - fireAndForget: send and return immediately (lowest latency for inputs).\n // - default: send WITH a requestId and AWAIT the ack, so a policy/auth deny\n // (401/403/404/503) REJECTS — important intents (join/ready) must not\n // silently \"succeed\".\n //\n // Either way we fall back to HTTP below only when no live socket exists yet\n // (e.g. the first join before subscribeView's WS connects) — HTTP also throws\n // on a non-2xx, so errors are surfaced there too.\n const normalizedRoomPath = roomPath.replace(/\\/$/, '');\n const hasAuthOverride = !!((_a = opts._overrides) === null || _a === void 0 ? void 0 : _a._getAuthHeaders);\n if (!hasAuthOverride) {\n if (opts.fireAndForget) {\n if (await wsIntent(config.appId, normalizedRoomPath, intent, config.isServer))\n return { ok: true };\n }\n else {\n const ack = await wsIntentReliable(config.appId, normalizedRoomPath, intent, config.isServer);\n if (ack)\n return ack;\n }\n }\n const base = realtimeHttpBase(config.wsApiUrl);\n const extraHeaders = withoutAuthorization(opts.headers);\n const overrideHeaders = withoutAuthorization((_b = opts._overrides) === null || _b === void 0 ? void 0 : _b.headers);\n const buildHeaders = async () => {\n const authHeader = await liveAuthHeader(config.isServer, opts._overrides);\n if (!hasAuthorization(authHeader)) {\n throw new LiveIntentError('Authentication required to send a live intent. Call init() and sign in before sending live room intents.', 401);\n }\n return Object.assign(Object.assign(Object.assign({ 'Content-Type': 'application/json', 'X-App-Id': config.appId }, (overrideHeaders !== null && overrideHeaders !== void 0 ? overrideHeaders : {})), (extraHeaders !== null && extraHeaders !== void 0 ? extraHeaders : {})), (authHeader !== null && authHeader !== void 0 ? authHeader : {}));\n };\n const controller = new AbortController();\n const timeoutMs = (_c = opts.timeoutMs) !== null && _c !== void 0 ? _c : 60000;\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n let res;\n try {\n const send = async () => fetch(`${base}/live/intent`, {\n method: 'POST',\n headers: await buildHeaders(),\n body: JSON.stringify({ path: normalizedRoomPath, intent }),\n signal: controller.signal,\n });\n res = await send();\n if (res.status === 401 && ((_d = opts._overrides) === null || _d === void 0 ? void 0 : _d._clearAuth)) {\n await opts._overrides._clearAuth();\n res = await send();\n }\n }\n catch (err) {\n clearTimeout(timer);\n if (err instanceof LiveIntentError)\n throw err;\n if ((err === null || err === void 0 ? void 0 : err.name) === 'AbortError') {\n throw new LiveIntentError(`Live intent to \"${roomPath}\" timed out after ${timeoutMs}ms`);\n }\n throw new LiveIntentError(`Failed to reach the realtime worker: ${(_e = err === null || err === void 0 ? void 0 : err.message) !== null && _e !== void 0 ? _e : String(err)}`);\n }\n clearTimeout(timer);\n let body = null;\n const text = await res.text();\n if (text) {\n try {\n body = JSON.parse(text);\n }\n catch (_h) {\n body = { raw: text };\n }\n }\n if (!res.ok) {\n const message = (_g = (_f = body === null || body === void 0 ? void 0 : body.error) !== null && _f !== void 0 ? _f : body === null || body === void 0 ? void 0 : body.message) !== null && _g !== void 0 ? _g : `Live intent failed with HTTP ${res.status}`;\n const liveError = new LiveIntentError(message, res.status, body);\n // A policy/invariant denial of a live intent carries the same structured\n // decline as the data-write path. Mirror `.decline` onto the LiveIntentError\n // (its name/contract is unchanged) and notify the browser widget.\n const decline = deriveDecline(body, res.status);\n if (decline) {\n liveError.decline = decline;\n liveError.isBoundedDecline = true;\n dispatchDeclineEvent(decline, config.appId);\n }\n throw liveError;\n }\n return (body !== null && body !== void 0 ? body : { ok: true });\n}\n/**\n * Fetch the runtime status for a live room.\n *\n * const s = await bounded.live.status('rooms/abc');\n * console.log(s.running, s.stopReason, s.generation, s.etag);\n *\n * This is diagnostic/ops surface. It reports whether the room facet exists,\n * whether it is currently ticking, why it last stopped, which module etag is\n * loaded, and the current generation used after terminal restarts.\n */\nexport async function status(roomPath, opts = {}) {\n var _a, _b, _c, _d, _e;\n if (!roomPath || typeof roomPath !== 'string') {\n throw new LiveIntentError('A room path is required');\n }\n const normalizedRoomPath = roomPath.replace(/\\/$/, '');\n const config = await getConfig();\n const base = realtimeHttpBase(config.wsApiUrl);\n const headers = Object.assign({ 'X-App-Id': config.appId }, ((_a = opts.headers) !== null && _a !== void 0 ? _a : {}));\n const controller = new AbortController();\n const timeoutMs = (_b = opts.timeoutMs) !== null && _b !== void 0 ? _b : 15000;\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n let res;\n try {\n res = await fetch(`${base}/live/status?path=${encodeURIComponent(normalizedRoomPath)}`, {\n method: 'GET',\n headers,\n signal: controller.signal,\n });\n }\n catch (err) {\n clearTimeout(timer);\n if ((err === null || err === void 0 ? void 0 : err.name) === 'AbortError') {\n throw new LiveIntentError(`Live status for \"${normalizedRoomPath}\" timed out after ${timeoutMs}ms`);\n }\n throw new LiveIntentError(`Failed to reach the realtime worker: ${(_c = err === null || err === void 0 ? void 0 : err.message) !== null && _c !== void 0 ? _c : String(err)}`);\n }\n clearTimeout(timer);\n let body = null;\n const text = await res.text();\n if (text) {\n try {\n body = JSON.parse(text);\n }\n catch (_f) {\n body = { raw: text };\n }\n }\n if (!res.ok) {\n const message = (_e = (_d = body === null || body === void 0 ? void 0 : body.error) !== null && _d !== void 0 ? _d : body === null || body === void 0 ? void 0 : body.message) !== null && _e !== void 0 ? _e : `Live status failed with HTTP ${res.status}`;\n throw new LiveIntentError(message, res.status, body);\n }\n return body;\n}\n/**\n * Subscribe to YOUR per-player view of a room. Thin sugar over:\n *\n * subscribe('<roomPath>/view/<myUserId>', { onData, onError })\n *\n * The view id defaults to the logged-in user's @user.id (from the session token\n * claims); pass `opts.userId` to override. Returns the unsubscribe function\n * (a Promise<() => Promise<void>>, same as `subscribe`).\n *\n * Server/agent consumers: use `WalletClient.live.subscribeView` (it supplies\n * the wallet session + view id); browser apps just call this directly.\n */\nexport async function subscribeView(roomPath, opts) {\n if (!roomPath || typeof roomPath !== 'string') {\n throw new LiveIntentError('A room path is required');\n }\n if (!opts || typeof opts.onData !== 'function') {\n throw new LiveIntentError('subscribeView requires an onData callback');\n }\n let viewUserId = opts.userId;\n if (!viewUserId) {\n const config = await getConfig();\n const info = await getUserInfo(config.isServer);\n // getUserInfo returns the RAW idToken payload. The universal live view key\n // is @user.id (`custom:userId`); wallet-address keyed compatibility aliases\n // are intentionally not accepted.\n viewUserId = info === null || info === void 0 ? void 0 : info['custom:userId'];\n }\n if (!viewUserId || typeof viewUserId !== 'string') {\n throw new LiveIntentError('Could not resolve a player view id for subscribeView; pass opts.userId or log in first');\n }\n const normalizedRoomPath = roomPath.replace(/\\/$/, '');\n const viewPath = `${normalizedRoomPath}/view/${viewUserId}`;\n // This is a LIVE/room subscription by construction (the caller hands us the\n // room path), so we route its connection to the per-room DO where the live\n // view fan-out runs. App code passes NO routing — the room path is the helper's\n // own argument, and the worker stays the authority on the destination DO (it\n // derives the room from the `?path=` the connection carries). Without this the\n // subscription lands on the app-level project DO and never sees the room's\n // ephemeral view writes.\n return subscribeV2(viewPath, { onData: opts.onData, onError: opts.onError, _overrides: opts._overrides }, normalizedRoomPath);\n}\n/** The `bounded.live` namespace surface. */\nexport const live = { intent, status, subscribeView };\n","// ---------------------------------------------------------------------------\n// live-effects.ts -- AUTHOR-facing types + helpers for writing a Bounded live\n// module that emits EFFECTS (call an LLM for an AI NPC, run a function, settle a\n// transaction, write authoritative data) from its otherwise-pure tick.\n//\n// The tick stays a PURE, synchronous reducer: it cannot call out. Instead it\n// EMITS effects as data alongside the next state; the platform runs them off the\n// deterministic loop and re-injects each result as a recorded `@effect` intent on\n// a later tick — so replay stays bit-identical (it reads the recorded result and\n// never re-executes/re-charges). See BOUNDED-LIVE-EFFECTS-SPEC.md §3/§9.\n//\n// SOURCE OF TRUTH for these contracts is the runtime core\n// (realtime-worker/src/effects-core.ts). This module mirrors the AUTHOR-facing\n// subset for the SDK (the two are kept structurally identical by the shared spec).\n// ---------------------------------------------------------------------------\n/** Reserved intent address an effect result arrives on. */\nexport const EFFECT_INTENT_ADDRESS = \"@effect\";\n// ---------------------------------------------------------------------------\n// Ergonomic helpers\n// ---------------------------------------------------------------------------\n/**\n * Build the `{ state, effects }` tick return. Always include this (even with an\n * empty list) when you intend the wrapper, so the runtime never has to guess\n * whether your state object happens to look like the wrapper.\n *\n * return withEffects(next, [{ kind: \"ai\", id: `npc:${id}:${next.turn}`, model, input }]);\n */\nexport function withEffects(state, effects = []) {\n return { state, effects };\n}\n/**\n * Narrow an incoming intent to an effect result inside your tick:\n *\n * for (const i of intents) {\n * if (i.address === EFFECT_INTENT_ADDRESS && isEffectResult(i.intent)) {\n * applyResult(state, i.intent); // i.intent.effectId / .ok / .result / .error\n * } else { applyPlayerIntent(state, i); }\n * }\n */\nexport function isEffectResult(intent) {\n return (!!intent &&\n typeof intent === \"object\" &&\n intent.__effect === true &&\n typeof intent.effectId === \"string\" &&\n typeof intent.ok === \"boolean\");\n}\n/** Identity helper purely for type inference when authoring a module. */\nexport function defineLiveModule(mod) {\n return mod;\n}\n"],"names":["require$$0","require$$1","exports","isRetryAllowed","refreshInFlight","Buffer","__rest","this","hashForKey","principalFromIdToken"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5]}