@joclaim/browser-extension-sdk 0.2.5 → 0.2.6
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.
- package/build/JoclaimExtensionSDK-mv2.bundle.js +2 -2
- package/build/JoclaimExtensionSDK-mv2.bundle.js.map +1 -1
- package/build/JoclaimExtensionSDK.bundle.js +2 -2
- package/build/JoclaimExtensionSDK.bundle.js.map +1 -1
- package/build/background/background-mv2.bundle.js.map +1 -1
- package/build/background/background.bundle.js.map +1 -1
- package/build/content/content.bundle.js +1 -1
- package/build/content/content.bundle.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background/background.bundle.js","mappings":"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","sources":["webpack://@joclaim/browser-extension-sdk/./src/utils/logger/debugLogger.js","webpack://@joclaim/browser-extension-sdk/./src/utils/logger/index.js","webpack://@joclaim/browser-extension-sdk/./node_modules/ieee754/index.js","webpack://@joclaim/browser-extension-sdk/./node_modules/buffer/index.js","webpack://@joclaim/browser-extension-sdk/./src/utils/websocket-polyfill.js","webpack://@joclaim/browser-extension-sdk/./node_modules/base64-js/index.js","webpack://@joclaim/browser-extension-sdk/./node_modules/process/browser.js","webpack://@joclaim/browser-extension-sdk/./src/utils/logger/LogEntry.js","webpack://@joclaim/browser-extension-sdk/./src/utils/logger/LoggerService.js","webpack://@joclaim/browser-extension-sdk/./src/utils/logger/constants.js","webpack://@joclaim/browser-extension-sdk/./src/utils/constants/constants.js","webpack://@joclaim/browser-extension-sdk/./src/utils/constants/interfaces.js","webpack://@joclaim/browser-extension-sdk/./src/utils/polyfills.js","webpack://@joclaim/browser-extension-sdk/webpack/bootstrap","webpack://@joclaim/browser-extension-sdk/webpack/runtime/compat get default export","webpack://@joclaim/browser-extension-sdk/webpack/runtime/define property getters","webpack://@joclaim/browser-extension-sdk/webpack/runtime/harmony module decorator","webpack://@joclaim/browser-extension-sdk/webpack/runtime/hasOwnProperty shorthand","webpack://@joclaim/browser-extension-sdk/webpack/runtime/make namespace object","webpack://@joclaim/browser-extension-sdk/./src/utils/offscreen-manager.js","webpack://@joclaim/browser-extension-sdk/./node_modules/jsonpath-plus/dist/index-browser-esm.js","webpack://@joclaim/browser-extension-sdk/./src/background/background.js"],"sourcesContent":["// Local debug logger for development\n// Usage: import { debugLogger, DebugLogType } from './debugLogger';\n\nexport const DebugLogType = Object.freeze({\n BACKGROUND: \"background\",\n CONTENT: \"content\",\n POPUP: \"popup\",\n INIT: \"init\",\n VERIFICATION: \"verification\",\n FETCH: \"fetch\",\n PROVIDER: \"provider\",\n CLAIM: \"claim\",\n PROOF: \"proof\",\n OFFSCREEN: \"offscreen\",\n POLYFILLS: \"polyfills\",\n SESSION_TIMER: \"session-timer\",\n});\n\nclass DebugLogger {\n constructor() {\n this.enabled = true;\n this.allowedTypes = new Set(); // If empty, allow all types\n }\n\n enable() {\n this.enabled = true;\n }\n\n disable() {\n this.enabled = false;\n }\n\n setTypes(typesArray) {\n if (!Array.isArray(typesArray)) return;\n this.allowedTypes = new Set(typesArray);\n }\n\n clearTypes() {\n this.allowedTypes.clear();\n }\n\n log(type, ...args) {\n if (!this.enabled) return;\n if (this.allowedTypes.size > 0 && !this.allowedTypes.has(type)) return;\n const color = DebugLogger.typeColor(type);\n // eslint-disable-next-line no-console\n console.log(`%c[${type}][INFO]`, `color: ${color}; font-weight: bold;`, ...args);\n }\n\n info(type, ...args) {\n if (!this.enabled) return;\n if (this.allowedTypes.size > 0 && !this.allowedTypes.has(type)) return;\n const color = DebugLogger.typeColor(type);\n // eslint-disable-next-line no-console\n console.info(`%c[${type}][INFO]`, `color: ${color}; font-weight: bold;`, ...args);\n }\n\n warn(type, ...args) {\n if (!this.enabled) return;\n if (this.allowedTypes.size > 0 && !this.allowedTypes.has(type)) return;\n const color = DebugLogger.typeColor(type, \"warn\");\n // eslint-disable-next-line no-console\n console.warn(`%c[${type}][WARN]`, `color: ${color}; font-weight: bold;`, ...args);\n }\n\n error(type, ...args) {\n if (!this.enabled) return;\n if (this.allowedTypes.size > 0 && !this.allowedTypes.has(type)) return;\n const color = DebugLogger.typeColor(type, \"error\");\n // eslint-disable-next-line no-console\n console.error(`%c[${type}][ERROR]`, `color: ${color}; font-weight: bold;`, ...args);\n }\n\n static typeColor(type, level = \"info\") {\n // Assign colors to types for better visibility\n const colors = {\n background: \"#0074D9\",\n content: \"#2ECC40\",\n popup: \"#FF851B\",\n init: \"#B10DC9\",\n verification: \"#FF4136\",\n fetch: \"#39CCCC\",\n provider: \"#FFDC00\",\n claim: \"#7FDBFF\",\n proof: \"#85144b\",\n offscreen: \"#AAAAAA\",\n polyfills: \"#0074D9\",\n \"session-timer\": \"#2ECC40\",\n };\n const levelColors = {\n info: \"\", // default, use type color\n warn: \"#FFA500\", // orange\n error: \"#FF0000\", // red\n };\n // Try to match a known type, else use gray\n const key = Object.keys(colors).find((k) => type.toLowerCase().includes(k));\n let baseColor = colors[key] || \"#888888\";\n if (level !== \"info\") {\n baseColor = levelColors[level] || baseColor;\n }\n return baseColor;\n }\n}\n\nexport const debugLogger = new DebugLogger();\n","import { loggerService, createContextLogger } from \"./LoggerService\";\nimport { debugLogger } from \"./debugLogger\";\n\n// Enable debugLogger in development, disable in production\nif (typeof process !== \"undefined\" && process.env && process.env.NODE_ENV === \"production\") {\n debugLogger.disable();\n} else {\n debugLogger.enable();\n}\n\nexport { DebugLogType } from \"./debugLogger\";\nexport { debugLogger };\nexport { LogEntry } from \"./LogEntry\";\nexport { loggerService, createContextLogger };\nexport { LOGGING_ENDPOINTS, LOG_TYPES, LOG_SOURCES, LOG_LEVEL, EVENT_TYPES } from \"./constants\";\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","/**\n * WebSocket Polyfill\n *\n * This module provides a WebSocket polyfill that uses the browser's native WebSocket when available\n * or provides a mock implementation for background scripts where window is not available.\n * It ensures compatibility with Node.js-style WebSocket usage patterns.\n */\n\n// Check if we're in a context with window (browser/content script) or not (background script)\nconst isBackgroundContext = typeof window === \"undefined\";\nimport { debugLogger, DebugLogType } from \"./logger\";\n\n// Create either a real WebSocket wrapper or a mock implementation\nlet WebSocketPolyfill;\n\nif (!isBackgroundContext) {\n // Browser context - use the native WebSocket\n const BrowserWebSocket = window.WebSocket;\n\n WebSocketPolyfill = class extends BrowserWebSocket {\n constructor(url, protocols) {\n debugLogger.info(\n DebugLogType.POLYFILLS,\n \"[WEBSOCKET-POLYFILL] Creating WebSocket with URL:\",\n url,\n );\n super(url, protocols);\n\n // Add event handling compatibility\n this.addEventListener(\"error\", (event) => {\n if (typeof this.onerror === \"function\") {\n this.onerror(event);\n }\n });\n\n this.addEventListener(\"open\", (event) => {\n if (typeof this.onopen === \"function\") {\n this.onopen(event);\n }\n });\n\n this.addEventListener(\"close\", (event) => {\n if (typeof this.onclose === \"function\") {\n this.onclose(event);\n }\n });\n\n this.addEventListener(\"message\", (event) => {\n if (typeof this.onmessage === \"function\") {\n this.onmessage(event);\n }\n });\n }\n\n // Add a promise-based send method expected by some libraries\n sendPromise(data) {\n return new Promise((resolve, reject) => {\n try {\n this.send(data);\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n }\n };\n\n debugLogger.info(\n DebugLogType.POLYFILLS,\n \"[WEBSOCKET-POLYFILL] Using browser WebSocket implementation\",\n );\n} else {\n // Background script context - create a mock implementation\n WebSocketPolyfill = class {\n constructor(url, protocols) {\n debugLogger.info(\n DebugLogType.POLYFILLS,\n \"[WEBSOCKET-POLYFILL] Creating mock WebSocket for background context\",\n );\n this.url = url;\n this.protocols = protocols;\n this.readyState = 3; // CLOSED\n\n // Simulate being closed immediately\n setTimeout(() => {\n if (typeof this.onclose === \"function\") {\n this.onclose({ code: 1000, reason: \"WebSockets not supported in background context\" });\n }\n }, 0);\n }\n\n // No-op methods\n send() {\n debugLogger.warn(\n DebugLogType.POLYFILLS,\n \"[WEBSOCKET-POLYFILL] Cannot use WebSockets in background context\",\n );\n throw new Error(\"WebSockets are not available in background context\");\n }\n\n close() {\n // Already closed, no-op\n }\n\n sendPromise() {\n return Promise.reject(new Error(\"WebSockets are not available in background context\"));\n }\n\n addEventListener() {\n // No-op\n }\n\n removeEventListener() {\n // No-op\n }\n };\n\n debugLogger.info(\n DebugLogType.POLYFILLS,\n \"[WEBSOCKET-POLYFILL] Using mock WebSocket implementation for background context\",\n );\n}\n\n// Export the WebSocket class and constructor\nexport const WebSocket = WebSocketPolyfill;\nexport default WebSocketPolyfill;\n\n// For CommonJS compatibility\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports = WebSocketPolyfill;\n module.exports.WebSocket = WebSocketPolyfill;\n module.exports.default = WebSocketPolyfill;\n}\n\ndebugLogger.info(DebugLogType.POLYFILLS, \"[WEBSOCKET-POLYFILL] WebSocket polyfill initialized\");\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","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/**\n * Represents a log entry to be sent to the logging service.\n */\nexport class LogEntry {\n constructor({\n sessionId,\n providerId,\n appId,\n logLine,\n type,\n eventType,\n logLevel,\n source,\n tabId,\n url,\n meta,\n time = null,\n deviceId,\n }) {\n this.sessionId = sessionId;\n this.providerId = providerId;\n this.appId = appId;\n this.logLine = logLine;\n this.type = type;\n this.eventType = eventType;\n this.logLevel = logLevel;\n this.source = source;\n this.tabId = tabId;\n this.url = url;\n this.meta = meta || undefined;\n this.time = time || new Date();\n this.deviceId = deviceId;\n }\n\n toJson() {\n const json = {\n logLine: this.logLine,\n ts: LogEntry.fromDateTimeToTimeStamp(this.time),\n logLevel: this.logLevel,\n sessionId: this.sessionId,\n providerId: this.providerId,\n appId: this.appId,\n source: this.source,\n deviceId: this.deviceId,\n };\n\n // Only include optional fields if they exist\n if (this.type) json.type = this.type;\n if (this.eventType) json.eventType = this.eventType;\n if (this.tabId) json.tabId = this.tabId;\n if (this.url) json.url = this.url;\n if (this.meta) json.meta = this.meta;\n\n return json;\n }\n\n static fromDateTimeToTimeStamp(dateTime) {\n const ms = dateTime.getTime();\n return (ms * 1000000).toString();\n }\n}\n","import {\n LOGGING_ENDPOINTS,\n DEFAULT_LOG_CONFIG,\n LOG_LEVEL,\n LOG_LEVEL_MAP,\n LOG_CONFIG_STORAGE_KEY,\n} from \"./constants\";\nimport { LogEntry } from \"./LogEntry\";\n\nexport class LoggerService {\n constructor() {\n this.logs = [];\n this.isSending = false;\n this.maxBatchSize = 20;\n this.flushInterval = 5000;\n this.flushIntervalId = null;\n\n this.config = { ...DEFAULT_LOG_CONFIG };\n this.deviceId = null;\n\n // Load and live-sync config from chrome.storage when available\n try {\n if (typeof chrome !== \"undefined\" && chrome.storage?.local) {\n chrome.storage.local.get([LOG_CONFIG_STORAGE_KEY], (res) => {\n const cfg = res?.[LOG_CONFIG_STORAGE_KEY];\n if (cfg && typeof cfg === \"object\") {\n this.setConfig(cfg);\n }\n });\n chrome.storage.onChanged.addListener((changes, area) => {\n if (area === \"local\" && changes[LOG_CONFIG_STORAGE_KEY]) {\n const newCfg = changes[LOG_CONFIG_STORAGE_KEY].newValue || {};\n this.setConfig(newCfg);\n }\n });\n }\n } catch {}\n\n this.startFlushInterval();\n }\n\n setConfig(partial) {\n this.config = { ...this.config, ...partial };\n }\n\n startFlushInterval() {\n if (this.flushIntervalId) clearInterval(this.flushIntervalId);\n this.flushIntervalId = setInterval(() => this.flush(), this.flushInterval);\n }\n\n stopFlushInterval() {\n if (this.flushIntervalId) {\n clearInterval(this.flushIntervalId);\n this.flushIntervalId = null;\n }\n }\n\n async getDeviceLoggingId() {\n if (this.deviceId) return this.deviceId;\n try {\n if (typeof chrome !== \"undefined\" && chrome.storage) {\n const result = await chrome.storage.local.get([\"reclaim_device_id\"]);\n if (result.reclaim_device_id) {\n this.deviceId = result.reclaim_device_id;\n return this.deviceId;\n }\n }\n } catch {}\n this.deviceId =\n typeof crypto !== \"undefined\" && crypto.randomUUID ? crypto.randomUUID() : String(Date.now());\n try {\n if (typeof chrome !== \"undefined\" && chrome.storage) {\n await chrome.storage.local.set({ reclaim_device_id: this.deviceId });\n }\n } catch {}\n return this.deviceId;\n }\n\n addLog(logEntry) {\n this.logs.push(logEntry);\n if (this.logs.length >= this.maxBatchSize) this.flush();\n }\n\n shouldLog(requestedLevel) {\n const configLevel = LOG_LEVEL_MAP[this.config.logLevel] || LOG_LEVEL.INFO;\n\n // Hierarchical check: request level must be <= config level\n // If config is INFO (10), only INFO (10) passes\n // If config is DEBUG (20), INFO (10) and DEBUG (20) pass\n // If config is ALL (30), everything passes\n return requestedLevel <= configLevel;\n }\n\n emitToConsole(logLevel, message, meta) {\n const prefix = `[${logLevel}]`;\n const line = `${prefix} ${message}`;\n if (meta) {\n console.log(line, meta);\n } else {\n console.log(line);\n }\n }\n\n log({\n message,\n logLevel,\n type,\n eventType,\n meta,\n sessionId,\n providerId,\n appId,\n source,\n tabId,\n url,\n }) {\n // Validate required fields\n if (!message || !logLevel) {\n console.error(\"Logger: message and logLevel are required\");\n return;\n }\n\n // Check if we should log this level\n if (!this.shouldLog(logLevel)) {\n return;\n }\n\n // Console output\n\n if (this.config.consoleEnabled) {\n this.emitToConsole(logLevel, message, meta);\n }\n\n // Backend logging\n const entry = new LogEntry({\n sessionId: sessionId || \"unknown\",\n providerId: providerId || \"unknown\",\n appId: appId || \"unknown\",\n logLine: message,\n type,\n eventType,\n logLevel,\n source: source || this.config.source,\n tabId,\n url,\n meta,\n time: new Date(),\n });\n this.addLog(entry);\n }\n\n async flush() {\n if (this.logs.length === 0 || this.isSending) return;\n\n const logsToSend = [...this.logs];\n this.logs = [];\n\n try {\n this.isSending = true;\n await this.sendLogs(logsToSend);\n } catch (error) {\n console.error(\"Error flushing logs:\", error);\n this.logs = [...this.logs, ...logsToSend];\n } finally {\n this.isSending = false;\n }\n }\n\n async sendLogs(entries) {\n if (!entries?.length) return;\n\n const deviceId = await this.getDeviceLoggingId();\n const formattedLogs = entries.map((e) => {\n const obj = e.toJson();\n obj.deviceId = obj.deviceId || deviceId;\n return obj;\n });\n\n const body = JSON.stringify({\n logs: formattedLogs,\n source: this.config.source,\n deviceId,\n });\n\n const res = await fetch(LOGGING_ENDPOINTS.DIAGNOSTIC_LOGGING, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body,\n });\n\n if (!res.ok) {\n console.error(`Failed to send ${entries.length} logs`, await res.text());\n }\n }\n}\n\nexport const loggerService = new LoggerService();\n\n// Create a scoped logger to avoid repeating context\nexport const createContextLogger = (initial = {}) => {\n const ctx = {\n sessionId: \"unknown\",\n providerId: \"unknown\",\n appId: \"unknown\",\n source: loggerService.config?.source || \"reclaim-extension-sdk\",\n ...initial,\n };\n\n return {\n get context() {\n return { ...ctx };\n },\n\n // Update context anytime (partial updates supported)\n setContext(partial = {}) {\n Object.assign(ctx, partial);\n },\n\n // Main log method - pass object with message, logLevel, and optional fields\n log(opts) {\n loggerService.log({ ...ctx, ...opts });\n },\n\n // Convenience methods (optional, can be removed if you only want .log())\n info(opts = {}) {\n loggerService.log({ ...ctx, logLevel: \"INFO\", ...opts });\n },\n debug(opts = {}) {\n loggerService.log({ ...ctx, logLevel: \"DEBUG\", ...opts });\n },\n all(opts = {}) {\n loggerService.log({ ...ctx, logLevel: \"ALL\", ...opts });\n },\n error(opts = {}) {\n loggerService.log({ ...ctx, logLevel: \"ALL\", ...opts });\n },\n };\n};\n","export const LOGGING_ENDPOINTS = {\n DIAGNOSTIC_LOGGING: \"http://localhost:8001/api/logs\",\n};\n\nexport const LOG_TYPES = {\n BACKGROUND: \"reclaim_browser_extension.BackgroundProcess\",\n CONTENT: \"reclaim_browser_extension.ContentScript\",\n POPUP: \"reclaim_browser_extension.Popup\",\n INIT: \"reclaim_browser_extension.Initialization\",\n VERIFICATION: \"reclaim_browser_extension.Verification\",\n FETCH_DATA: \"reclaim_browser_extension.FetchData\",\n PROVIDER_DATA: \"reclaim_browser_extension.ProviderData\",\n CLAIM_CREATION: \"reclaim_browser_extension.ClaimCreation\",\n PROOF_GENERATION: \"reclaim_browser_extension.ProofGeneration\",\n PROOF_SUBMISSION: \"reclaim_browser_extension.ProofSubmission\",\n PROOF_VERIFICATION: \"reclaim_browser_extension.ProofVerification\",\n OFFSCREEN: \"reclaim_browser_extension.Offscreen\",\n};\n\nexport const LOG_SOURCES = {\n BACKGROUND: \"background\",\n CONTENT: \"content\",\n OFFSCREEN: \"offscreen\",\n POPUP: \"popup\",\n INJECTION: \"injection\",\n};\n\nexport const EVENT_TYPES = {\n IS_RECLAIM_EXTENSION_SDK: \"IS_RECLAIM_EXTENSION_SDK\",\n VERIFICATION_FLOW_STARTED: \"VERIFICATION_FLOW_STARTED\",\n RECLAIM_VERIFICATION_DISMISSED: \"RECLAIM_VERIFICATION_DISMISSED\",\n RECLAIM_VERIFICATION_PROVIDER_LOAD_EXCEPTION: \"RECLAIM_VERIFICATION_PROVIDER_LOAD_EXCEPTION\",\n REQUEST_MATCHED: \"REQUEST_MATCHED\",\n RESPONSE_MATCH_FAILED: \"RESPONSE_MATCH_FAILED\",\n X_PATH_MATCH_REQUIREMENT_FAILED: \"X_PATH_MATCH_REQUIREMENT_FAILED\",\n JSON_PATH_MATCH_REQUIREMENT_FAILED: \"JSON_PATH_MATCH_REQUIREMENT_FAILED\",\n REGEX_MATCH_REQUIREMENT_FAILED: \"REGEX_MATCH_REQUIREMENT_FAILED\",\n FILTERED_REQUEST_FOUND: \"FILTERED_REQUEST_FOUND\",\n FILTER_REQUEST_ERROR: \"FILTER_REQUEST_ERROR\",\n STARTING_CLAIM_CREATION: \"STARTING_CLAIM_CREATION\",\n CLAIM_CREATION_STARTED: \"CLAIM_CREATION_STARTED\",\n CLAIM_CREATION_SUCCESS: \"CLAIM_CREATION_SUCCESS\",\n CLAIM_CREATION_FAILED: \"CLAIM_CREATION_FAILED\",\n CLAIM_PARAMETER_VALIDATION_FAILED_EXCEPTION: \"CLAIM_PARAMETER_VALIDATION_FAILED_EXCEPTION\",\n OFFSCREEN_DOCUMENT_READY: \"OFFSCREEN_DOCUMENT_READY\",\n OFFSCREEN_DOCUMENT_NOT_READY_EXCEPTION: \"OFFSCREEN_DOCUMENT_NOT_READY_EXCEPTION\",\n PROOF_GENERATION_STARTED: \"PROOF_GENERATION_STARTED\",\n PROOF_GENERATION_SUCCESS: \"PROOF_GENERATION_SUCCESS\",\n PROOF_GENERATION_ABORTED: \"PROOF_GENERATION_ABORTED\",\n PROOF_GENERATION_FAILED: \"PROOF_GENERATION_FAILED\",\n RESULT_RECEIVED: \"RESULT_RECEIVED\",\n SUBMITTING_PROOF: \"SUBMITTING_PROOF\",\n SUBMITTING_PROOF_TO_CALLBACK_URL: \"SUBMITTING_PROOF_TO_CALLBACK_URL\",\n SUBMITTING_PROOF_TO_CALLBACK_URL_SUCCESS: \"SUBMITTING_PROOF_TO_CALLBACK_URL_SUCCESS\",\n SUBMITTING_PROOF_TO_CALLBACK_URL_FAILED: \"SUBMITTING_PROOF_TO_CALLBACK_URL_FAILED\",\n PROOF_SUBMISSION_FAILED: \"PROOF_SUBMISSION_FAILED\",\n PROOF_SUBMITTED: \"PROOF_SUBMITTED\",\n VERIFICATION_FLOW_FAILED: \"VERIFICATION_FLOW_FAILED\",\n TAB_NOT_MANAGED_BY_EXTENSION_EXCEPTION: \"TAB_NOT_MANAGED_BY_EXTENSION_EXCEPTION\",\n INJECTION_SCRIPT_SET_IN_LOCAL_STORAGE_FAILED: \"INJECTION_SCRIPT_SET_IN_LOCAL_STORAGE_FAILED\",\n VERIFICATION_POPUP_ERROR: \"VERIFICATION_POPUP_ERROR\",\n UPDATE_SESSION_STATUS_ERROR: \"UPDATE_SESSION_STATUS_ERROR\",\n};\n\n// Numeric levels for easy threshold checks\nexport const LOG_LEVEL = {\n INFO: 10,\n DEBUG: 20,\n ALL: 30,\n};\n\nexport const LOG_LEVEL_MAP = {\n INFO: LOG_LEVEL.INFO,\n DEBUG: LOG_LEVEL.DEBUG,\n ALL: LOG_LEVEL.ALL,\n};\n\nexport const DEFAULT_LOG_CONFIG = {\n logLevel: \"INFO\", // \"INFO\" | \"DEBUG\" | \"ALL\" - applies to both console and backend\n consoleEnabled: false, // Enable/disable console logging\n source: \"reclaim-extension-sdk\",\n};\n\nexport const LOG_CONFIG_STORAGE_KEY = \"reclaim_extension_sdk_log_config\";\n","export const BACKEND_URL = \"http://localhost:8001\";\n\nexport const API_ENDPOINTS = {\n PROVIDER_URL: (providerId) => `${BACKEND_URL}/api/providers/${providerId}`,\n SUBMIT_PROOF: (sessionId) => `${BACKEND_URL}/session/${sessionId}/proof`,\n UPDATE_SESSION_STATUS: () => `${BACKEND_URL}/api/sdk/update/session/`,\n STATUS_URL: (sessionId) => `${BACKEND_URL}/api/sdk/session/${sessionId}`,\n};\n","/**\n * @typedef {Object} TemplateData\n * @property {string} sessionId - Unique identifier for the session\n * @property {string} providerId - Provider identifier\n * @property {string} applicationId - Application identifier\n * @property {string} signature - Signature for authentication\n * @property {string} timestamp - Timestamp of the request\n * @property {string} callbackUrl - URL to call back after verification\n * @property {string} context - Context data as JSON string\n * @property {Object} parameters - Additional parameters\n * @property {string} redirectUrl - URL to redirect after completion\n * @property {boolean} acceptAiProviders - Whether to accept AI providers\n * @property {string} sdkVersion - SDK version\n * @property {boolean} jsonProofResponse - Whether to return proof as JSON\n */\n\nexport const JOCLAIM_SDK_ACTIONS = {\n CHECK_EXTENSION: \"JOCLAIM_EXTENSION_CHECK\",\n EXTENSION_RESPONSE: \"JOCLAIM_EXTENSION_RESPONSE\",\n START_VERIFICATION: \"JOCLAIM_START_VERIFICATION\",\n VERIFICATION_STARTED: \"JOCLAIM_VERIFICATION_STARTED\",\n VERIFICATION_COMPLETED: \"JOCLAIM_VERIFICATION_COMPLETED\",\n VERIFICATION_FAILED: \"JOCLAIM_VERIFICATION_FAILED\",\n CANCEL_VERIFICATION: \"JOCLAIM_CANCEL_VERIFICATION\",\n SET_PUBLIC_DATA: \"JOCLAIM_SET_PUBLIC_DATA\",\n PARAMETERS_UPDATE: \"JOCLAIM_PARAMETERS_UPDATE\",\n PARAMETERS_GET: \"JOCLAIM_PARAMETERS_GET\",\n REPORT_PROVIDER_ERROR: \"JOCLAIM_REPORT_PROVIDER_ERROR\",\n SET_EXPECT_MANY_CLAIMS: \"JOCLAIM_SET_EXPECT_MANY_CLAIMS\",\n REQUEST_CLAIM: \"JOCLAIM_REQUEST_CLAIM\",\n SET_LOG_CONFIG: \"JOCLAIM_SET_LOG_CONFIG\",\n};\n\nexport const JOCLAIM_SESSION_STATUS = {\n SESSION_INIT: \"SESSION_INIT\",\n SESSION_STARTED: \"SESSION_STARTED\",\n USER_INIT_VERIFICATION: \"USER_INIT_VERIFICATION\",\n USER_STARTED_VERIFICATION: \"USER_STARTED_VERIFICATION\",\n PROOF_GENERATION_STARTED: \"PROOF_GENERATION_STARTED\",\n PROOF_GENERATION_SUCCESS: \"PROOF_GENERATION_SUCCESS\",\n PROOF_GENERATION_FAILED: \"PROOF_GENERATION_FAILED\",\n PROOF_SUBMITTED: \"PROOF_SUBMITTED\",\n PROOF_SUBMISSION_FAILED: \"PROOF_SUBMISSION_FAILED\",\n PROOF_MANUAL_VERIFICATION_SUBMITED: \"PROOF_MANUAL_VERIFICATION_SUBMITED\",\n};\n\nexport const MESSAGE_SOURCES = {\n CONTENT_SCRIPT: \"content-script\",\n BACKGROUND: \"background\",\n OFFSCREEN: \"offscreen\",\n};\n\nexport const MESSAGE_ACTIONS = {\n // Proof generation actions\n START_VERIFICATION: \"START_VERIFICATION\",\n CANCEL_VERIFICATION: \"CANCEL_VERIFICATION\",\n GENERATE_PROOF_REQUEST: \"GENERATE_PROOF_REQUEST\",\n CLAIM_CREATION_REQUESTED: \"CLAIM_CREATION_REQUESTED\",\n CLAIM_CREATION_SUCCESS: \"CLAIM_CREATION_SUCCESS\",\n CLAIM_CREATION_FAILED: \"CLAIM_CREATION_FAILED\",\n PROOF_GENERATION_STARTED: \"PROOF_GENERATION_STARTED\",\n PROOF_GENERATION_SUCCESS: \"PROOF_GENERATION_SUCCESS\",\n PROOF_GENERATION_FAILED: \"PROOF_GENERATION_FAILED\",\n PROOF_SUBMITTED: \"PROOF_SUBMITTED\",\n PROOF_SUBMISSION_FAILED: \"PROOF_SUBMISSION_FAILED\",\n GENERATE_PROOF: \"GENERATE_PROOF\",\n GENERATED_PROOF_RESPONSE: \"GENERATED_PROOF_RESPONSE\",\n GENERATE_CLAIM_ON_ATTESTOR: \"GENERATE_CLAIM_ON_ATTESTOR\",\n GET_PRIVATE_KEY: \"GET_PRIVATE_KEY\",\n GET_PRIVATE_KEY_RESPONSE: \"GET_PRIVATE_KEY_RESPONSE\",\n\n // UI actions\n SHOW_PROVIDER_VERIFICATION_POPUP: \"SHOW_PROVIDER_VERIFICATION_POPUP\",\n OFFSCREEN_DOCUMENT_READY: \"OFFSCREEN_DOCUMENT_READY\",\n\n // Offscreen actions\n GENERATE_PROOF_RESPONSE: \"GENERATE_PROOF_RESPONSE\",\n PING_OFFSCREEN: \"PING_OFFSCREEN\",\n\n // Background actions\n CLOSE_CURRENT_TAB: \"CLOSE_CURRENT_TAB\",\n GET_CURRENT_TAB_ID: \"GET_CURRENT_TAB_ID\",\n // Content script actions\n REQUEST_PROVIDER_DATA: \"REQUEST_PROVIDER_DATA\",\n PROVIDER_DATA_READY: \"PROVIDER_DATA_READY\",\n CONTENT_SCRIPT_LOADED: \"CONTENT_SCRIPT_LOADED\",\n SHOULD_INITIALIZE: \"SHOULD_INITIALIZE\",\n CHECK_IF_MANAGED_TAB: \"CHECK_IF_MANAGED_TAB\",\n\n // Interceptor actions\n FILTERED_REQUEST_FOUND: \"FILTERED_REQUEST_FOUND\",\n INTERCEPTED_REQUEST_AND_RESPONSE: \"INTERCEPTED_REQUEST_AND_RESPONSE\",\n\n // Injection script actions\n UPDATE_PUBLIC_DATA: \"UPDATE_PUBLIC_DATA\",\n UPDATE_EXPECT_MANY_CLAIMS: \"UPDATE_EXPECT_MANY_CLAIMS\",\n GET_PARAMETERS: \"GET_PARAMETERS\",\n REPORT_PROVIDER_ERROR: \"REPORT_PROVIDER_ERROR\",\n REQUEST_CLAIM: \"REQUEST_CLAIM\",\n\n // Injection script actions\n INJECT_VIA_SCRIPTING: \"INJECT_VIA_SCRIPTING\",\n};\n\n/**\n * @typedef {Object} ProviderData\n * @property {string} providerId - Provider ID\n * @property {string} name - Provider name\n * @property {string} description - Provider description\n * @property {string} logoUrl - URL to provider logo\n * @property {boolean} disableRequestReplay - Whether request replay is disabled\n * @property {string} loginUrl - URL to provider login page\n * @property {string} customInjection - Custom injection code\n * @property {boolean} isApproved - Whether provider is approved\n * @property {string} geoLocation - Geo location\n * @property {string} providerType - Provider type\n * @property {boolean} isVerified - Whether provider is verified\n * @property {string} injectionType - Injection type\n * @property {Object} userAgent - User agent info\n * @property {string} userAgent.ios - iOS user agent\n * @property {string} userAgent.android - Android user agent\n * @property {boolean} isActive - Whether provider is active\n * @property {string|null} expectedPageUrl - Expected page URL\n * @property {string|null} pageTitle - Page title\n * @property {string|null} stepsToFollow - Steps to follow\n * @property {number} usedInCount - Number of times used\n * @property {string|null} overseerUid - Overseer UID\n * @property {string|null} overseerNote - Overseer note\n * @property {Array<RequestData>} requestData - Request data\n */\n\n/**\n * @typedef {Object} RequestData\n * @property {string} url - Request URL\n * @property {string} expectedPageUrl - Expected page URL\n * @property {string} urlType - URL type\n * @property {string} method - HTTP method\n * @property {Array<ResponseMatch>} responseMatches - Response matches\n * @property {Array<ResponseRedaction>} responseRedactions - Response redactions\n * @property {BodySniff} bodySniff - Body sniff\n * @property {string} requestHash - Request hash\n * @property {string|null} additionalClientOptions - Additional client options\n */\n\n/**\n * @typedef {Object} ResponseMatch\n * @property {string} value - Match value\n * @property {string} type - Match type\n * @property {boolean} invert - Whether to invert the match\n * @property {string|null} description - Match description\n * @property {number|null} order - Match order\n */\n\n/**\n * @typedef {Object} ResponseRedaction\n * @property {string} xPath - XPath\n * @property {string} jsonPath - JSON path\n * @property {string} regex - Regular expression\n * @property {string} hash - Hash\n */\n\n/**\n * @typedef {Object} BodySniff\n * @property {boolean} enabled - Whether body sniffing is enabled\n * @property {string} template - Body template\n */\n","// Polyfills for browser and service worker environments\nimport { Buffer } from \"buffer\";\nimport process from \"process\";\nimport { debugLogger, DebugLogType } from \"./logger\";\n\n// Skip WebSocket import for content script\n// import { WebSocket } from './websocket-polyfill';\n\n// Define a safe global object that works across environments\nconst getGlobalObject = () => {\n if (typeof window !== \"undefined\") return window;\n if (typeof self !== \"undefined\") return self;\n if (typeof global !== \"undefined\") return global;\n return Function(\"return this\")();\n};\n\n// Get the global object\nconst global = getGlobalObject();\n\n// Check if we're in a service worker or browser environment\nconst isServiceWorker = typeof window === \"undefined\";\n// Determine if we're in content script context\nconst isContentScript = typeof document !== \"undefined\" && document.contentType !== undefined;\n\n// Make Buffer and process available globally\nglobal.Buffer = global.Buffer || Buffer;\nglobal.process = global.process || process;\n\n// Don't add WebSocket polyfill in content script context\nif (typeof global.WebSocket === \"undefined\" && !isContentScript) {\n // Dynamically import WebSocket only when needed and not in content script\n try {\n const { WebSocket } = require(\"./websocket-polyfill\");\n global.WebSocket = WebSocket;\n debugLogger.info(DebugLogType.POLYFILLS, \"WebSocket polyfill added to global\");\n } catch (e) {\n debugLogger.warn(DebugLogType.POLYFILLS, \"Failed to load WebSocket polyfill:\", e);\n }\n} else {\n if (!isContentScript) {\n debugLogger.info(DebugLogType.POLYFILLS, \"Using native WebSocket implementation\");\n } else {\n debugLogger.info(DebugLogType.POLYFILLS, \"Skipping WebSocket in content script context\");\n }\n}\n\n// Force browser mode for Node.js compatibility\nif (global.process) {\n global.process.browser = true;\n}\n\n// Handle Node.js-style require for libraries expecting WebSocket\nif (typeof global.require !== \"function\") {\n global.require = (moduleName) => {\n // Return mock implementations for common modules\n switch (moduleName) {\n case \"ws\":\n // Don't return WebSocket in content script context\n if (isContentScript) {\n debugLogger.info(DebugLogType.POLYFILLS, \"Blocking ws module in content script\");\n return {}; // Empty implementation for content script\n }\n try {\n const { WebSocket } = require(\"./websocket-polyfill\");\n return { WebSocket }; // Return our polyfill for ws\n } catch (e) {\n debugLogger.warn(DebugLogType.POLYFILLS, \"Failed to load WebSocket for ws module:\", e);\n return {};\n }\n case \"fs\":\n return global.fs;\n case \"path\":\n return global.path;\n case \"os\":\n return global.os;\n case \"crypto\":\n return global.crypto;\n case \"worker_threads\":\n return {}; // Empty implementation\n case \"koffi\":\n case \"re2\":\n return {}; // Empty implementation\n default:\n console.warn(`Mock require called for module: ${moduleName}`);\n return {};\n }\n };\n} else {\n // Don't override require if it's already defined\n const originalRequire = global.require;\n global.require = (moduleName) => {\n if (moduleName === \"ws\") {\n // Don't return WebSocket in content script context\n if (isContentScript) {\n debugLogger.info(DebugLogType.POLYFILLS, \"Blocking ws module in content script\");\n return {}; // Empty implementation for content script\n }\n try {\n const { WebSocket } = require(\"./websocket-polyfill\");\n return { WebSocket }; // Return our polyfill for ws\n } catch (e) {\n debugLogger.warn(DebugLogType.POLYFILLS, \"Failed to load WebSocket for ws module:\", e);\n return {};\n }\n }\n try {\n return originalRequire(moduleName);\n } catch (e) {\n debugLogger.warn(DebugLogType.POLYFILLS, `Failed to require module: ${moduleName}`);\n return {};\n }\n };\n}\n\n// Fix for snarkjs which tries to access process.browser\nif (typeof process !== \"undefined\") {\n process.browser = true;\n\n // Add missing process properties that some modules might need\n if (!process.version) process.version = \"v16.0.0\"; // Mock Node.js version\n if (!process.cwd) process.cwd = () => \"/\"; // Mock current working directory\n}\n\n// TextEncoder and TextDecoder are available in both browser and service worker\n// if (typeof global.TextEncoder === \"undefined\" && !isServiceWorker) {\n// const encoding = require(\"text-encoding\");\n// global.TextEncoder = encoding.TextEncoder;\n// global.TextDecoder = encoding.TextDecoder;\n// }\n\n// Handle other Node.js-specific functionality\nif (typeof global.global === \"undefined\") {\n global.global = global;\n}\n\n// Handle crypto.getRandomValues polyfill if needed\nif (typeof global.crypto === \"undefined\") {\n global.crypto = {};\n}\n\nif (typeof global.crypto.getRandomValues === \"undefined\") {\n global.crypto.getRandomValues = function (arr) {\n const bytes = new Uint8Array(arr.length);\n for (let i = 0; i < bytes.length; i++) {\n bytes[i] = Math.floor(Math.random() * 256);\n }\n return bytes;\n };\n}\n\n// Handle other potential missing WebCrypto APIs\nif (typeof global.crypto.subtle === \"undefined\") {\n debugLogger.warn(\n DebugLogType.POLYFILLS,\n \"WebCrypto subtle API not available. Some functionality may not work.\",\n );\n // Create a minimal fallback for subtle crypto\n global.crypto.subtle = {\n digest: async (algorithm, data) => {\n debugLogger.warn(\n DebugLogType.POLYFILLS,\n `Crypto subtle digest (${algorithm}) called with browser fallback`,\n );\n // This is just a minimal fallback - not secure for production\n const hashInt = Array.from(new Uint8Array(data)).reduce(\n (acc, val) => (acc * 31 + val) & 0xffffffff,\n 0,\n );\n\n // Convert to a byte array of appropriate length\n const result = new Uint8Array(32); // SHA-256 length\n for (let i = 0; i < 32; i++) {\n result[i] = (hashInt >> (i * 8)) & 0xff;\n }\n\n return result.buffer;\n },\n };\n}\n\n// Only add browser-specific polyfills if we're in a browser\nif (!isServiceWorker) {\n // Mock for Node.js domain module that attestor-core might use\n if (typeof global.domain === \"undefined\") {\n global.domain = {\n create: () => ({\n run: (fn) => fn(),\n on: () => {\n /* Empty function implementation */\n },\n bind: (fn) => fn,\n }),\n };\n }\n\n // Override URL constructor to handle node:url protocol\n const OriginalURL = global.URL;\n function CustomURL(url, base) {\n // Handle node:url protocol\n if (typeof url === \"string\" && url.startsWith(\"node:\")) {\n url = url.replace(/^node:/, \"\");\n }\n return new OriginalURL(url, base);\n }\n\n // Copy prototype and static methods safely\n CustomURL.prototype = OriginalURL.prototype;\n try {\n // Try to copy static properties, but don't fail if they're read-only\n Object.getOwnPropertyNames(OriginalURL).forEach((prop) => {\n if (prop !== \"prototype\" && prop !== \"constructor\") {\n try {\n CustomURL[prop] = OriginalURL[prop];\n } catch (e) {\n // Silently ignore errors for read-only properties\n }\n }\n });\n } catch (e) {\n debugLogger.warn(DebugLogType.POLYFILLS, \"Could not copy all URL static properties:\", e);\n }\n\n // Set the global URL to our custom implementation\n try {\n global.URL = CustomURL;\n } catch (e) {\n debugLogger.warn(DebugLogType.POLYFILLS, \"Could not override URL constructor:\", e);\n // If we can't override the URL constructor, we'll have to live with the original\n }\n}\n\n// Mock for Node.js module.require which some libraries might use\nif (typeof global.module === \"undefined\") {\n global.module = { exports: {} };\n}\n\n// Add missing fs functions that might be needed\nglobal.fs = global.fs || {\n readFileSync: (path) => {\n debugLogger.warn(DebugLogType.POLYFILLS, `Attempted to readFileSync: ${path}`);\n throw new Error(\"fs.readFileSync is not available in this environment\");\n },\n writeFileSync: (path, data) => {\n debugLogger.warn(DebugLogType.POLYFILLS, `Attempted to writeFileSync: ${path}`);\n // No-op\n },\n existsSync: (path) => {\n debugLogger.warn(DebugLogType.POLYFILLS, `Attempted to check if file exists: ${path}`);\n return false;\n },\n promises: {\n readFile: async (path) => {\n debugLogger.warn(DebugLogType.POLYFILLS, `Attempted to readFile: ${path}`);\n throw new Error(\"fs.promises.readFile is not available in this environment\");\n },\n writeFile: async (path, data) => {\n debugLogger.warn(DebugLogType.POLYFILLS, `Attempted to writeFile: ${path}`);\n // No-op\n },\n },\n};\n\n// Add missing os functions\nglobal.os = global.os || {\n tmpdir: () => \"/tmp\",\n homedir: () => \"/home/user\",\n platform: () => \"browser\",\n type: () => \"Browser\",\n cpus: () => [{ model: \"Browser CPU\", speed: 1000 }],\n totalmem: () => 8 * 1024 * 1024 * 1024, // 8GB\n freemem: () => 4 * 1024 * 1024 * 1024, // 4GB\n};\n\n// Ensure path methods are available\nglobal.path = global.path || {\n join: (...args) => args.join(\"/\").replace(/\\/+/g, \"/\"),\n resolve: (...args) => args.join(\"/\").replace(/\\/+/g, \"/\"),\n dirname: (path) => path.split(\"/\").slice(0, -1).join(\"/\") || \".\",\n basename: (path, ext) => {\n let base = path.split(\"/\").pop() || \"\";\n if (ext && base.endsWith(ext)) {\n base = base.slice(0, -ext.length);\n }\n return base;\n },\n extname: (path) => {\n const base = path.split(\"/\").pop() || \"\";\n const dotIndex = base.lastIndexOf(\".\");\n return dotIndex < 0 ? \"\" : base.slice(dotIndex);\n },\n sep: \"/\",\n};\n\n// Export for module imports\nexport default {\n Buffer,\n process,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// src/utils/offscreen-manager.js\nimport { MESSAGE_ACTIONS, MESSAGE_SOURCES } from \"./constants\";\nimport { createContextLogger } from \"./logger/LoggerService\";\nimport { LOG_LEVEL, LOG_TYPES } from \"./logger/constants\";\n\nconst offscreenLogger = createContextLogger({\n sessionId: \"unknown\",\n providerId: \"unknown\",\n appId: \"unknown\",\n source: \"reclaim-extension-sdk\",\n type: LOG_TYPES.OFFSCREEN,\n});\n\n// Track the offscreen document status\nlet offscreenReady = false;\nlet offscreenDocTimeout = null; // Used by waitForOffscreenReady's timeout\nlet offscreenCreationPromise = null;\n\n// Define the global listener first\nconst offscreenGlobalListener = (message) => {\n if (\n message?.action === MESSAGE_ACTIONS.OFFSCREEN_DOCUMENT_READY &&\n message?.source === MESSAGE_SOURCES.OFFSCREEN &&\n message?.target === MESSAGE_SOURCES.BACKGROUND\n ) {\n offscreenLogger.info({\n message: \"[OFFSCREEN-MANAGER] Received offscreen ready signal (global listener).\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n });\n\n offscreenReady = true;\n if (offscreenDocTimeout) {\n clearTimeout(offscreenDocTimeout);\n offscreenDocTimeout = null;\n }\n }\n};\n\n// Exported installer to attach the listener safely in SW context\nexport const installOffscreenReadyListener = () => {\n if (\n typeof chrome === \"undefined\" ||\n !chrome.runtime ||\n !chrome.runtime.onMessage ||\n !chrome.runtime.onMessage.addListener ||\n !chrome.runtime.onMessage.hasListener\n ) {\n return;\n }\n if (chrome.runtime.onMessage.hasListener(offscreenGlobalListener)) {\n return;\n }\n chrome.runtime.onMessage.addListener(offscreenGlobalListener);\n};\n\n// Global listener for the ready signal from offscreen document.\n// This needs to be set up immediately to catch the ready signal if the offscreen document\n// initializes and sends it before any call to ensureOffscreenDocument.\nconst setupOffscreenReadyListener = () => {\n if (\n typeof chrome === \"undefined\" ||\n !chrome.runtime ||\n !chrome.runtime.onMessage ||\n !chrome.runtime.onMessage.addListener ||\n !chrome.runtime.onMessage.hasListener\n ) {\n return;\n }\n if (chrome.runtime.onMessage.hasListener(offscreenGlobalListener)) {\n return;\n }\n chrome.runtime.onMessage.addListener(offscreenGlobalListener);\n};\n\nif (typeof chrome !== \"undefined\" && chrome.runtime && chrome.runtime.onMessage) {\n setupOffscreenReadyListener();\n}\n\n// Set up listener immediately when the module loads\nsetupOffscreenReadyListener();\n\nasync function createOffscreenDocumentInternal() {\n const offscreenUrl = chrome.runtime.getURL(\n \"reclaim-browser-extension-sdk/offscreen/offscreen.html\",\n );\n offscreenLogger.info({\n message: \"[OFFSCREEN-MANAGER] Attempting to create offscreen document with URL:\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n meta: { offscreenUrl },\n });\n try {\n await chrome.offscreen.createDocument({\n url: offscreenUrl,\n reasons: [\"DOM_PARSER\", \"IFRAME_SCRIPTING\", \"BLOBS\"], // Added BLOBS for crypto if needed\n justification:\n \"Manages DOM-dependent operations like crypto and ZK proof generation for the extension.\",\n });\n } catch (error) {\n if (\n error.message &&\n error.message.includes(\"Only a single offscreen document may be created.\")\n ) {\n offscreenLogger.info({\n message:\n \"[OFFSCREEN-MANAGER] Offscreen document already exists or creation was attempted by another part.\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n });\n // It exists, so we just need to wait for it to be ready if it's not already.\n // The ensureOffscreenDocument logic will handle waiting for readiness.\n } else {\n offscreenLogger.error({\n message: \"[OFFSCREEN-MANAGER] Error creating offscreen document:\",\n logLevel: LOG_LEVEL.ERROR,\n type: LOG_TYPES.OFFSCREEN,\n meta: { error },\n });\n throw error; // Re-throw other errors\n }\n }\n}\n\nasync function waitForOffscreenReadyInternal(timeoutMs = 15000) {\n if (offscreenReady) {\n offscreenLogger.info({\n message: \"[OFFSCREEN-MANAGER] Already ready (waitForOffscreenReadyInternal check)\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n });\n return true;\n }\n\n offscreenLogger.info({\n message:\n \"[OFFSCREEN-MANAGER] Waiting for offscreen document to be ready (timeout:- ${timeoutMs}ms)...\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n meta: { timeoutMs },\n });\n\n // Proactively ping the offscreen document.\n // This can help if the offscreen document is already running but this manager missed the initial ready signal.\n try {\n chrome.runtime.sendMessage({\n action: MESSAGE_ACTIONS.PING_OFFSCREEN,\n source: MESSAGE_SOURCES.BACKGROUND,\n target: MESSAGE_SOURCES.OFFSCREEN,\n });\n } catch (e) {\n offscreenLogger.info({\n message: \"[OFFSCREEN-MANAGER] Synchronous error sending ping:\" + e?.message,\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n meta: { error: e },\n });\n }\n\n return new Promise((resolve) => {\n if (offscreenReady) {\n // Double check after setup\n offscreenLogger.info({\n message: \"[OFFSCREEN-MANAGER] Became ready while setting up promise.\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n });\n resolve(true);\n return;\n }\n\n const listener = (message) => {\n if (\n message.action === MESSAGE_ACTIONS.OFFSCREEN_DOCUMENT_READY &&\n message.source === MESSAGE_SOURCES.OFFSCREEN &&\n message.target === MESSAGE_SOURCES.BACKGROUND\n ) {\n offscreenReady = true;\n clearTimeout(localTimeoutId);\n chrome.runtime.onMessage.removeListener(listener);\n if (offscreenDocTimeout === localTimeoutId) {\n // Clear global timeout if it's this one\n offscreenDocTimeout = null;\n }\n resolve(true);\n }\n };\n\n chrome.runtime.onMessage.addListener(listener);\n\n // Clear any previous timeout and set a new one for this wait\n if (offscreenDocTimeout) {\n clearTimeout(offscreenDocTimeout);\n }\n const localTimeoutId = setTimeout(() => {\n chrome.runtime.onMessage.removeListener(listener);\n offscreenLogger.error({\n message:\n \"[OFFSCREEN-MANAGER] Timed out waiting for offscreen document after \" +\n timeoutMs +\n \" ms.\",\n logLevel: LOG_LEVEL.ERROR,\n type: LOG_TYPES.OFFSCREEN,\n meta: { timeoutMs },\n });\n\n if (offscreenDocTimeout === localTimeoutId) {\n offscreenDocTimeout = null;\n }\n resolve(false);\n }, timeoutMs);\n offscreenDocTimeout = localTimeoutId;\n });\n}\n\nexport async function ensureOffscreenDocument(logger) {\n if (offscreenReady) {\n logger.info({\n message: \"[OFFSCREEN-MANAGER] Document already confirmed ready.\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n });\n return true;\n }\n\n // If a creation process is already underway, await its completion.\n if (offscreenCreationPromise) {\n logger.info({\n message: \"[OFFSCREEN-MANAGER] Creation already in progress, awaiting...\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n });\n await offscreenCreationPromise;\n // After creation promise resolves, it might still not be \"ready\" (message might be pending)\n // Fall through to waitForOffscreenReadyInternal\n }\n\n // Check if an offscreen document context already exists.\n // This is useful if the service worker restarted but the offscreen document persisted.\n if (chrome.runtime.getContexts) {\n const contexts = await chrome.runtime.getContexts({ contextTypes: [\"OFFSCREEN_DOCUMENT\"] });\n if (contexts.length > 0) {\n logger.info({\n message: \"[OFFSCREEN-MANAGER] Offscreen document context found.\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n });\n if (offscreenReady) return true; // Already marked ready by global listener\n // If context exists but not marked ready, wait for the signal\n logger.info({\n message: \"[OFFSCREEN-MANAGER] Context exists, but not marked ready. Waiting for signal...\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n });\n\n return await waitForOffscreenReadyInternal(5000); // Shorter timeout if context found\n }\n }\n\n // If no context found and not ready, and no creation in progress, attempt to create.\n if (!offscreenCreationPromise) {\n logger.info({\n message: \"[OFFSCREEN-MANAGER] No existing context/promise, initiating creation.\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n });\n offscreenCreationPromise = createOffscreenDocumentInternal().finally(() => {\n offscreenCreationPromise = null; // Clear promise once operation (success or fail) is done\n });\n await offscreenCreationPromise;\n }\n\n // After ensuring creation was attempted (or awaited), wait for it to become ready.\n const isReady = await waitForOffscreenReadyInternal(50000);\n if (!isReady) {\n throw new Error(\"Failed to initialize or confirm offscreen document readiness.\");\n }\n logger.info({\n message: \"[OFFSCREEN-MANAGER] Offscreen document ensured to be ready.\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n });\n return true;\n}\n","/**\n * @implements {IHooks}\n */\nclass Hooks {\n /**\n * @callback HookCallback\n * @this {*|Jsep} this\n * @param {Jsep} env\n * @returns: void\n */\n /**\n * Adds the given callback to the list of callbacks for the given hook.\n *\n * The callback will be invoked when the hook it is registered for is run.\n *\n * One callback function can be registered to multiple hooks and the same hook multiple times.\n *\n * @param {string|object} name The name of the hook, or an object of callbacks keyed by name\n * @param {HookCallback|boolean} callback The callback function which is given environment variables.\n * @param {?boolean} [first=false] Will add the hook to the top of the list (defaults to the bottom)\n * @public\n */\n add(name, callback, first) {\n if (typeof arguments[0] != 'string') {\n // Multiple hook callbacks, keyed by name\n for (let name in arguments[0]) {\n this.add(name, arguments[0][name], arguments[1]);\n }\n } else {\n (Array.isArray(name) ? name : [name]).forEach(function (name) {\n this[name] = this[name] || [];\n if (callback) {\n this[name][first ? 'unshift' : 'push'](callback);\n }\n }, this);\n }\n }\n\n /**\n * Runs a hook invoking all registered callbacks with the given environment variables.\n *\n * Callbacks will be invoked synchronously and in the order in which they were registered.\n *\n * @param {string} name The name of the hook.\n * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n * @public\n */\n run(name, env) {\n this[name] = this[name] || [];\n this[name].forEach(function (callback) {\n callback.call(env && env.context ? env.context : env, env);\n });\n }\n}\n\n/**\n * @implements {IPlugins}\n */\nclass Plugins {\n constructor(jsep) {\n this.jsep = jsep;\n this.registered = {};\n }\n\n /**\n * @callback PluginSetup\n * @this {Jsep} jsep\n * @returns: void\n */\n /**\n * Adds the given plugin(s) to the registry\n *\n * @param {object} plugins\n * @param {string} plugins.name The name of the plugin\n * @param {PluginSetup} plugins.init The init function\n * @public\n */\n register() {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n plugins.forEach(plugin => {\n if (typeof plugin !== 'object' || !plugin.name || !plugin.init) {\n throw new Error('Invalid JSEP plugin format');\n }\n if (this.registered[plugin.name]) {\n // already registered. Ignore.\n return;\n }\n plugin.init(this.jsep);\n this.registered[plugin.name] = plugin;\n });\n }\n}\n\n// JavaScript Expression Parser (JSEP) 1.4.0\n\nclass Jsep {\n /**\n * @returns {string}\n */\n static get version() {\n // To be filled in by the template\n return '1.4.0';\n }\n\n /**\n * @returns {string}\n */\n static toString() {\n return 'JavaScript Expression Parser (JSEP) v' + Jsep.version;\n }\n // ==================== CONFIG ================================\n /**\n * @method addUnaryOp\n * @param {string} op_name The name of the unary op to add\n * @returns {Jsep}\n */\n static addUnaryOp(op_name) {\n Jsep.max_unop_len = Math.max(op_name.length, Jsep.max_unop_len);\n Jsep.unary_ops[op_name] = 1;\n return Jsep;\n }\n\n /**\n * @method jsep.addBinaryOp\n * @param {string} op_name The name of the binary op to add\n * @param {number} precedence The precedence of the binary op (can be a float). Higher number = higher precedence\n * @param {boolean} [isRightAssociative=false] whether operator is right-associative\n * @returns {Jsep}\n */\n static addBinaryOp(op_name, precedence, isRightAssociative) {\n Jsep.max_binop_len = Math.max(op_name.length, Jsep.max_binop_len);\n Jsep.binary_ops[op_name] = precedence;\n if (isRightAssociative) {\n Jsep.right_associative.add(op_name);\n } else {\n Jsep.right_associative.delete(op_name);\n }\n return Jsep;\n }\n\n /**\n * @method addIdentifierChar\n * @param {string} char The additional character to treat as a valid part of an identifier\n * @returns {Jsep}\n */\n static addIdentifierChar(char) {\n Jsep.additional_identifier_chars.add(char);\n return Jsep;\n }\n\n /**\n * @method addLiteral\n * @param {string} literal_name The name of the literal to add\n * @param {*} literal_value The value of the literal\n * @returns {Jsep}\n */\n static addLiteral(literal_name, literal_value) {\n Jsep.literals[literal_name] = literal_value;\n return Jsep;\n }\n\n /**\n * @method removeUnaryOp\n * @param {string} op_name The name of the unary op to remove\n * @returns {Jsep}\n */\n static removeUnaryOp(op_name) {\n delete Jsep.unary_ops[op_name];\n if (op_name.length === Jsep.max_unop_len) {\n Jsep.max_unop_len = Jsep.getMaxKeyLen(Jsep.unary_ops);\n }\n return Jsep;\n }\n\n /**\n * @method removeAllUnaryOps\n * @returns {Jsep}\n */\n static removeAllUnaryOps() {\n Jsep.unary_ops = {};\n Jsep.max_unop_len = 0;\n return Jsep;\n }\n\n /**\n * @method removeIdentifierChar\n * @param {string} char The additional character to stop treating as a valid part of an identifier\n * @returns {Jsep}\n */\n static removeIdentifierChar(char) {\n Jsep.additional_identifier_chars.delete(char);\n return Jsep;\n }\n\n /**\n * @method removeBinaryOp\n * @param {string} op_name The name of the binary op to remove\n * @returns {Jsep}\n */\n static removeBinaryOp(op_name) {\n delete Jsep.binary_ops[op_name];\n if (op_name.length === Jsep.max_binop_len) {\n Jsep.max_binop_len = Jsep.getMaxKeyLen(Jsep.binary_ops);\n }\n Jsep.right_associative.delete(op_name);\n return Jsep;\n }\n\n /**\n * @method removeAllBinaryOps\n * @returns {Jsep}\n */\n static removeAllBinaryOps() {\n Jsep.binary_ops = {};\n Jsep.max_binop_len = 0;\n return Jsep;\n }\n\n /**\n * @method removeLiteral\n * @param {string} literal_name The name of the literal to remove\n * @returns {Jsep}\n */\n static removeLiteral(literal_name) {\n delete Jsep.literals[literal_name];\n return Jsep;\n }\n\n /**\n * @method removeAllLiterals\n * @returns {Jsep}\n */\n static removeAllLiterals() {\n Jsep.literals = {};\n return Jsep;\n }\n // ==================== END CONFIG ============================\n\n /**\n * @returns {string}\n */\n get char() {\n return this.expr.charAt(this.index);\n }\n\n /**\n * @returns {number}\n */\n get code() {\n return this.expr.charCodeAt(this.index);\n }\n /**\n * @param {string} expr a string with the passed in express\n * @returns Jsep\n */\n constructor(expr) {\n // `index` stores the character number we are currently at\n // All of the gobbles below will modify `index` as we move along\n this.expr = expr;\n this.index = 0;\n }\n\n /**\n * static top-level parser\n * @returns {jsep.Expression}\n */\n static parse(expr) {\n return new Jsep(expr).parse();\n }\n\n /**\n * Get the longest key length of any object\n * @param {object} obj\n * @returns {number}\n */\n static getMaxKeyLen(obj) {\n return Math.max(0, ...Object.keys(obj).map(k => k.length));\n }\n\n /**\n * `ch` is a character code in the next three functions\n * @param {number} ch\n * @returns {boolean}\n */\n static isDecimalDigit(ch) {\n return ch >= 48 && ch <= 57; // 0...9\n }\n\n /**\n * Returns the precedence of a binary operator or `0` if it isn't a binary operator. Can be float.\n * @param {string} op_val\n * @returns {number}\n */\n static binaryPrecedence(op_val) {\n return Jsep.binary_ops[op_val] || 0;\n }\n\n /**\n * Looks for start of identifier\n * @param {number} ch\n * @returns {boolean}\n */\n static isIdentifierStart(ch) {\n return ch >= 65 && ch <= 90 ||\n // A...Z\n ch >= 97 && ch <= 122 ||\n // a...z\n ch >= 128 && !Jsep.binary_ops[String.fromCharCode(ch)] ||\n // any non-ASCII that is not an operator\n Jsep.additional_identifier_chars.has(String.fromCharCode(ch)); // additional characters\n }\n\n /**\n * @param {number} ch\n * @returns {boolean}\n */\n static isIdentifierPart(ch) {\n return Jsep.isIdentifierStart(ch) || Jsep.isDecimalDigit(ch);\n }\n\n /**\n * throw error at index of the expression\n * @param {string} message\n * @throws\n */\n throwError(message) {\n const error = new Error(message + ' at character ' + this.index);\n error.index = this.index;\n error.description = message;\n throw error;\n }\n\n /**\n * Run a given hook\n * @param {string} name\n * @param {jsep.Expression|false} [node]\n * @returns {?jsep.Expression}\n */\n runHook(name, node) {\n if (Jsep.hooks[name]) {\n const env = {\n context: this,\n node\n };\n Jsep.hooks.run(name, env);\n return env.node;\n }\n return node;\n }\n\n /**\n * Runs a given hook until one returns a node\n * @param {string} name\n * @returns {?jsep.Expression}\n */\n searchHook(name) {\n if (Jsep.hooks[name]) {\n const env = {\n context: this\n };\n Jsep.hooks[name].find(function (callback) {\n callback.call(env.context, env);\n return env.node;\n });\n return env.node;\n }\n }\n\n /**\n * Push `index` up to the next non-space character\n */\n gobbleSpaces() {\n let ch = this.code;\n // Whitespace\n while (ch === Jsep.SPACE_CODE || ch === Jsep.TAB_CODE || ch === Jsep.LF_CODE || ch === Jsep.CR_CODE) {\n ch = this.expr.charCodeAt(++this.index);\n }\n this.runHook('gobble-spaces');\n }\n\n /**\n * Top-level method to parse all expressions and returns compound or single node\n * @returns {jsep.Expression}\n */\n parse() {\n this.runHook('before-all');\n const nodes = this.gobbleExpressions();\n\n // If there's only one expression just try returning the expression\n const node = nodes.length === 1 ? nodes[0] : {\n type: Jsep.COMPOUND,\n body: nodes\n };\n return this.runHook('after-all', node);\n }\n\n /**\n * top-level parser (but can be reused within as well)\n * @param {number} [untilICode]\n * @returns {jsep.Expression[]}\n */\n gobbleExpressions(untilICode) {\n let nodes = [],\n ch_i,\n node;\n while (this.index < this.expr.length) {\n ch_i = this.code;\n\n // Expressions can be separated by semicolons, commas, or just inferred without any\n // separators\n if (ch_i === Jsep.SEMCOL_CODE || ch_i === Jsep.COMMA_CODE) {\n this.index++; // ignore separators\n } else {\n // Try to gobble each expression individually\n if (node = this.gobbleExpression()) {\n nodes.push(node);\n // If we weren't able to find a binary expression and are out of room, then\n // the expression passed in probably has too much\n } else if (this.index < this.expr.length) {\n if (ch_i === untilICode) {\n break;\n }\n this.throwError('Unexpected \"' + this.char + '\"');\n }\n }\n }\n return nodes;\n }\n\n /**\n * The main parsing function.\n * @returns {?jsep.Expression}\n */\n gobbleExpression() {\n const node = this.searchHook('gobble-expression') || this.gobbleBinaryExpression();\n this.gobbleSpaces();\n return this.runHook('after-expression', node);\n }\n\n /**\n * Search for the operation portion of the string (e.g. `+`, `===`)\n * Start by taking the longest possible binary operations (3 characters: `===`, `!==`, `>>>`)\n * and move down from 3 to 2 to 1 character until a matching binary operation is found\n * then, return that binary operation\n * @returns {string|boolean}\n */\n gobbleBinaryOp() {\n this.gobbleSpaces();\n let to_check = this.expr.substr(this.index, Jsep.max_binop_len);\n let tc_len = to_check.length;\n while (tc_len > 0) {\n // Don't accept a binary op when it is an identifier.\n // Binary ops that start with a identifier-valid character must be followed\n // by a non identifier-part valid character\n if (Jsep.binary_ops.hasOwnProperty(to_check) && (!Jsep.isIdentifierStart(this.code) || this.index + to_check.length < this.expr.length && !Jsep.isIdentifierPart(this.expr.charCodeAt(this.index + to_check.length)))) {\n this.index += tc_len;\n return to_check;\n }\n to_check = to_check.substr(0, --tc_len);\n }\n return false;\n }\n\n /**\n * This function is responsible for gobbling an individual expression,\n * e.g. `1`, `1+2`, `a+(b*2)-Math.sqrt(2)`\n * @returns {?jsep.BinaryExpression}\n */\n gobbleBinaryExpression() {\n let node, biop, prec, stack, biop_info, left, right, i, cur_biop;\n\n // First, try to get the leftmost thing\n // Then, check to see if there's a binary operator operating on that leftmost thing\n // Don't gobbleBinaryOp without a left-hand-side\n left = this.gobbleToken();\n if (!left) {\n return left;\n }\n biop = this.gobbleBinaryOp();\n\n // If there wasn't a binary operator, just return the leftmost node\n if (!biop) {\n return left;\n }\n\n // Otherwise, we need to start a stack to properly place the binary operations in their\n // precedence structure\n biop_info = {\n value: biop,\n prec: Jsep.binaryPrecedence(biop),\n right_a: Jsep.right_associative.has(biop)\n };\n right = this.gobbleToken();\n if (!right) {\n this.throwError(\"Expected expression after \" + biop);\n }\n stack = [left, biop_info, right];\n\n // Properly deal with precedence using [recursive descent](http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm)\n while (biop = this.gobbleBinaryOp()) {\n prec = Jsep.binaryPrecedence(biop);\n if (prec === 0) {\n this.index -= biop.length;\n break;\n }\n biop_info = {\n value: biop,\n prec,\n right_a: Jsep.right_associative.has(biop)\n };\n cur_biop = biop;\n\n // Reduce: make a binary expression from the three topmost entries.\n const comparePrev = prev => biop_info.right_a && prev.right_a ? prec > prev.prec : prec <= prev.prec;\n while (stack.length > 2 && comparePrev(stack[stack.length - 2])) {\n right = stack.pop();\n biop = stack.pop().value;\n left = stack.pop();\n node = {\n type: Jsep.BINARY_EXP,\n operator: biop,\n left,\n right\n };\n stack.push(node);\n }\n node = this.gobbleToken();\n if (!node) {\n this.throwError(\"Expected expression after \" + cur_biop);\n }\n stack.push(biop_info, node);\n }\n i = stack.length - 1;\n node = stack[i];\n while (i > 1) {\n node = {\n type: Jsep.BINARY_EXP,\n operator: stack[i - 1].value,\n left: stack[i - 2],\n right: node\n };\n i -= 2;\n }\n return node;\n }\n\n /**\n * An individual part of a binary expression:\n * e.g. `foo.bar(baz)`, `1`, `\"abc\"`, `(a % 2)` (because it's in parenthesis)\n * @returns {boolean|jsep.Expression}\n */\n gobbleToken() {\n let ch, to_check, tc_len, node;\n this.gobbleSpaces();\n node = this.searchHook('gobble-token');\n if (node) {\n return this.runHook('after-token', node);\n }\n ch = this.code;\n if (Jsep.isDecimalDigit(ch) || ch === Jsep.PERIOD_CODE) {\n // Char code 46 is a dot `.` which can start off a numeric literal\n return this.gobbleNumericLiteral();\n }\n if (ch === Jsep.SQUOTE_CODE || ch === Jsep.DQUOTE_CODE) {\n // Single or double quotes\n node = this.gobbleStringLiteral();\n } else if (ch === Jsep.OBRACK_CODE) {\n node = this.gobbleArray();\n } else {\n to_check = this.expr.substr(this.index, Jsep.max_unop_len);\n tc_len = to_check.length;\n while (tc_len > 0) {\n // Don't accept an unary op when it is an identifier.\n // Unary ops that start with a identifier-valid character must be followed\n // by a non identifier-part valid character\n if (Jsep.unary_ops.hasOwnProperty(to_check) && (!Jsep.isIdentifierStart(this.code) || this.index + to_check.length < this.expr.length && !Jsep.isIdentifierPart(this.expr.charCodeAt(this.index + to_check.length)))) {\n this.index += tc_len;\n const argument = this.gobbleToken();\n if (!argument) {\n this.throwError('missing unaryOp argument');\n }\n return this.runHook('after-token', {\n type: Jsep.UNARY_EXP,\n operator: to_check,\n argument,\n prefix: true\n });\n }\n to_check = to_check.substr(0, --tc_len);\n }\n if (Jsep.isIdentifierStart(ch)) {\n node = this.gobbleIdentifier();\n if (Jsep.literals.hasOwnProperty(node.name)) {\n node = {\n type: Jsep.LITERAL,\n value: Jsep.literals[node.name],\n raw: node.name\n };\n } else if (node.name === Jsep.this_str) {\n node = {\n type: Jsep.THIS_EXP\n };\n }\n } else if (ch === Jsep.OPAREN_CODE) {\n // open parenthesis\n node = this.gobbleGroup();\n }\n }\n if (!node) {\n return this.runHook('after-token', false);\n }\n node = this.gobbleTokenProperty(node);\n return this.runHook('after-token', node);\n }\n\n /**\n * Gobble properties of of identifiers/strings/arrays/groups.\n * e.g. `foo`, `bar.baz`, `foo['bar'].baz`\n * It also gobbles function calls:\n * e.g. `Math.acos(obj.angle)`\n * @param {jsep.Expression} node\n * @returns {jsep.Expression}\n */\n gobbleTokenProperty(node) {\n this.gobbleSpaces();\n let ch = this.code;\n while (ch === Jsep.PERIOD_CODE || ch === Jsep.OBRACK_CODE || ch === Jsep.OPAREN_CODE || ch === Jsep.QUMARK_CODE) {\n let optional;\n if (ch === Jsep.QUMARK_CODE) {\n if (this.expr.charCodeAt(this.index + 1) !== Jsep.PERIOD_CODE) {\n break;\n }\n optional = true;\n this.index += 2;\n this.gobbleSpaces();\n ch = this.code;\n }\n this.index++;\n if (ch === Jsep.OBRACK_CODE) {\n node = {\n type: Jsep.MEMBER_EXP,\n computed: true,\n object: node,\n property: this.gobbleExpression()\n };\n if (!node.property) {\n this.throwError('Unexpected \"' + this.char + '\"');\n }\n this.gobbleSpaces();\n ch = this.code;\n if (ch !== Jsep.CBRACK_CODE) {\n this.throwError('Unclosed [');\n }\n this.index++;\n } else if (ch === Jsep.OPAREN_CODE) {\n // A function call is being made; gobble all the arguments\n node = {\n type: Jsep.CALL_EXP,\n 'arguments': this.gobbleArguments(Jsep.CPAREN_CODE),\n callee: node\n };\n } else if (ch === Jsep.PERIOD_CODE || optional) {\n if (optional) {\n this.index--;\n }\n this.gobbleSpaces();\n node = {\n type: Jsep.MEMBER_EXP,\n computed: false,\n object: node,\n property: this.gobbleIdentifier()\n };\n }\n if (optional) {\n node.optional = true;\n } // else leave undefined for compatibility with esprima\n\n this.gobbleSpaces();\n ch = this.code;\n }\n return node;\n }\n\n /**\n * Parse simple numeric literals: `12`, `3.4`, `.5`. Do this by using a string to\n * keep track of everything in the numeric literal and then calling `parseFloat` on that string\n * @returns {jsep.Literal}\n */\n gobbleNumericLiteral() {\n let number = '',\n ch,\n chCode;\n while (Jsep.isDecimalDigit(this.code)) {\n number += this.expr.charAt(this.index++);\n }\n if (this.code === Jsep.PERIOD_CODE) {\n // can start with a decimal marker\n number += this.expr.charAt(this.index++);\n while (Jsep.isDecimalDigit(this.code)) {\n number += this.expr.charAt(this.index++);\n }\n }\n ch = this.char;\n if (ch === 'e' || ch === 'E') {\n // exponent marker\n number += this.expr.charAt(this.index++);\n ch = this.char;\n if (ch === '+' || ch === '-') {\n // exponent sign\n number += this.expr.charAt(this.index++);\n }\n while (Jsep.isDecimalDigit(this.code)) {\n // exponent itself\n number += this.expr.charAt(this.index++);\n }\n if (!Jsep.isDecimalDigit(this.expr.charCodeAt(this.index - 1))) {\n this.throwError('Expected exponent (' + number + this.char + ')');\n }\n }\n chCode = this.code;\n\n // Check to make sure this isn't a variable name that start with a number (123abc)\n if (Jsep.isIdentifierStart(chCode)) {\n this.throwError('Variable names cannot start with a number (' + number + this.char + ')');\n } else if (chCode === Jsep.PERIOD_CODE || number.length === 1 && number.charCodeAt(0) === Jsep.PERIOD_CODE) {\n this.throwError('Unexpected period');\n }\n return {\n type: Jsep.LITERAL,\n value: parseFloat(number),\n raw: number\n };\n }\n\n /**\n * Parses a string literal, staring with single or double quotes with basic support for escape codes\n * e.g. `\"hello world\"`, `'this is\\nJSEP'`\n * @returns {jsep.Literal}\n */\n gobbleStringLiteral() {\n let str = '';\n const startIndex = this.index;\n const quote = this.expr.charAt(this.index++);\n let closed = false;\n while (this.index < this.expr.length) {\n let ch = this.expr.charAt(this.index++);\n if (ch === quote) {\n closed = true;\n break;\n } else if (ch === '\\\\') {\n // Check for all of the common escape codes\n ch = this.expr.charAt(this.index++);\n switch (ch) {\n case 'n':\n str += '\\n';\n break;\n case 'r':\n str += '\\r';\n break;\n case 't':\n str += '\\t';\n break;\n case 'b':\n str += '\\b';\n break;\n case 'f':\n str += '\\f';\n break;\n case 'v':\n str += '\\x0B';\n break;\n default:\n str += ch;\n }\n } else {\n str += ch;\n }\n }\n if (!closed) {\n this.throwError('Unclosed quote after \"' + str + '\"');\n }\n return {\n type: Jsep.LITERAL,\n value: str,\n raw: this.expr.substring(startIndex, this.index)\n };\n }\n\n /**\n * Gobbles only identifiers\n * e.g.: `foo`, `_value`, `$x1`\n * Also, this function checks if that identifier is a literal:\n * (e.g. `true`, `false`, `null`) or `this`\n * @returns {jsep.Identifier}\n */\n gobbleIdentifier() {\n let ch = this.code,\n start = this.index;\n if (Jsep.isIdentifierStart(ch)) {\n this.index++;\n } else {\n this.throwError('Unexpected ' + this.char);\n }\n while (this.index < this.expr.length) {\n ch = this.code;\n if (Jsep.isIdentifierPart(ch)) {\n this.index++;\n } else {\n break;\n }\n }\n return {\n type: Jsep.IDENTIFIER,\n name: this.expr.slice(start, this.index)\n };\n }\n\n /**\n * Gobbles a list of arguments within the context of a function call\n * or array literal. This function also assumes that the opening character\n * `(` or `[` has already been gobbled, and gobbles expressions and commas\n * until the terminator character `)` or `]` is encountered.\n * e.g. `foo(bar, baz)`, `my_func()`, or `[bar, baz]`\n * @param {number} termination\n * @returns {jsep.Expression[]}\n */\n gobbleArguments(termination) {\n const args = [];\n let closed = false;\n let separator_count = 0;\n while (this.index < this.expr.length) {\n this.gobbleSpaces();\n let ch_i = this.code;\n if (ch_i === termination) {\n // done parsing\n closed = true;\n this.index++;\n if (termination === Jsep.CPAREN_CODE && separator_count && separator_count >= args.length) {\n this.throwError('Unexpected token ' + String.fromCharCode(termination));\n }\n break;\n } else if (ch_i === Jsep.COMMA_CODE) {\n // between expressions\n this.index++;\n separator_count++;\n if (separator_count !== args.length) {\n // missing argument\n if (termination === Jsep.CPAREN_CODE) {\n this.throwError('Unexpected token ,');\n } else if (termination === Jsep.CBRACK_CODE) {\n for (let arg = args.length; arg < separator_count; arg++) {\n args.push(null);\n }\n }\n }\n } else if (args.length !== separator_count && separator_count !== 0) {\n // NOTE: `&& separator_count !== 0` allows for either all commas, or all spaces as arguments\n this.throwError('Expected comma');\n } else {\n const node = this.gobbleExpression();\n if (!node || node.type === Jsep.COMPOUND) {\n this.throwError('Expected comma');\n }\n args.push(node);\n }\n }\n if (!closed) {\n this.throwError('Expected ' + String.fromCharCode(termination));\n }\n return args;\n }\n\n /**\n * Responsible for parsing a group of things within parentheses `()`\n * that have no identifier in front (so not a function call)\n * This function assumes that it needs to gobble the opening parenthesis\n * and then tries to gobble everything within that parenthesis, assuming\n * that the next thing it should see is the close parenthesis. If not,\n * then the expression probably doesn't have a `)`\n * @returns {boolean|jsep.Expression}\n */\n gobbleGroup() {\n this.index++;\n let nodes = this.gobbleExpressions(Jsep.CPAREN_CODE);\n if (this.code === Jsep.CPAREN_CODE) {\n this.index++;\n if (nodes.length === 1) {\n return nodes[0];\n } else if (!nodes.length) {\n return false;\n } else {\n return {\n type: Jsep.SEQUENCE_EXP,\n expressions: nodes\n };\n }\n } else {\n this.throwError('Unclosed (');\n }\n }\n\n /**\n * Responsible for parsing Array literals `[1, 2, 3]`\n * This function assumes that it needs to gobble the opening bracket\n * and then tries to gobble the expressions as arguments.\n * @returns {jsep.ArrayExpression}\n */\n gobbleArray() {\n this.index++;\n return {\n type: Jsep.ARRAY_EXP,\n elements: this.gobbleArguments(Jsep.CBRACK_CODE)\n };\n }\n}\n\n// Static fields:\nconst hooks = new Hooks();\nObject.assign(Jsep, {\n hooks,\n plugins: new Plugins(Jsep),\n // Node Types\n // ----------\n // This is the full set of types that any JSEP node can be.\n // Store them here to save space when minified\n COMPOUND: 'Compound',\n SEQUENCE_EXP: 'SequenceExpression',\n IDENTIFIER: 'Identifier',\n MEMBER_EXP: 'MemberExpression',\n LITERAL: 'Literal',\n THIS_EXP: 'ThisExpression',\n CALL_EXP: 'CallExpression',\n UNARY_EXP: 'UnaryExpression',\n BINARY_EXP: 'BinaryExpression',\n ARRAY_EXP: 'ArrayExpression',\n TAB_CODE: 9,\n LF_CODE: 10,\n CR_CODE: 13,\n SPACE_CODE: 32,\n PERIOD_CODE: 46,\n // '.'\n COMMA_CODE: 44,\n // ','\n SQUOTE_CODE: 39,\n // single quote\n DQUOTE_CODE: 34,\n // double quotes\n OPAREN_CODE: 40,\n // (\n CPAREN_CODE: 41,\n // )\n OBRACK_CODE: 91,\n // [\n CBRACK_CODE: 93,\n // ]\n QUMARK_CODE: 63,\n // ?\n SEMCOL_CODE: 59,\n // ;\n COLON_CODE: 58,\n // :\n\n // Operations\n // ----------\n // Use a quickly-accessible map to store all of the unary operators\n // Values are set to `1` (it really doesn't matter)\n unary_ops: {\n '-': 1,\n '!': 1,\n '~': 1,\n '+': 1\n },\n // Also use a map for the binary operations but set their values to their\n // binary precedence for quick reference (higher number = higher precedence)\n // see [Order of operations](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence)\n binary_ops: {\n '||': 1,\n '??': 1,\n '&&': 2,\n '|': 3,\n '^': 4,\n '&': 5,\n '==': 6,\n '!=': 6,\n '===': 6,\n '!==': 6,\n '<': 7,\n '>': 7,\n '<=': 7,\n '>=': 7,\n '<<': 8,\n '>>': 8,\n '>>>': 8,\n '+': 9,\n '-': 9,\n '*': 10,\n '/': 10,\n '%': 10,\n '**': 11\n },\n // sets specific binary_ops as right-associative\n right_associative: new Set(['**']),\n // Additional valid identifier chars, apart from a-z, A-Z and 0-9 (except on the starting char)\n additional_identifier_chars: new Set(['$', '_']),\n // Literals\n // ----------\n // Store the values to return for the various literals we may encounter\n literals: {\n 'true': true,\n 'false': false,\n 'null': null\n },\n // Except for `this`, which is special. This could be changed to something like `'self'` as well\n this_str: 'this'\n});\nJsep.max_unop_len = Jsep.getMaxKeyLen(Jsep.unary_ops);\nJsep.max_binop_len = Jsep.getMaxKeyLen(Jsep.binary_ops);\n\n// Backward Compatibility:\nconst jsep = expr => new Jsep(expr).parse();\nconst stdClassProps = Object.getOwnPropertyNames(class Test {});\nObject.getOwnPropertyNames(Jsep).filter(prop => !stdClassProps.includes(prop) && jsep[prop] === undefined).forEach(m => {\n jsep[m] = Jsep[m];\n});\njsep.Jsep = Jsep; // allows for const { Jsep } = require('jsep');\n\nconst CONDITIONAL_EXP = 'ConditionalExpression';\nvar ternary = {\n name: 'ternary',\n init(jsep) {\n // Ternary expression: test ? consequent : alternate\n jsep.hooks.add('after-expression', function gobbleTernary(env) {\n if (env.node && this.code === jsep.QUMARK_CODE) {\n this.index++;\n const test = env.node;\n const consequent = this.gobbleExpression();\n if (!consequent) {\n this.throwError('Expected expression');\n }\n this.gobbleSpaces();\n if (this.code === jsep.COLON_CODE) {\n this.index++;\n const alternate = this.gobbleExpression();\n if (!alternate) {\n this.throwError('Expected expression');\n }\n env.node = {\n type: CONDITIONAL_EXP,\n test,\n consequent,\n alternate\n };\n\n // check for operators of higher priority than ternary (i.e. assignment)\n // jsep sets || at 1, and assignment at 0.9, and conditional should be between them\n if (test.operator && jsep.binary_ops[test.operator] <= 0.9) {\n let newTest = test;\n while (newTest.right.operator && jsep.binary_ops[newTest.right.operator] <= 0.9) {\n newTest = newTest.right;\n }\n env.node.test = newTest.right;\n newTest.right = env.node;\n env.node = test;\n }\n } else {\n this.throwError('Expected :');\n }\n }\n });\n }\n};\n\n// Add default plugins:\n\njsep.plugins.register(ternary);\n\nconst FSLASH_CODE = 47; // '/'\nconst BSLASH_CODE = 92; // '\\\\'\n\nvar index = {\n name: 'regex',\n init(jsep) {\n // Regex literal: /abc123/ig\n jsep.hooks.add('gobble-token', function gobbleRegexLiteral(env) {\n if (this.code === FSLASH_CODE) {\n const patternIndex = ++this.index;\n let inCharSet = false;\n while (this.index < this.expr.length) {\n if (this.code === FSLASH_CODE && !inCharSet) {\n const pattern = this.expr.slice(patternIndex, this.index);\n let flags = '';\n while (++this.index < this.expr.length) {\n const code = this.code;\n if (code >= 97 && code <= 122 // a...z\n || code >= 65 && code <= 90 // A...Z\n || code >= 48 && code <= 57) {\n // 0-9\n flags += this.char;\n } else {\n break;\n }\n }\n let value;\n try {\n value = new RegExp(pattern, flags);\n } catch (e) {\n this.throwError(e.message);\n }\n env.node = {\n type: jsep.LITERAL,\n value,\n raw: this.expr.slice(patternIndex - 1, this.index)\n };\n\n // allow . [] and () after regex: /regex/.test(a)\n env.node = this.gobbleTokenProperty(env.node);\n return env.node;\n }\n if (this.code === jsep.OBRACK_CODE) {\n inCharSet = true;\n } else if (inCharSet && this.code === jsep.CBRACK_CODE) {\n inCharSet = false;\n }\n this.index += this.code === BSLASH_CODE ? 2 : 1;\n }\n this.throwError('Unclosed Regex');\n }\n });\n }\n};\n\nconst PLUS_CODE = 43; // +\nconst MINUS_CODE = 45; // -\n\nconst plugin = {\n name: 'assignment',\n assignmentOperators: new Set(['=', '*=', '**=', '/=', '%=', '+=', '-=', '<<=', '>>=', '>>>=', '&=', '^=', '|=', '||=', '&&=', '??=']),\n updateOperators: [PLUS_CODE, MINUS_CODE],\n assignmentPrecedence: 0.9,\n init(jsep) {\n const updateNodeTypes = [jsep.IDENTIFIER, jsep.MEMBER_EXP];\n plugin.assignmentOperators.forEach(op => jsep.addBinaryOp(op, plugin.assignmentPrecedence, true));\n jsep.hooks.add('gobble-token', function gobbleUpdatePrefix(env) {\n const code = this.code;\n if (plugin.updateOperators.some(c => c === code && c === this.expr.charCodeAt(this.index + 1))) {\n this.index += 2;\n env.node = {\n type: 'UpdateExpression',\n operator: code === PLUS_CODE ? '++' : '--',\n argument: this.gobbleTokenProperty(this.gobbleIdentifier()),\n prefix: true\n };\n if (!env.node.argument || !updateNodeTypes.includes(env.node.argument.type)) {\n this.throwError(`Unexpected ${env.node.operator}`);\n }\n }\n });\n jsep.hooks.add('after-token', function gobbleUpdatePostfix(env) {\n if (env.node) {\n const code = this.code;\n if (plugin.updateOperators.some(c => c === code && c === this.expr.charCodeAt(this.index + 1))) {\n if (!updateNodeTypes.includes(env.node.type)) {\n this.throwError(`Unexpected ${env.node.operator}`);\n }\n this.index += 2;\n env.node = {\n type: 'UpdateExpression',\n operator: code === PLUS_CODE ? '++' : '--',\n argument: env.node,\n prefix: false\n };\n }\n }\n });\n jsep.hooks.add('after-expression', function gobbleAssignment(env) {\n if (env.node) {\n // Note: Binaries can be chained in a single expression to respect\n // operator precedence (i.e. a = b = 1 + 2 + 3)\n // Update all binary assignment nodes in the tree\n updateBinariesToAssignments(env.node);\n }\n });\n function updateBinariesToAssignments(node) {\n if (plugin.assignmentOperators.has(node.operator)) {\n node.type = 'AssignmentExpression';\n updateBinariesToAssignments(node.left);\n updateBinariesToAssignments(node.right);\n } else if (!node.operator) {\n Object.values(node).forEach(val => {\n if (val && typeof val === 'object') {\n updateBinariesToAssignments(val);\n }\n });\n }\n }\n }\n};\n\n/* eslint-disable no-bitwise -- Convenient */\n\n// register plugins\njsep.plugins.register(index, plugin);\njsep.addUnaryOp('typeof');\njsep.addLiteral('null', null);\njsep.addLiteral('undefined', undefined);\nconst BLOCKED_PROTO_PROPERTIES = new Set(['constructor', '__proto__', '__defineGetter__', '__defineSetter__']);\nconst SafeEval = {\n /**\n * @param {jsep.Expression} ast\n * @param {Record<string, any>} subs\n */\n evalAst(ast, subs) {\n switch (ast.type) {\n case 'BinaryExpression':\n case 'LogicalExpression':\n return SafeEval.evalBinaryExpression(ast, subs);\n case 'Compound':\n return SafeEval.evalCompound(ast, subs);\n case 'ConditionalExpression':\n return SafeEval.evalConditionalExpression(ast, subs);\n case 'Identifier':\n return SafeEval.evalIdentifier(ast, subs);\n case 'Literal':\n return SafeEval.evalLiteral(ast, subs);\n case 'MemberExpression':\n return SafeEval.evalMemberExpression(ast, subs);\n case 'UnaryExpression':\n return SafeEval.evalUnaryExpression(ast, subs);\n case 'ArrayExpression':\n return SafeEval.evalArrayExpression(ast, subs);\n case 'CallExpression':\n return SafeEval.evalCallExpression(ast, subs);\n case 'AssignmentExpression':\n return SafeEval.evalAssignmentExpression(ast, subs);\n default:\n throw SyntaxError('Unexpected expression', ast);\n }\n },\n evalBinaryExpression(ast, subs) {\n const result = {\n '||': (a, b) => a || b(),\n '&&': (a, b) => a && b(),\n '|': (a, b) => a | b(),\n '^': (a, b) => a ^ b(),\n '&': (a, b) => a & b(),\n // eslint-disable-next-line eqeqeq -- API\n '==': (a, b) => a == b(),\n // eslint-disable-next-line eqeqeq -- API\n '!=': (a, b) => a != b(),\n '===': (a, b) => a === b(),\n '!==': (a, b) => a !== b(),\n '<': (a, b) => a < b(),\n '>': (a, b) => a > b(),\n '<=': (a, b) => a <= b(),\n '>=': (a, b) => a >= b(),\n '<<': (a, b) => a << b(),\n '>>': (a, b) => a >> b(),\n '>>>': (a, b) => a >>> b(),\n '+': (a, b) => a + b(),\n '-': (a, b) => a - b(),\n '*': (a, b) => a * b(),\n '/': (a, b) => a / b(),\n '%': (a, b) => a % b()\n }[ast.operator](SafeEval.evalAst(ast.left, subs), () => SafeEval.evalAst(ast.right, subs));\n return result;\n },\n evalCompound(ast, subs) {\n let last;\n for (let i = 0; i < ast.body.length; i++) {\n if (ast.body[i].type === 'Identifier' && ['var', 'let', 'const'].includes(ast.body[i].name) && ast.body[i + 1] && ast.body[i + 1].type === 'AssignmentExpression') {\n // var x=2; is detected as\n // [{Identifier var}, {AssignmentExpression x=2}]\n // eslint-disable-next-line @stylistic/max-len -- Long\n // eslint-disable-next-line sonarjs/updated-loop-counter -- Convenient\n i += 1;\n }\n const expr = ast.body[i];\n last = SafeEval.evalAst(expr, subs);\n }\n return last;\n },\n evalConditionalExpression(ast, subs) {\n if (SafeEval.evalAst(ast.test, subs)) {\n return SafeEval.evalAst(ast.consequent, subs);\n }\n return SafeEval.evalAst(ast.alternate, subs);\n },\n evalIdentifier(ast, subs) {\n if (Object.hasOwn(subs, ast.name)) {\n return subs[ast.name];\n }\n throw ReferenceError(`${ast.name} is not defined`);\n },\n evalLiteral(ast) {\n return ast.value;\n },\n evalMemberExpression(ast, subs) {\n const prop = String(\n // NOTE: `String(value)` throws error when\n // value has overwritten the toString method to return non-string\n // i.e. `value = {toString: () => []}`\n ast.computed ? SafeEval.evalAst(ast.property) // `object[property]`\n : ast.property.name // `object.property` property is Identifier\n );\n const obj = SafeEval.evalAst(ast.object, subs);\n if (obj === undefined || obj === null) {\n throw TypeError(`Cannot read properties of ${obj} (reading '${prop}')`);\n }\n if (!Object.hasOwn(obj, prop) && BLOCKED_PROTO_PROPERTIES.has(prop)) {\n throw TypeError(`Cannot read properties of ${obj} (reading '${prop}')`);\n }\n const result = obj[prop];\n if (typeof result === 'function') {\n return result.bind(obj); // arrow functions aren't affected by bind.\n }\n return result;\n },\n evalUnaryExpression(ast, subs) {\n const result = {\n '-': a => -SafeEval.evalAst(a, subs),\n '!': a => !SafeEval.evalAst(a, subs),\n '~': a => ~SafeEval.evalAst(a, subs),\n // eslint-disable-next-line no-implicit-coercion -- API\n '+': a => +SafeEval.evalAst(a, subs),\n typeof: a => typeof SafeEval.evalAst(a, subs)\n }[ast.operator](ast.argument);\n return result;\n },\n evalArrayExpression(ast, subs) {\n return ast.elements.map(el => SafeEval.evalAst(el, subs));\n },\n evalCallExpression(ast, subs) {\n const args = ast.arguments.map(arg => SafeEval.evalAst(arg, subs));\n const func = SafeEval.evalAst(ast.callee, subs);\n // if (func === Function) {\n // throw new Error('Function constructor is disabled');\n // }\n return func(...args);\n },\n evalAssignmentExpression(ast, subs) {\n if (ast.left.type !== 'Identifier') {\n throw SyntaxError('Invalid left-hand side in assignment');\n }\n const id = ast.left.name;\n const value = SafeEval.evalAst(ast.right, subs);\n subs[id] = value;\n return subs[id];\n }\n};\n\n/**\n * A replacement for NodeJS' VM.Script which is also {@link https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP | Content Security Policy} friendly.\n */\nclass SafeScript {\n /**\n * @param {string} expr Expression to evaluate\n */\n constructor(expr) {\n this.code = expr;\n this.ast = jsep(this.code);\n }\n\n /**\n * @param {object} context Object whose items will be added\n * to evaluation\n * @returns {EvaluatedResult} Result of evaluated code\n */\n runInNewContext(context) {\n // `Object.create(null)` creates a prototypeless object\n const keyMap = Object.assign(Object.create(null), context);\n return SafeEval.evalAst(this.ast, keyMap);\n }\n}\n\n/* eslint-disable camelcase -- Convenient for escaping */\n\n\n/**\n * @typedef {null|boolean|number|string|object|GenericArray} JSONObject\n */\n\n/**\n * @typedef {any} AnyItem\n */\n\n/**\n * @typedef {any} AnyResult\n */\n\n/**\n * Copies array and then pushes item into it.\n * @param {GenericArray} arr Array to copy and into which to push\n * @param {AnyItem} item Array item to add (to end)\n * @returns {GenericArray} Copy of the original array\n */\nfunction push(arr, item) {\n arr = arr.slice();\n arr.push(item);\n return arr;\n}\n/**\n * Copies array and then unshifts item into it.\n * @param {AnyItem} item Array item to add (to beginning)\n * @param {GenericArray} arr Array to copy and into which to unshift\n * @returns {GenericArray} Copy of the original array\n */\nfunction unshift(item, arr) {\n arr = arr.slice();\n arr.unshift(item);\n return arr;\n}\n\n/**\n * Caught when JSONPath is used without `new` but rethrown if with `new`\n * @extends Error\n */\nclass NewError extends Error {\n /**\n * @param {AnyResult} value The evaluated scalar value\n */\n constructor(value) {\n super('JSONPath should not be called with \"new\" (it prevents return ' + 'of (unwrapped) scalar values)');\n this.avoidNew = true;\n this.value = value;\n this.name = 'NewError';\n }\n}\n\n/**\n* @typedef {object} ReturnObject\n* @property {string} path\n* @property {JSONObject} value\n* @property {object|GenericArray} parent\n* @property {string} parentProperty\n*/\n\n/**\n* @callback JSONPathCallback\n* @param {string|object} preferredOutput\n* @param {\"value\"|\"property\"} type\n* @param {ReturnObject} fullRetObj\n* @returns {void}\n*/\n\n/**\n* @callback OtherTypeCallback\n* @param {JSONObject} val\n* @param {string} path\n* @param {object|GenericArray} parent\n* @param {string} parentPropName\n* @returns {boolean}\n*/\n\n/**\n * @typedef {any} ContextItem\n */\n\n/**\n * @typedef {any} EvaluatedResult\n */\n\n/**\n* @callback EvalCallback\n* @param {string} code\n* @param {ContextItem} context\n* @returns {EvaluatedResult}\n*/\n\n/**\n * @typedef {typeof SafeScript} EvalClass\n */\n\n/**\n * @typedef {object} JSONPathOptions\n * @property {JSON} json\n * @property {string|string[]} path\n * @property {\"value\"|\"path\"|\"pointer\"|\"parent\"|\"parentProperty\"|\n * \"all\"} [resultType=\"value\"]\n * @property {boolean} [flatten=false]\n * @property {boolean} [wrap=true]\n * @property {object} [sandbox={}]\n * @property {EvalCallback|EvalClass|'safe'|'native'|\n * boolean} [eval = 'safe']\n * @property {object|GenericArray|null} [parent=null]\n * @property {string|null} [parentProperty=null]\n * @property {JSONPathCallback} [callback]\n * @property {OtherTypeCallback} [otherTypeCallback] Defaults to\n * function which throws on encountering `@other`\n * @property {boolean} [autostart=true]\n */\n\n/**\n * @param {string|JSONPathOptions} opts If a string, will be treated as `expr`\n * @param {string} [expr] JSON path to evaluate\n * @param {JSON} [obj] JSON object to evaluate against\n * @param {JSONPathCallback} [callback] Passed 3 arguments: 1) desired payload\n * per `resultType`, 2) `\"value\"|\"property\"`, 3) Full returned object with\n * all payloads\n * @param {OtherTypeCallback} [otherTypeCallback] If `@other()` is at the end\n * of one's query, this will be invoked with the value of the item, its\n * path, its parent, and its parent's property name, and it should return\n * a boolean indicating whether the supplied value belongs to the \"other\"\n * type or not (or it may handle transformations and return `false`).\n * @returns {JSONPath}\n * @class\n */\nfunction JSONPath(opts, expr, obj, callback, otherTypeCallback) {\n // eslint-disable-next-line no-restricted-syntax -- Allow for pseudo-class\n if (!(this instanceof JSONPath)) {\n try {\n return new JSONPath(opts, expr, obj, callback, otherTypeCallback);\n } catch (e) {\n if (!e.avoidNew) {\n throw e;\n }\n return e.value;\n }\n }\n if (typeof opts === 'string') {\n otherTypeCallback = callback;\n callback = obj;\n obj = expr;\n expr = opts;\n opts = null;\n }\n const optObj = opts && typeof opts === 'object';\n opts = opts || {};\n this.json = opts.json || obj;\n this.path = opts.path || expr;\n this.resultType = opts.resultType || 'value';\n this.flatten = opts.flatten || false;\n this.wrap = Object.hasOwn(opts, 'wrap') ? opts.wrap : true;\n this.sandbox = opts.sandbox || {};\n this.eval = opts.eval === undefined ? 'safe' : opts.eval;\n this.ignoreEvalErrors = typeof opts.ignoreEvalErrors === 'undefined' ? false : opts.ignoreEvalErrors;\n this.parent = opts.parent || null;\n this.parentProperty = opts.parentProperty || null;\n this.callback = opts.callback || callback || null;\n this.otherTypeCallback = opts.otherTypeCallback || otherTypeCallback || function () {\n throw new TypeError('You must supply an otherTypeCallback callback option ' + 'with the @other() operator.');\n };\n if (opts.autostart !== false) {\n const args = {\n path: optObj ? opts.path : expr\n };\n if (!optObj) {\n args.json = obj;\n } else if ('json' in opts) {\n args.json = opts.json;\n }\n const ret = this.evaluate(args);\n if (!ret || typeof ret !== 'object') {\n throw new NewError(ret);\n }\n return ret;\n }\n}\n\n// PUBLIC METHODS\nJSONPath.prototype.evaluate = function (expr, json, callback, otherTypeCallback) {\n let currParent = this.parent,\n currParentProperty = this.parentProperty;\n let {\n flatten,\n wrap\n } = this;\n this.currResultType = this.resultType;\n this.currEval = this.eval;\n this.currSandbox = this.sandbox;\n callback = callback || this.callback;\n this.currOtherTypeCallback = otherTypeCallback || this.otherTypeCallback;\n json = json || this.json;\n expr = expr || this.path;\n if (expr && typeof expr === 'object' && !Array.isArray(expr)) {\n if (!expr.path && expr.path !== '') {\n throw new TypeError('You must supply a \"path\" property when providing an object ' + 'argument to JSONPath.evaluate().');\n }\n if (!Object.hasOwn(expr, 'json')) {\n throw new TypeError('You must supply a \"json\" property when providing an object ' + 'argument to JSONPath.evaluate().');\n }\n ({\n json\n } = expr);\n flatten = Object.hasOwn(expr, 'flatten') ? expr.flatten : flatten;\n this.currResultType = Object.hasOwn(expr, 'resultType') ? expr.resultType : this.currResultType;\n this.currSandbox = Object.hasOwn(expr, 'sandbox') ? expr.sandbox : this.currSandbox;\n wrap = Object.hasOwn(expr, 'wrap') ? expr.wrap : wrap;\n this.currEval = Object.hasOwn(expr, 'eval') ? expr.eval : this.currEval;\n callback = Object.hasOwn(expr, 'callback') ? expr.callback : callback;\n this.currOtherTypeCallback = Object.hasOwn(expr, 'otherTypeCallback') ? expr.otherTypeCallback : this.currOtherTypeCallback;\n currParent = Object.hasOwn(expr, 'parent') ? expr.parent : currParent;\n currParentProperty = Object.hasOwn(expr, 'parentProperty') ? expr.parentProperty : currParentProperty;\n expr = expr.path;\n }\n currParent = currParent || null;\n currParentProperty = currParentProperty || null;\n if (Array.isArray(expr)) {\n expr = JSONPath.toPathString(expr);\n }\n if (!expr && expr !== '' || !json) {\n return undefined;\n }\n const exprList = JSONPath.toPathArray(expr);\n if (exprList[0] === '$' && exprList.length > 1) {\n exprList.shift();\n }\n this._hasParentSelector = null;\n const result = this._trace(exprList, json, ['$'], currParent, currParentProperty, callback).filter(function (ea) {\n return ea && !ea.isParentSelector;\n });\n if (!result.length) {\n return wrap ? [] : undefined;\n }\n if (!wrap && result.length === 1 && !result[0].hasArrExpr) {\n return this._getPreferredOutput(result[0]);\n }\n return result.reduce((rslt, ea) => {\n const valOrPath = this._getPreferredOutput(ea);\n if (flatten && Array.isArray(valOrPath)) {\n rslt = rslt.concat(valOrPath);\n } else {\n rslt.push(valOrPath);\n }\n return rslt;\n }, []);\n};\n\n// PRIVATE METHODS\n\nJSONPath.prototype._getPreferredOutput = function (ea) {\n const resultType = this.currResultType;\n switch (resultType) {\n case 'all':\n {\n const path = Array.isArray(ea.path) ? ea.path : JSONPath.toPathArray(ea.path);\n ea.pointer = JSONPath.toPointer(path);\n ea.path = typeof ea.path === 'string' ? ea.path : JSONPath.toPathString(ea.path);\n return ea;\n }\n case 'value':\n case 'parent':\n case 'parentProperty':\n return ea[resultType];\n case 'path':\n return JSONPath.toPathString(ea[resultType]);\n case 'pointer':\n return JSONPath.toPointer(ea.path);\n default:\n throw new TypeError('Unknown result type');\n }\n};\nJSONPath.prototype._handleCallback = function (fullRetObj, callback, type) {\n if (callback) {\n const preferredOutput = this._getPreferredOutput(fullRetObj);\n fullRetObj.path = typeof fullRetObj.path === 'string' ? fullRetObj.path : JSONPath.toPathString(fullRetObj.path);\n // eslint-disable-next-line n/callback-return -- No need to return\n callback(preferredOutput, type, fullRetObj);\n }\n};\n\n/**\n *\n * @param {string} expr\n * @param {JSONObject} val\n * @param {string} path\n * @param {object|GenericArray} parent\n * @param {string} parentPropName\n * @param {JSONPathCallback} callback\n * @param {boolean} hasArrExpr\n * @param {boolean} literalPriority\n * @returns {ReturnObject|ReturnObject[]}\n */\nJSONPath.prototype._trace = function (expr, val, path, parent, parentPropName, callback, hasArrExpr, literalPriority) {\n // No expr to follow? return path and value as the result of\n // this trace branch\n let retObj;\n if (!expr.length) {\n retObj = {\n path,\n value: val,\n parent,\n parentProperty: parentPropName,\n hasArrExpr\n };\n this._handleCallback(retObj, callback, 'value');\n return retObj;\n }\n const loc = expr[0],\n x = expr.slice(1);\n\n // We need to gather the return value of recursive trace calls in order to\n // do the parent sel computation.\n const ret = [];\n /**\n *\n * @param {ReturnObject|ReturnObject[]} elems\n * @returns {void}\n */\n function addRet(elems) {\n if (Array.isArray(elems)) {\n // This was causing excessive stack size in Node (with or\n // without Babel) against our performance test:\n // `ret.push(...elems);`\n elems.forEach(t => {\n ret.push(t);\n });\n } else {\n ret.push(elems);\n }\n }\n if ((typeof loc !== 'string' || literalPriority) && val && Object.hasOwn(val, loc)) {\n // simple case--directly follow property\n addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr));\n // eslint-disable-next-line unicorn/prefer-switch -- Part of larger `if`\n } else if (loc === '*') {\n // all child properties\n this._walk(val, m => {\n addRet(this._trace(x, val[m], push(path, m), val, m, callback, true, true));\n });\n } else if (loc === '..') {\n // all descendent parent properties\n // Check remaining expression with val's immediate children\n addRet(this._trace(x, val, path, parent, parentPropName, callback, hasArrExpr));\n this._walk(val, m => {\n // We don't join m and x here because we only want parents,\n // not scalar values\n if (typeof val[m] === 'object') {\n // Keep going with recursive descent on val's\n // object children\n addRet(this._trace(expr.slice(), val[m], push(path, m), val, m, callback, true));\n }\n });\n // The parent sel computation is handled in the frame above using the\n // ancestor object of val\n } else if (loc === '^') {\n // This is not a final endpoint, so we do not invoke the callback here\n this._hasParentSelector = true;\n return {\n path: path.slice(0, -1),\n expr: x,\n isParentSelector: true\n };\n } else if (loc === '~') {\n // property name\n retObj = {\n path: push(path, loc),\n value: parentPropName,\n parent,\n parentProperty: null\n };\n this._handleCallback(retObj, callback, 'property');\n return retObj;\n } else if (loc === '$') {\n // root only\n addRet(this._trace(x, val, path, null, null, callback, hasArrExpr));\n } else if (/^(-?\\d*):(-?\\d*):?(\\d*)$/u.test(loc)) {\n // [start:end:step] Python slice syntax\n addRet(this._slice(loc, x, val, path, parent, parentPropName, callback));\n } else if (loc.indexOf('?(') === 0) {\n // [?(expr)] (filtering)\n if (this.currEval === false) {\n throw new Error('Eval [?(expr)] prevented in JSONPath expression.');\n }\n const safeLoc = loc.replace(/^\\?\\((.*?)\\)$/u, '$1');\n // check for a nested filter expression\n const nested = /@.?([^?]*)[['](\\??\\(.*?\\))(?!.\\)\\])[\\]']/gu.exec(safeLoc);\n if (nested) {\n // find if there are matches in the nested expression\n // add them to the result set if there is at least one match\n this._walk(val, m => {\n const npath = [nested[2]];\n const nvalue = nested[1] ? val[m][nested[1]] : val[m];\n const filterResults = this._trace(npath, nvalue, path, parent, parentPropName, callback, true);\n if (filterResults.length > 0) {\n addRet(this._trace(x, val[m], push(path, m), val, m, callback, true));\n }\n });\n } else {\n this._walk(val, m => {\n if (this._eval(safeLoc, val[m], m, path, parent, parentPropName)) {\n addRet(this._trace(x, val[m], push(path, m), val, m, callback, true));\n }\n });\n }\n } else if (loc[0] === '(') {\n // [(expr)] (dynamic property/index)\n if (this.currEval === false) {\n throw new Error('Eval [(expr)] prevented in JSONPath expression.');\n }\n // As this will resolve to a property name (but we don't know it\n // yet), property and parent information is relative to the\n // parent of the property to which this expression will resolve\n addRet(this._trace(unshift(this._eval(loc, val, path.at(-1), path.slice(0, -1), parent, parentPropName), x), val, path, parent, parentPropName, callback, hasArrExpr));\n } else if (loc[0] === '@') {\n // value type: @boolean(), etc.\n let addType = false;\n const valueType = loc.slice(1, -2);\n switch (valueType) {\n case 'scalar':\n if (!val || !['object', 'function'].includes(typeof val)) {\n addType = true;\n }\n break;\n case 'boolean':\n case 'string':\n case 'undefined':\n case 'function':\n if (typeof val === valueType) {\n addType = true;\n }\n break;\n case 'integer':\n if (Number.isFinite(val) && !(val % 1)) {\n addType = true;\n }\n break;\n case 'number':\n if (Number.isFinite(val)) {\n addType = true;\n }\n break;\n case 'nonFinite':\n if (typeof val === 'number' && !Number.isFinite(val)) {\n addType = true;\n }\n break;\n case 'object':\n if (val && typeof val === valueType) {\n addType = true;\n }\n break;\n case 'array':\n if (Array.isArray(val)) {\n addType = true;\n }\n break;\n case 'other':\n addType = this.currOtherTypeCallback(val, path, parent, parentPropName);\n break;\n case 'null':\n if (val === null) {\n addType = true;\n }\n break;\n /* c8 ignore next 2 */\n default:\n throw new TypeError('Unknown value type ' + valueType);\n }\n if (addType) {\n retObj = {\n path,\n value: val,\n parent,\n parentProperty: parentPropName\n };\n this._handleCallback(retObj, callback, 'value');\n return retObj;\n }\n // `-escaped property\n } else if (loc[0] === '`' && val && Object.hasOwn(val, loc.slice(1))) {\n const locProp = loc.slice(1);\n addRet(this._trace(x, val[locProp], push(path, locProp), val, locProp, callback, hasArrExpr, true));\n } else if (loc.includes(',')) {\n // [name1,name2,...]\n const parts = loc.split(',');\n for (const part of parts) {\n addRet(this._trace(unshift(part, x), val, path, parent, parentPropName, callback, true));\n }\n // simple case--directly follow property\n } else if (!literalPriority && val && Object.hasOwn(val, loc)) {\n addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr, true));\n }\n\n // We check the resulting values for parent selections. For parent\n // selections we discard the value object and continue the trace with the\n // current val object\n if (this._hasParentSelector) {\n for (let t = 0; t < ret.length; t++) {\n const rett = ret[t];\n if (rett && rett.isParentSelector) {\n const tmp = this._trace(rett.expr, val, rett.path, parent, parentPropName, callback, hasArrExpr);\n if (Array.isArray(tmp)) {\n ret[t] = tmp[0];\n const tl = tmp.length;\n for (let tt = 1; tt < tl; tt++) {\n // eslint-disable-next-line @stylistic/max-len -- Long\n // eslint-disable-next-line sonarjs/updated-loop-counter -- Convenient\n t++;\n ret.splice(t, 0, tmp[tt]);\n }\n } else {\n ret[t] = tmp;\n }\n }\n }\n }\n return ret;\n};\nJSONPath.prototype._walk = function (val, f) {\n if (Array.isArray(val)) {\n const n = val.length;\n for (let i = 0; i < n; i++) {\n f(i);\n }\n } else if (val && typeof val === 'object') {\n Object.keys(val).forEach(m => {\n f(m);\n });\n }\n};\nJSONPath.prototype._slice = function (loc, expr, val, path, parent, parentPropName, callback) {\n if (!Array.isArray(val)) {\n return undefined;\n }\n const len = val.length,\n parts = loc.split(':'),\n step = parts[2] && Number.parseInt(parts[2]) || 1;\n let start = parts[0] && Number.parseInt(parts[0]) || 0,\n end = parts[1] && Number.parseInt(parts[1]) || len;\n start = start < 0 ? Math.max(0, start + len) : Math.min(len, start);\n end = end < 0 ? Math.max(0, end + len) : Math.min(len, end);\n const ret = [];\n for (let i = start; i < end; i += step) {\n const tmp = this._trace(unshift(i, expr), val, path, parent, parentPropName, callback, true);\n // Should only be possible to be an array here since first part of\n // ``unshift(i, expr)` passed in above would not be empty, nor `~`,\n // nor begin with `@` (as could return objects)\n // This was causing excessive stack size in Node (with or\n // without Babel) against our performance test: `ret.push(...tmp);`\n tmp.forEach(t => {\n ret.push(t);\n });\n }\n return ret;\n};\nJSONPath.prototype._eval = function (code, _v, _vname, path, parent, parentPropName) {\n this.currSandbox._$_parentProperty = parentPropName;\n this.currSandbox._$_parent = parent;\n this.currSandbox._$_property = _vname;\n this.currSandbox._$_root = this.json;\n this.currSandbox._$_v = _v;\n const containsPath = code.includes('@path');\n if (containsPath) {\n this.currSandbox._$_path = JSONPath.toPathString(path.concat([_vname]));\n }\n const scriptCacheKey = this.currEval + 'Script:' + code;\n if (!JSONPath.cache[scriptCacheKey]) {\n let script = code.replaceAll('@parentProperty', '_$_parentProperty').replaceAll('@parent', '_$_parent').replaceAll('@property', '_$_property').replaceAll('@root', '_$_root').replaceAll(/@([.\\s)[])/gu, '_$_v$1');\n if (containsPath) {\n script = script.replaceAll('@path', '_$_path');\n }\n if (this.currEval === 'safe' || this.currEval === true || this.currEval === undefined) {\n JSONPath.cache[scriptCacheKey] = new this.safeVm.Script(script);\n } else if (this.currEval === 'native') {\n JSONPath.cache[scriptCacheKey] = new this.vm.Script(script);\n } else if (typeof this.currEval === 'function' && this.currEval.prototype && Object.hasOwn(this.currEval.prototype, 'runInNewContext')) {\n const CurrEval = this.currEval;\n JSONPath.cache[scriptCacheKey] = new CurrEval(script);\n } else if (typeof this.currEval === 'function') {\n JSONPath.cache[scriptCacheKey] = {\n runInNewContext: context => this.currEval(script, context)\n };\n } else {\n throw new TypeError(`Unknown \"eval\" property \"${this.currEval}\"`);\n }\n }\n try {\n return JSONPath.cache[scriptCacheKey].runInNewContext(this.currSandbox);\n } catch (e) {\n if (this.ignoreEvalErrors) {\n return false;\n }\n throw new Error('jsonPath: ' + e.message + ': ' + code);\n }\n};\n\n// PUBLIC CLASS PROPERTIES AND METHODS\n\n// Could store the cache object itself\nJSONPath.cache = {};\n\n/**\n * @param {string[]} pathArr Array to convert\n * @returns {string} The path string\n */\nJSONPath.toPathString = function (pathArr) {\n const x = pathArr,\n n = x.length;\n let p = '$';\n for (let i = 1; i < n; i++) {\n if (!/^(~|\\^|@.*?\\(\\))$/u.test(x[i])) {\n p += /^[0-9*]+$/u.test(x[i]) ? '[' + x[i] + ']' : \"['\" + x[i] + \"']\";\n }\n }\n return p;\n};\n\n/**\n * @param {string} pointer JSON Path\n * @returns {string} JSON Pointer\n */\nJSONPath.toPointer = function (pointer) {\n const x = pointer,\n n = x.length;\n let p = '';\n for (let i = 1; i < n; i++) {\n if (!/^(~|\\^|@.*?\\(\\))$/u.test(x[i])) {\n p += '/' + x[i].toString().replaceAll('~', '~0').replaceAll('/', '~1');\n }\n }\n return p;\n};\n\n/**\n * @param {string} expr Expression to convert\n * @returns {string[]}\n */\nJSONPath.toPathArray = function (expr) {\n const {\n cache\n } = JSONPath;\n if (cache[expr]) {\n return cache[expr].concat();\n }\n const subx = [];\n const normalized = expr\n // Properties\n .replaceAll(/@(?:null|boolean|number|string|integer|undefined|nonFinite|scalar|array|object|function|other)\\(\\)/gu, ';$&;')\n // Parenthetical evaluations (filtering and otherwise), directly\n // within brackets or single quotes\n .replaceAll(/[['](\\??\\(.*?\\))[\\]'](?!.\\])/gu, function ($0, $1) {\n return '[#' + (subx.push($1) - 1) + ']';\n })\n // Escape periods and tildes within properties\n .replaceAll(/\\[['\"]([^'\\]]*)['\"]\\]/gu, function ($0, prop) {\n return \"['\" + prop.replaceAll('.', '%@%').replaceAll('~', '%%@@%%') + \"']\";\n })\n // Properties operator\n .replaceAll('~', ';~;')\n // Split by property boundaries\n .replaceAll(/['\"]?\\.['\"]?(?![^[]*\\])|\\[['\"]?/gu, ';')\n // Reinsert periods within properties\n .replaceAll('%@%', '.')\n // Reinsert tildes within properties\n .replaceAll('%%@@%%', '~')\n // Parent\n .replaceAll(/(?:;)?(\\^+)(?:;)?/gu, function ($0, ups) {\n return ';' + ups.split('').join(';') + ';';\n })\n // Descendents\n .replaceAll(/;;;|;;/gu, ';..;')\n // Remove trailing\n .replaceAll(/;$|'?\\]|'$/gu, '');\n const exprList = normalized.split(';').map(function (exp) {\n const match = exp.match(/#(\\d+)/u);\n return !match || !match[1] ? exp : subx[match[1]];\n });\n cache[expr] = exprList;\n return cache[expr].concat();\n};\nJSONPath.prototype.safeVm = {\n Script: SafeScript\n};\n\n/**\n * @typedef {any} ContextItem\n */\n\n/**\n * @typedef {any} EvaluatedResult\n */\n\n/**\n * @callback ConditionCallback\n * @param {ContextItem} item\n * @returns {boolean}\n */\n\n/**\n * Copy items out of one array into another.\n * @param {GenericArray} source Array with items to copy\n * @param {GenericArray} target Array to which to copy\n * @param {ConditionCallback} conditionCb Callback passed the current item;\n * will move item if evaluates to `true`\n * @returns {void}\n */\nconst moveToAnotherArray = function (source, target, conditionCb) {\n const il = source.length;\n for (let i = 0; i < il; i++) {\n const item = source[i];\n if (conditionCb(item)) {\n // eslint-disable-next-line @stylistic/max-len -- Long\n // eslint-disable-next-line sonarjs/updated-loop-counter -- Convenient\n target.push(source.splice(i--, 1)[0]);\n }\n }\n};\n\n/**\n * In-browser replacement for NodeJS' VM.Script.\n */\nclass Script {\n /**\n * @param {string} expr Expression to evaluate\n */\n constructor(expr) {\n this.code = expr;\n }\n\n /**\n * @param {object} context Object whose items will be added\n * to evaluation\n * @returns {EvaluatedResult} Result of evaluated code\n */\n runInNewContext(context) {\n let expr = this.code;\n const keys = Object.keys(context);\n const funcs = [];\n moveToAnotherArray(keys, funcs, key => {\n return typeof context[key] === 'function';\n });\n const values = keys.map(vr => {\n return context[vr];\n });\n const funcString = funcs.reduce((s, func) => {\n let fString = context[func].toString();\n if (!/function/u.test(fString)) {\n fString = 'function ' + fString;\n }\n return 'var ' + func + '=' + fString + ';' + s;\n }, '');\n expr = funcString + expr;\n\n // Mitigate http://perfectionkills.com/global-eval-what-are-the-options/#new_function\n if (!/(['\"])use strict\\1/u.test(expr) && !keys.includes('arguments')) {\n expr = 'var arguments = undefined;' + expr;\n }\n\n // Remove last semi so `return` will be inserted before\n // the previous one instead, allowing for the return\n // of a bare ending expression\n expr = expr.replace(/;\\s*$/u, '');\n\n // Insert `return`\n const lastStatementEnd = expr.lastIndexOf(';');\n const code = lastStatementEnd !== -1 ? expr.slice(0, lastStatementEnd + 1) + ' return ' + expr.slice(lastStatementEnd + 1) : ' return ' + expr;\n\n // eslint-disable-next-line no-new-func -- User's choice\n return new Function(...keys, code)(...values);\n }\n}\nJSONPath.prototype.vm = {\n Script\n};\n\nexport { JSONPath };\n","// Import polyfills\nimport \"../utils/polyfills\";\n\n// Import necessary utilities and libraries\nimport {\n fetchProviderData,\n updateSessionStatus,\n submitProofOnCallback,\n} from \"../utils/fetch-calls\";\nimport { JOCLAIM_SESSION_STATUS, MESSAGE_ACTIONS, MESSAGE_SOURCES } from \"../utils/constants\";\nimport { generateProof, formatProof } from \"../utils/proof-generator\";\nimport { createClaimObject } from \"../utils/claim-creator\";\nimport { loggerService, createContextLogger } from \"../utils/logger/LoggerService\";\nimport { EVENT_TYPES, LOG_LEVEL, LOG_TYPES } from \"../utils/logger/constants\";\nimport { SessionTimerManager } from \"../utils/session-timer\";\nimport { debugLogger, DebugLogType } from \"../utils/logger\";\nimport { installOffscreenReadyListener } from \"../utils/offscreen-manager\";\n\nimport * as messageRouter from \"./messageRouter\";\nimport * as sessionManager from \"./sessionManager\";\nimport * as tabManager from \"./tabManager\";\nimport * as proofQueue from \"./proofQueue\";\nimport * as cookieUtils from \"./cookieUtils\";\n\nconst bgLogger = createContextLogger({\n sessionId: \"unknown\",\n providerId: \"unknown\",\n appId: \"unknown\",\n source: \"reclaim-extension-sdk\",\n});\n\nexport default function initBackground() {\n installOffscreenReadyListener();\n\n // Context object to hold shared state and dependencies\n const ctx = {\n // State\n activeTabId: null,\n providerData: null,\n parameters: {},\n providerId: null,\n appId: null,\n sessionId: null,\n callbackUrl: null,\n publicData: null,\n aborted: false,\n expectManyClaims: false,\n originalTabId: null,\n managedTabs: new Set(),\n providerRequestsByHash: new Map(),\n generatedProofs: new Map(),\n filteredRequests: new Map(),\n proofGenerationQueue: [],\n isProcessingQueue: false,\n firstRequestReceived: false,\n initPopupMessage: new Map(),\n providerDataMessage: new Map(),\n activeSessionId: null,\n // Timer\n sessionTimerManager: new SessionTimerManager(),\n // Constants and dependencies\n fetchProviderData,\n updateSessionStatus,\n submitProofOnCallback,\n JOCLAIM_SESSION_STATUS,\n MESSAGE_ACTIONS,\n MESSAGE_SOURCES,\n generateProof,\n formatProof,\n createClaimObject,\n loggerService,\n bgLogger,\n debugLogger,\n DebugLogType,\n // Methods to be set below\n processFilteredRequest: null,\n failSession: null,\n submitProofs: null,\n };\n\n bgLogger.setContext({\n sessionId: ctx.sessionId || \"unknown\",\n providerId: ctx.providerId || \"unknown\",\n appId: ctx.appId || \"unknown\",\n type: LOG_TYPES.BACKGROUND,\n });\n\n // Load and live-sync log config\n try {\n const { LOG_CONFIG_STORAGE_KEY } = require(\"../utils/logger/constants\");\n chrome.storage.local.get([LOG_CONFIG_STORAGE_KEY], (res) => {\n const cfg = res?.[LOG_CONFIG_STORAGE_KEY];\n if (cfg && typeof cfg === \"object\") ctx.loggerService.setConfig(cfg);\n });\n chrome.storage.onChanged.addListener((changes, area) => {\n if (area === \"local\" && changes[LOG_CONFIG_STORAGE_KEY]) {\n const newCfg = changes[LOG_CONFIG_STORAGE_KEY].newValue || {};\n ctx.loggerService.setConfig(newCfg);\n }\n });\n } catch {}\n\n bgLogger.info({\n message: \"Background initialized INFO\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.BACKGROUND,\n });\n\n // Bind sessionManager methods to context\n ctx.failSession = (...args) => sessionManager.failSession(ctx, ...args);\n ctx.submitProofs = (...args) => sessionManager.submitProofs(ctx, ...args);\n\n // Add processFilteredRequest to context (move from class)\n ctx.processFilteredRequest = async function (request, criteria, sessionId, loginUrl) {\n try {\n sessionId = ctx.sessionId || sessionId;\n if (!sessionId) {\n ctx.failSession(\"Session not initialized for claim request\", criteria?.requestHash);\n return { success: false, error: \"Session not initialized\" };\n }\n if (!ctx.firstRequestReceived) {\n ctx.firstRequestReceived = true;\n ctx.sessionTimerManager.startSessionTimer();\n }\n\n bgLogger.setContext({\n sessionId: ctx.sessionId || \"unknown\",\n providerId: ctx.providerId || \"unknown\",\n appId: ctx.appId || \"unknown\",\n type: LOG_TYPES.BACKGROUND,\n });\n bgLogger.info({\n message: `[BACKGROUND] Filtering request for request hash: ${criteria.requestHash}`,\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.BACKGROUND,\n });\n\n const cookies = await cookieUtils.getCookiesForUrl(request.url, ctx.bgLogger);\n if (cookies) {\n request.cookieStr = cookies;\n }\n\n bgLogger.log({\n message: `[BACKGROUND] Cookies for URL: ${request.url}`,\n logLevel: LOG_LEVEL.ALL,\n type: LOG_TYPES.BACKGROUND,\n meta: {\n request: request,\n criteria: criteria,\n sessionId: sessionId,\n loginUrl: loginUrl,\n cookies: cookies,\n },\n });\n\n chrome.tabs.sendMessage(ctx.activeTabId, {\n action: ctx.MESSAGE_ACTIONS.CLAIM_CREATION_REQUESTED,\n source: ctx.MESSAGE_SOURCES.BACKGROUND,\n target: ctx.MESSAGE_SOURCES.CONTENT_SCRIPT,\n data: { requestHash: criteria.requestHash },\n });\n\n bgLogger.info({\n message: \"[BACKGROUND] Claim creation requested for request hash: \" + criteria.requestHash,\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.BACKGROUND,\n eventType: EVENT_TYPES.STARTING_CLAIM_CREATION,\n });\n\n let claimData = null;\n try {\n const criteriaWithGeo = { ...criteria, geoLocation: ctx.providerData?.geoLocation ?? \"\" };\n claimData = await ctx.createClaimObject(\n request,\n criteriaWithGeo,\n sessionId,\n ctx.providerId,\n loginUrl,\n ctx.bgLogger,\n );\n } catch (error) {\n bgLogger.error({\n message: \"[BACKGROUND] Error creating claim object: \" + error.message,\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.BACKGROUND,\n });\n chrome.tabs.sendMessage(ctx.activeTabId, {\n action: ctx.MESSAGE_ACTIONS.CLAIM_CREATION_FAILED,\n source: ctx.MESSAGE_SOURCES.BACKGROUND,\n target: ctx.MESSAGE_SOURCES.CONTENT_SCRIPT,\n data: { requestHash: criteria.requestHash },\n });\n\n ctx.failSession(\"Claim creation failed: \" + error.message, criteria.requestHash);\n return { success: false, error: error.message };\n }\n\n if (claimData) {\n chrome.tabs.sendMessage(ctx.activeTabId, {\n action: ctx.MESSAGE_ACTIONS.CLAIM_CREATION_SUCCESS,\n source: ctx.MESSAGE_SOURCES.BACKGROUND,\n target: ctx.MESSAGE_SOURCES.CONTENT_SCRIPT,\n data: { requestHash: criteria.requestHash },\n });\n bgLogger.info({\n message:\n \"[BACKGROUND] Claim Object creation successful for request hash: \" +\n criteria.requestHash,\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.BACKGROUND,\n });\n }\n const providerRequest = {\n url: criteria?.url || request?.url || \"\",\n expectedPageUrl: criteria?.expectedPageUrl || \"\",\n urlType: criteria?.urlType || \"EXACT\",\n method: criteria?.method || request?.method || \"GET\",\n responseMatches: Array.isArray(criteria?.responseMatches) ? criteria.responseMatches : [],\n responseRedactions: Array.isArray(criteria?.responseRedactions)\n ? criteria.responseRedactions\n : [],\n requestHash: criteria?.requestHash,\n };\n if (providerRequest.requestHash) {\n ctx.providerRequestsByHash.set(providerRequest.requestHash, providerRequest);\n }\n proofQueue.addToProofGenerationQueue(ctx, claimData, criteria.requestHash);\n bgLogger.info({\n message: \"[BACKGROUND] Proof generation queued for request hash: \" + criteria.requestHash,\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.BACKGROUND,\n });\n return { success: true, message: \"Proof generation queued\" };\n } catch (error) {\n bgLogger.error({\n message: \"[BACKGROUND] Error processing filtered request: \" + error.message,\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.BACKGROUND,\n });\n ctx.failSession(\"Error processing request: \" + error.message, criteria.requestHash);\n return { success: false, error: error.message };\n }\n };\n\n // Set up session timer callbacks\n ctx.sessionTimerManager.setCallbacks(ctx.failSession);\n ctx.sessionTimerManager.setTimerDuration(30000);\n // Register message handler\n chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {\n messageRouter.handleMessage(ctx, message, sender, sendResponse);\n return true; // Required for async response\n });\n\n // Listen for tab removals to clean up managedTabs\n chrome.tabs.onRemoved.addListener(async (tabId) => {\n const wasManaged = ctx.managedTabs.has(tabId);\n if (wasManaged) ctx.managedTabs.delete(tabId);\n\n const lostActive = tabId === ctx.activeTabId;\n const noManagedLeft = ctx.managedTabs.size === 0;\n\n // If there is an active session and we lost its tab(s), fail immediately.\n if (ctx.activeSessionId && (lostActive || noManagedLeft) && !ctx.aborted) {\n ctx.aborted = true;\n try {\n bgLogger.error({\n message: \"[BACKGROUND] Verification tab closed by user\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.BACKGROUND,\n sessionId: ctx.activeSessionId || ctx.sessionId || \"unknown\",\n providerId: ctx.providerId || \"unknown\",\n appId: ctx.appId || \"unknown\",\n eventType: EVENT_TYPES.RECLAIM_VERIFICATION_DISMISSED,\n });\n await ctx.failSession(\"Verification tab closed by user\");\n } catch {}\n }\n\n if (lostActive) ctx.activeTabId = null;\n if (noManagedLeft) {\n ctx.originalTabId = null;\n ctx.activeSessionId = null; // clear stale guard\n }\n });\n\n bgLogger.info({\n message: \"[BACKGROUND] 🚀 Background initialization complete\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.BACKGROUND,\n });\n return ctx;\n}\n"],"names":["DebugLogType","Object","freeze","BACKGROUND","CONTENT","POPUP","INIT","VERIFICATION","FETCH","PROVIDER","CLAIM","PROOF","OFFSCREEN","POLYFILLS","SESSION_TIMER","debugLogger","DebugLogger","_classCallCheck","this","enabled","allowedTypes","Set","key","value","typesArray","Array","isArray","clear","type","_console","size","has","color","typeColor","_len","arguments","length","args","_key","console","log","apply","concat","_console2","_len2","_key2","info","_console3","_len3","_key3","warn","_console4","_len4","_key4","error","level","undefined","colors","background","content","popup","init","verification","fetch","provider","claim","proof","offscreen","polyfills","baseColor","keys","find","k","toLowerCase","includes","process","env","disable","enable","exports","read","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","i","d","s","NaN","Infinity","Math","pow","write","c","rt","abs","isNaN","floor","LN2","base64","ieee754","customInspectSymbol","Symbol","Buffer","K_MAX_LENGTH","createBuffer","RangeError","buf","Uint8Array","setPrototypeOf","prototype","arg","encodingOrOffset","TypeError","allocUnsafe","from","string","encoding","isEncoding","byteLength","actual","slice","fromString","ArrayBuffer","isView","arrayView","isInstance","copy","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","b","obj","isBuffer","len","checked","numberIsNaN","data","fromObject","toPrimitive","assertSize","array","toString","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","bidirectionalIndexOf","val","dir","arrayIndexOf","indexOf","call","lastIndexOf","arr","indexSize","arrLength","valLength","String","readUInt16BE","foundIndex","found","j","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","push","charCodeAt","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","min","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","defineProperty","enumerable","get","poolSize","alloc","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","list","pos","set","swap16","swap32","swap64","toLocaleString","equals","inspect","max","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","isFinite","Error","toJSON","_arr","ret","out","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","code","errors","E","sym","getMessage","Base","constructor","super","writable","configurable","name","stack","message","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","input","msg","received","isInteger","INVALID_BASE64_RE","leadSurrogate","toByteArray","split","base64clean","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","WebSocketPolyfill","window","_createClass","url","protocols","_this3","readyState","setTimeout","onclose","reason","Promise","reject","_BrowserWebSocket","_this","_callSuper","addEventListener","event","onerror","onopen","onmessage","_inherits","_this2","resolve","send","WebSocket","module","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","join","tripletToBase64","num","output","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","noop","nextTick","title","browser","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","LogEntry","_ref","sessionId","providerId","appId","logLine","eventType","logLevel","source","tabId","meta","_ref$time","time","deviceId","Date","dateTime","getTime","json","ts","fromDateTimeToTimeStamp","t","r","iterator","o","toStringTag","Generator","u","create","_regeneratorDefine2","f","p","G","v","bind","l","done","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","__proto__","displayName","_regenerator","w","_invoke","asyncGeneratorStep","then","_asyncToGenerator","_next","_throw","_typeof","ownKeys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","_defineProperties","_toPrimitive","loggerService","LoggerService","logs","isSending","maxBatchSize","flushInterval","flushIntervalId","config","DEFAULT_LOG_CONFIG","_chrome$storage","chrome","storage","local","LOG_CONFIG_STORAGE_KEY","cfg","setConfig","onChanged","changes","area","newCfg","newValue","_unused","startFlushInterval","partial","clearInterval","setInterval","flush","_getDeviceLoggingId","_callee","result","_context","reclaim_device_id","crypto","randomUUID","now","logEntry","requestedLevel","LOG_LEVEL_MAP","LOG_LEVEL","INFO","prefix","line","shouldLog","consoleEnabled","emitToConsole","entry","addLog","_flush","_callee2","logsToSend","_t3","_context2","_toConsumableArray","sendLogs","_sendLogs","_callee3","entries","formattedLogs","body","_t4","_t5","_t6","_context3","getDeviceLoggingId","map","toJson","JSON","stringify","LOGGING_ENDPOINTS","DIAGNOSTIC_LOGGING","method","headers","ok","text","_x","createContextLogger","_loggerService$config","initial","ctx","context","setContext","assign","opts","debug","all","LOG_TYPES","FETCH_DATA","PROVIDER_DATA","CLAIM_CREATION","PROOF_GENERATION","PROOF_SUBMISSION","PROOF_VERIFICATION","LOG_SOURCES","INJECTION","EVENT_TYPES","IS_RECLAIM_EXTENSION_SDK","VERIFICATION_FLOW_STARTED","RECLAIM_VERIFICATION_DISMISSED","RECLAIM_VERIFICATION_PROVIDER_LOAD_EXCEPTION","REQUEST_MATCHED","RESPONSE_MATCH_FAILED","X_PATH_MATCH_REQUIREMENT_FAILED","JSON_PATH_MATCH_REQUIREMENT_FAILED","REGEX_MATCH_REQUIREMENT_FAILED","FILTERED_REQUEST_FOUND","FILTER_REQUEST_ERROR","STARTING_CLAIM_CREATION","CLAIM_CREATION_STARTED","CLAIM_CREATION_SUCCESS","CLAIM_CREATION_FAILED","CLAIM_PARAMETER_VALIDATION_FAILED_EXCEPTION","OFFSCREEN_DOCUMENT_READY","OFFSCREEN_DOCUMENT_NOT_READY_EXCEPTION","PROOF_GENERATION_STARTED","PROOF_GENERATION_SUCCESS","PROOF_GENERATION_ABORTED","PROOF_GENERATION_FAILED","RESULT_RECEIVED","SUBMITTING_PROOF","SUBMITTING_PROOF_TO_CALLBACK_URL","SUBMITTING_PROOF_TO_CALLBACK_URL_SUCCESS","SUBMITTING_PROOF_TO_CALLBACK_URL_FAILED","PROOF_SUBMISSION_FAILED","PROOF_SUBMITTED","VERIFICATION_FLOW_FAILED","TAB_NOT_MANAGED_BY_EXTENSION_EXCEPTION","INJECTION_SCRIPT_SET_IN_LOCAL_STORAGE_FAILED","VERIFICATION_POPUP_ERROR","UPDATE_SESSION_STATUS_ERROR","DEBUG","ALL","MESSAGE_SOURCES","CONTENT_SCRIPT","MESSAGE_ACTIONS","START_VERIFICATION","CANCEL_VERIFICATION","GENERATE_PROOF_REQUEST","CLAIM_CREATION_REQUESTED","GENERATE_PROOF","GENERATED_PROOF_RESPONSE","GENERATE_CLAIM_ON_ATTESTOR","GET_PRIVATE_KEY","GET_PRIVATE_KEY_RESPONSE","SHOW_PROVIDER_VERIFICATION_POPUP","GENERATE_PROOF_RESPONSE","PING_OFFSCREEN","CLOSE_CURRENT_TAB","GET_CURRENT_TAB_ID","REQUEST_PROVIDER_DATA","PROVIDER_DATA_READY","CONTENT_SCRIPT_LOADED","SHOULD_INITIALIZE","CHECK_IF_MANAGED_TAB","INTERCEPTED_REQUEST_AND_RESPONSE","UPDATE_PUBLIC_DATA","UPDATE_EXPECT_MANY_CLAIMS","GET_PARAMETERS","REPORT_PROVIDER_ERROR","REQUEST_CLAIM","INJECT_VIA_SCRIPTING","_digest","_writeFile","_readFile","global","self","Function","isServiceWorker","isContentScript","document","contentType","require","moduleName","fs","path","os","originalRequire","getRandomValues","random","subtle","digest","algorithm","hashInt","reduce","acc","_x2","CustomURL","base","startsWith","OriginalURL","domain","URL","getOwnPropertyNames","prop","readFileSync","writeFileSync","existsSync","promises","readFile","_x3","writeFile","_x4","_x5","tmpdir","homedir","platform","cpus","model","speed","totalmem","freemem","dirname","basename","pop","endsWith","extname","dotIndex","sep","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","id","loaded","__webpack_modules__","getter","__esModule","definition","hmd","children","hasOwnProperty","offscreenLogger","offscreenDocTimeout","offscreenGlobalListener","action","setupOffscreenReadyListener","runtime","onMessage","hasListener","Jsep","addUnaryOp","op_name","max_unop_len","unary_ops","addBinaryOp","precedence","isRightAssociative","max_binop_len","binary_ops","right_associative","add","delete","addIdentifierChar","char","additional_identifier_chars","addLiteral","literal_name","literal_value","literals","removeUnaryOp","getMaxKeyLen","removeAllUnaryOps","removeIdentifierChar","removeBinaryOp","removeAllBinaryOps","removeLiteral","removeAllLiterals","expr","charAt","index","parse","isDecimalDigit","ch","binaryPrecedence","op_val","isIdentifierStart","isIdentifierPart","throwError","description","runHook","node","hooks","searchHook","callback","gobbleSpaces","SPACE_CODE","TAB_CODE","LF_CODE","CR_CODE","nodes","gobbleExpressions","COMPOUND","untilICode","ch_i","SEMCOL_CODE","COMMA_CODE","gobbleExpression","gobbleBinaryExpression","gobbleBinaryOp","to_check","tc_len","biop","prec","biop_info","left","right","cur_biop","gobbleToken","right_a","comparePrev","prev","BINARY_EXP","operator","PERIOD_CODE","gobbleNumericLiteral","SQUOTE_CODE","DQUOTE_CODE","gobbleStringLiteral","OBRACK_CODE","gobbleArray","argument","UNARY_EXP","gobbleIdentifier","LITERAL","raw","this_str","THIS_EXP","OPAREN_CODE","gobbleGroup","gobbleTokenProperty","QUMARK_CODE","optional","MEMBER_EXP","computed","object","property","CBRACK_CODE","CALL_EXP","gobbleArguments","CPAREN_CODE","callee","chCode","number","parseFloat","startIndex","quote","closed","substring","IDENTIFIER","termination","separator_count","SEQUENCE_EXP","expressions","ARRAY_EXP","elements","plugins","jsep","registered","register","plugin","COLON_CODE","stdClassProps","ternary","test","consequent","alternate","newTest","patternIndex","inCharSet","pattern","flags","RegExp","assignmentOperators","updateOperators","assignmentPrecedence","updateNodeTypes","updateBinariesToAssignments","values","op","some","BLOCKED_PROTO_PROPERTIES","SafeEval","evalAst","ast","subs","evalBinaryExpression","evalCompound","evalConditionalExpression","evalIdentifier","evalLiteral","evalMemberExpression","evalUnaryExpression","evalArrayExpression","evalCallExpression","evalAssignmentExpression","SyntaxError","hasOwn","ReferenceError","typeof","el","func","item","unshift","NewError","avoidNew","otherTypeCallback","optObj","resultType","flatten","wrap","sandbox","eval","ignoreEvalErrors","parent","parentProperty","autostart","evaluate","currParent","currParentProperty","currResultType","currEval","currSandbox","currOtherTypeCallback","toPathString","exprList","toPathArray","shift","_hasParentSelector","_trace","ea","isParentSelector","hasArrExpr","rslt","valOrPath","_getPreferredOutput","pointer","toPointer","_handleCallback","fullRetObj","preferredOutput","parentPropName","literalPriority","retObj","loc","addRet","elems","_walk","_slice","safeLoc","nested","exec","npath","nvalue","_eval","at","addType","valueType","locProp","part","rett","tl","tt","splice","step","_v","_vname","_$_parentProperty","_$_parent","_$_property","_$_root","_$_v","containsPath","_$_path","scriptCacheKey","cache","script","replaceAll","safeVm","Script","vm","CurrEval","runInNewContext","pathArr","subx","$0","$1","ups","exp","match","keyMap","funcs","conditionCb","il","moveToAnotherArray","vr","fString","lastStatementEnd"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"background/background.bundle.js","mappings":"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","sources":["webpack://@joclaim/browser-extension-sdk/./src/utils/logger/debugLogger.js","webpack://@joclaim/browser-extension-sdk/./src/utils/logger/index.js","webpack://@joclaim/browser-extension-sdk/./node_modules/ieee754/index.js","webpack://@joclaim/browser-extension-sdk/./node_modules/buffer/index.js","webpack://@joclaim/browser-extension-sdk/./src/utils/websocket-polyfill.js","webpack://@joclaim/browser-extension-sdk/./node_modules/base64-js/index.js","webpack://@joclaim/browser-extension-sdk/./node_modules/process/browser.js","webpack://@joclaim/browser-extension-sdk/./src/utils/logger/LogEntry.js","webpack://@joclaim/browser-extension-sdk/./src/utils/logger/LoggerService.js","webpack://@joclaim/browser-extension-sdk/./src/utils/logger/constants.js","webpack://@joclaim/browser-extension-sdk/./src/utils/constants/constants.js","webpack://@joclaim/browser-extension-sdk/./src/utils/constants/interfaces.js","webpack://@joclaim/browser-extension-sdk/./src/utils/polyfills.js","webpack://@joclaim/browser-extension-sdk/webpack/bootstrap","webpack://@joclaim/browser-extension-sdk/webpack/runtime/compat get default export","webpack://@joclaim/browser-extension-sdk/webpack/runtime/define property getters","webpack://@joclaim/browser-extension-sdk/webpack/runtime/harmony module decorator","webpack://@joclaim/browser-extension-sdk/webpack/runtime/hasOwnProperty shorthand","webpack://@joclaim/browser-extension-sdk/webpack/runtime/make namespace object","webpack://@joclaim/browser-extension-sdk/./src/utils/offscreen-manager.js","webpack://@joclaim/browser-extension-sdk/./node_modules/jsonpath-plus/dist/index-browser-esm.js","webpack://@joclaim/browser-extension-sdk/./src/background/background.js"],"sourcesContent":["// Local debug logger for development\n// Usage: import { debugLogger, DebugLogType } from './debugLogger';\n\nexport const DebugLogType = Object.freeze({\n BACKGROUND: \"background\",\n CONTENT: \"content\",\n POPUP: \"popup\",\n INIT: \"init\",\n VERIFICATION: \"verification\",\n FETCH: \"fetch\",\n PROVIDER: \"provider\",\n CLAIM: \"claim\",\n PROOF: \"proof\",\n OFFSCREEN: \"offscreen\",\n POLYFILLS: \"polyfills\",\n SESSION_TIMER: \"session-timer\",\n});\n\nclass DebugLogger {\n constructor() {\n this.enabled = true;\n this.allowedTypes = new Set(); // If empty, allow all types\n }\n\n enable() {\n this.enabled = true;\n }\n\n disable() {\n this.enabled = false;\n }\n\n setTypes(typesArray) {\n if (!Array.isArray(typesArray)) return;\n this.allowedTypes = new Set(typesArray);\n }\n\n clearTypes() {\n this.allowedTypes.clear();\n }\n\n log(type, ...args) {\n if (!this.enabled) return;\n if (this.allowedTypes.size > 0 && !this.allowedTypes.has(type)) return;\n const color = DebugLogger.typeColor(type);\n // eslint-disable-next-line no-console\n console.log(`%c[${type}][INFO]`, `color: ${color}; font-weight: bold;`, ...args);\n }\n\n info(type, ...args) {\n if (!this.enabled) return;\n if (this.allowedTypes.size > 0 && !this.allowedTypes.has(type)) return;\n const color = DebugLogger.typeColor(type);\n // eslint-disable-next-line no-console\n console.info(`%c[${type}][INFO]`, `color: ${color}; font-weight: bold;`, ...args);\n }\n\n warn(type, ...args) {\n if (!this.enabled) return;\n if (this.allowedTypes.size > 0 && !this.allowedTypes.has(type)) return;\n const color = DebugLogger.typeColor(type, \"warn\");\n // eslint-disable-next-line no-console\n console.warn(`%c[${type}][WARN]`, `color: ${color}; font-weight: bold;`, ...args);\n }\n\n error(type, ...args) {\n if (!this.enabled) return;\n if (this.allowedTypes.size > 0 && !this.allowedTypes.has(type)) return;\n const color = DebugLogger.typeColor(type, \"error\");\n // eslint-disable-next-line no-console\n console.error(`%c[${type}][ERROR]`, `color: ${color}; font-weight: bold;`, ...args);\n }\n\n static typeColor(type, level = \"info\") {\n // Assign colors to types for better visibility\n const colors = {\n background: \"#0074D9\",\n content: \"#2ECC40\",\n popup: \"#FF851B\",\n init: \"#B10DC9\",\n verification: \"#FF4136\",\n fetch: \"#39CCCC\",\n provider: \"#FFDC00\",\n claim: \"#7FDBFF\",\n proof: \"#85144b\",\n offscreen: \"#AAAAAA\",\n polyfills: \"#0074D9\",\n \"session-timer\": \"#2ECC40\",\n };\n const levelColors = {\n info: \"\", // default, use type color\n warn: \"#FFA500\", // orange\n error: \"#FF0000\", // red\n };\n // Try to match a known type, else use gray\n const key = Object.keys(colors).find((k) => type.toLowerCase().includes(k));\n let baseColor = colors[key] || \"#888888\";\n if (level !== \"info\") {\n baseColor = levelColors[level] || baseColor;\n }\n return baseColor;\n }\n}\n\nexport const debugLogger = new DebugLogger();\n","import { loggerService, createContextLogger } from \"./LoggerService\";\nimport { debugLogger } from \"./debugLogger\";\n\n// Enable debugLogger in development, disable in production\nif (typeof process !== \"undefined\" && process.env && process.env.NODE_ENV === \"production\") {\n debugLogger.disable();\n} else {\n debugLogger.enable();\n}\n\nexport { DebugLogType } from \"./debugLogger\";\nexport { debugLogger };\nexport { LogEntry } from \"./LogEntry\";\nexport { loggerService, createContextLogger };\nexport { LOGGING_ENDPOINTS, LOG_TYPES, LOG_SOURCES, LOG_LEVEL, EVENT_TYPES } from \"./constants\";\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","/**\n * WebSocket Polyfill\n *\n * This module provides a WebSocket polyfill that uses the browser's native WebSocket when available\n * or provides a mock implementation for background scripts where window is not available.\n * It ensures compatibility with Node.js-style WebSocket usage patterns.\n */\n\n// Check if we're in a context with window (browser/content script) or not (background script)\nconst isBackgroundContext = typeof window === \"undefined\";\nimport { debugLogger, DebugLogType } from \"./logger\";\n\n// Create either a real WebSocket wrapper or a mock implementation\nlet WebSocketPolyfill;\n\nif (!isBackgroundContext) {\n // Browser context - use the native WebSocket\n const BrowserWebSocket = window.WebSocket;\n\n WebSocketPolyfill = class extends BrowserWebSocket {\n constructor(url, protocols) {\n debugLogger.info(\n DebugLogType.POLYFILLS,\n \"[WEBSOCKET-POLYFILL] Creating WebSocket with URL:\",\n url,\n );\n super(url, protocols);\n\n // Add event handling compatibility\n this.addEventListener(\"error\", (event) => {\n if (typeof this.onerror === \"function\") {\n this.onerror(event);\n }\n });\n\n this.addEventListener(\"open\", (event) => {\n if (typeof this.onopen === \"function\") {\n this.onopen(event);\n }\n });\n\n this.addEventListener(\"close\", (event) => {\n if (typeof this.onclose === \"function\") {\n this.onclose(event);\n }\n });\n\n this.addEventListener(\"message\", (event) => {\n if (typeof this.onmessage === \"function\") {\n this.onmessage(event);\n }\n });\n }\n\n // Add a promise-based send method expected by some libraries\n sendPromise(data) {\n return new Promise((resolve, reject) => {\n try {\n this.send(data);\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n }\n };\n\n debugLogger.info(\n DebugLogType.POLYFILLS,\n \"[WEBSOCKET-POLYFILL] Using browser WebSocket implementation\",\n );\n} else {\n // Background script context - create a mock implementation\n WebSocketPolyfill = class {\n constructor(url, protocols) {\n debugLogger.info(\n DebugLogType.POLYFILLS,\n \"[WEBSOCKET-POLYFILL] Creating mock WebSocket for background context\",\n );\n this.url = url;\n this.protocols = protocols;\n this.readyState = 3; // CLOSED\n\n // Simulate being closed immediately\n setTimeout(() => {\n if (typeof this.onclose === \"function\") {\n this.onclose({ code: 1000, reason: \"WebSockets not supported in background context\" });\n }\n }, 0);\n }\n\n // No-op methods\n send() {\n debugLogger.warn(\n DebugLogType.POLYFILLS,\n \"[WEBSOCKET-POLYFILL] Cannot use WebSockets in background context\",\n );\n throw new Error(\"WebSockets are not available in background context\");\n }\n\n close() {\n // Already closed, no-op\n }\n\n sendPromise() {\n return Promise.reject(new Error(\"WebSockets are not available in background context\"));\n }\n\n addEventListener() {\n // No-op\n }\n\n removeEventListener() {\n // No-op\n }\n };\n\n debugLogger.info(\n DebugLogType.POLYFILLS,\n \"[WEBSOCKET-POLYFILL] Using mock WebSocket implementation for background context\",\n );\n}\n\n// Export the WebSocket class and constructor\nexport const WebSocket = WebSocketPolyfill;\nexport default WebSocketPolyfill;\n\n// For CommonJS compatibility\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports = WebSocketPolyfill;\n module.exports.WebSocket = WebSocketPolyfill;\n module.exports.default = WebSocketPolyfill;\n}\n\ndebugLogger.info(DebugLogType.POLYFILLS, \"[WEBSOCKET-POLYFILL] WebSocket polyfill initialized\");\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","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/**\n * Represents a log entry to be sent to the logging service.\n */\nexport class LogEntry {\n constructor({\n sessionId,\n providerId,\n appId,\n logLine,\n type,\n eventType,\n logLevel,\n source,\n tabId,\n url,\n meta,\n time = null,\n deviceId,\n }) {\n this.sessionId = sessionId;\n this.providerId = providerId;\n this.appId = appId;\n this.logLine = logLine;\n this.type = type;\n this.eventType = eventType;\n this.logLevel = logLevel;\n this.source = source;\n this.tabId = tabId;\n this.url = url;\n this.meta = meta || undefined;\n this.time = time || new Date();\n this.deviceId = deviceId;\n }\n\n toJson() {\n const json = {\n logLine: this.logLine,\n ts: LogEntry.fromDateTimeToTimeStamp(this.time),\n logLevel: this.logLevel,\n sessionId: this.sessionId,\n providerId: this.providerId,\n appId: this.appId,\n source: this.source,\n deviceId: this.deviceId,\n };\n\n // Only include optional fields if they exist\n if (this.type) json.type = this.type;\n if (this.eventType) json.eventType = this.eventType;\n if (this.tabId) json.tabId = this.tabId;\n if (this.url) json.url = this.url;\n if (this.meta) json.meta = this.meta;\n\n return json;\n }\n\n static fromDateTimeToTimeStamp(dateTime) {\n const ms = dateTime.getTime();\n return (ms * 1000000).toString();\n }\n}\n","import {\n LOGGING_ENDPOINTS,\n DEFAULT_LOG_CONFIG,\n LOG_LEVEL,\n LOG_LEVEL_MAP,\n LOG_CONFIG_STORAGE_KEY,\n} from \"./constants\";\nimport { LogEntry } from \"./LogEntry\";\n\nexport class LoggerService {\n constructor() {\n this.logs = [];\n this.isSending = false;\n this.maxBatchSize = 20;\n this.flushInterval = 5000;\n this.flushIntervalId = null;\n\n this.config = { ...DEFAULT_LOG_CONFIG };\n this.deviceId = null;\n\n // Load and live-sync config from chrome.storage when available\n try {\n if (typeof chrome !== \"undefined\" && chrome.storage?.local) {\n chrome.storage.local.get([LOG_CONFIG_STORAGE_KEY], (res) => {\n const cfg = res?.[LOG_CONFIG_STORAGE_KEY];\n if (cfg && typeof cfg === \"object\") {\n this.setConfig(cfg);\n }\n });\n chrome.storage.onChanged.addListener((changes, area) => {\n if (area === \"local\" && changes[LOG_CONFIG_STORAGE_KEY]) {\n const newCfg = changes[LOG_CONFIG_STORAGE_KEY].newValue || {};\n this.setConfig(newCfg);\n }\n });\n }\n } catch {}\n\n this.startFlushInterval();\n }\n\n setConfig(partial) {\n this.config = { ...this.config, ...partial };\n }\n\n startFlushInterval() {\n if (this.flushIntervalId) clearInterval(this.flushIntervalId);\n this.flushIntervalId = setInterval(() => this.flush(), this.flushInterval);\n }\n\n stopFlushInterval() {\n if (this.flushIntervalId) {\n clearInterval(this.flushIntervalId);\n this.flushIntervalId = null;\n }\n }\n\n async getDeviceLoggingId() {\n if (this.deviceId) return this.deviceId;\n try {\n if (typeof chrome !== \"undefined\" && chrome.storage) {\n const result = await chrome.storage.local.get([\"reclaim_device_id\"]);\n if (result.reclaim_device_id) {\n this.deviceId = result.reclaim_device_id;\n return this.deviceId;\n }\n }\n } catch {}\n this.deviceId =\n typeof crypto !== \"undefined\" && crypto.randomUUID ? crypto.randomUUID() : String(Date.now());\n try {\n if (typeof chrome !== \"undefined\" && chrome.storage) {\n await chrome.storage.local.set({ reclaim_device_id: this.deviceId });\n }\n } catch {}\n return this.deviceId;\n }\n\n addLog(logEntry) {\n this.logs.push(logEntry);\n if (this.logs.length >= this.maxBatchSize) this.flush();\n }\n\n shouldLog(requestedLevel) {\n const configLevel = LOG_LEVEL_MAP[this.config.logLevel] || LOG_LEVEL.INFO;\n\n // Hierarchical check: request level must be <= config level\n // If config is INFO (10), only INFO (10) passes\n // If config is DEBUG (20), INFO (10) and DEBUG (20) pass\n // If config is ALL (30), everything passes\n return requestedLevel <= configLevel;\n }\n\n emitToConsole(logLevel, message, meta) {\n const prefix = `[${logLevel}]`;\n const line = `${prefix} ${message}`;\n if (meta) {\n console.log(line, meta);\n } else {\n console.log(line);\n }\n }\n\n log({\n message,\n logLevel,\n type,\n eventType,\n meta,\n sessionId,\n providerId,\n appId,\n source,\n tabId,\n url,\n }) {\n // Validate required fields\n if (!message || !logLevel) {\n console.error(\"Logger: message and logLevel are required\");\n return;\n }\n\n // Check if we should log this level\n if (!this.shouldLog(logLevel)) {\n return;\n }\n\n // Console output\n\n if (this.config.consoleEnabled) {\n this.emitToConsole(logLevel, message, meta);\n }\n\n // Backend logging\n const entry = new LogEntry({\n sessionId: sessionId || \"unknown\",\n providerId: providerId || \"unknown\",\n appId: appId || \"unknown\",\n logLine: message,\n type,\n eventType,\n logLevel,\n source: source || this.config.source,\n tabId,\n url,\n meta,\n time: new Date(),\n });\n this.addLog(entry);\n }\n\n async flush() {\n if (this.logs.length === 0 || this.isSending) return;\n\n const logsToSend = [...this.logs];\n this.logs = [];\n\n try {\n this.isSending = true;\n await this.sendLogs(logsToSend);\n } catch (error) {\n console.error(\"Error flushing logs:\", error);\n this.logs = [...this.logs, ...logsToSend];\n } finally {\n this.isSending = false;\n }\n }\n\n async sendLogs(entries) {\n if (!entries?.length) return;\n\n const deviceId = await this.getDeviceLoggingId();\n const formattedLogs = entries.map((e) => {\n const obj = e.toJson();\n obj.deviceId = obj.deviceId || deviceId;\n return obj;\n });\n\n const body = JSON.stringify({\n logs: formattedLogs,\n source: this.config.source,\n deviceId,\n });\n\n const res = await fetch(LOGGING_ENDPOINTS.DIAGNOSTIC_LOGGING, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body,\n });\n\n if (!res.ok) {\n console.error(`Failed to send ${entries.length} logs`, await res.text());\n }\n }\n}\n\nexport const loggerService = new LoggerService();\n\n// Create a scoped logger to avoid repeating context\nexport const createContextLogger = (initial = {}) => {\n const ctx = {\n sessionId: \"unknown\",\n providerId: \"unknown\",\n appId: \"unknown\",\n source: loggerService.config?.source || \"reclaim-extension-sdk\",\n ...initial,\n };\n\n return {\n get context() {\n return { ...ctx };\n },\n\n // Update context anytime (partial updates supported)\n setContext(partial = {}) {\n Object.assign(ctx, partial);\n },\n\n // Main log method - pass object with message, logLevel, and optional fields\n log(opts) {\n loggerService.log({ ...ctx, ...opts });\n },\n\n // Convenience methods (optional, can be removed if you only want .log())\n info(opts = {}) {\n loggerService.log({ ...ctx, logLevel: \"INFO\", ...opts });\n },\n debug(opts = {}) {\n loggerService.log({ ...ctx, logLevel: \"DEBUG\", ...opts });\n },\n all(opts = {}) {\n loggerService.log({ ...ctx, logLevel: \"ALL\", ...opts });\n },\n error(opts = {}) {\n loggerService.log({ ...ctx, logLevel: \"ALL\", ...opts });\n },\n };\n};\n","export const LOGGING_ENDPOINTS = {\n DIAGNOSTIC_LOGGING: \"http://localhost:8001/api/logs\",\n};\n\nexport const LOG_TYPES = {\n BACKGROUND: \"reclaim_browser_extension.BackgroundProcess\",\n CONTENT: \"reclaim_browser_extension.ContentScript\",\n POPUP: \"reclaim_browser_extension.Popup\",\n INIT: \"reclaim_browser_extension.Initialization\",\n VERIFICATION: \"reclaim_browser_extension.Verification\",\n FETCH_DATA: \"reclaim_browser_extension.FetchData\",\n PROVIDER_DATA: \"reclaim_browser_extension.ProviderData\",\n CLAIM_CREATION: \"reclaim_browser_extension.ClaimCreation\",\n PROOF_GENERATION: \"reclaim_browser_extension.ProofGeneration\",\n PROOF_SUBMISSION: \"reclaim_browser_extension.ProofSubmission\",\n PROOF_VERIFICATION: \"reclaim_browser_extension.ProofVerification\",\n OFFSCREEN: \"reclaim_browser_extension.Offscreen\",\n};\n\nexport const LOG_SOURCES = {\n BACKGROUND: \"background\",\n CONTENT: \"content\",\n OFFSCREEN: \"offscreen\",\n POPUP: \"popup\",\n INJECTION: \"injection\",\n};\n\nexport const EVENT_TYPES = {\n IS_RECLAIM_EXTENSION_SDK: \"IS_RECLAIM_EXTENSION_SDK\",\n VERIFICATION_FLOW_STARTED: \"VERIFICATION_FLOW_STARTED\",\n RECLAIM_VERIFICATION_DISMISSED: \"RECLAIM_VERIFICATION_DISMISSED\",\n RECLAIM_VERIFICATION_PROVIDER_LOAD_EXCEPTION: \"RECLAIM_VERIFICATION_PROVIDER_LOAD_EXCEPTION\",\n REQUEST_MATCHED: \"REQUEST_MATCHED\",\n RESPONSE_MATCH_FAILED: \"RESPONSE_MATCH_FAILED\",\n X_PATH_MATCH_REQUIREMENT_FAILED: \"X_PATH_MATCH_REQUIREMENT_FAILED\",\n JSON_PATH_MATCH_REQUIREMENT_FAILED: \"JSON_PATH_MATCH_REQUIREMENT_FAILED\",\n REGEX_MATCH_REQUIREMENT_FAILED: \"REGEX_MATCH_REQUIREMENT_FAILED\",\n FILTERED_REQUEST_FOUND: \"FILTERED_REQUEST_FOUND\",\n FILTER_REQUEST_ERROR: \"FILTER_REQUEST_ERROR\",\n STARTING_CLAIM_CREATION: \"STARTING_CLAIM_CREATION\",\n CLAIM_CREATION_STARTED: \"CLAIM_CREATION_STARTED\",\n CLAIM_CREATION_SUCCESS: \"CLAIM_CREATION_SUCCESS\",\n CLAIM_CREATION_FAILED: \"CLAIM_CREATION_FAILED\",\n CLAIM_PARAMETER_VALIDATION_FAILED_EXCEPTION: \"CLAIM_PARAMETER_VALIDATION_FAILED_EXCEPTION\",\n OFFSCREEN_DOCUMENT_READY: \"OFFSCREEN_DOCUMENT_READY\",\n OFFSCREEN_DOCUMENT_NOT_READY_EXCEPTION: \"OFFSCREEN_DOCUMENT_NOT_READY_EXCEPTION\",\n PROOF_GENERATION_STARTED: \"PROOF_GENERATION_STARTED\",\n PROOF_GENERATION_SUCCESS: \"PROOF_GENERATION_SUCCESS\",\n PROOF_GENERATION_ABORTED: \"PROOF_GENERATION_ABORTED\",\n PROOF_GENERATION_FAILED: \"PROOF_GENERATION_FAILED\",\n RESULT_RECEIVED: \"RESULT_RECEIVED\",\n SUBMITTING_PROOF: \"SUBMITTING_PROOF\",\n SUBMITTING_PROOF_TO_CALLBACK_URL: \"SUBMITTING_PROOF_TO_CALLBACK_URL\",\n SUBMITTING_PROOF_TO_CALLBACK_URL_SUCCESS: \"SUBMITTING_PROOF_TO_CALLBACK_URL_SUCCESS\",\n SUBMITTING_PROOF_TO_CALLBACK_URL_FAILED: \"SUBMITTING_PROOF_TO_CALLBACK_URL_FAILED\",\n PROOF_SUBMISSION_FAILED: \"PROOF_SUBMISSION_FAILED\",\n PROOF_SUBMITTED: \"PROOF_SUBMITTED\",\n VERIFICATION_FLOW_FAILED: \"VERIFICATION_FLOW_FAILED\",\n TAB_NOT_MANAGED_BY_EXTENSION_EXCEPTION: \"TAB_NOT_MANAGED_BY_EXTENSION_EXCEPTION\",\n INJECTION_SCRIPT_SET_IN_LOCAL_STORAGE_FAILED: \"INJECTION_SCRIPT_SET_IN_LOCAL_STORAGE_FAILED\",\n VERIFICATION_POPUP_ERROR: \"VERIFICATION_POPUP_ERROR\",\n UPDATE_SESSION_STATUS_ERROR: \"UPDATE_SESSION_STATUS_ERROR\",\n};\n\n// Numeric levels for easy threshold checks\nexport const LOG_LEVEL = {\n INFO: 10,\n DEBUG: 20,\n ALL: 30,\n};\n\nexport const LOG_LEVEL_MAP = {\n INFO: LOG_LEVEL.INFO,\n DEBUG: LOG_LEVEL.DEBUG,\n ALL: LOG_LEVEL.ALL,\n};\n\nexport const DEFAULT_LOG_CONFIG = {\n logLevel: \"INFO\", // \"INFO\" | \"DEBUG\" | \"ALL\" - applies to both console and backend\n consoleEnabled: false, // Enable/disable console logging\n source: \"reclaim-extension-sdk\",\n};\n\nexport const LOG_CONFIG_STORAGE_KEY = \"reclaim_extension_sdk_log_config\";\n","export const BACKEND_URL = \"http://localhost:8001\";\n\nexport const API_ENDPOINTS = {\n PROVIDER_URL: (providerId) => `${BACKEND_URL}/api/providers/${providerId}`,\n SUBMIT_PROOF: (sessionId) => `${BACKEND_URL}/session/${sessionId}/proof`,\n UPDATE_SESSION_STATUS: () => `${BACKEND_URL}/api/sdk/update/session/`,\n STATUS_URL: (sessionId) => `${BACKEND_URL}/api/sdk/session/${sessionId}`,\n};\n","/**\n * @typedef {Object} TemplateData\n * @property {string} sessionId - Unique identifier for the session\n * @property {string} providerId - Provider identifier\n * @property {string} applicationId - Application identifier\n * @property {string} signature - Signature for authentication\n * @property {string} timestamp - Timestamp of the request\n * @property {string} callbackUrl - URL to call back after verification\n * @property {string} context - Context data as JSON string\n * @property {Object} parameters - Additional parameters\n * @property {string} redirectUrl - URL to redirect after completion\n * @property {boolean} acceptAiProviders - Whether to accept AI providers\n * @property {string} sdkVersion - SDK version\n * @property {boolean} jsonProofResponse - Whether to return proof as JSON\n */\n\nexport const JOCLAIM_SDK_ACTIONS = {\n CHECK_EXTENSION: \"JOCLAIM_EXTENSION_CHECK\",\n EXTENSION_RESPONSE: \"JOCLAIM_EXTENSION_RESPONSE\",\n START_VERIFICATION: \"JOCLAIM_START_VERIFICATION\",\n VERIFICATION_STARTED: \"JOCLAIM_VERIFICATION_STARTED\",\n VERIFICATION_COMPLETED: \"JOCLAIM_VERIFICATION_COMPLETED\",\n VERIFICATION_FAILED: \"JOCLAIM_VERIFICATION_FAILED\",\n CANCEL_VERIFICATION: \"JOCLAIM_CANCEL_VERIFICATION\",\n SET_PUBLIC_DATA: \"JOCLAIM_SET_PUBLIC_DATA\",\n PARAMETERS_UPDATE: \"JOCLAIM_PARAMETERS_UPDATE\",\n PARAMETERS_GET: \"JOCLAIM_PARAMETERS_GET\",\n REPORT_PROVIDER_ERROR: \"JOCLAIM_REPORT_PROVIDER_ERROR\",\n SET_EXPECT_MANY_CLAIMS: \"JOCLAIM_SET_EXPECT_MANY_CLAIMS\",\n REQUEST_CLAIM: \"JOCLAIM_REQUEST_CLAIM\",\n SET_LOG_CONFIG: \"JOCLAIM_SET_LOG_CONFIG\",\n};\n\nexport const JOCLAIM_SESSION_STATUS = {\n SESSION_INIT: \"SESSION_INIT\",\n SESSION_STARTED: \"SESSION_STARTED\",\n USER_INIT_VERIFICATION: \"USER_INIT_VERIFICATION\",\n USER_STARTED_VERIFICATION: \"USER_STARTED_VERIFICATION\",\n PROOF_GENERATION_STARTED: \"PROOF_GENERATION_STARTED\",\n PROOF_GENERATION_SUCCESS: \"PROOF_GENERATION_SUCCESS\",\n PROOF_GENERATION_FAILED: \"PROOF_GENERATION_FAILED\",\n PROOF_SUBMITTED: \"PROOF_SUBMITTED\",\n PROOF_SUBMISSION_FAILED: \"PROOF_SUBMISSION_FAILED\",\n PROOF_MANUAL_VERIFICATION_SUBMITED: \"PROOF_MANUAL_VERIFICATION_SUBMITED\",\n};\n\nexport const MESSAGE_SOURCES = {\n CONTENT_SCRIPT: \"content-script\",\n BACKGROUND: \"background\",\n OFFSCREEN: \"offscreen\",\n};\n\nexport const MESSAGE_ACTIONS = {\n // Proof generation actions\n START_VERIFICATION: \"START_VERIFICATION\",\n CANCEL_VERIFICATION: \"CANCEL_VERIFICATION\",\n GENERATE_PROOF_REQUEST: \"GENERATE_PROOF_REQUEST\",\n CLAIM_CREATION_REQUESTED: \"CLAIM_CREATION_REQUESTED\",\n CLAIM_CREATION_SUCCESS: \"CLAIM_CREATION_SUCCESS\",\n CLAIM_CREATION_FAILED: \"CLAIM_CREATION_FAILED\",\n PROOF_GENERATION_STARTED: \"PROOF_GENERATION_STARTED\",\n PROOF_GENERATION_SUCCESS: \"PROOF_GENERATION_SUCCESS\",\n PROOF_GENERATION_FAILED: \"PROOF_GENERATION_FAILED\",\n PROOF_SUBMITTED: \"PROOF_SUBMITTED\",\n PROOF_SUBMISSION_FAILED: \"PROOF_SUBMISSION_FAILED\",\n GENERATE_PROOF: \"GENERATE_PROOF\",\n GENERATED_PROOF_RESPONSE: \"GENERATED_PROOF_RESPONSE\",\n GENERATE_CLAIM_ON_ATTESTOR: \"GENERATE_CLAIM_ON_ATTESTOR\",\n GET_PRIVATE_KEY: \"GET_PRIVATE_KEY\",\n GET_PRIVATE_KEY_RESPONSE: \"GET_PRIVATE_KEY_RESPONSE\",\n\n // UI actions\n SHOW_PROVIDER_VERIFICATION_POPUP: \"SHOW_PROVIDER_VERIFICATION_POPUP\",\n OFFSCREEN_DOCUMENT_READY: \"OFFSCREEN_DOCUMENT_READY\",\n\n // Offscreen actions\n GENERATE_PROOF_RESPONSE: \"GENERATE_PROOF_RESPONSE\",\n PING_OFFSCREEN: \"PING_OFFSCREEN\",\n\n // Background actions\n CLOSE_CURRENT_TAB: \"CLOSE_CURRENT_TAB\",\n GET_CURRENT_TAB_ID: \"GET_CURRENT_TAB_ID\",\n // Content script actions\n REQUEST_PROVIDER_DATA: \"REQUEST_PROVIDER_DATA\",\n PROVIDER_DATA_READY: \"PROVIDER_DATA_READY\",\n CONTENT_SCRIPT_LOADED: \"CONTENT_SCRIPT_LOADED\",\n SHOULD_INITIALIZE: \"SHOULD_INITIALIZE\",\n CHECK_IF_MANAGED_TAB: \"CHECK_IF_MANAGED_TAB\",\n\n // Interceptor actions\n FILTERED_REQUEST_FOUND: \"FILTERED_REQUEST_FOUND\",\n INTERCEPTED_REQUEST_AND_RESPONSE: \"INTERCEPTED_REQUEST_AND_RESPONSE\",\n\n // Injection script actions\n UPDATE_PUBLIC_DATA: \"UPDATE_PUBLIC_DATA\",\n UPDATE_EXPECT_MANY_CLAIMS: \"UPDATE_EXPECT_MANY_CLAIMS\",\n GET_PARAMETERS: \"GET_PARAMETERS\",\n REPORT_PROVIDER_ERROR: \"REPORT_PROVIDER_ERROR\",\n REQUEST_CLAIM: \"REQUEST_CLAIM\",\n\n // Injection script actions\n INJECT_VIA_SCRIPTING: \"INJECT_VIA_SCRIPTING\",\n};\n\n/**\n * @typedef {Object} ProviderData\n * @property {string} providerId - Provider ID\n * @property {string} name - Provider name\n * @property {string} description - Provider description\n * @property {string} logoUrl - URL to provider logo\n * @property {boolean} disableRequestReplay - Whether request replay is disabled\n * @property {string} loginUrl - URL to provider login page\n * @property {string} customInjection - Custom injection code\n * @property {boolean} isApproved - Whether provider is approved\n * @property {string} geoLocation - Geo location\n * @property {string} providerType - Provider type\n * @property {boolean} isVerified - Whether provider is verified\n * @property {string} injectionType - Injection type\n * @property {Object} userAgent - User agent info\n * @property {string} userAgent.ios - iOS user agent\n * @property {string} userAgent.android - Android user agent\n * @property {boolean} isActive - Whether provider is active\n * @property {string|null} expectedPageUrl - Expected page URL\n * @property {string|null} pageTitle - Page title\n * @property {string|null} stepsToFollow - Steps to follow\n * @property {number} usedInCount - Number of times used\n * @property {string|null} overseerUid - Overseer UID\n * @property {string|null} overseerNote - Overseer note\n * @property {Array<RequestData>} requestData - Request data\n */\n\n/**\n * @typedef {Object} RequestData\n * @property {string} url - Request URL\n * @property {string} expectedPageUrl - Expected page URL\n * @property {string} urlType - URL type\n * @property {string} method - HTTP method\n * @property {Array<ResponseMatch>} responseMatches - Response matches\n * @property {Array<ResponseRedaction>} responseRedactions - Response redactions\n * @property {BodySniff} bodySniff - Body sniff\n * @property {string} requestHash - Request hash\n * @property {string|null} additionalClientOptions - Additional client options\n */\n\n/**\n * @typedef {Object} ResponseMatch\n * @property {string} value - Match value\n * @property {string} type - Match type\n * @property {boolean} invert - Whether to invert the match\n * @property {string|null} description - Match description\n * @property {number|null} order - Match order\n */\n\n/**\n * @typedef {Object} ResponseRedaction\n * @property {string} xPath - XPath\n * @property {string} jsonPath - JSON path\n * @property {string} regex - Regular expression\n * @property {string} hash - Hash\n */\n\n/**\n * @typedef {Object} BodySniff\n * @property {boolean} enabled - Whether body sniffing is enabled\n * @property {string} template - Body template\n */\n","// Polyfills for browser and service worker environments\nimport { Buffer } from \"buffer\";\nimport process from \"process\";\nimport { debugLogger, DebugLogType } from \"./logger\";\n\n// Skip WebSocket import for content script\n// import { WebSocket } from './websocket-polyfill';\n\n// Define a safe global object that works across environments\nconst getGlobalObject = () => {\n if (typeof window !== \"undefined\") return window;\n if (typeof self !== \"undefined\") return self;\n if (typeof global !== \"undefined\") return global;\n return Function(\"return this\")();\n};\n\n// Get the global object\nconst global = getGlobalObject();\n\n// Check if we're in a service worker or browser environment\nconst isServiceWorker = typeof window === \"undefined\";\n// Determine if we're in content script context\nconst isContentScript = typeof document !== \"undefined\" && document.contentType !== undefined;\n\n// Make Buffer and process available globally\nglobal.Buffer = global.Buffer || Buffer;\nglobal.process = global.process || process;\n\n// Don't add WebSocket polyfill in content script context\nif (typeof global.WebSocket === \"undefined\" && !isContentScript) {\n // Dynamically import WebSocket only when needed and not in content script\n try {\n const { WebSocket } = require(\"./websocket-polyfill\");\n global.WebSocket = WebSocket;\n debugLogger.info(DebugLogType.POLYFILLS, \"WebSocket polyfill added to global\");\n } catch (e) {\n debugLogger.warn(DebugLogType.POLYFILLS, \"Failed to load WebSocket polyfill:\", e);\n }\n} else {\n if (!isContentScript) {\n debugLogger.info(DebugLogType.POLYFILLS, \"Using native WebSocket implementation\");\n } else {\n debugLogger.info(DebugLogType.POLYFILLS, \"Skipping WebSocket in content script context\");\n }\n}\n\n// Force browser mode for Node.js compatibility\nif (global.process) {\n global.process.browser = true;\n}\n\n// Handle Node.js-style require for libraries expecting WebSocket\nif (typeof global.require !== \"function\") {\n global.require = (moduleName) => {\n // Return mock implementations for common modules\n switch (moduleName) {\n case \"ws\":\n // Don't return WebSocket in content script context\n if (isContentScript) {\n debugLogger.info(DebugLogType.POLYFILLS, \"Blocking ws module in content script\");\n return {}; // Empty implementation for content script\n }\n try {\n const { WebSocket } = require(\"./websocket-polyfill\");\n return { WebSocket }; // Return our polyfill for ws\n } catch (e) {\n debugLogger.warn(DebugLogType.POLYFILLS, \"Failed to load WebSocket for ws module:\", e);\n return {};\n }\n case \"fs\":\n return global.fs;\n case \"path\":\n return global.path;\n case \"os\":\n return global.os;\n case \"crypto\":\n return global.crypto;\n case \"worker_threads\":\n return {}; // Empty implementation\n case \"koffi\":\n case \"re2\":\n return {}; // Empty implementation\n default:\n console.warn(`Mock require called for module: ${moduleName}`);\n return {};\n }\n };\n} else {\n // Don't override require if it's already defined\n const originalRequire = global.require;\n global.require = (moduleName) => {\n if (moduleName === \"ws\") {\n // Don't return WebSocket in content script context\n if (isContentScript) {\n debugLogger.info(DebugLogType.POLYFILLS, \"Blocking ws module in content script\");\n return {}; // Empty implementation for content script\n }\n try {\n const { WebSocket } = require(\"./websocket-polyfill\");\n return { WebSocket }; // Return our polyfill for ws\n } catch (e) {\n debugLogger.warn(DebugLogType.POLYFILLS, \"Failed to load WebSocket for ws module:\", e);\n return {};\n }\n }\n try {\n return originalRequire(moduleName);\n } catch (e) {\n debugLogger.warn(DebugLogType.POLYFILLS, `Failed to require module: ${moduleName}`);\n return {};\n }\n };\n}\n\n// Fix for snarkjs which tries to access process.browser\nif (typeof process !== \"undefined\") {\n process.browser = true;\n\n // Add missing process properties that some modules might need\n if (!process.version) process.version = \"v16.0.0\"; // Mock Node.js version\n if (!process.cwd) process.cwd = () => \"/\"; // Mock current working directory\n}\n\n// TextEncoder and TextDecoder are available in both browser and service worker\n// if (typeof global.TextEncoder === \"undefined\" && !isServiceWorker) {\n// const encoding = require(\"text-encoding\");\n// global.TextEncoder = encoding.TextEncoder;\n// global.TextDecoder = encoding.TextDecoder;\n// }\n\n// Handle other Node.js-specific functionality\nif (typeof global.global === \"undefined\") {\n global.global = global;\n}\n\n// Handle crypto.getRandomValues polyfill if needed\nif (typeof global.crypto === \"undefined\") {\n global.crypto = {};\n}\n\nif (typeof global.crypto.getRandomValues === \"undefined\") {\n global.crypto.getRandomValues = function (arr) {\n const bytes = new Uint8Array(arr.length);\n for (let i = 0; i < bytes.length; i++) {\n bytes[i] = Math.floor(Math.random() * 256);\n }\n return bytes;\n };\n}\n\n// Handle other potential missing WebCrypto APIs\nif (typeof global.crypto.subtle === \"undefined\") {\n debugLogger.warn(\n DebugLogType.POLYFILLS,\n \"WebCrypto subtle API not available. Some functionality may not work.\",\n );\n // Create a minimal fallback for subtle crypto\n global.crypto.subtle = {\n digest: async (algorithm, data) => {\n debugLogger.warn(\n DebugLogType.POLYFILLS,\n `Crypto subtle digest (${algorithm}) called with browser fallback`,\n );\n // This is just a minimal fallback - not secure for production\n const hashInt = Array.from(new Uint8Array(data)).reduce(\n (acc, val) => (acc * 31 + val) & 0xffffffff,\n 0,\n );\n\n // Convert to a byte array of appropriate length\n const result = new Uint8Array(32); // SHA-256 length\n for (let i = 0; i < 32; i++) {\n result[i] = (hashInt >> (i * 8)) & 0xff;\n }\n\n return result.buffer;\n },\n };\n}\n\n// Only add browser-specific polyfills if we're in a browser\nif (!isServiceWorker) {\n // Mock for Node.js domain module that attestor-core might use\n if (typeof global.domain === \"undefined\") {\n global.domain = {\n create: () => ({\n run: (fn) => fn(),\n on: () => {\n /* Empty function implementation */\n },\n bind: (fn) => fn,\n }),\n };\n }\n\n // Override URL constructor to handle node:url protocol\n const OriginalURL = global.URL;\n function CustomURL(url, base) {\n // Handle node:url protocol\n if (typeof url === \"string\" && url.startsWith(\"node:\")) {\n url = url.replace(/^node:/, \"\");\n }\n return new OriginalURL(url, base);\n }\n\n // Copy prototype and static methods safely\n CustomURL.prototype = OriginalURL.prototype;\n try {\n // Try to copy static properties, but don't fail if they're read-only\n Object.getOwnPropertyNames(OriginalURL).forEach((prop) => {\n if (prop !== \"prototype\" && prop !== \"constructor\") {\n try {\n CustomURL[prop] = OriginalURL[prop];\n } catch (e) {\n // Silently ignore errors for read-only properties\n }\n }\n });\n } catch (e) {\n debugLogger.warn(DebugLogType.POLYFILLS, \"Could not copy all URL static properties:\", e);\n }\n\n // Set the global URL to our custom implementation\n try {\n global.URL = CustomURL;\n } catch (e) {\n debugLogger.warn(DebugLogType.POLYFILLS, \"Could not override URL constructor:\", e);\n // If we can't override the URL constructor, we'll have to live with the original\n }\n}\n\n// Mock for Node.js module.require which some libraries might use\nif (typeof global.module === \"undefined\") {\n global.module = { exports: {} };\n}\n\n// Add missing fs functions that might be needed\nglobal.fs = global.fs || {\n readFileSync: (path) => {\n debugLogger.warn(DebugLogType.POLYFILLS, `Attempted to readFileSync: ${path}`);\n throw new Error(\"fs.readFileSync is not available in this environment\");\n },\n writeFileSync: (path, data) => {\n debugLogger.warn(DebugLogType.POLYFILLS, `Attempted to writeFileSync: ${path}`);\n // No-op\n },\n existsSync: (path) => {\n debugLogger.warn(DebugLogType.POLYFILLS, `Attempted to check if file exists: ${path}`);\n return false;\n },\n promises: {\n readFile: async (path) => {\n debugLogger.warn(DebugLogType.POLYFILLS, `Attempted to readFile: ${path}`);\n throw new Error(\"fs.promises.readFile is not available in this environment\");\n },\n writeFile: async (path, data) => {\n debugLogger.warn(DebugLogType.POLYFILLS, `Attempted to writeFile: ${path}`);\n // No-op\n },\n },\n};\n\n// Add missing os functions\nglobal.os = global.os || {\n tmpdir: () => \"/tmp\",\n homedir: () => \"/home/user\",\n platform: () => \"browser\",\n type: () => \"Browser\",\n cpus: () => [{ model: \"Browser CPU\", speed: 1000 }],\n totalmem: () => 8 * 1024 * 1024 * 1024, // 8GB\n freemem: () => 4 * 1024 * 1024 * 1024, // 4GB\n};\n\n// Ensure path methods are available\nglobal.path = global.path || {\n join: (...args) => args.join(\"/\").replace(/\\/+/g, \"/\"),\n resolve: (...args) => args.join(\"/\").replace(/\\/+/g, \"/\"),\n dirname: (path) => path.split(\"/\").slice(0, -1).join(\"/\") || \".\",\n basename: (path, ext) => {\n let base = path.split(\"/\").pop() || \"\";\n if (ext && base.endsWith(ext)) {\n base = base.slice(0, -ext.length);\n }\n return base;\n },\n extname: (path) => {\n const base = path.split(\"/\").pop() || \"\";\n const dotIndex = base.lastIndexOf(\".\");\n return dotIndex < 0 ? \"\" : base.slice(dotIndex);\n },\n sep: \"/\",\n};\n\n// Export for module imports\nexport default {\n Buffer,\n process,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// src/utils/offscreen-manager.js\nimport { MESSAGE_ACTIONS, MESSAGE_SOURCES } from \"./constants\";\nimport { createContextLogger } from \"./logger/LoggerService\";\nimport { LOG_LEVEL, LOG_TYPES } from \"./logger/constants\";\n\nconst offscreenLogger = createContextLogger({\n sessionId: \"unknown\",\n providerId: \"unknown\",\n appId: \"unknown\",\n source: \"reclaim-extension-sdk\",\n type: LOG_TYPES.OFFSCREEN,\n});\n\n// Track the offscreen document status\nlet offscreenReady = false;\nlet offscreenDocTimeout = null; // Used by waitForOffscreenReady's timeout\nlet offscreenCreationPromise = null;\n\n// Define the global listener first\nconst offscreenGlobalListener = (message) => {\n if (\n message?.action === MESSAGE_ACTIONS.OFFSCREEN_DOCUMENT_READY &&\n message?.source === MESSAGE_SOURCES.OFFSCREEN &&\n message?.target === MESSAGE_SOURCES.BACKGROUND\n ) {\n offscreenLogger.info({\n message: \"[OFFSCREEN-MANAGER] Received offscreen ready signal (global listener).\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n });\n\n offscreenReady = true;\n if (offscreenDocTimeout) {\n clearTimeout(offscreenDocTimeout);\n offscreenDocTimeout = null;\n }\n }\n};\n\n// Exported installer to attach the listener safely in SW context\nexport const installOffscreenReadyListener = () => {\n if (\n typeof chrome === \"undefined\" ||\n !chrome.runtime ||\n !chrome.runtime.onMessage ||\n !chrome.runtime.onMessage.addListener ||\n !chrome.runtime.onMessage.hasListener\n ) {\n return;\n }\n if (chrome.runtime.onMessage.hasListener(offscreenGlobalListener)) {\n return;\n }\n chrome.runtime.onMessage.addListener(offscreenGlobalListener);\n};\n\n// Global listener for the ready signal from offscreen document.\n// This needs to be set up immediately to catch the ready signal if the offscreen document\n// initializes and sends it before any call to ensureOffscreenDocument.\nconst setupOffscreenReadyListener = () => {\n if (\n typeof chrome === \"undefined\" ||\n !chrome.runtime ||\n !chrome.runtime.onMessage ||\n !chrome.runtime.onMessage.addListener ||\n !chrome.runtime.onMessage.hasListener\n ) {\n return;\n }\n if (chrome.runtime.onMessage.hasListener(offscreenGlobalListener)) {\n return;\n }\n chrome.runtime.onMessage.addListener(offscreenGlobalListener);\n};\n\nif (typeof chrome !== \"undefined\" && chrome.runtime && chrome.runtime.onMessage) {\n setupOffscreenReadyListener();\n}\n\n// Set up listener immediately when the module loads\nsetupOffscreenReadyListener();\n\nasync function createOffscreenDocumentInternal() {\n const offscreenUrl = chrome.runtime.getURL(\n \"joclaim-browser-extension-sdk/offscreen/offscreen.html\",\n );\n offscreenLogger.info({\n message: \"[OFFSCREEN-MANAGER] Attempting to create offscreen document with URL:\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n meta: { offscreenUrl },\n });\n try {\n await chrome.offscreen.createDocument({\n url: offscreenUrl,\n reasons: [\"DOM_PARSER\", \"IFRAME_SCRIPTING\", \"BLOBS\"], // Added BLOBS for crypto if needed\n justification:\n \"Manages DOM-dependent operations like crypto and ZK proof generation for the extension.\",\n });\n } catch (error) {\n if (\n error.message &&\n error.message.includes(\"Only a single offscreen document may be created.\")\n ) {\n offscreenLogger.info({\n message:\n \"[OFFSCREEN-MANAGER] Offscreen document already exists or creation was attempted by another part.\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n });\n // It exists, so we just need to wait for it to be ready if it's not already.\n // The ensureOffscreenDocument logic will handle waiting for readiness.\n } else {\n offscreenLogger.error({\n message: \"[OFFSCREEN-MANAGER] Error creating offscreen document:\",\n logLevel: LOG_LEVEL.ERROR,\n type: LOG_TYPES.OFFSCREEN,\n meta: { error },\n });\n throw error; // Re-throw other errors\n }\n }\n}\n\nasync function waitForOffscreenReadyInternal(timeoutMs = 15000) {\n if (offscreenReady) {\n offscreenLogger.info({\n message: \"[OFFSCREEN-MANAGER] Already ready (waitForOffscreenReadyInternal check)\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n });\n return true;\n }\n\n offscreenLogger.info({\n message:\n \"[OFFSCREEN-MANAGER] Waiting for offscreen document to be ready (timeout:- ${timeoutMs}ms)...\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n meta: { timeoutMs },\n });\n\n // Proactively ping the offscreen document.\n // This can help if the offscreen document is already running but this manager missed the initial ready signal.\n try {\n chrome.runtime.sendMessage({\n action: MESSAGE_ACTIONS.PING_OFFSCREEN,\n source: MESSAGE_SOURCES.BACKGROUND,\n target: MESSAGE_SOURCES.OFFSCREEN,\n });\n } catch (e) {\n offscreenLogger.info({\n message: \"[OFFSCREEN-MANAGER] Synchronous error sending ping:\" + e?.message,\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n meta: { error: e },\n });\n }\n\n return new Promise((resolve) => {\n if (offscreenReady) {\n // Double check after setup\n offscreenLogger.info({\n message: \"[OFFSCREEN-MANAGER] Became ready while setting up promise.\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n });\n resolve(true);\n return;\n }\n\n const listener = (message) => {\n if (\n message.action === MESSAGE_ACTIONS.OFFSCREEN_DOCUMENT_READY &&\n message.source === MESSAGE_SOURCES.OFFSCREEN &&\n message.target === MESSAGE_SOURCES.BACKGROUND\n ) {\n offscreenReady = true;\n clearTimeout(localTimeoutId);\n chrome.runtime.onMessage.removeListener(listener);\n if (offscreenDocTimeout === localTimeoutId) {\n // Clear global timeout if it's this one\n offscreenDocTimeout = null;\n }\n resolve(true);\n }\n };\n\n chrome.runtime.onMessage.addListener(listener);\n\n // Clear any previous timeout and set a new one for this wait\n if (offscreenDocTimeout) {\n clearTimeout(offscreenDocTimeout);\n }\n const localTimeoutId = setTimeout(() => {\n chrome.runtime.onMessage.removeListener(listener);\n offscreenLogger.error({\n message:\n \"[OFFSCREEN-MANAGER] Timed out waiting for offscreen document after \" +\n timeoutMs +\n \" ms.\",\n logLevel: LOG_LEVEL.ERROR,\n type: LOG_TYPES.OFFSCREEN,\n meta: { timeoutMs },\n });\n\n if (offscreenDocTimeout === localTimeoutId) {\n offscreenDocTimeout = null;\n }\n resolve(false);\n }, timeoutMs);\n offscreenDocTimeout = localTimeoutId;\n });\n}\n\nexport async function ensureOffscreenDocument(logger) {\n if (offscreenReady) {\n logger.info({\n message: \"[OFFSCREEN-MANAGER] Document already confirmed ready.\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n });\n return true;\n }\n\n // If a creation process is already underway, await its completion.\n if (offscreenCreationPromise) {\n logger.info({\n message: \"[OFFSCREEN-MANAGER] Creation already in progress, awaiting...\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n });\n await offscreenCreationPromise;\n // After creation promise resolves, it might still not be \"ready\" (message might be pending)\n // Fall through to waitForOffscreenReadyInternal\n }\n\n // Check if an offscreen document context already exists.\n // This is useful if the service worker restarted but the offscreen document persisted.\n if (chrome.runtime.getContexts) {\n const contexts = await chrome.runtime.getContexts({ contextTypes: [\"OFFSCREEN_DOCUMENT\"] });\n if (contexts.length > 0) {\n logger.info({\n message: \"[OFFSCREEN-MANAGER] Offscreen document context found.\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n });\n if (offscreenReady) return true; // Already marked ready by global listener\n // If context exists but not marked ready, wait for the signal\n logger.info({\n message: \"[OFFSCREEN-MANAGER] Context exists, but not marked ready. Waiting for signal...\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n });\n\n return await waitForOffscreenReadyInternal(5000); // Shorter timeout if context found\n }\n }\n\n // If no context found and not ready, and no creation in progress, attempt to create.\n if (!offscreenCreationPromise) {\n logger.info({\n message: \"[OFFSCREEN-MANAGER] No existing context/promise, initiating creation.\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n });\n offscreenCreationPromise = createOffscreenDocumentInternal().finally(() => {\n offscreenCreationPromise = null; // Clear promise once operation (success or fail) is done\n });\n await offscreenCreationPromise;\n }\n\n // After ensuring creation was attempted (or awaited), wait for it to become ready.\n const isReady = await waitForOffscreenReadyInternal(50000);\n if (!isReady) {\n throw new Error(\"Failed to initialize or confirm offscreen document readiness.\");\n }\n logger.info({\n message: \"[OFFSCREEN-MANAGER] Offscreen document ensured to be ready.\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.OFFSCREEN,\n });\n return true;\n}\n","/**\n * @implements {IHooks}\n */\nclass Hooks {\n /**\n * @callback HookCallback\n * @this {*|Jsep} this\n * @param {Jsep} env\n * @returns: void\n */\n /**\n * Adds the given callback to the list of callbacks for the given hook.\n *\n * The callback will be invoked when the hook it is registered for is run.\n *\n * One callback function can be registered to multiple hooks and the same hook multiple times.\n *\n * @param {string|object} name The name of the hook, or an object of callbacks keyed by name\n * @param {HookCallback|boolean} callback The callback function which is given environment variables.\n * @param {?boolean} [first=false] Will add the hook to the top of the list (defaults to the bottom)\n * @public\n */\n add(name, callback, first) {\n if (typeof arguments[0] != 'string') {\n // Multiple hook callbacks, keyed by name\n for (let name in arguments[0]) {\n this.add(name, arguments[0][name], arguments[1]);\n }\n } else {\n (Array.isArray(name) ? name : [name]).forEach(function (name) {\n this[name] = this[name] || [];\n if (callback) {\n this[name][first ? 'unshift' : 'push'](callback);\n }\n }, this);\n }\n }\n\n /**\n * Runs a hook invoking all registered callbacks with the given environment variables.\n *\n * Callbacks will be invoked synchronously and in the order in which they were registered.\n *\n * @param {string} name The name of the hook.\n * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n * @public\n */\n run(name, env) {\n this[name] = this[name] || [];\n this[name].forEach(function (callback) {\n callback.call(env && env.context ? env.context : env, env);\n });\n }\n}\n\n/**\n * @implements {IPlugins}\n */\nclass Plugins {\n constructor(jsep) {\n this.jsep = jsep;\n this.registered = {};\n }\n\n /**\n * @callback PluginSetup\n * @this {Jsep} jsep\n * @returns: void\n */\n /**\n * Adds the given plugin(s) to the registry\n *\n * @param {object} plugins\n * @param {string} plugins.name The name of the plugin\n * @param {PluginSetup} plugins.init The init function\n * @public\n */\n register() {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n plugins.forEach(plugin => {\n if (typeof plugin !== 'object' || !plugin.name || !plugin.init) {\n throw new Error('Invalid JSEP plugin format');\n }\n if (this.registered[plugin.name]) {\n // already registered. Ignore.\n return;\n }\n plugin.init(this.jsep);\n this.registered[plugin.name] = plugin;\n });\n }\n}\n\n// JavaScript Expression Parser (JSEP) 1.4.0\n\nclass Jsep {\n /**\n * @returns {string}\n */\n static get version() {\n // To be filled in by the template\n return '1.4.0';\n }\n\n /**\n * @returns {string}\n */\n static toString() {\n return 'JavaScript Expression Parser (JSEP) v' + Jsep.version;\n }\n // ==================== CONFIG ================================\n /**\n * @method addUnaryOp\n * @param {string} op_name The name of the unary op to add\n * @returns {Jsep}\n */\n static addUnaryOp(op_name) {\n Jsep.max_unop_len = Math.max(op_name.length, Jsep.max_unop_len);\n Jsep.unary_ops[op_name] = 1;\n return Jsep;\n }\n\n /**\n * @method jsep.addBinaryOp\n * @param {string} op_name The name of the binary op to add\n * @param {number} precedence The precedence of the binary op (can be a float). Higher number = higher precedence\n * @param {boolean} [isRightAssociative=false] whether operator is right-associative\n * @returns {Jsep}\n */\n static addBinaryOp(op_name, precedence, isRightAssociative) {\n Jsep.max_binop_len = Math.max(op_name.length, Jsep.max_binop_len);\n Jsep.binary_ops[op_name] = precedence;\n if (isRightAssociative) {\n Jsep.right_associative.add(op_name);\n } else {\n Jsep.right_associative.delete(op_name);\n }\n return Jsep;\n }\n\n /**\n * @method addIdentifierChar\n * @param {string} char The additional character to treat as a valid part of an identifier\n * @returns {Jsep}\n */\n static addIdentifierChar(char) {\n Jsep.additional_identifier_chars.add(char);\n return Jsep;\n }\n\n /**\n * @method addLiteral\n * @param {string} literal_name The name of the literal to add\n * @param {*} literal_value The value of the literal\n * @returns {Jsep}\n */\n static addLiteral(literal_name, literal_value) {\n Jsep.literals[literal_name] = literal_value;\n return Jsep;\n }\n\n /**\n * @method removeUnaryOp\n * @param {string} op_name The name of the unary op to remove\n * @returns {Jsep}\n */\n static removeUnaryOp(op_name) {\n delete Jsep.unary_ops[op_name];\n if (op_name.length === Jsep.max_unop_len) {\n Jsep.max_unop_len = Jsep.getMaxKeyLen(Jsep.unary_ops);\n }\n return Jsep;\n }\n\n /**\n * @method removeAllUnaryOps\n * @returns {Jsep}\n */\n static removeAllUnaryOps() {\n Jsep.unary_ops = {};\n Jsep.max_unop_len = 0;\n return Jsep;\n }\n\n /**\n * @method removeIdentifierChar\n * @param {string} char The additional character to stop treating as a valid part of an identifier\n * @returns {Jsep}\n */\n static removeIdentifierChar(char) {\n Jsep.additional_identifier_chars.delete(char);\n return Jsep;\n }\n\n /**\n * @method removeBinaryOp\n * @param {string} op_name The name of the binary op to remove\n * @returns {Jsep}\n */\n static removeBinaryOp(op_name) {\n delete Jsep.binary_ops[op_name];\n if (op_name.length === Jsep.max_binop_len) {\n Jsep.max_binop_len = Jsep.getMaxKeyLen(Jsep.binary_ops);\n }\n Jsep.right_associative.delete(op_name);\n return Jsep;\n }\n\n /**\n * @method removeAllBinaryOps\n * @returns {Jsep}\n */\n static removeAllBinaryOps() {\n Jsep.binary_ops = {};\n Jsep.max_binop_len = 0;\n return Jsep;\n }\n\n /**\n * @method removeLiteral\n * @param {string} literal_name The name of the literal to remove\n * @returns {Jsep}\n */\n static removeLiteral(literal_name) {\n delete Jsep.literals[literal_name];\n return Jsep;\n }\n\n /**\n * @method removeAllLiterals\n * @returns {Jsep}\n */\n static removeAllLiterals() {\n Jsep.literals = {};\n return Jsep;\n }\n // ==================== END CONFIG ============================\n\n /**\n * @returns {string}\n */\n get char() {\n return this.expr.charAt(this.index);\n }\n\n /**\n * @returns {number}\n */\n get code() {\n return this.expr.charCodeAt(this.index);\n }\n /**\n * @param {string} expr a string with the passed in express\n * @returns Jsep\n */\n constructor(expr) {\n // `index` stores the character number we are currently at\n // All of the gobbles below will modify `index` as we move along\n this.expr = expr;\n this.index = 0;\n }\n\n /**\n * static top-level parser\n * @returns {jsep.Expression}\n */\n static parse(expr) {\n return new Jsep(expr).parse();\n }\n\n /**\n * Get the longest key length of any object\n * @param {object} obj\n * @returns {number}\n */\n static getMaxKeyLen(obj) {\n return Math.max(0, ...Object.keys(obj).map(k => k.length));\n }\n\n /**\n * `ch` is a character code in the next three functions\n * @param {number} ch\n * @returns {boolean}\n */\n static isDecimalDigit(ch) {\n return ch >= 48 && ch <= 57; // 0...9\n }\n\n /**\n * Returns the precedence of a binary operator or `0` if it isn't a binary operator. Can be float.\n * @param {string} op_val\n * @returns {number}\n */\n static binaryPrecedence(op_val) {\n return Jsep.binary_ops[op_val] || 0;\n }\n\n /**\n * Looks for start of identifier\n * @param {number} ch\n * @returns {boolean}\n */\n static isIdentifierStart(ch) {\n return ch >= 65 && ch <= 90 ||\n // A...Z\n ch >= 97 && ch <= 122 ||\n // a...z\n ch >= 128 && !Jsep.binary_ops[String.fromCharCode(ch)] ||\n // any non-ASCII that is not an operator\n Jsep.additional_identifier_chars.has(String.fromCharCode(ch)); // additional characters\n }\n\n /**\n * @param {number} ch\n * @returns {boolean}\n */\n static isIdentifierPart(ch) {\n return Jsep.isIdentifierStart(ch) || Jsep.isDecimalDigit(ch);\n }\n\n /**\n * throw error at index of the expression\n * @param {string} message\n * @throws\n */\n throwError(message) {\n const error = new Error(message + ' at character ' + this.index);\n error.index = this.index;\n error.description = message;\n throw error;\n }\n\n /**\n * Run a given hook\n * @param {string} name\n * @param {jsep.Expression|false} [node]\n * @returns {?jsep.Expression}\n */\n runHook(name, node) {\n if (Jsep.hooks[name]) {\n const env = {\n context: this,\n node\n };\n Jsep.hooks.run(name, env);\n return env.node;\n }\n return node;\n }\n\n /**\n * Runs a given hook until one returns a node\n * @param {string} name\n * @returns {?jsep.Expression}\n */\n searchHook(name) {\n if (Jsep.hooks[name]) {\n const env = {\n context: this\n };\n Jsep.hooks[name].find(function (callback) {\n callback.call(env.context, env);\n return env.node;\n });\n return env.node;\n }\n }\n\n /**\n * Push `index` up to the next non-space character\n */\n gobbleSpaces() {\n let ch = this.code;\n // Whitespace\n while (ch === Jsep.SPACE_CODE || ch === Jsep.TAB_CODE || ch === Jsep.LF_CODE || ch === Jsep.CR_CODE) {\n ch = this.expr.charCodeAt(++this.index);\n }\n this.runHook('gobble-spaces');\n }\n\n /**\n * Top-level method to parse all expressions and returns compound or single node\n * @returns {jsep.Expression}\n */\n parse() {\n this.runHook('before-all');\n const nodes = this.gobbleExpressions();\n\n // If there's only one expression just try returning the expression\n const node = nodes.length === 1 ? nodes[0] : {\n type: Jsep.COMPOUND,\n body: nodes\n };\n return this.runHook('after-all', node);\n }\n\n /**\n * top-level parser (but can be reused within as well)\n * @param {number} [untilICode]\n * @returns {jsep.Expression[]}\n */\n gobbleExpressions(untilICode) {\n let nodes = [],\n ch_i,\n node;\n while (this.index < this.expr.length) {\n ch_i = this.code;\n\n // Expressions can be separated by semicolons, commas, or just inferred without any\n // separators\n if (ch_i === Jsep.SEMCOL_CODE || ch_i === Jsep.COMMA_CODE) {\n this.index++; // ignore separators\n } else {\n // Try to gobble each expression individually\n if (node = this.gobbleExpression()) {\n nodes.push(node);\n // If we weren't able to find a binary expression and are out of room, then\n // the expression passed in probably has too much\n } else if (this.index < this.expr.length) {\n if (ch_i === untilICode) {\n break;\n }\n this.throwError('Unexpected \"' + this.char + '\"');\n }\n }\n }\n return nodes;\n }\n\n /**\n * The main parsing function.\n * @returns {?jsep.Expression}\n */\n gobbleExpression() {\n const node = this.searchHook('gobble-expression') || this.gobbleBinaryExpression();\n this.gobbleSpaces();\n return this.runHook('after-expression', node);\n }\n\n /**\n * Search for the operation portion of the string (e.g. `+`, `===`)\n * Start by taking the longest possible binary operations (3 characters: `===`, `!==`, `>>>`)\n * and move down from 3 to 2 to 1 character until a matching binary operation is found\n * then, return that binary operation\n * @returns {string|boolean}\n */\n gobbleBinaryOp() {\n this.gobbleSpaces();\n let to_check = this.expr.substr(this.index, Jsep.max_binop_len);\n let tc_len = to_check.length;\n while (tc_len > 0) {\n // Don't accept a binary op when it is an identifier.\n // Binary ops that start with a identifier-valid character must be followed\n // by a non identifier-part valid character\n if (Jsep.binary_ops.hasOwnProperty(to_check) && (!Jsep.isIdentifierStart(this.code) || this.index + to_check.length < this.expr.length && !Jsep.isIdentifierPart(this.expr.charCodeAt(this.index + to_check.length)))) {\n this.index += tc_len;\n return to_check;\n }\n to_check = to_check.substr(0, --tc_len);\n }\n return false;\n }\n\n /**\n * This function is responsible for gobbling an individual expression,\n * e.g. `1`, `1+2`, `a+(b*2)-Math.sqrt(2)`\n * @returns {?jsep.BinaryExpression}\n */\n gobbleBinaryExpression() {\n let node, biop, prec, stack, biop_info, left, right, i, cur_biop;\n\n // First, try to get the leftmost thing\n // Then, check to see if there's a binary operator operating on that leftmost thing\n // Don't gobbleBinaryOp without a left-hand-side\n left = this.gobbleToken();\n if (!left) {\n return left;\n }\n biop = this.gobbleBinaryOp();\n\n // If there wasn't a binary operator, just return the leftmost node\n if (!biop) {\n return left;\n }\n\n // Otherwise, we need to start a stack to properly place the binary operations in their\n // precedence structure\n biop_info = {\n value: biop,\n prec: Jsep.binaryPrecedence(biop),\n right_a: Jsep.right_associative.has(biop)\n };\n right = this.gobbleToken();\n if (!right) {\n this.throwError(\"Expected expression after \" + biop);\n }\n stack = [left, biop_info, right];\n\n // Properly deal with precedence using [recursive descent](http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm)\n while (biop = this.gobbleBinaryOp()) {\n prec = Jsep.binaryPrecedence(biop);\n if (prec === 0) {\n this.index -= biop.length;\n break;\n }\n biop_info = {\n value: biop,\n prec,\n right_a: Jsep.right_associative.has(biop)\n };\n cur_biop = biop;\n\n // Reduce: make a binary expression from the three topmost entries.\n const comparePrev = prev => biop_info.right_a && prev.right_a ? prec > prev.prec : prec <= prev.prec;\n while (stack.length > 2 && comparePrev(stack[stack.length - 2])) {\n right = stack.pop();\n biop = stack.pop().value;\n left = stack.pop();\n node = {\n type: Jsep.BINARY_EXP,\n operator: biop,\n left,\n right\n };\n stack.push(node);\n }\n node = this.gobbleToken();\n if (!node) {\n this.throwError(\"Expected expression after \" + cur_biop);\n }\n stack.push(biop_info, node);\n }\n i = stack.length - 1;\n node = stack[i];\n while (i > 1) {\n node = {\n type: Jsep.BINARY_EXP,\n operator: stack[i - 1].value,\n left: stack[i - 2],\n right: node\n };\n i -= 2;\n }\n return node;\n }\n\n /**\n * An individual part of a binary expression:\n * e.g. `foo.bar(baz)`, `1`, `\"abc\"`, `(a % 2)` (because it's in parenthesis)\n * @returns {boolean|jsep.Expression}\n */\n gobbleToken() {\n let ch, to_check, tc_len, node;\n this.gobbleSpaces();\n node = this.searchHook('gobble-token');\n if (node) {\n return this.runHook('after-token', node);\n }\n ch = this.code;\n if (Jsep.isDecimalDigit(ch) || ch === Jsep.PERIOD_CODE) {\n // Char code 46 is a dot `.` which can start off a numeric literal\n return this.gobbleNumericLiteral();\n }\n if (ch === Jsep.SQUOTE_CODE || ch === Jsep.DQUOTE_CODE) {\n // Single or double quotes\n node = this.gobbleStringLiteral();\n } else if (ch === Jsep.OBRACK_CODE) {\n node = this.gobbleArray();\n } else {\n to_check = this.expr.substr(this.index, Jsep.max_unop_len);\n tc_len = to_check.length;\n while (tc_len > 0) {\n // Don't accept an unary op when it is an identifier.\n // Unary ops that start with a identifier-valid character must be followed\n // by a non identifier-part valid character\n if (Jsep.unary_ops.hasOwnProperty(to_check) && (!Jsep.isIdentifierStart(this.code) || this.index + to_check.length < this.expr.length && !Jsep.isIdentifierPart(this.expr.charCodeAt(this.index + to_check.length)))) {\n this.index += tc_len;\n const argument = this.gobbleToken();\n if (!argument) {\n this.throwError('missing unaryOp argument');\n }\n return this.runHook('after-token', {\n type: Jsep.UNARY_EXP,\n operator: to_check,\n argument,\n prefix: true\n });\n }\n to_check = to_check.substr(0, --tc_len);\n }\n if (Jsep.isIdentifierStart(ch)) {\n node = this.gobbleIdentifier();\n if (Jsep.literals.hasOwnProperty(node.name)) {\n node = {\n type: Jsep.LITERAL,\n value: Jsep.literals[node.name],\n raw: node.name\n };\n } else if (node.name === Jsep.this_str) {\n node = {\n type: Jsep.THIS_EXP\n };\n }\n } else if (ch === Jsep.OPAREN_CODE) {\n // open parenthesis\n node = this.gobbleGroup();\n }\n }\n if (!node) {\n return this.runHook('after-token', false);\n }\n node = this.gobbleTokenProperty(node);\n return this.runHook('after-token', node);\n }\n\n /**\n * Gobble properties of of identifiers/strings/arrays/groups.\n * e.g. `foo`, `bar.baz`, `foo['bar'].baz`\n * It also gobbles function calls:\n * e.g. `Math.acos(obj.angle)`\n * @param {jsep.Expression} node\n * @returns {jsep.Expression}\n */\n gobbleTokenProperty(node) {\n this.gobbleSpaces();\n let ch = this.code;\n while (ch === Jsep.PERIOD_CODE || ch === Jsep.OBRACK_CODE || ch === Jsep.OPAREN_CODE || ch === Jsep.QUMARK_CODE) {\n let optional;\n if (ch === Jsep.QUMARK_CODE) {\n if (this.expr.charCodeAt(this.index + 1) !== Jsep.PERIOD_CODE) {\n break;\n }\n optional = true;\n this.index += 2;\n this.gobbleSpaces();\n ch = this.code;\n }\n this.index++;\n if (ch === Jsep.OBRACK_CODE) {\n node = {\n type: Jsep.MEMBER_EXP,\n computed: true,\n object: node,\n property: this.gobbleExpression()\n };\n if (!node.property) {\n this.throwError('Unexpected \"' + this.char + '\"');\n }\n this.gobbleSpaces();\n ch = this.code;\n if (ch !== Jsep.CBRACK_CODE) {\n this.throwError('Unclosed [');\n }\n this.index++;\n } else if (ch === Jsep.OPAREN_CODE) {\n // A function call is being made; gobble all the arguments\n node = {\n type: Jsep.CALL_EXP,\n 'arguments': this.gobbleArguments(Jsep.CPAREN_CODE),\n callee: node\n };\n } else if (ch === Jsep.PERIOD_CODE || optional) {\n if (optional) {\n this.index--;\n }\n this.gobbleSpaces();\n node = {\n type: Jsep.MEMBER_EXP,\n computed: false,\n object: node,\n property: this.gobbleIdentifier()\n };\n }\n if (optional) {\n node.optional = true;\n } // else leave undefined for compatibility with esprima\n\n this.gobbleSpaces();\n ch = this.code;\n }\n return node;\n }\n\n /**\n * Parse simple numeric literals: `12`, `3.4`, `.5`. Do this by using a string to\n * keep track of everything in the numeric literal and then calling `parseFloat` on that string\n * @returns {jsep.Literal}\n */\n gobbleNumericLiteral() {\n let number = '',\n ch,\n chCode;\n while (Jsep.isDecimalDigit(this.code)) {\n number += this.expr.charAt(this.index++);\n }\n if (this.code === Jsep.PERIOD_CODE) {\n // can start with a decimal marker\n number += this.expr.charAt(this.index++);\n while (Jsep.isDecimalDigit(this.code)) {\n number += this.expr.charAt(this.index++);\n }\n }\n ch = this.char;\n if (ch === 'e' || ch === 'E') {\n // exponent marker\n number += this.expr.charAt(this.index++);\n ch = this.char;\n if (ch === '+' || ch === '-') {\n // exponent sign\n number += this.expr.charAt(this.index++);\n }\n while (Jsep.isDecimalDigit(this.code)) {\n // exponent itself\n number += this.expr.charAt(this.index++);\n }\n if (!Jsep.isDecimalDigit(this.expr.charCodeAt(this.index - 1))) {\n this.throwError('Expected exponent (' + number + this.char + ')');\n }\n }\n chCode = this.code;\n\n // Check to make sure this isn't a variable name that start with a number (123abc)\n if (Jsep.isIdentifierStart(chCode)) {\n this.throwError('Variable names cannot start with a number (' + number + this.char + ')');\n } else if (chCode === Jsep.PERIOD_CODE || number.length === 1 && number.charCodeAt(0) === Jsep.PERIOD_CODE) {\n this.throwError('Unexpected period');\n }\n return {\n type: Jsep.LITERAL,\n value: parseFloat(number),\n raw: number\n };\n }\n\n /**\n * Parses a string literal, staring with single or double quotes with basic support for escape codes\n * e.g. `\"hello world\"`, `'this is\\nJSEP'`\n * @returns {jsep.Literal}\n */\n gobbleStringLiteral() {\n let str = '';\n const startIndex = this.index;\n const quote = this.expr.charAt(this.index++);\n let closed = false;\n while (this.index < this.expr.length) {\n let ch = this.expr.charAt(this.index++);\n if (ch === quote) {\n closed = true;\n break;\n } else if (ch === '\\\\') {\n // Check for all of the common escape codes\n ch = this.expr.charAt(this.index++);\n switch (ch) {\n case 'n':\n str += '\\n';\n break;\n case 'r':\n str += '\\r';\n break;\n case 't':\n str += '\\t';\n break;\n case 'b':\n str += '\\b';\n break;\n case 'f':\n str += '\\f';\n break;\n case 'v':\n str += '\\x0B';\n break;\n default:\n str += ch;\n }\n } else {\n str += ch;\n }\n }\n if (!closed) {\n this.throwError('Unclosed quote after \"' + str + '\"');\n }\n return {\n type: Jsep.LITERAL,\n value: str,\n raw: this.expr.substring(startIndex, this.index)\n };\n }\n\n /**\n * Gobbles only identifiers\n * e.g.: `foo`, `_value`, `$x1`\n * Also, this function checks if that identifier is a literal:\n * (e.g. `true`, `false`, `null`) or `this`\n * @returns {jsep.Identifier}\n */\n gobbleIdentifier() {\n let ch = this.code,\n start = this.index;\n if (Jsep.isIdentifierStart(ch)) {\n this.index++;\n } else {\n this.throwError('Unexpected ' + this.char);\n }\n while (this.index < this.expr.length) {\n ch = this.code;\n if (Jsep.isIdentifierPart(ch)) {\n this.index++;\n } else {\n break;\n }\n }\n return {\n type: Jsep.IDENTIFIER,\n name: this.expr.slice(start, this.index)\n };\n }\n\n /**\n * Gobbles a list of arguments within the context of a function call\n * or array literal. This function also assumes that the opening character\n * `(` or `[` has already been gobbled, and gobbles expressions and commas\n * until the terminator character `)` or `]` is encountered.\n * e.g. `foo(bar, baz)`, `my_func()`, or `[bar, baz]`\n * @param {number} termination\n * @returns {jsep.Expression[]}\n */\n gobbleArguments(termination) {\n const args = [];\n let closed = false;\n let separator_count = 0;\n while (this.index < this.expr.length) {\n this.gobbleSpaces();\n let ch_i = this.code;\n if (ch_i === termination) {\n // done parsing\n closed = true;\n this.index++;\n if (termination === Jsep.CPAREN_CODE && separator_count && separator_count >= args.length) {\n this.throwError('Unexpected token ' + String.fromCharCode(termination));\n }\n break;\n } else if (ch_i === Jsep.COMMA_CODE) {\n // between expressions\n this.index++;\n separator_count++;\n if (separator_count !== args.length) {\n // missing argument\n if (termination === Jsep.CPAREN_CODE) {\n this.throwError('Unexpected token ,');\n } else if (termination === Jsep.CBRACK_CODE) {\n for (let arg = args.length; arg < separator_count; arg++) {\n args.push(null);\n }\n }\n }\n } else if (args.length !== separator_count && separator_count !== 0) {\n // NOTE: `&& separator_count !== 0` allows for either all commas, or all spaces as arguments\n this.throwError('Expected comma');\n } else {\n const node = this.gobbleExpression();\n if (!node || node.type === Jsep.COMPOUND) {\n this.throwError('Expected comma');\n }\n args.push(node);\n }\n }\n if (!closed) {\n this.throwError('Expected ' + String.fromCharCode(termination));\n }\n return args;\n }\n\n /**\n * Responsible for parsing a group of things within parentheses `()`\n * that have no identifier in front (so not a function call)\n * This function assumes that it needs to gobble the opening parenthesis\n * and then tries to gobble everything within that parenthesis, assuming\n * that the next thing it should see is the close parenthesis. If not,\n * then the expression probably doesn't have a `)`\n * @returns {boolean|jsep.Expression}\n */\n gobbleGroup() {\n this.index++;\n let nodes = this.gobbleExpressions(Jsep.CPAREN_CODE);\n if (this.code === Jsep.CPAREN_CODE) {\n this.index++;\n if (nodes.length === 1) {\n return nodes[0];\n } else if (!nodes.length) {\n return false;\n } else {\n return {\n type: Jsep.SEQUENCE_EXP,\n expressions: nodes\n };\n }\n } else {\n this.throwError('Unclosed (');\n }\n }\n\n /**\n * Responsible for parsing Array literals `[1, 2, 3]`\n * This function assumes that it needs to gobble the opening bracket\n * and then tries to gobble the expressions as arguments.\n * @returns {jsep.ArrayExpression}\n */\n gobbleArray() {\n this.index++;\n return {\n type: Jsep.ARRAY_EXP,\n elements: this.gobbleArguments(Jsep.CBRACK_CODE)\n };\n }\n}\n\n// Static fields:\nconst hooks = new Hooks();\nObject.assign(Jsep, {\n hooks,\n plugins: new Plugins(Jsep),\n // Node Types\n // ----------\n // This is the full set of types that any JSEP node can be.\n // Store them here to save space when minified\n COMPOUND: 'Compound',\n SEQUENCE_EXP: 'SequenceExpression',\n IDENTIFIER: 'Identifier',\n MEMBER_EXP: 'MemberExpression',\n LITERAL: 'Literal',\n THIS_EXP: 'ThisExpression',\n CALL_EXP: 'CallExpression',\n UNARY_EXP: 'UnaryExpression',\n BINARY_EXP: 'BinaryExpression',\n ARRAY_EXP: 'ArrayExpression',\n TAB_CODE: 9,\n LF_CODE: 10,\n CR_CODE: 13,\n SPACE_CODE: 32,\n PERIOD_CODE: 46,\n // '.'\n COMMA_CODE: 44,\n // ','\n SQUOTE_CODE: 39,\n // single quote\n DQUOTE_CODE: 34,\n // double quotes\n OPAREN_CODE: 40,\n // (\n CPAREN_CODE: 41,\n // )\n OBRACK_CODE: 91,\n // [\n CBRACK_CODE: 93,\n // ]\n QUMARK_CODE: 63,\n // ?\n SEMCOL_CODE: 59,\n // ;\n COLON_CODE: 58,\n // :\n\n // Operations\n // ----------\n // Use a quickly-accessible map to store all of the unary operators\n // Values are set to `1` (it really doesn't matter)\n unary_ops: {\n '-': 1,\n '!': 1,\n '~': 1,\n '+': 1\n },\n // Also use a map for the binary operations but set their values to their\n // binary precedence for quick reference (higher number = higher precedence)\n // see [Order of operations](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence)\n binary_ops: {\n '||': 1,\n '??': 1,\n '&&': 2,\n '|': 3,\n '^': 4,\n '&': 5,\n '==': 6,\n '!=': 6,\n '===': 6,\n '!==': 6,\n '<': 7,\n '>': 7,\n '<=': 7,\n '>=': 7,\n '<<': 8,\n '>>': 8,\n '>>>': 8,\n '+': 9,\n '-': 9,\n '*': 10,\n '/': 10,\n '%': 10,\n '**': 11\n },\n // sets specific binary_ops as right-associative\n right_associative: new Set(['**']),\n // Additional valid identifier chars, apart from a-z, A-Z and 0-9 (except on the starting char)\n additional_identifier_chars: new Set(['$', '_']),\n // Literals\n // ----------\n // Store the values to return for the various literals we may encounter\n literals: {\n 'true': true,\n 'false': false,\n 'null': null\n },\n // Except for `this`, which is special. This could be changed to something like `'self'` as well\n this_str: 'this'\n});\nJsep.max_unop_len = Jsep.getMaxKeyLen(Jsep.unary_ops);\nJsep.max_binop_len = Jsep.getMaxKeyLen(Jsep.binary_ops);\n\n// Backward Compatibility:\nconst jsep = expr => new Jsep(expr).parse();\nconst stdClassProps = Object.getOwnPropertyNames(class Test {});\nObject.getOwnPropertyNames(Jsep).filter(prop => !stdClassProps.includes(prop) && jsep[prop] === undefined).forEach(m => {\n jsep[m] = Jsep[m];\n});\njsep.Jsep = Jsep; // allows for const { Jsep } = require('jsep');\n\nconst CONDITIONAL_EXP = 'ConditionalExpression';\nvar ternary = {\n name: 'ternary',\n init(jsep) {\n // Ternary expression: test ? consequent : alternate\n jsep.hooks.add('after-expression', function gobbleTernary(env) {\n if (env.node && this.code === jsep.QUMARK_CODE) {\n this.index++;\n const test = env.node;\n const consequent = this.gobbleExpression();\n if (!consequent) {\n this.throwError('Expected expression');\n }\n this.gobbleSpaces();\n if (this.code === jsep.COLON_CODE) {\n this.index++;\n const alternate = this.gobbleExpression();\n if (!alternate) {\n this.throwError('Expected expression');\n }\n env.node = {\n type: CONDITIONAL_EXP,\n test,\n consequent,\n alternate\n };\n\n // check for operators of higher priority than ternary (i.e. assignment)\n // jsep sets || at 1, and assignment at 0.9, and conditional should be between them\n if (test.operator && jsep.binary_ops[test.operator] <= 0.9) {\n let newTest = test;\n while (newTest.right.operator && jsep.binary_ops[newTest.right.operator] <= 0.9) {\n newTest = newTest.right;\n }\n env.node.test = newTest.right;\n newTest.right = env.node;\n env.node = test;\n }\n } else {\n this.throwError('Expected :');\n }\n }\n });\n }\n};\n\n// Add default plugins:\n\njsep.plugins.register(ternary);\n\nconst FSLASH_CODE = 47; // '/'\nconst BSLASH_CODE = 92; // '\\\\'\n\nvar index = {\n name: 'regex',\n init(jsep) {\n // Regex literal: /abc123/ig\n jsep.hooks.add('gobble-token', function gobbleRegexLiteral(env) {\n if (this.code === FSLASH_CODE) {\n const patternIndex = ++this.index;\n let inCharSet = false;\n while (this.index < this.expr.length) {\n if (this.code === FSLASH_CODE && !inCharSet) {\n const pattern = this.expr.slice(patternIndex, this.index);\n let flags = '';\n while (++this.index < this.expr.length) {\n const code = this.code;\n if (code >= 97 && code <= 122 // a...z\n || code >= 65 && code <= 90 // A...Z\n || code >= 48 && code <= 57) {\n // 0-9\n flags += this.char;\n } else {\n break;\n }\n }\n let value;\n try {\n value = new RegExp(pattern, flags);\n } catch (e) {\n this.throwError(e.message);\n }\n env.node = {\n type: jsep.LITERAL,\n value,\n raw: this.expr.slice(patternIndex - 1, this.index)\n };\n\n // allow . [] and () after regex: /regex/.test(a)\n env.node = this.gobbleTokenProperty(env.node);\n return env.node;\n }\n if (this.code === jsep.OBRACK_CODE) {\n inCharSet = true;\n } else if (inCharSet && this.code === jsep.CBRACK_CODE) {\n inCharSet = false;\n }\n this.index += this.code === BSLASH_CODE ? 2 : 1;\n }\n this.throwError('Unclosed Regex');\n }\n });\n }\n};\n\nconst PLUS_CODE = 43; // +\nconst MINUS_CODE = 45; // -\n\nconst plugin = {\n name: 'assignment',\n assignmentOperators: new Set(['=', '*=', '**=', '/=', '%=', '+=', '-=', '<<=', '>>=', '>>>=', '&=', '^=', '|=', '||=', '&&=', '??=']),\n updateOperators: [PLUS_CODE, MINUS_CODE],\n assignmentPrecedence: 0.9,\n init(jsep) {\n const updateNodeTypes = [jsep.IDENTIFIER, jsep.MEMBER_EXP];\n plugin.assignmentOperators.forEach(op => jsep.addBinaryOp(op, plugin.assignmentPrecedence, true));\n jsep.hooks.add('gobble-token', function gobbleUpdatePrefix(env) {\n const code = this.code;\n if (plugin.updateOperators.some(c => c === code && c === this.expr.charCodeAt(this.index + 1))) {\n this.index += 2;\n env.node = {\n type: 'UpdateExpression',\n operator: code === PLUS_CODE ? '++' : '--',\n argument: this.gobbleTokenProperty(this.gobbleIdentifier()),\n prefix: true\n };\n if (!env.node.argument || !updateNodeTypes.includes(env.node.argument.type)) {\n this.throwError(`Unexpected ${env.node.operator}`);\n }\n }\n });\n jsep.hooks.add('after-token', function gobbleUpdatePostfix(env) {\n if (env.node) {\n const code = this.code;\n if (plugin.updateOperators.some(c => c === code && c === this.expr.charCodeAt(this.index + 1))) {\n if (!updateNodeTypes.includes(env.node.type)) {\n this.throwError(`Unexpected ${env.node.operator}`);\n }\n this.index += 2;\n env.node = {\n type: 'UpdateExpression',\n operator: code === PLUS_CODE ? '++' : '--',\n argument: env.node,\n prefix: false\n };\n }\n }\n });\n jsep.hooks.add('after-expression', function gobbleAssignment(env) {\n if (env.node) {\n // Note: Binaries can be chained in a single expression to respect\n // operator precedence (i.e. a = b = 1 + 2 + 3)\n // Update all binary assignment nodes in the tree\n updateBinariesToAssignments(env.node);\n }\n });\n function updateBinariesToAssignments(node) {\n if (plugin.assignmentOperators.has(node.operator)) {\n node.type = 'AssignmentExpression';\n updateBinariesToAssignments(node.left);\n updateBinariesToAssignments(node.right);\n } else if (!node.operator) {\n Object.values(node).forEach(val => {\n if (val && typeof val === 'object') {\n updateBinariesToAssignments(val);\n }\n });\n }\n }\n }\n};\n\n/* eslint-disable no-bitwise -- Convenient */\n\n// register plugins\njsep.plugins.register(index, plugin);\njsep.addUnaryOp('typeof');\njsep.addLiteral('null', null);\njsep.addLiteral('undefined', undefined);\nconst BLOCKED_PROTO_PROPERTIES = new Set(['constructor', '__proto__', '__defineGetter__', '__defineSetter__']);\nconst SafeEval = {\n /**\n * @param {jsep.Expression} ast\n * @param {Record<string, any>} subs\n */\n evalAst(ast, subs) {\n switch (ast.type) {\n case 'BinaryExpression':\n case 'LogicalExpression':\n return SafeEval.evalBinaryExpression(ast, subs);\n case 'Compound':\n return SafeEval.evalCompound(ast, subs);\n case 'ConditionalExpression':\n return SafeEval.evalConditionalExpression(ast, subs);\n case 'Identifier':\n return SafeEval.evalIdentifier(ast, subs);\n case 'Literal':\n return SafeEval.evalLiteral(ast, subs);\n case 'MemberExpression':\n return SafeEval.evalMemberExpression(ast, subs);\n case 'UnaryExpression':\n return SafeEval.evalUnaryExpression(ast, subs);\n case 'ArrayExpression':\n return SafeEval.evalArrayExpression(ast, subs);\n case 'CallExpression':\n return SafeEval.evalCallExpression(ast, subs);\n case 'AssignmentExpression':\n return SafeEval.evalAssignmentExpression(ast, subs);\n default:\n throw SyntaxError('Unexpected expression', ast);\n }\n },\n evalBinaryExpression(ast, subs) {\n const result = {\n '||': (a, b) => a || b(),\n '&&': (a, b) => a && b(),\n '|': (a, b) => a | b(),\n '^': (a, b) => a ^ b(),\n '&': (a, b) => a & b(),\n // eslint-disable-next-line eqeqeq -- API\n '==': (a, b) => a == b(),\n // eslint-disable-next-line eqeqeq -- API\n '!=': (a, b) => a != b(),\n '===': (a, b) => a === b(),\n '!==': (a, b) => a !== b(),\n '<': (a, b) => a < b(),\n '>': (a, b) => a > b(),\n '<=': (a, b) => a <= b(),\n '>=': (a, b) => a >= b(),\n '<<': (a, b) => a << b(),\n '>>': (a, b) => a >> b(),\n '>>>': (a, b) => a >>> b(),\n '+': (a, b) => a + b(),\n '-': (a, b) => a - b(),\n '*': (a, b) => a * b(),\n '/': (a, b) => a / b(),\n '%': (a, b) => a % b()\n }[ast.operator](SafeEval.evalAst(ast.left, subs), () => SafeEval.evalAst(ast.right, subs));\n return result;\n },\n evalCompound(ast, subs) {\n let last;\n for (let i = 0; i < ast.body.length; i++) {\n if (ast.body[i].type === 'Identifier' && ['var', 'let', 'const'].includes(ast.body[i].name) && ast.body[i + 1] && ast.body[i + 1].type === 'AssignmentExpression') {\n // var x=2; is detected as\n // [{Identifier var}, {AssignmentExpression x=2}]\n // eslint-disable-next-line @stylistic/max-len -- Long\n // eslint-disable-next-line sonarjs/updated-loop-counter -- Convenient\n i += 1;\n }\n const expr = ast.body[i];\n last = SafeEval.evalAst(expr, subs);\n }\n return last;\n },\n evalConditionalExpression(ast, subs) {\n if (SafeEval.evalAst(ast.test, subs)) {\n return SafeEval.evalAst(ast.consequent, subs);\n }\n return SafeEval.evalAst(ast.alternate, subs);\n },\n evalIdentifier(ast, subs) {\n if (Object.hasOwn(subs, ast.name)) {\n return subs[ast.name];\n }\n throw ReferenceError(`${ast.name} is not defined`);\n },\n evalLiteral(ast) {\n return ast.value;\n },\n evalMemberExpression(ast, subs) {\n const prop = String(\n // NOTE: `String(value)` throws error when\n // value has overwritten the toString method to return non-string\n // i.e. `value = {toString: () => []}`\n ast.computed ? SafeEval.evalAst(ast.property) // `object[property]`\n : ast.property.name // `object.property` property is Identifier\n );\n const obj = SafeEval.evalAst(ast.object, subs);\n if (obj === undefined || obj === null) {\n throw TypeError(`Cannot read properties of ${obj} (reading '${prop}')`);\n }\n if (!Object.hasOwn(obj, prop) && BLOCKED_PROTO_PROPERTIES.has(prop)) {\n throw TypeError(`Cannot read properties of ${obj} (reading '${prop}')`);\n }\n const result = obj[prop];\n if (typeof result === 'function') {\n return result.bind(obj); // arrow functions aren't affected by bind.\n }\n return result;\n },\n evalUnaryExpression(ast, subs) {\n const result = {\n '-': a => -SafeEval.evalAst(a, subs),\n '!': a => !SafeEval.evalAst(a, subs),\n '~': a => ~SafeEval.evalAst(a, subs),\n // eslint-disable-next-line no-implicit-coercion -- API\n '+': a => +SafeEval.evalAst(a, subs),\n typeof: a => typeof SafeEval.evalAst(a, subs)\n }[ast.operator](ast.argument);\n return result;\n },\n evalArrayExpression(ast, subs) {\n return ast.elements.map(el => SafeEval.evalAst(el, subs));\n },\n evalCallExpression(ast, subs) {\n const args = ast.arguments.map(arg => SafeEval.evalAst(arg, subs));\n const func = SafeEval.evalAst(ast.callee, subs);\n // if (func === Function) {\n // throw new Error('Function constructor is disabled');\n // }\n return func(...args);\n },\n evalAssignmentExpression(ast, subs) {\n if (ast.left.type !== 'Identifier') {\n throw SyntaxError('Invalid left-hand side in assignment');\n }\n const id = ast.left.name;\n const value = SafeEval.evalAst(ast.right, subs);\n subs[id] = value;\n return subs[id];\n }\n};\n\n/**\n * A replacement for NodeJS' VM.Script which is also {@link https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP | Content Security Policy} friendly.\n */\nclass SafeScript {\n /**\n * @param {string} expr Expression to evaluate\n */\n constructor(expr) {\n this.code = expr;\n this.ast = jsep(this.code);\n }\n\n /**\n * @param {object} context Object whose items will be added\n * to evaluation\n * @returns {EvaluatedResult} Result of evaluated code\n */\n runInNewContext(context) {\n // `Object.create(null)` creates a prototypeless object\n const keyMap = Object.assign(Object.create(null), context);\n return SafeEval.evalAst(this.ast, keyMap);\n }\n}\n\n/* eslint-disable camelcase -- Convenient for escaping */\n\n\n/**\n * @typedef {null|boolean|number|string|object|GenericArray} JSONObject\n */\n\n/**\n * @typedef {any} AnyItem\n */\n\n/**\n * @typedef {any} AnyResult\n */\n\n/**\n * Copies array and then pushes item into it.\n * @param {GenericArray} arr Array to copy and into which to push\n * @param {AnyItem} item Array item to add (to end)\n * @returns {GenericArray} Copy of the original array\n */\nfunction push(arr, item) {\n arr = arr.slice();\n arr.push(item);\n return arr;\n}\n/**\n * Copies array and then unshifts item into it.\n * @param {AnyItem} item Array item to add (to beginning)\n * @param {GenericArray} arr Array to copy and into which to unshift\n * @returns {GenericArray} Copy of the original array\n */\nfunction unshift(item, arr) {\n arr = arr.slice();\n arr.unshift(item);\n return arr;\n}\n\n/**\n * Caught when JSONPath is used without `new` but rethrown if with `new`\n * @extends Error\n */\nclass NewError extends Error {\n /**\n * @param {AnyResult} value The evaluated scalar value\n */\n constructor(value) {\n super('JSONPath should not be called with \"new\" (it prevents return ' + 'of (unwrapped) scalar values)');\n this.avoidNew = true;\n this.value = value;\n this.name = 'NewError';\n }\n}\n\n/**\n* @typedef {object} ReturnObject\n* @property {string} path\n* @property {JSONObject} value\n* @property {object|GenericArray} parent\n* @property {string} parentProperty\n*/\n\n/**\n* @callback JSONPathCallback\n* @param {string|object} preferredOutput\n* @param {\"value\"|\"property\"} type\n* @param {ReturnObject} fullRetObj\n* @returns {void}\n*/\n\n/**\n* @callback OtherTypeCallback\n* @param {JSONObject} val\n* @param {string} path\n* @param {object|GenericArray} parent\n* @param {string} parentPropName\n* @returns {boolean}\n*/\n\n/**\n * @typedef {any} ContextItem\n */\n\n/**\n * @typedef {any} EvaluatedResult\n */\n\n/**\n* @callback EvalCallback\n* @param {string} code\n* @param {ContextItem} context\n* @returns {EvaluatedResult}\n*/\n\n/**\n * @typedef {typeof SafeScript} EvalClass\n */\n\n/**\n * @typedef {object} JSONPathOptions\n * @property {JSON} json\n * @property {string|string[]} path\n * @property {\"value\"|\"path\"|\"pointer\"|\"parent\"|\"parentProperty\"|\n * \"all\"} [resultType=\"value\"]\n * @property {boolean} [flatten=false]\n * @property {boolean} [wrap=true]\n * @property {object} [sandbox={}]\n * @property {EvalCallback|EvalClass|'safe'|'native'|\n * boolean} [eval = 'safe']\n * @property {object|GenericArray|null} [parent=null]\n * @property {string|null} [parentProperty=null]\n * @property {JSONPathCallback} [callback]\n * @property {OtherTypeCallback} [otherTypeCallback] Defaults to\n * function which throws on encountering `@other`\n * @property {boolean} [autostart=true]\n */\n\n/**\n * @param {string|JSONPathOptions} opts If a string, will be treated as `expr`\n * @param {string} [expr] JSON path to evaluate\n * @param {JSON} [obj] JSON object to evaluate against\n * @param {JSONPathCallback} [callback] Passed 3 arguments: 1) desired payload\n * per `resultType`, 2) `\"value\"|\"property\"`, 3) Full returned object with\n * all payloads\n * @param {OtherTypeCallback} [otherTypeCallback] If `@other()` is at the end\n * of one's query, this will be invoked with the value of the item, its\n * path, its parent, and its parent's property name, and it should return\n * a boolean indicating whether the supplied value belongs to the \"other\"\n * type or not (or it may handle transformations and return `false`).\n * @returns {JSONPath}\n * @class\n */\nfunction JSONPath(opts, expr, obj, callback, otherTypeCallback) {\n // eslint-disable-next-line no-restricted-syntax -- Allow for pseudo-class\n if (!(this instanceof JSONPath)) {\n try {\n return new JSONPath(opts, expr, obj, callback, otherTypeCallback);\n } catch (e) {\n if (!e.avoidNew) {\n throw e;\n }\n return e.value;\n }\n }\n if (typeof opts === 'string') {\n otherTypeCallback = callback;\n callback = obj;\n obj = expr;\n expr = opts;\n opts = null;\n }\n const optObj = opts && typeof opts === 'object';\n opts = opts || {};\n this.json = opts.json || obj;\n this.path = opts.path || expr;\n this.resultType = opts.resultType || 'value';\n this.flatten = opts.flatten || false;\n this.wrap = Object.hasOwn(opts, 'wrap') ? opts.wrap : true;\n this.sandbox = opts.sandbox || {};\n this.eval = opts.eval === undefined ? 'safe' : opts.eval;\n this.ignoreEvalErrors = typeof opts.ignoreEvalErrors === 'undefined' ? false : opts.ignoreEvalErrors;\n this.parent = opts.parent || null;\n this.parentProperty = opts.parentProperty || null;\n this.callback = opts.callback || callback || null;\n this.otherTypeCallback = opts.otherTypeCallback || otherTypeCallback || function () {\n throw new TypeError('You must supply an otherTypeCallback callback option ' + 'with the @other() operator.');\n };\n if (opts.autostart !== false) {\n const args = {\n path: optObj ? opts.path : expr\n };\n if (!optObj) {\n args.json = obj;\n } else if ('json' in opts) {\n args.json = opts.json;\n }\n const ret = this.evaluate(args);\n if (!ret || typeof ret !== 'object') {\n throw new NewError(ret);\n }\n return ret;\n }\n}\n\n// PUBLIC METHODS\nJSONPath.prototype.evaluate = function (expr, json, callback, otherTypeCallback) {\n let currParent = this.parent,\n currParentProperty = this.parentProperty;\n let {\n flatten,\n wrap\n } = this;\n this.currResultType = this.resultType;\n this.currEval = this.eval;\n this.currSandbox = this.sandbox;\n callback = callback || this.callback;\n this.currOtherTypeCallback = otherTypeCallback || this.otherTypeCallback;\n json = json || this.json;\n expr = expr || this.path;\n if (expr && typeof expr === 'object' && !Array.isArray(expr)) {\n if (!expr.path && expr.path !== '') {\n throw new TypeError('You must supply a \"path\" property when providing an object ' + 'argument to JSONPath.evaluate().');\n }\n if (!Object.hasOwn(expr, 'json')) {\n throw new TypeError('You must supply a \"json\" property when providing an object ' + 'argument to JSONPath.evaluate().');\n }\n ({\n json\n } = expr);\n flatten = Object.hasOwn(expr, 'flatten') ? expr.flatten : flatten;\n this.currResultType = Object.hasOwn(expr, 'resultType') ? expr.resultType : this.currResultType;\n this.currSandbox = Object.hasOwn(expr, 'sandbox') ? expr.sandbox : this.currSandbox;\n wrap = Object.hasOwn(expr, 'wrap') ? expr.wrap : wrap;\n this.currEval = Object.hasOwn(expr, 'eval') ? expr.eval : this.currEval;\n callback = Object.hasOwn(expr, 'callback') ? expr.callback : callback;\n this.currOtherTypeCallback = Object.hasOwn(expr, 'otherTypeCallback') ? expr.otherTypeCallback : this.currOtherTypeCallback;\n currParent = Object.hasOwn(expr, 'parent') ? expr.parent : currParent;\n currParentProperty = Object.hasOwn(expr, 'parentProperty') ? expr.parentProperty : currParentProperty;\n expr = expr.path;\n }\n currParent = currParent || null;\n currParentProperty = currParentProperty || null;\n if (Array.isArray(expr)) {\n expr = JSONPath.toPathString(expr);\n }\n if (!expr && expr !== '' || !json) {\n return undefined;\n }\n const exprList = JSONPath.toPathArray(expr);\n if (exprList[0] === '$' && exprList.length > 1) {\n exprList.shift();\n }\n this._hasParentSelector = null;\n const result = this._trace(exprList, json, ['$'], currParent, currParentProperty, callback).filter(function (ea) {\n return ea && !ea.isParentSelector;\n });\n if (!result.length) {\n return wrap ? [] : undefined;\n }\n if (!wrap && result.length === 1 && !result[0].hasArrExpr) {\n return this._getPreferredOutput(result[0]);\n }\n return result.reduce((rslt, ea) => {\n const valOrPath = this._getPreferredOutput(ea);\n if (flatten && Array.isArray(valOrPath)) {\n rslt = rslt.concat(valOrPath);\n } else {\n rslt.push(valOrPath);\n }\n return rslt;\n }, []);\n};\n\n// PRIVATE METHODS\n\nJSONPath.prototype._getPreferredOutput = function (ea) {\n const resultType = this.currResultType;\n switch (resultType) {\n case 'all':\n {\n const path = Array.isArray(ea.path) ? ea.path : JSONPath.toPathArray(ea.path);\n ea.pointer = JSONPath.toPointer(path);\n ea.path = typeof ea.path === 'string' ? ea.path : JSONPath.toPathString(ea.path);\n return ea;\n }\n case 'value':\n case 'parent':\n case 'parentProperty':\n return ea[resultType];\n case 'path':\n return JSONPath.toPathString(ea[resultType]);\n case 'pointer':\n return JSONPath.toPointer(ea.path);\n default:\n throw new TypeError('Unknown result type');\n }\n};\nJSONPath.prototype._handleCallback = function (fullRetObj, callback, type) {\n if (callback) {\n const preferredOutput = this._getPreferredOutput(fullRetObj);\n fullRetObj.path = typeof fullRetObj.path === 'string' ? fullRetObj.path : JSONPath.toPathString(fullRetObj.path);\n // eslint-disable-next-line n/callback-return -- No need to return\n callback(preferredOutput, type, fullRetObj);\n }\n};\n\n/**\n *\n * @param {string} expr\n * @param {JSONObject} val\n * @param {string} path\n * @param {object|GenericArray} parent\n * @param {string} parentPropName\n * @param {JSONPathCallback} callback\n * @param {boolean} hasArrExpr\n * @param {boolean} literalPriority\n * @returns {ReturnObject|ReturnObject[]}\n */\nJSONPath.prototype._trace = function (expr, val, path, parent, parentPropName, callback, hasArrExpr, literalPriority) {\n // No expr to follow? return path and value as the result of\n // this trace branch\n let retObj;\n if (!expr.length) {\n retObj = {\n path,\n value: val,\n parent,\n parentProperty: parentPropName,\n hasArrExpr\n };\n this._handleCallback(retObj, callback, 'value');\n return retObj;\n }\n const loc = expr[0],\n x = expr.slice(1);\n\n // We need to gather the return value of recursive trace calls in order to\n // do the parent sel computation.\n const ret = [];\n /**\n *\n * @param {ReturnObject|ReturnObject[]} elems\n * @returns {void}\n */\n function addRet(elems) {\n if (Array.isArray(elems)) {\n // This was causing excessive stack size in Node (with or\n // without Babel) against our performance test:\n // `ret.push(...elems);`\n elems.forEach(t => {\n ret.push(t);\n });\n } else {\n ret.push(elems);\n }\n }\n if ((typeof loc !== 'string' || literalPriority) && val && Object.hasOwn(val, loc)) {\n // simple case--directly follow property\n addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr));\n // eslint-disable-next-line unicorn/prefer-switch -- Part of larger `if`\n } else if (loc === '*') {\n // all child properties\n this._walk(val, m => {\n addRet(this._trace(x, val[m], push(path, m), val, m, callback, true, true));\n });\n } else if (loc === '..') {\n // all descendent parent properties\n // Check remaining expression with val's immediate children\n addRet(this._trace(x, val, path, parent, parentPropName, callback, hasArrExpr));\n this._walk(val, m => {\n // We don't join m and x here because we only want parents,\n // not scalar values\n if (typeof val[m] === 'object') {\n // Keep going with recursive descent on val's\n // object children\n addRet(this._trace(expr.slice(), val[m], push(path, m), val, m, callback, true));\n }\n });\n // The parent sel computation is handled in the frame above using the\n // ancestor object of val\n } else if (loc === '^') {\n // This is not a final endpoint, so we do not invoke the callback here\n this._hasParentSelector = true;\n return {\n path: path.slice(0, -1),\n expr: x,\n isParentSelector: true\n };\n } else if (loc === '~') {\n // property name\n retObj = {\n path: push(path, loc),\n value: parentPropName,\n parent,\n parentProperty: null\n };\n this._handleCallback(retObj, callback, 'property');\n return retObj;\n } else if (loc === '$') {\n // root only\n addRet(this._trace(x, val, path, null, null, callback, hasArrExpr));\n } else if (/^(-?\\d*):(-?\\d*):?(\\d*)$/u.test(loc)) {\n // [start:end:step] Python slice syntax\n addRet(this._slice(loc, x, val, path, parent, parentPropName, callback));\n } else if (loc.indexOf('?(') === 0) {\n // [?(expr)] (filtering)\n if (this.currEval === false) {\n throw new Error('Eval [?(expr)] prevented in JSONPath expression.');\n }\n const safeLoc = loc.replace(/^\\?\\((.*?)\\)$/u, '$1');\n // check for a nested filter expression\n const nested = /@.?([^?]*)[['](\\??\\(.*?\\))(?!.\\)\\])[\\]']/gu.exec(safeLoc);\n if (nested) {\n // find if there are matches in the nested expression\n // add them to the result set if there is at least one match\n this._walk(val, m => {\n const npath = [nested[2]];\n const nvalue = nested[1] ? val[m][nested[1]] : val[m];\n const filterResults = this._trace(npath, nvalue, path, parent, parentPropName, callback, true);\n if (filterResults.length > 0) {\n addRet(this._trace(x, val[m], push(path, m), val, m, callback, true));\n }\n });\n } else {\n this._walk(val, m => {\n if (this._eval(safeLoc, val[m], m, path, parent, parentPropName)) {\n addRet(this._trace(x, val[m], push(path, m), val, m, callback, true));\n }\n });\n }\n } else if (loc[0] === '(') {\n // [(expr)] (dynamic property/index)\n if (this.currEval === false) {\n throw new Error('Eval [(expr)] prevented in JSONPath expression.');\n }\n // As this will resolve to a property name (but we don't know it\n // yet), property and parent information is relative to the\n // parent of the property to which this expression will resolve\n addRet(this._trace(unshift(this._eval(loc, val, path.at(-1), path.slice(0, -1), parent, parentPropName), x), val, path, parent, parentPropName, callback, hasArrExpr));\n } else if (loc[0] === '@') {\n // value type: @boolean(), etc.\n let addType = false;\n const valueType = loc.slice(1, -2);\n switch (valueType) {\n case 'scalar':\n if (!val || !['object', 'function'].includes(typeof val)) {\n addType = true;\n }\n break;\n case 'boolean':\n case 'string':\n case 'undefined':\n case 'function':\n if (typeof val === valueType) {\n addType = true;\n }\n break;\n case 'integer':\n if (Number.isFinite(val) && !(val % 1)) {\n addType = true;\n }\n break;\n case 'number':\n if (Number.isFinite(val)) {\n addType = true;\n }\n break;\n case 'nonFinite':\n if (typeof val === 'number' && !Number.isFinite(val)) {\n addType = true;\n }\n break;\n case 'object':\n if (val && typeof val === valueType) {\n addType = true;\n }\n break;\n case 'array':\n if (Array.isArray(val)) {\n addType = true;\n }\n break;\n case 'other':\n addType = this.currOtherTypeCallback(val, path, parent, parentPropName);\n break;\n case 'null':\n if (val === null) {\n addType = true;\n }\n break;\n /* c8 ignore next 2 */\n default:\n throw new TypeError('Unknown value type ' + valueType);\n }\n if (addType) {\n retObj = {\n path,\n value: val,\n parent,\n parentProperty: parentPropName\n };\n this._handleCallback(retObj, callback, 'value');\n return retObj;\n }\n // `-escaped property\n } else if (loc[0] === '`' && val && Object.hasOwn(val, loc.slice(1))) {\n const locProp = loc.slice(1);\n addRet(this._trace(x, val[locProp], push(path, locProp), val, locProp, callback, hasArrExpr, true));\n } else if (loc.includes(',')) {\n // [name1,name2,...]\n const parts = loc.split(',');\n for (const part of parts) {\n addRet(this._trace(unshift(part, x), val, path, parent, parentPropName, callback, true));\n }\n // simple case--directly follow property\n } else if (!literalPriority && val && Object.hasOwn(val, loc)) {\n addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr, true));\n }\n\n // We check the resulting values for parent selections. For parent\n // selections we discard the value object and continue the trace with the\n // current val object\n if (this._hasParentSelector) {\n for (let t = 0; t < ret.length; t++) {\n const rett = ret[t];\n if (rett && rett.isParentSelector) {\n const tmp = this._trace(rett.expr, val, rett.path, parent, parentPropName, callback, hasArrExpr);\n if (Array.isArray(tmp)) {\n ret[t] = tmp[0];\n const tl = tmp.length;\n for (let tt = 1; tt < tl; tt++) {\n // eslint-disable-next-line @stylistic/max-len -- Long\n // eslint-disable-next-line sonarjs/updated-loop-counter -- Convenient\n t++;\n ret.splice(t, 0, tmp[tt]);\n }\n } else {\n ret[t] = tmp;\n }\n }\n }\n }\n return ret;\n};\nJSONPath.prototype._walk = function (val, f) {\n if (Array.isArray(val)) {\n const n = val.length;\n for (let i = 0; i < n; i++) {\n f(i);\n }\n } else if (val && typeof val === 'object') {\n Object.keys(val).forEach(m => {\n f(m);\n });\n }\n};\nJSONPath.prototype._slice = function (loc, expr, val, path, parent, parentPropName, callback) {\n if (!Array.isArray(val)) {\n return undefined;\n }\n const len = val.length,\n parts = loc.split(':'),\n step = parts[2] && Number.parseInt(parts[2]) || 1;\n let start = parts[0] && Number.parseInt(parts[0]) || 0,\n end = parts[1] && Number.parseInt(parts[1]) || len;\n start = start < 0 ? Math.max(0, start + len) : Math.min(len, start);\n end = end < 0 ? Math.max(0, end + len) : Math.min(len, end);\n const ret = [];\n for (let i = start; i < end; i += step) {\n const tmp = this._trace(unshift(i, expr), val, path, parent, parentPropName, callback, true);\n // Should only be possible to be an array here since first part of\n // ``unshift(i, expr)` passed in above would not be empty, nor `~`,\n // nor begin with `@` (as could return objects)\n // This was causing excessive stack size in Node (with or\n // without Babel) against our performance test: `ret.push(...tmp);`\n tmp.forEach(t => {\n ret.push(t);\n });\n }\n return ret;\n};\nJSONPath.prototype._eval = function (code, _v, _vname, path, parent, parentPropName) {\n this.currSandbox._$_parentProperty = parentPropName;\n this.currSandbox._$_parent = parent;\n this.currSandbox._$_property = _vname;\n this.currSandbox._$_root = this.json;\n this.currSandbox._$_v = _v;\n const containsPath = code.includes('@path');\n if (containsPath) {\n this.currSandbox._$_path = JSONPath.toPathString(path.concat([_vname]));\n }\n const scriptCacheKey = this.currEval + 'Script:' + code;\n if (!JSONPath.cache[scriptCacheKey]) {\n let script = code.replaceAll('@parentProperty', '_$_parentProperty').replaceAll('@parent', '_$_parent').replaceAll('@property', '_$_property').replaceAll('@root', '_$_root').replaceAll(/@([.\\s)[])/gu, '_$_v$1');\n if (containsPath) {\n script = script.replaceAll('@path', '_$_path');\n }\n if (this.currEval === 'safe' || this.currEval === true || this.currEval === undefined) {\n JSONPath.cache[scriptCacheKey] = new this.safeVm.Script(script);\n } else if (this.currEval === 'native') {\n JSONPath.cache[scriptCacheKey] = new this.vm.Script(script);\n } else if (typeof this.currEval === 'function' && this.currEval.prototype && Object.hasOwn(this.currEval.prototype, 'runInNewContext')) {\n const CurrEval = this.currEval;\n JSONPath.cache[scriptCacheKey] = new CurrEval(script);\n } else if (typeof this.currEval === 'function') {\n JSONPath.cache[scriptCacheKey] = {\n runInNewContext: context => this.currEval(script, context)\n };\n } else {\n throw new TypeError(`Unknown \"eval\" property \"${this.currEval}\"`);\n }\n }\n try {\n return JSONPath.cache[scriptCacheKey].runInNewContext(this.currSandbox);\n } catch (e) {\n if (this.ignoreEvalErrors) {\n return false;\n }\n throw new Error('jsonPath: ' + e.message + ': ' + code);\n }\n};\n\n// PUBLIC CLASS PROPERTIES AND METHODS\n\n// Could store the cache object itself\nJSONPath.cache = {};\n\n/**\n * @param {string[]} pathArr Array to convert\n * @returns {string} The path string\n */\nJSONPath.toPathString = function (pathArr) {\n const x = pathArr,\n n = x.length;\n let p = '$';\n for (let i = 1; i < n; i++) {\n if (!/^(~|\\^|@.*?\\(\\))$/u.test(x[i])) {\n p += /^[0-9*]+$/u.test(x[i]) ? '[' + x[i] + ']' : \"['\" + x[i] + \"']\";\n }\n }\n return p;\n};\n\n/**\n * @param {string} pointer JSON Path\n * @returns {string} JSON Pointer\n */\nJSONPath.toPointer = function (pointer) {\n const x = pointer,\n n = x.length;\n let p = '';\n for (let i = 1; i < n; i++) {\n if (!/^(~|\\^|@.*?\\(\\))$/u.test(x[i])) {\n p += '/' + x[i].toString().replaceAll('~', '~0').replaceAll('/', '~1');\n }\n }\n return p;\n};\n\n/**\n * @param {string} expr Expression to convert\n * @returns {string[]}\n */\nJSONPath.toPathArray = function (expr) {\n const {\n cache\n } = JSONPath;\n if (cache[expr]) {\n return cache[expr].concat();\n }\n const subx = [];\n const normalized = expr\n // Properties\n .replaceAll(/@(?:null|boolean|number|string|integer|undefined|nonFinite|scalar|array|object|function|other)\\(\\)/gu, ';$&;')\n // Parenthetical evaluations (filtering and otherwise), directly\n // within brackets or single quotes\n .replaceAll(/[['](\\??\\(.*?\\))[\\]'](?!.\\])/gu, function ($0, $1) {\n return '[#' + (subx.push($1) - 1) + ']';\n })\n // Escape periods and tildes within properties\n .replaceAll(/\\[['\"]([^'\\]]*)['\"]\\]/gu, function ($0, prop) {\n return \"['\" + prop.replaceAll('.', '%@%').replaceAll('~', '%%@@%%') + \"']\";\n })\n // Properties operator\n .replaceAll('~', ';~;')\n // Split by property boundaries\n .replaceAll(/['\"]?\\.['\"]?(?![^[]*\\])|\\[['\"]?/gu, ';')\n // Reinsert periods within properties\n .replaceAll('%@%', '.')\n // Reinsert tildes within properties\n .replaceAll('%%@@%%', '~')\n // Parent\n .replaceAll(/(?:;)?(\\^+)(?:;)?/gu, function ($0, ups) {\n return ';' + ups.split('').join(';') + ';';\n })\n // Descendents\n .replaceAll(/;;;|;;/gu, ';..;')\n // Remove trailing\n .replaceAll(/;$|'?\\]|'$/gu, '');\n const exprList = normalized.split(';').map(function (exp) {\n const match = exp.match(/#(\\d+)/u);\n return !match || !match[1] ? exp : subx[match[1]];\n });\n cache[expr] = exprList;\n return cache[expr].concat();\n};\nJSONPath.prototype.safeVm = {\n Script: SafeScript\n};\n\n/**\n * @typedef {any} ContextItem\n */\n\n/**\n * @typedef {any} EvaluatedResult\n */\n\n/**\n * @callback ConditionCallback\n * @param {ContextItem} item\n * @returns {boolean}\n */\n\n/**\n * Copy items out of one array into another.\n * @param {GenericArray} source Array with items to copy\n * @param {GenericArray} target Array to which to copy\n * @param {ConditionCallback} conditionCb Callback passed the current item;\n * will move item if evaluates to `true`\n * @returns {void}\n */\nconst moveToAnotherArray = function (source, target, conditionCb) {\n const il = source.length;\n for (let i = 0; i < il; i++) {\n const item = source[i];\n if (conditionCb(item)) {\n // eslint-disable-next-line @stylistic/max-len -- Long\n // eslint-disable-next-line sonarjs/updated-loop-counter -- Convenient\n target.push(source.splice(i--, 1)[0]);\n }\n }\n};\n\n/**\n * In-browser replacement for NodeJS' VM.Script.\n */\nclass Script {\n /**\n * @param {string} expr Expression to evaluate\n */\n constructor(expr) {\n this.code = expr;\n }\n\n /**\n * @param {object} context Object whose items will be added\n * to evaluation\n * @returns {EvaluatedResult} Result of evaluated code\n */\n runInNewContext(context) {\n let expr = this.code;\n const keys = Object.keys(context);\n const funcs = [];\n moveToAnotherArray(keys, funcs, key => {\n return typeof context[key] === 'function';\n });\n const values = keys.map(vr => {\n return context[vr];\n });\n const funcString = funcs.reduce((s, func) => {\n let fString = context[func].toString();\n if (!/function/u.test(fString)) {\n fString = 'function ' + fString;\n }\n return 'var ' + func + '=' + fString + ';' + s;\n }, '');\n expr = funcString + expr;\n\n // Mitigate http://perfectionkills.com/global-eval-what-are-the-options/#new_function\n if (!/(['\"])use strict\\1/u.test(expr) && !keys.includes('arguments')) {\n expr = 'var arguments = undefined;' + expr;\n }\n\n // Remove last semi so `return` will be inserted before\n // the previous one instead, allowing for the return\n // of a bare ending expression\n expr = expr.replace(/;\\s*$/u, '');\n\n // Insert `return`\n const lastStatementEnd = expr.lastIndexOf(';');\n const code = lastStatementEnd !== -1 ? expr.slice(0, lastStatementEnd + 1) + ' return ' + expr.slice(lastStatementEnd + 1) : ' return ' + expr;\n\n // eslint-disable-next-line no-new-func -- User's choice\n return new Function(...keys, code)(...values);\n }\n}\nJSONPath.prototype.vm = {\n Script\n};\n\nexport { JSONPath };\n","// Import polyfills\nimport \"../utils/polyfills\";\n\n// Import necessary utilities and libraries\nimport {\n fetchProviderData,\n updateSessionStatus,\n submitProofOnCallback,\n} from \"../utils/fetch-calls\";\nimport { JOCLAIM_SESSION_STATUS, MESSAGE_ACTIONS, MESSAGE_SOURCES } from \"../utils/constants\";\nimport { generateProof, formatProof } from \"../utils/proof-generator\";\nimport { createClaimObject } from \"../utils/claim-creator\";\nimport { loggerService, createContextLogger } from \"../utils/logger/LoggerService\";\nimport { EVENT_TYPES, LOG_LEVEL, LOG_TYPES } from \"../utils/logger/constants\";\nimport { SessionTimerManager } from \"../utils/session-timer\";\nimport { debugLogger, DebugLogType } from \"../utils/logger\";\nimport { installOffscreenReadyListener } from \"../utils/offscreen-manager\";\n\nimport * as messageRouter from \"./messageRouter\";\nimport * as sessionManager from \"./sessionManager\";\nimport * as tabManager from \"./tabManager\";\nimport * as proofQueue from \"./proofQueue\";\nimport * as cookieUtils from \"./cookieUtils\";\n\nconst bgLogger = createContextLogger({\n sessionId: \"unknown\",\n providerId: \"unknown\",\n appId: \"unknown\",\n source: \"reclaim-extension-sdk\",\n});\n\nexport default function initBackground() {\n installOffscreenReadyListener();\n\n // Context object to hold shared state and dependencies\n const ctx = {\n // State\n activeTabId: null,\n providerData: null,\n parameters: {},\n providerId: null,\n appId: null,\n sessionId: null,\n callbackUrl: null,\n publicData: null,\n aborted: false,\n expectManyClaims: false,\n originalTabId: null,\n managedTabs: new Set(),\n providerRequestsByHash: new Map(),\n generatedProofs: new Map(),\n filteredRequests: new Map(),\n proofGenerationQueue: [],\n isProcessingQueue: false,\n firstRequestReceived: false,\n initPopupMessage: new Map(),\n providerDataMessage: new Map(),\n activeSessionId: null,\n // Timer\n sessionTimerManager: new SessionTimerManager(),\n // Constants and dependencies\n fetchProviderData,\n updateSessionStatus,\n submitProofOnCallback,\n JOCLAIM_SESSION_STATUS,\n MESSAGE_ACTIONS,\n MESSAGE_SOURCES,\n generateProof,\n formatProof,\n createClaimObject,\n loggerService,\n bgLogger,\n debugLogger,\n DebugLogType,\n // Methods to be set below\n processFilteredRequest: null,\n failSession: null,\n submitProofs: null,\n };\n\n bgLogger.setContext({\n sessionId: ctx.sessionId || \"unknown\",\n providerId: ctx.providerId || \"unknown\",\n appId: ctx.appId || \"unknown\",\n type: LOG_TYPES.BACKGROUND,\n });\n\n // Load and live-sync log config\n try {\n const { LOG_CONFIG_STORAGE_KEY } = require(\"../utils/logger/constants\");\n chrome.storage.local.get([LOG_CONFIG_STORAGE_KEY], (res) => {\n const cfg = res?.[LOG_CONFIG_STORAGE_KEY];\n if (cfg && typeof cfg === \"object\") ctx.loggerService.setConfig(cfg);\n });\n chrome.storage.onChanged.addListener((changes, area) => {\n if (area === \"local\" && changes[LOG_CONFIG_STORAGE_KEY]) {\n const newCfg = changes[LOG_CONFIG_STORAGE_KEY].newValue || {};\n ctx.loggerService.setConfig(newCfg);\n }\n });\n } catch {}\n\n bgLogger.info({\n message: \"Background initialized INFO\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.BACKGROUND,\n });\n\n // Bind sessionManager methods to context\n ctx.failSession = (...args) => sessionManager.failSession(ctx, ...args);\n ctx.submitProofs = (...args) => sessionManager.submitProofs(ctx, ...args);\n\n // Add processFilteredRequest to context (move from class)\n ctx.processFilteredRequest = async function (request, criteria, sessionId, loginUrl) {\n try {\n sessionId = ctx.sessionId || sessionId;\n if (!sessionId) {\n ctx.failSession(\"Session not initialized for claim request\", criteria?.requestHash);\n return { success: false, error: \"Session not initialized\" };\n }\n if (!ctx.firstRequestReceived) {\n ctx.firstRequestReceived = true;\n ctx.sessionTimerManager.startSessionTimer();\n }\n\n bgLogger.setContext({\n sessionId: ctx.sessionId || \"unknown\",\n providerId: ctx.providerId || \"unknown\",\n appId: ctx.appId || \"unknown\",\n type: LOG_TYPES.BACKGROUND,\n });\n bgLogger.info({\n message: `[BACKGROUND] Filtering request for request hash: ${criteria.requestHash}`,\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.BACKGROUND,\n });\n\n const cookies = await cookieUtils.getCookiesForUrl(request.url, ctx.bgLogger);\n if (cookies) {\n request.cookieStr = cookies;\n }\n\n bgLogger.log({\n message: `[BACKGROUND] Cookies for URL: ${request.url}`,\n logLevel: LOG_LEVEL.ALL,\n type: LOG_TYPES.BACKGROUND,\n meta: {\n request: request,\n criteria: criteria,\n sessionId: sessionId,\n loginUrl: loginUrl,\n cookies: cookies,\n },\n });\n\n chrome.tabs.sendMessage(ctx.activeTabId, {\n action: ctx.MESSAGE_ACTIONS.CLAIM_CREATION_REQUESTED,\n source: ctx.MESSAGE_SOURCES.BACKGROUND,\n target: ctx.MESSAGE_SOURCES.CONTENT_SCRIPT,\n data: { requestHash: criteria.requestHash },\n });\n\n bgLogger.info({\n message: \"[BACKGROUND] Claim creation requested for request hash: \" + criteria.requestHash,\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.BACKGROUND,\n eventType: EVENT_TYPES.STARTING_CLAIM_CREATION,\n });\n\n let claimData = null;\n try {\n const criteriaWithGeo = { ...criteria, geoLocation: ctx.providerData?.geoLocation ?? \"\" };\n claimData = await ctx.createClaimObject(\n request,\n criteriaWithGeo,\n sessionId,\n ctx.providerId,\n loginUrl,\n ctx.bgLogger,\n );\n } catch (error) {\n bgLogger.error({\n message: \"[BACKGROUND] Error creating claim object: \" + error.message,\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.BACKGROUND,\n });\n chrome.tabs.sendMessage(ctx.activeTabId, {\n action: ctx.MESSAGE_ACTIONS.CLAIM_CREATION_FAILED,\n source: ctx.MESSAGE_SOURCES.BACKGROUND,\n target: ctx.MESSAGE_SOURCES.CONTENT_SCRIPT,\n data: { requestHash: criteria.requestHash },\n });\n\n ctx.failSession(\"Claim creation failed: \" + error.message, criteria.requestHash);\n return { success: false, error: error.message };\n }\n\n if (claimData) {\n chrome.tabs.sendMessage(ctx.activeTabId, {\n action: ctx.MESSAGE_ACTIONS.CLAIM_CREATION_SUCCESS,\n source: ctx.MESSAGE_SOURCES.BACKGROUND,\n target: ctx.MESSAGE_SOURCES.CONTENT_SCRIPT,\n data: { requestHash: criteria.requestHash },\n });\n bgLogger.info({\n message:\n \"[BACKGROUND] Claim Object creation successful for request hash: \" +\n criteria.requestHash,\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.BACKGROUND,\n });\n }\n const providerRequest = {\n url: criteria?.url || request?.url || \"\",\n expectedPageUrl: criteria?.expectedPageUrl || \"\",\n urlType: criteria?.urlType || \"EXACT\",\n method: criteria?.method || request?.method || \"GET\",\n responseMatches: Array.isArray(criteria?.responseMatches) ? criteria.responseMatches : [],\n responseRedactions: Array.isArray(criteria?.responseRedactions)\n ? criteria.responseRedactions\n : [],\n requestHash: criteria?.requestHash,\n };\n if (providerRequest.requestHash) {\n ctx.providerRequestsByHash.set(providerRequest.requestHash, providerRequest);\n }\n proofQueue.addToProofGenerationQueue(ctx, claimData, criteria.requestHash);\n bgLogger.info({\n message: \"[BACKGROUND] Proof generation queued for request hash: \" + criteria.requestHash,\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.BACKGROUND,\n });\n return { success: true, message: \"Proof generation queued\" };\n } catch (error) {\n bgLogger.error({\n message: \"[BACKGROUND] Error processing filtered request: \" + error.message,\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.BACKGROUND,\n });\n ctx.failSession(\"Error processing request: \" + error.message, criteria.requestHash);\n return { success: false, error: error.message };\n }\n };\n\n // Set up session timer callbacks\n ctx.sessionTimerManager.setCallbacks(ctx.failSession);\n ctx.sessionTimerManager.setTimerDuration(30000);\n // Register message handler\n chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {\n messageRouter.handleMessage(ctx, message, sender, sendResponse);\n return true; // Required for async response\n });\n\n // Listen for tab removals to clean up managedTabs\n chrome.tabs.onRemoved.addListener(async (tabId) => {\n const wasManaged = ctx.managedTabs.has(tabId);\n if (wasManaged) ctx.managedTabs.delete(tabId);\n\n const lostActive = tabId === ctx.activeTabId;\n const noManagedLeft = ctx.managedTabs.size === 0;\n\n // If there is an active session and we lost its tab(s), fail immediately.\n if (ctx.activeSessionId && (lostActive || noManagedLeft) && !ctx.aborted) {\n ctx.aborted = true;\n try {\n bgLogger.error({\n message: \"[BACKGROUND] Verification tab closed by user\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.BACKGROUND,\n sessionId: ctx.activeSessionId || ctx.sessionId || \"unknown\",\n providerId: ctx.providerId || \"unknown\",\n appId: ctx.appId || \"unknown\",\n eventType: EVENT_TYPES.RECLAIM_VERIFICATION_DISMISSED,\n });\n await ctx.failSession(\"Verification tab closed by user\");\n } catch {}\n }\n\n if (lostActive) ctx.activeTabId = null;\n if (noManagedLeft) {\n ctx.originalTabId = null;\n ctx.activeSessionId = null; // clear stale guard\n }\n });\n\n bgLogger.info({\n message: \"[BACKGROUND] 🚀 Background initialization complete\",\n logLevel: LOG_LEVEL.INFO,\n type: LOG_TYPES.BACKGROUND,\n });\n return ctx;\n}\n"],"names":["DebugLogType","Object","freeze","BACKGROUND","CONTENT","POPUP","INIT","VERIFICATION","FETCH","PROVIDER","CLAIM","PROOF","OFFSCREEN","POLYFILLS","SESSION_TIMER","debugLogger","DebugLogger","_classCallCheck","this","enabled","allowedTypes","Set","key","value","typesArray","Array","isArray","clear","type","_console","size","has","color","typeColor","_len","arguments","length","args","_key","console","log","apply","concat","_console2","_len2","_key2","info","_console3","_len3","_key3","warn","_console4","_len4","_key4","error","level","undefined","colors","background","content","popup","init","verification","fetch","provider","claim","proof","offscreen","polyfills","baseColor","keys","find","k","toLowerCase","includes","process","env","disable","enable","exports","read","buffer","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","i","d","s","NaN","Infinity","Math","pow","write","c","rt","abs","isNaN","floor","LN2","base64","ieee754","customInspectSymbol","Symbol","Buffer","K_MAX_LENGTH","createBuffer","RangeError","buf","Uint8Array","setPrototypeOf","prototype","arg","encodingOrOffset","TypeError","allocUnsafe","from","string","encoding","isEncoding","byteLength","actual","slice","fromString","ArrayBuffer","isView","arrayView","isInstance","copy","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","b","obj","isBuffer","len","checked","numberIsNaN","data","fromObject","toPrimitive","assertSize","array","toString","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","bidirectionalIndexOf","val","dir","arrayIndexOf","indexOf","call","lastIndexOf","arr","indexSize","arrLength","valLength","String","readUInt16BE","foundIndex","found","j","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","push","charCodeAt","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","min","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","defineProperty","enumerable","get","poolSize","alloc","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","list","pos","set","swap16","swap32","swap64","toLocaleString","equals","inspect","max","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","isFinite","Error","toJSON","_arr","ret","out","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","code","errors","E","sym","getMessage","Base","constructor","super","writable","configurable","name","stack","message","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","input","msg","received","isInteger","INVALID_BASE64_RE","leadSurrogate","toByteArray","split","base64clean","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","WebSocketPolyfill","window","_createClass","url","protocols","_this3","readyState","setTimeout","onclose","reason","Promise","reject","_BrowserWebSocket","_this","_callSuper","addEventListener","event","onerror","onopen","onmessage","_inherits","_this2","resolve","send","WebSocket","module","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","join","tripletToBase64","num","output","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","noop","nextTick","title","browser","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","LogEntry","_ref","sessionId","providerId","appId","logLine","eventType","logLevel","source","tabId","meta","_ref$time","time","deviceId","Date","dateTime","getTime","json","ts","fromDateTimeToTimeStamp","t","r","iterator","o","toStringTag","Generator","u","create","_regeneratorDefine2","f","p","G","v","bind","l","done","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","__proto__","displayName","_regenerator","w","_invoke","asyncGeneratorStep","then","_asyncToGenerator","_next","_throw","_typeof","ownKeys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","_objectSpread","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","_defineProperties","_toPrimitive","loggerService","LoggerService","logs","isSending","maxBatchSize","flushInterval","flushIntervalId","config","DEFAULT_LOG_CONFIG","_chrome$storage","chrome","storage","local","LOG_CONFIG_STORAGE_KEY","cfg","setConfig","onChanged","changes","area","newCfg","newValue","_unused","startFlushInterval","partial","clearInterval","setInterval","flush","_getDeviceLoggingId","_callee","result","_context","reclaim_device_id","crypto","randomUUID","now","logEntry","requestedLevel","LOG_LEVEL_MAP","LOG_LEVEL","INFO","prefix","line","shouldLog","consoleEnabled","emitToConsole","entry","addLog","_flush","_callee2","logsToSend","_t3","_context2","_toConsumableArray","sendLogs","_sendLogs","_callee3","entries","formattedLogs","body","_t4","_t5","_t6","_context3","getDeviceLoggingId","map","toJson","JSON","stringify","LOGGING_ENDPOINTS","DIAGNOSTIC_LOGGING","method","headers","ok","text","_x","createContextLogger","_loggerService$config","initial","ctx","context","setContext","assign","opts","debug","all","LOG_TYPES","FETCH_DATA","PROVIDER_DATA","CLAIM_CREATION","PROOF_GENERATION","PROOF_SUBMISSION","PROOF_VERIFICATION","LOG_SOURCES","INJECTION","EVENT_TYPES","IS_RECLAIM_EXTENSION_SDK","VERIFICATION_FLOW_STARTED","RECLAIM_VERIFICATION_DISMISSED","RECLAIM_VERIFICATION_PROVIDER_LOAD_EXCEPTION","REQUEST_MATCHED","RESPONSE_MATCH_FAILED","X_PATH_MATCH_REQUIREMENT_FAILED","JSON_PATH_MATCH_REQUIREMENT_FAILED","REGEX_MATCH_REQUIREMENT_FAILED","FILTERED_REQUEST_FOUND","FILTER_REQUEST_ERROR","STARTING_CLAIM_CREATION","CLAIM_CREATION_STARTED","CLAIM_CREATION_SUCCESS","CLAIM_CREATION_FAILED","CLAIM_PARAMETER_VALIDATION_FAILED_EXCEPTION","OFFSCREEN_DOCUMENT_READY","OFFSCREEN_DOCUMENT_NOT_READY_EXCEPTION","PROOF_GENERATION_STARTED","PROOF_GENERATION_SUCCESS","PROOF_GENERATION_ABORTED","PROOF_GENERATION_FAILED","RESULT_RECEIVED","SUBMITTING_PROOF","SUBMITTING_PROOF_TO_CALLBACK_URL","SUBMITTING_PROOF_TO_CALLBACK_URL_SUCCESS","SUBMITTING_PROOF_TO_CALLBACK_URL_FAILED","PROOF_SUBMISSION_FAILED","PROOF_SUBMITTED","VERIFICATION_FLOW_FAILED","TAB_NOT_MANAGED_BY_EXTENSION_EXCEPTION","INJECTION_SCRIPT_SET_IN_LOCAL_STORAGE_FAILED","VERIFICATION_POPUP_ERROR","UPDATE_SESSION_STATUS_ERROR","DEBUG","ALL","MESSAGE_SOURCES","CONTENT_SCRIPT","MESSAGE_ACTIONS","START_VERIFICATION","CANCEL_VERIFICATION","GENERATE_PROOF_REQUEST","CLAIM_CREATION_REQUESTED","GENERATE_PROOF","GENERATED_PROOF_RESPONSE","GENERATE_CLAIM_ON_ATTESTOR","GET_PRIVATE_KEY","GET_PRIVATE_KEY_RESPONSE","SHOW_PROVIDER_VERIFICATION_POPUP","GENERATE_PROOF_RESPONSE","PING_OFFSCREEN","CLOSE_CURRENT_TAB","GET_CURRENT_TAB_ID","REQUEST_PROVIDER_DATA","PROVIDER_DATA_READY","CONTENT_SCRIPT_LOADED","SHOULD_INITIALIZE","CHECK_IF_MANAGED_TAB","INTERCEPTED_REQUEST_AND_RESPONSE","UPDATE_PUBLIC_DATA","UPDATE_EXPECT_MANY_CLAIMS","GET_PARAMETERS","REPORT_PROVIDER_ERROR","REQUEST_CLAIM","INJECT_VIA_SCRIPTING","_digest","_writeFile","_readFile","global","self","Function","isServiceWorker","isContentScript","document","contentType","require","moduleName","fs","path","os","originalRequire","getRandomValues","random","subtle","digest","algorithm","hashInt","reduce","acc","_x2","CustomURL","base","startsWith","OriginalURL","domain","URL","getOwnPropertyNames","prop","readFileSync","writeFileSync","existsSync","promises","readFile","_x3","writeFile","_x4","_x5","tmpdir","homedir","platform","cpus","model","speed","totalmem","freemem","dirname","basename","pop","endsWith","extname","dotIndex","sep","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","id","loaded","__webpack_modules__","getter","__esModule","definition","hmd","children","hasOwnProperty","offscreenLogger","offscreenDocTimeout","offscreenGlobalListener","action","setupOffscreenReadyListener","runtime","onMessage","hasListener","Jsep","addUnaryOp","op_name","max_unop_len","unary_ops","addBinaryOp","precedence","isRightAssociative","max_binop_len","binary_ops","right_associative","add","delete","addIdentifierChar","char","additional_identifier_chars","addLiteral","literal_name","literal_value","literals","removeUnaryOp","getMaxKeyLen","removeAllUnaryOps","removeIdentifierChar","removeBinaryOp","removeAllBinaryOps","removeLiteral","removeAllLiterals","expr","charAt","index","parse","isDecimalDigit","ch","binaryPrecedence","op_val","isIdentifierStart","isIdentifierPart","throwError","description","runHook","node","hooks","searchHook","callback","gobbleSpaces","SPACE_CODE","TAB_CODE","LF_CODE","CR_CODE","nodes","gobbleExpressions","COMPOUND","untilICode","ch_i","SEMCOL_CODE","COMMA_CODE","gobbleExpression","gobbleBinaryExpression","gobbleBinaryOp","to_check","tc_len","biop","prec","biop_info","left","right","cur_biop","gobbleToken","right_a","comparePrev","prev","BINARY_EXP","operator","PERIOD_CODE","gobbleNumericLiteral","SQUOTE_CODE","DQUOTE_CODE","gobbleStringLiteral","OBRACK_CODE","gobbleArray","argument","UNARY_EXP","gobbleIdentifier","LITERAL","raw","this_str","THIS_EXP","OPAREN_CODE","gobbleGroup","gobbleTokenProperty","QUMARK_CODE","optional","MEMBER_EXP","computed","object","property","CBRACK_CODE","CALL_EXP","gobbleArguments","CPAREN_CODE","callee","chCode","number","parseFloat","startIndex","quote","closed","substring","IDENTIFIER","termination","separator_count","SEQUENCE_EXP","expressions","ARRAY_EXP","elements","plugins","jsep","registered","register","plugin","COLON_CODE","stdClassProps","ternary","test","consequent","alternate","newTest","patternIndex","inCharSet","pattern","flags","RegExp","assignmentOperators","updateOperators","assignmentPrecedence","updateNodeTypes","updateBinariesToAssignments","values","op","some","BLOCKED_PROTO_PROPERTIES","SafeEval","evalAst","ast","subs","evalBinaryExpression","evalCompound","evalConditionalExpression","evalIdentifier","evalLiteral","evalMemberExpression","evalUnaryExpression","evalArrayExpression","evalCallExpression","evalAssignmentExpression","SyntaxError","hasOwn","ReferenceError","typeof","el","func","item","unshift","NewError","avoidNew","otherTypeCallback","optObj","resultType","flatten","wrap","sandbox","eval","ignoreEvalErrors","parent","parentProperty","autostart","evaluate","currParent","currParentProperty","currResultType","currEval","currSandbox","currOtherTypeCallback","toPathString","exprList","toPathArray","shift","_hasParentSelector","_trace","ea","isParentSelector","hasArrExpr","rslt","valOrPath","_getPreferredOutput","pointer","toPointer","_handleCallback","fullRetObj","preferredOutput","parentPropName","literalPriority","retObj","loc","addRet","elems","_walk","_slice","safeLoc","nested","exec","npath","nvalue","_eval","at","addType","valueType","locProp","part","rett","tl","tt","splice","step","_v","_vname","_$_parentProperty","_$_parent","_$_property","_$_root","_$_v","containsPath","_$_path","scriptCacheKey","cache","script","replaceAll","safeVm","Script","vm","CurrEval","runInNewContext","pathArr","subx","$0","$1","ups","exp","match","keyMap","funcs","conditionCb","il","moveToAnotherArray","vr","fString","lastStatementEnd"],"sourceRoot":""}
|