var __defProp = Object.defineProperty; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __publicField = (obj, key, value) => { __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); return value; }; var __accessCheck = (obj, member, msg) => { if (!member.has(obj)) throw TypeError("Cannot " + msg); }; var __privateGet = (obj, member, getter) => { __accessCheck(obj, member, "read from private field"); return getter ? getter.call(obj) : member.get(obj); }; var __privateAdd = (obj, member, value) => { if (member.has(obj)) throw TypeError("Cannot add the same private member more than once"); member instanceof WeakSet ? member.add(obj) : member.set(obj, value); }; var __privateSet = (obj, member, value, setter) => { __accessCheck(obj, member, "write to private field"); setter ? setter.call(obj, value) : member.set(obj, value); return value; }; // ../../../node_modules/@sentry/utils/esm/is.js var objectToString = Object.prototype.toString; function isError(wat) { switch (objectToString.call(wat)) { case "[object Error]": case "[object Exception]": case "[object DOMException]": return true; default: return isInstanceOf(wat, Error); } } function isBuiltin(wat, className) { return objectToString.call(wat) === `[object ${className}]`; } function isString(wat) { return isBuiltin(wat, "String"); } function isPrimitive(wat) { return wat === null || typeof wat !== "object" && typeof wat !== "function"; } function isPlainObject(wat) { return isBuiltin(wat, "Object"); } function isEvent(wat) { return typeof Event !== "undefined" && isInstanceOf(wat, Event); } function isElement(wat) { return typeof Element !== "undefined" && isInstanceOf(wat, Element); } function isThenable(wat) { return Boolean(wat && wat.then && typeof wat.then === "function"); } function isSyntheticEvent(wat) { return isPlainObject(wat) && "nativeEvent" in wat && "preventDefault" in wat && "stopPropagation" in wat; } function isNaN2(wat) { return typeof wat === "number" && wat !== wat; } function isInstanceOf(wat, base) { try { return wat instanceof base; } catch (_e) { return false; } } // ../../../node_modules/@sentry/utils/esm/worldwide.js function isGlobalObj(obj) { return obj && obj.Math == Math ? obj : void 0; } var GLOBAL_OBJ = typeof globalThis == "object" && isGlobalObj(globalThis) || // eslint-disable-next-line no-restricted-globals typeof window == "object" && isGlobalObj(window) || typeof self == "object" && isGlobalObj(self) || typeof global == "object" && isGlobalObj(global) || function() { return this; }() || {}; function getGlobalObject() { return GLOBAL_OBJ; } function getGlobalSingleton(name, creator, obj) { const gbl = obj || GLOBAL_OBJ; const __SENTRY__ = gbl.__SENTRY__ = gbl.__SENTRY__ || {}; const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator()); return singleton; } // ../../../node_modules/@sentry/utils/esm/browser.js var WINDOW = getGlobalObject(); function htmlTreeAsString(elem, keyAttrs) { try { let currentElem = elem; const MAX_TRAVERSE_HEIGHT = 5; const MAX_OUTPUT_LEN = 80; const out = []; let height = 0; let len = 0; const separator = " > "; const sepLength = separator.length; let nextStr; while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) { nextStr = _htmlElementAsString(currentElem, keyAttrs); if (nextStr === "html" || height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN) { break; } out.push(nextStr); len += nextStr.length; currentElem = currentElem.parentNode; } return out.reverse().join(separator); } catch (_oO) { return ""; } } function _htmlElementAsString(el, keyAttrs) { const elem = el; const out = []; let className; let classes; let key; let attr; let i; if (!elem || !elem.tagName) { return ""; } out.push(elem.tagName.toLowerCase()); const keyAttrPairs = keyAttrs && keyAttrs.length ? keyAttrs.filter((keyAttr) => elem.getAttribute(keyAttr)).map((keyAttr) => [keyAttr, elem.getAttribute(keyAttr)]) : null; if (keyAttrPairs && keyAttrPairs.length) { keyAttrPairs.forEach((keyAttrPair) => { out.push(`[${keyAttrPair[0]}="${keyAttrPair[1]}"]`); }); } else { if (elem.id) { out.push(`#${elem.id}`); } className = elem.className; if (className && isString(className)) { classes = className.split(/\s+/); for (i = 0; i < classes.length; i++) { out.push(`.${classes[i]}`); } } } const allowedAttrs = ["type", "name", "title", "alt"]; for (i = 0; i < allowedAttrs.length; i++) { key = allowedAttrs[i]; attr = elem.getAttribute(key); if (attr) { out.push(`[${key}="${attr}"]`); } } return out.join(""); } // ../../../node_modules/@sentry/utils/esm/error.js var SentryError = class extends Error { /** Display name of this error instance. */ constructor(message, logLevel = "warn") { super(message); this.message = message; ; this.name = new.target.prototype.constructor.name; Object.setPrototypeOf(this, new.target.prototype); this.logLevel = logLevel; } }; // ../../../node_modules/@sentry/utils/esm/dsn.js var DSN_REGEX = /^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)([\w.-]+)(?::(\d+))?\/(.+)/; function isValidProtocol(protocol) { return protocol === "http" || protocol === "https"; } function dsnToString(dsn, withPassword = false) { const { host, path, pass, port, projectId, protocol, publicKey } = dsn; return `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ""}@${host}${port ? `:${port}` : ""}/${path ? `${path}/` : path}${projectId}`; } function dsnFromString(str) { const match2 = DSN_REGEX.exec(str); if (!match2) { throw new SentryError(`Invalid Sentry Dsn: ${str}`); } const [protocol, publicKey, pass = "", host, port = "", lastPath] = match2.slice(1); let path = ""; let projectId = lastPath; const split = projectId.split("/"); if (split.length > 1) { path = split.slice(0, -1).join("/"); projectId = split.pop(); } if (projectId) { const projectMatch = projectId.match(/^\d+/); if (projectMatch) { projectId = projectMatch[0]; } } return dsnFromComponents({ host, pass, path, projectId, port, protocol, publicKey }); } function dsnFromComponents(components) { return { protocol: components.protocol, publicKey: components.publicKey || "", pass: components.pass || "", host: components.host, port: components.port || "", path: components.path || "", projectId: components.projectId }; } function validateDsn(dsn) { if (!(typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__)) { return; } const { port, projectId, protocol } = dsn; const requiredComponents = ["protocol", "publicKey", "host", "projectId"]; requiredComponents.forEach((component) => { if (!dsn[component]) { throw new SentryError(`Invalid Sentry Dsn: ${component} missing`); } }); if (!projectId.match(/^\d+$/)) { throw new SentryError(`Invalid Sentry Dsn: Invalid projectId ${projectId}`); } if (!isValidProtocol(protocol)) { throw new SentryError(`Invalid Sentry Dsn: Invalid protocol ${protocol}`); } if (port && isNaN(parseInt(port, 10))) { throw new SentryError(`Invalid Sentry Dsn: Invalid port ${port}`); } return true; } function makeDsn(from) { const components = typeof from === "string" ? dsnFromString(from) : dsnFromComponents(from); validateDsn(components); return components; } // ../../../node_modules/@sentry/utils/esm/logger.js var PREFIX = "Sentry Logger "; var CONSOLE_LEVELS = ["debug", "info", "warn", "error", "log", "assert", "trace"]; function consoleSandbox(callback) { if (!("console" in GLOBAL_OBJ)) { return callback(); } const originalConsole = GLOBAL_OBJ.console; const wrappedLevels = {}; CONSOLE_LEVELS.forEach((level) => { const originalWrappedFunc = originalConsole[level] && originalConsole[level].__sentry_original__; if (level in originalConsole && originalWrappedFunc) { wrappedLevels[level] = originalConsole[level]; originalConsole[level] = originalWrappedFunc; } }); try { return callback(); } finally { Object.keys(wrappedLevels).forEach((level) => { originalConsole[level] = wrappedLevels[level]; }); } } function makeLogger() { let enabled = false; const logger2 = { enable: () => { enabled = true; }, disable: () => { enabled = false; } }; if (typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__) { CONSOLE_LEVELS.forEach((name) => { logger2[name] = (...args) => { if (enabled) { consoleSandbox(() => { GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args); }); } }; }); } else { CONSOLE_LEVELS.forEach((name) => { logger2[name] = () => void 0; }); } return logger2; } var logger; if (typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__) { logger = getGlobalSingleton("logger", makeLogger); } else { logger = makeLogger(); } // ../../../node_modules/@sentry/utils/esm/string.js function truncate(str, max = 0) { if (typeof str !== "string" || max === 0) { return str; } return str.length <= max ? str : `${str.substr(0, max)}...`; } // ../../../node_modules/@sentry/utils/esm/object.js function addNonEnumerableProperty(obj, name, value) { Object.defineProperty(obj, name, { // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it value, writable: true, configurable: true }); } function urlEncode(object) { return Object.keys(object).map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`).join("&"); } function convertToPlainObject(value) { if (isError(value)) { return { message: value.message, name: value.name, stack: value.stack, ...getOwnProperties(value) }; } else if (isEvent(value)) { const newObj = { type: value.type, target: serializeEventTarget(value.target), currentTarget: serializeEventTarget(value.currentTarget), ...getOwnProperties(value) }; if (typeof CustomEvent !== "undefined" && isInstanceOf(value, CustomEvent)) { newObj.detail = value.detail; } return newObj; } else { return value; } } function serializeEventTarget(target) { try { return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target); } catch (_oO) { return ""; } } function getOwnProperties(obj) { if (typeof obj === "object" && obj !== null) { const extractedProps = {}; for (const property in obj) { if (Object.prototype.hasOwnProperty.call(obj, property)) { extractedProps[property] = obj[property]; } } return extractedProps; } else { return {}; } } function extractExceptionKeysForMessage(exception, maxLength = 40) { const keys = Object.keys(convertToPlainObject(exception)); keys.sort(); if (!keys.length) { return "[object has no keys]"; } if (keys[0].length >= maxLength) { return truncate(keys[0], maxLength); } for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) { const serialized = keys.slice(0, includedKeys).join(", "); if (serialized.length > maxLength) { continue; } if (includedKeys === keys.length) { return serialized; } return truncate(serialized, maxLength); } return ""; } function dropUndefinedKeys(inputValue) { const memoizationMap = /* @__PURE__ */ new Map(); return _dropUndefinedKeys(inputValue, memoizationMap); } function _dropUndefinedKeys(inputValue, memoizationMap) { if (isPlainObject(inputValue)) { const memoVal = memoizationMap.get(inputValue); if (memoVal !== void 0) { return memoVal; } const returnValue = {}; memoizationMap.set(inputValue, returnValue); for (const key of Object.keys(inputValue)) { if (typeof inputValue[key] !== "undefined") { returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap); } } return returnValue; } if (Array.isArray(inputValue)) { const memoVal = memoizationMap.get(inputValue); if (memoVal !== void 0) { return memoVal; } const returnValue = []; memoizationMap.set(inputValue, returnValue); inputValue.forEach((item) => { returnValue.push(_dropUndefinedKeys(item, memoizationMap)); }); return returnValue; } return inputValue; } // ../../../node_modules/@sentry/utils/esm/buildPolyfills/_optionalChain.js function _optionalChain(ops) { let lastAccessLHS = void 0; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === "optionalAccess" || op === "optionalCall") && value == null) { return; } if (op === "access" || op === "optionalAccess") { lastAccessLHS = value; value = fn(value); } else if (op === "call" || op === "optionalCall") { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = void 0; } } return value; } // ../../../node_modules/@sentry/utils/esm/stacktrace.js var STACKTRACE_LIMIT = 50; function createStackParser(...parsers) { const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map((p) => p[1]); return (stack, skipFirst = 0) => { const frames = []; for (const line of stack.split("\n").slice(skipFirst)) { const cleanedLine = line.replace(/\(error: (.*)\)/, "$1"); for (const parser of sortedParsers) { const frame = parser(cleanedLine); if (frame) { frames.push(frame); break; } } } return stripSentryFramesAndReverse(frames); }; } function stackParserFromStackParserOptions(stackParser) { if (Array.isArray(stackParser)) { return createStackParser(...stackParser); } return stackParser; } function stripSentryFramesAndReverse(stack) { if (!stack.length) { return []; } let localStack = stack; const firstFrameFunction = localStack[0].function || ""; const lastFrameFunction = localStack[localStack.length - 1].function || ""; if (firstFrameFunction.indexOf("captureMessage") !== -1 || firstFrameFunction.indexOf("captureException") !== -1) { localStack = localStack.slice(1); } if (lastFrameFunction.indexOf("sentryWrapped") !== -1) { localStack = localStack.slice(0, -1); } return localStack.slice(0, STACKTRACE_LIMIT).map((frame) => ({ ...frame, filename: frame.filename || localStack[0].filename, function: frame.function || "?" })).reverse(); } var defaultFunctionName = ""; function getFunctionName(fn) { try { if (!fn || typeof fn !== "function") { return defaultFunctionName; } return fn.name || defaultFunctionName; } catch (e) { return defaultFunctionName; } } function node(getModule2) { const FILENAME_MATCH = /^\s*[-]{4,}$/; const FULL_MATCH = /at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/; return (line) => { if (line.match(FILENAME_MATCH)) { return { filename: line }; } const lineMatch = line.match(FULL_MATCH); if (!lineMatch) { return void 0; } let object; let method; let functionName; let typeName; let methodName; if (lineMatch[1]) { functionName = lineMatch[1]; let methodStart = functionName.lastIndexOf("."); if (functionName[methodStart - 1] === ".") { methodStart--; } if (methodStart > 0) { object = functionName.substr(0, methodStart); method = functionName.substr(methodStart + 1); const objectEnd = object.indexOf(".Module"); if (objectEnd > 0) { functionName = functionName.substr(objectEnd + 1); object = object.substr(0, objectEnd); } } typeName = void 0; } if (method) { typeName = object; methodName = method; } if (method === "") { methodName = void 0; functionName = void 0; } if (functionName === void 0) { methodName = methodName || ""; functionName = typeName ? `${typeName}.${methodName}` : methodName; } const filename = _optionalChain([lineMatch, "access", (_) => _[2], "optionalAccess", (_2) => _2.startsWith, "call", (_3) => _3("file://")]) ? lineMatch[2].substr(7) : lineMatch[2]; const isNative = lineMatch[5] === "native"; const isInternal = isNative || filename && !filename.startsWith("/") && !filename.startsWith(".") && filename.indexOf(":\\") !== 1; const in_app = !isInternal && filename !== void 0 && !filename.includes("node_modules/"); return { filename, module: _optionalChain([getModule2, "optionalCall", (_4) => _4(filename)]), function: functionName, lineno: parseInt(lineMatch[3], 10) || void 0, colno: parseInt(lineMatch[4], 10) || void 0, in_app }; }; } function nodeStackLineParser(getModule2) { return [90, node(getModule2)]; } // ../../../node_modules/@sentry/utils/esm/memo.js function memoBuilder() { const hasWeakSet = typeof WeakSet === "function"; const inner = hasWeakSet ? /* @__PURE__ */ new WeakSet() : []; function memoize(obj) { if (hasWeakSet) { if (inner.has(obj)) { return true; } inner.add(obj); return false; } for (let i = 0; i < inner.length; i++) { const value = inner[i]; if (value === obj) { return true; } } inner.push(obj); return false; } function unmemoize(obj) { if (hasWeakSet) { inner.delete(obj); } else { for (let i = 0; i < inner.length; i++) { if (inner[i] === obj) { inner.splice(i, 1); break; } } } } return [memoize, unmemoize]; } // ../../../node_modules/@sentry/utils/esm/misc.js function uuid4() { const gbl = GLOBAL_OBJ; const crypto = gbl.crypto || gbl.msCrypto; if (crypto && crypto.randomUUID) { return crypto.randomUUID().replace(/-/g, ""); } const getRandomByte = crypto && crypto.getRandomValues ? () => crypto.getRandomValues(new Uint8Array(1))[0] : () => Math.random() * 16; return ([1e7] + 1e3 + 4e3 + 8e3 + 1e11).replace( /[018]/g, (c) => ( // eslint-disable-next-line no-bitwise (c ^ (getRandomByte() & 15) >> c / 4).toString(16) ) ); } function getFirstException(event) { return event.exception && event.exception.values ? event.exception.values[0] : void 0; } function addExceptionTypeValue(event, value, type) { const exception = event.exception = event.exception || {}; const values = exception.values = exception.values || []; const firstException = values[0] = values[0] || {}; if (!firstException.value) { firstException.value = value || ""; } if (!firstException.type) { firstException.type = type || "Error"; } } function addExceptionMechanism(event, newMechanism) { const firstException = getFirstException(event); if (!firstException) { return; } const defaultMechanism = { type: "generic", handled: true }; const currentMechanism = firstException.mechanism; firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism }; if (newMechanism && "data" in newMechanism) { const mergedData = { ...currentMechanism && currentMechanism.data, ...newMechanism.data }; firstException.mechanism.data = mergedData; } } function checkOrSetAlreadyCaught(exception) { if (exception && exception.__sentry_captured__) { return true; } try { addNonEnumerableProperty(exception, "__sentry_captured__", true); } catch (err) { } return false; } function arrayify(maybeArray) { return Array.isArray(maybeArray) ? maybeArray : [maybeArray]; } // ../../../node_modules/@sentry/utils/esm/env.js function isBrowserBundle() { return typeof __SENTRY_BROWSER_BUNDLE__ !== "undefined" && !!__SENTRY_BROWSER_BUNDLE__; } // ../../../node_modules/@sentry/utils/esm/node.js function isNodeEnv() { return !isBrowserBundle() && Object.prototype.toString.call(typeof process !== "undefined" ? process : 0) === "[object process]"; } function dynamicRequire(mod, request) { return mod.require(request); } // ../../../node_modules/@sentry/utils/esm/normalize.js function normalize(input, depth = Infinity, maxProperties = Infinity) { try { return visit("", input, depth, maxProperties); } catch (err) { return { ERROR: `**non-serializable** (${err})` }; } } function normalizeToSize(object, depth = 3, maxSize = 100 * 1024) { const normalized = normalize(object, depth); if (jsonSize(normalized) > maxSize) { return normalizeToSize(object, depth - 1, maxSize); } return normalized; } function visit(key, value, depth = Infinity, maxProperties = Infinity, memo = memoBuilder()) { const [memoize, unmemoize] = memo; if (value === null || ["number", "boolean", "string"].includes(typeof value) && !isNaN2(value)) { return value; } const stringified = stringifyValue(key, value); if (!stringified.startsWith("[object ")) { return stringified; } if (value["__sentry_skip_normalization__"]) { return value; } if (depth === 0) { return stringified.replace("object ", ""); } if (memoize(value)) { return "[Circular ~]"; } const valueWithToJSON = value; if (valueWithToJSON && typeof valueWithToJSON.toJSON === "function") { try { const jsonValue = valueWithToJSON.toJSON(); return visit("", jsonValue, depth - 1, maxProperties, memo); } catch (err) { } } const normalized = Array.isArray(value) ? [] : {}; let numAdded = 0; const visitable = convertToPlainObject(value); for (const visitKey in visitable) { if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) { continue; } if (numAdded >= maxProperties) { normalized[visitKey] = "[MaxProperties ~]"; break; } const visitValue = visitable[visitKey]; normalized[visitKey] = visit(visitKey, visitValue, depth - 1, maxProperties, memo); numAdded++; } unmemoize(value); return normalized; } function stringifyValue(key, value) { try { if (key === "domain" && value && typeof value === "object" && value._events) { return "[Domain]"; } if (key === "domainEmitter") { return "[DomainEmitter]"; } if (typeof global !== "undefined" && value === global) { return "[Global]"; } if (typeof window !== "undefined" && value === window) { return "[Window]"; } if (typeof document !== "undefined" && value === document) { return "[Document]"; } if (isSyntheticEvent(value)) { return "[SyntheticEvent]"; } if (typeof value === "number" && value !== value) { return "[NaN]"; } if (value === void 0) { return "[undefined]"; } if (typeof value === "function") { return `[Function: ${getFunctionName(value)}]`; } if (typeof value === "symbol") { return `[${String(value)}]`; } if (typeof value === "bigint") { return `[BigInt: ${String(value)}]`; } return `[object ${Object.getPrototypeOf(value).constructor.name}]`; } catch (err) { return `**non-serializable** (${err})`; } } function utf8Length(value) { return ~-encodeURI(value).split(/%..|./).length; } function jsonSize(value) { return utf8Length(JSON.stringify(value)); } // ../../../node_modules/@sentry/utils/esm/path.js var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^/]+?|)(\.[^./]*|))(?:[/]*)$/; function splitPath(filename) { const parts = splitPathRe.exec(filename); return parts ? parts.slice(1) : []; } function basename(path, ext) { let f = splitPath(path)[2]; if (ext && f.substr(ext.length * -1) === ext) { f = f.substr(0, f.length - ext.length); } return f; } // ../../../node_modules/@sentry/utils/esm/syncpromise.js var States; (function(States2) { const PENDING = 0; States2[States2["PENDING"] = PENDING] = "PENDING"; const RESOLVED = 1; States2[States2["RESOLVED"] = RESOLVED] = "RESOLVED"; const REJECTED = 2; States2[States2["REJECTED"] = REJECTED] = "REJECTED"; })(States || (States = {})); function resolvedSyncPromise(value) { return new SyncPromise((resolve2) => { resolve2(value); }); } function rejectedSyncPromise(reason) { return new SyncPromise((_, reject) => { reject(reason); }); } var SyncPromise = class { __init() { this._state = States.PENDING; } __init2() { this._handlers = []; } constructor(executor) { ; SyncPromise.prototype.__init.call(this); SyncPromise.prototype.__init2.call(this); SyncPromise.prototype.__init3.call(this); SyncPromise.prototype.__init4.call(this); SyncPromise.prototype.__init5.call(this); SyncPromise.prototype.__init6.call(this); try { executor(this._resolve, this._reject); } catch (e) { this._reject(e); } } /** JSDoc */ then(onfulfilled, onrejected) { return new SyncPromise((resolve2, reject) => { this._handlers.push([ false, (result) => { if (!onfulfilled) { resolve2(result); } else { try { resolve2(onfulfilled(result)); } catch (e) { reject(e); } } }, (reason) => { if (!onrejected) { reject(reason); } else { try { resolve2(onrejected(reason)); } catch (e) { reject(e); } } } ]); this._executeHandlers(); }); } /** JSDoc */ catch(onrejected) { return this.then((val) => val, onrejected); } /** JSDoc */ finally(onfinally) { return new SyncPromise((resolve2, reject) => { let val; let isRejected; return this.then( (value) => { isRejected = false; val = value; if (onfinally) { onfinally(); } }, (reason) => { isRejected = true; val = reason; if (onfinally) { onfinally(); } } ).then(() => { if (isRejected) { reject(val); return; } resolve2(val); }); }); } /** JSDoc */ __init3() { this._resolve = (value) => { this._setResult(States.RESOLVED, value); }; } /** JSDoc */ __init4() { this._reject = (reason) => { this._setResult(States.REJECTED, reason); }; } /** JSDoc */ __init5() { this._setResult = (state, value) => { if (this._state !== States.PENDING) { return; } if (isThenable(value)) { void value.then(this._resolve, this._reject); return; } this._state = state; this._value = value; this._executeHandlers(); }; } /** JSDoc */ __init6() { this._executeHandlers = () => { if (this._state === States.PENDING) { return; } const cachedHandlers = this._handlers.slice(); this._handlers = []; cachedHandlers.forEach((handler2) => { if (handler2[0]) { return; } if (this._state === States.RESOLVED) { handler2[1](this._value); } if (this._state === States.REJECTED) { handler2[2](this._value); } handler2[0] = true; }); }; } }; // ../../../node_modules/@sentry/utils/esm/promisebuffer.js function makePromiseBuffer(limit) { const buffer = []; function isReady() { return limit === void 0 || buffer.length < limit; } function remove(task) { return buffer.splice(buffer.indexOf(task), 1)[0]; } function add(taskProducer) { if (!isReady()) { return rejectedSyncPromise(new SentryError("Not adding Promise because buffer limit was reached.")); } const task = taskProducer(); if (buffer.indexOf(task) === -1) { buffer.push(task); } void task.then(() => remove(task)).then( null, () => remove(task).then(null, () => { }) ); return task; } function drain(timeout) { return new SyncPromise((resolve2, reject) => { let counter = buffer.length; if (!counter) { return resolve2(true); } const capturedSetTimeout = setTimeout(() => { if (timeout && timeout > 0) { resolve2(false); } }, timeout); buffer.forEach((item) => { void resolvedSyncPromise(item).then(() => { if (!--counter) { clearTimeout(capturedSetTimeout); resolve2(true); } }, reject); }); }); } return { $: buffer, add, drain }; } // ../../../node_modules/@sentry/utils/esm/time.js var WINDOW2 = getGlobalObject(); var dateTimestampSource = { nowSeconds: () => Date.now() / 1e3 }; function getBrowserPerformance() { const { performance } = WINDOW2; if (!performance || !performance.now) { return void 0; } const timeOrigin = Date.now() - performance.now(); return { now: () => performance.now(), timeOrigin }; } function getNodePerformance() { try { const perfHooks = dynamicRequire(module, "perf_hooks"); return perfHooks.performance; } catch (_) { return void 0; } } var platformPerformance = isNodeEnv() ? getNodePerformance() : getBrowserPerformance(); var timestampSource = platformPerformance === void 0 ? dateTimestampSource : { nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1e3 }; var dateTimestampInSeconds = dateTimestampSource.nowSeconds.bind(dateTimestampSource); var timestampInSeconds = timestampSource.nowSeconds.bind(timestampSource); var _browserPerformanceTimeOriginMode; var browserPerformanceTimeOrigin = (() => { const { performance } = WINDOW2; if (!performance || !performance.now) { _browserPerformanceTimeOriginMode = "none"; return void 0; } const threshold = 3600 * 1e3; const performanceNow = performance.now(); const dateNow = Date.now(); const timeOriginDelta = performance.timeOrigin ? Math.abs(performance.timeOrigin + performanceNow - dateNow) : threshold; const timeOriginIsReliable = timeOriginDelta < threshold; const navigationStart = performance.timing && performance.timing.navigationStart; const hasNavigationStart = typeof navigationStart === "number"; const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold; const navigationStartIsReliable = navigationStartDelta < threshold; if (timeOriginIsReliable || navigationStartIsReliable) { if (timeOriginDelta <= navigationStartDelta) { _browserPerformanceTimeOriginMode = "timeOrigin"; return performance.timeOrigin; } else { _browserPerformanceTimeOriginMode = "navigationStart"; return navigationStart; } } _browserPerformanceTimeOriginMode = "dateNow"; return dateNow; })(); // ../../../node_modules/@sentry/utils/esm/envelope.js function createEnvelope(headers, items = []) { return [headers, items]; } function addItemToEnvelope(envelope, newItem) { const [headers, items] = envelope; return [headers, [...items, newItem]]; } function forEachEnvelopeItem(envelope, callback) { const envelopeItems = envelope[1]; envelopeItems.forEach((envelopeItem) => { const envelopeItemType = envelopeItem[0].type; callback(envelopeItem, envelopeItemType); }); } function encodeUTF8(input, textEncoder) { const utf8 = textEncoder || new TextEncoder(); return utf8.encode(input); } function serializeEnvelope(envelope, textEncoder) { const [envHeaders, items] = envelope; let parts = JSON.stringify(envHeaders); function append(next) { if (typeof parts === "string") { parts = typeof next === "string" ? parts + next : [encodeUTF8(parts, textEncoder), next]; } else { parts.push(typeof next === "string" ? encodeUTF8(next, textEncoder) : next); } } for (const item of items) { const [itemHeaders, payload] = item; append(` ${JSON.stringify(itemHeaders)} `); if (typeof payload === "string" || payload instanceof Uint8Array) { append(payload); } else { let stringifiedPayload; try { stringifiedPayload = JSON.stringify(payload); } catch (e) { stringifiedPayload = JSON.stringify(normalize(payload)); } append(stringifiedPayload); } } return typeof parts === "string" ? parts : concatBuffers(parts); } function concatBuffers(buffers) { const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0); const merged = new Uint8Array(totalLength); let offset = 0; for (const buffer of buffers) { merged.set(buffer, offset); offset += buffer.length; } return merged; } function createAttachmentEnvelopeItem(attachment, textEncoder) { const buffer = typeof attachment.data === "string" ? encodeUTF8(attachment.data, textEncoder) : attachment.data; return [ dropUndefinedKeys({ type: "attachment", length: buffer.length, filename: attachment.filename, content_type: attachment.contentType, attachment_type: attachment.attachmentType }), buffer ]; } var ITEM_TYPE_TO_DATA_CATEGORY_MAP = { session: "session", sessions: "session", attachment: "attachment", transaction: "transaction", event: "error", client_report: "internal", user_report: "default" }; function envelopeItemTypeToDataCategory(type) { return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type]; } // ../../../node_modules/@sentry/utils/esm/ratelimit.js var DEFAULT_RETRY_AFTER = 60 * 1e3; function parseRetryAfterHeader(header, now = Date.now()) { const headerDelay = parseInt(`${header}`, 10); if (!isNaN(headerDelay)) { return headerDelay * 1e3; } const headerDate = Date.parse(`${header}`); if (!isNaN(headerDate)) { return headerDate - now; } return DEFAULT_RETRY_AFTER; } function disabledUntil(limits, category) { return limits[category] || limits.all || 0; } function isRateLimited(limits, category, now = Date.now()) { return disabledUntil(limits, category) > now; } function updateRateLimits(limits, { statusCode, headers }, now = Date.now()) { const updatedRateLimits = { ...limits }; const rateLimitHeader = headers && headers["x-sentry-rate-limits"]; const retryAfterHeader = headers && headers["retry-after"]; if (rateLimitHeader) { for (const limit of rateLimitHeader.trim().split(",")) { const [retryAfter, categories] = limit.split(":", 2); const headerDelay = parseInt(retryAfter, 10); const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1e3; if (!categories) { updatedRateLimits.all = now + delay; } else { for (const category of categories.split(";")) { updatedRateLimits[category] = now + delay; } } } } else if (retryAfterHeader) { updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now); } else if (statusCode === 429) { updatedRateLimits.all = now + 60 * 1e3; } return updatedRateLimits; } // ../../../node_modules/@sentry/core/esm/session.js function makeSession(context) { const startingTime = timestampInSeconds(); const session = { sid: uuid4(), init: true, timestamp: startingTime, started: startingTime, duration: 0, status: "ok", errors: 0, ignoreDuration: false, toJSON: () => sessionToJSON(session) }; if (context) { updateSession(session, context); } return session; } function updateSession(session, context = {}) { if (context.user) { if (!session.ipAddress && context.user.ip_address) { session.ipAddress = context.user.ip_address; } if (!session.did && !context.did) { session.did = context.user.id || context.user.email || context.user.username; } } session.timestamp = context.timestamp || timestampInSeconds(); if (context.ignoreDuration) { session.ignoreDuration = context.ignoreDuration; } if (context.sid) { session.sid = context.sid.length === 32 ? context.sid : uuid4(); } if (context.init !== void 0) { session.init = context.init; } if (!session.did && context.did) { session.did = `${context.did}`; } if (typeof context.started === "number") { session.started = context.started; } if (session.ignoreDuration) { session.duration = void 0; } else if (typeof context.duration === "number") { session.duration = context.duration; } else { const duration = session.timestamp - session.started; session.duration = duration >= 0 ? duration : 0; } if (context.release) { session.release = context.release; } if (context.environment) { session.environment = context.environment; } if (!session.ipAddress && context.ipAddress) { session.ipAddress = context.ipAddress; } if (!session.userAgent && context.userAgent) { session.userAgent = context.userAgent; } if (typeof context.errors === "number") { session.errors = context.errors; } if (context.status) { session.status = context.status; } } function closeSession(session, status) { let context = {}; if (status) { context = { status }; } else if (session.status === "ok") { context = { status: "exited" }; } updateSession(session, context); } function sessionToJSON(session) { return dropUndefinedKeys({ sid: `${session.sid}`, init: session.init, // Make sure that sec is converted to ms for date constructor started: new Date(session.started * 1e3).toISOString(), timestamp: new Date(session.timestamp * 1e3).toISOString(), status: session.status, errors: session.errors, did: typeof session.did === "number" || typeof session.did === "string" ? `${session.did}` : void 0, duration: session.duration, attrs: { release: session.release, environment: session.environment, ip_address: session.ipAddress, user_agent: session.userAgent } }); } // ../../../node_modules/@sentry/core/esm/scope.js var DEFAULT_MAX_BREADCRUMBS = 100; var Scope = class { /** Flag if notifying is happening. */ /** Callback for client to receive scope changes. */ /** Callback list that will be called after {@link applyToEvent}. */ /** Array of breadcrumbs. */ /** User */ /** Tags */ /** Extra */ /** Contexts */ /** Attachments */ /** * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get * sent to Sentry */ /** Fingerprint */ /** Severity */ // eslint-disable-next-line deprecation/deprecation /** Transaction Name */ /** Span */ /** Session */ /** Request Mode Session Status */ // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method. constructor() { this._notifyingListeners = false; this._scopeListeners = []; this._eventProcessors = []; this._breadcrumbs = []; this._attachments = []; this._user = {}; this._tags = {}; this._extra = {}; this._contexts = {}; this._sdkProcessingMetadata = {}; } /** * Inherit values from the parent scope. * @param scope to clone. */ static clone(scope) { const newScope = new Scope(); if (scope) { newScope._breadcrumbs = [...scope._breadcrumbs]; newScope._tags = { ...scope._tags }; newScope._extra = { ...scope._extra }; newScope._contexts = { ...scope._contexts }; newScope._user = scope._user; newScope._level = scope._level; newScope._span = scope._span; newScope._session = scope._session; newScope._transactionName = scope._transactionName; newScope._fingerprint = scope._fingerprint; newScope._eventProcessors = [...scope._eventProcessors]; newScope._requestSession = scope._requestSession; newScope._attachments = [...scope._attachments]; newScope._sdkProcessingMetadata = { ...scope._sdkProcessingMetadata }; } return newScope; } /** * Add internal on change listener. Used for sub SDKs that need to store the scope. * @hidden */ addScopeListener(callback) { this._scopeListeners.push(callback); } /** * @inheritDoc */ addEventProcessor(callback) { this._eventProcessors.push(callback); return this; } /** * @inheritDoc */ setUser(user) { this._user = user || {}; if (this._session) { updateSession(this._session, { user }); } this._notifyScopeListeners(); return this; } /** * @inheritDoc */ getUser() { return this._user; } /** * @inheritDoc */ getRequestSession() { return this._requestSession; } /** * @inheritDoc */ setRequestSession(requestSession) { this._requestSession = requestSession; return this; } /** * @inheritDoc */ setTags(tags) { this._tags = { ...this._tags, ...tags }; this._notifyScopeListeners(); return this; } /** * @inheritDoc */ setTag(key, value) { this._tags = { ...this._tags, [key]: value }; this._notifyScopeListeners(); return this; } /** * @inheritDoc */ setExtras(extras) { this._extra = { ...this._extra, ...extras }; this._notifyScopeListeners(); return this; } /** * @inheritDoc */ setExtra(key, extra) { this._extra = { ...this._extra, [key]: extra }; this._notifyScopeListeners(); return this; } /** * @inheritDoc */ setFingerprint(fingerprint) { this._fingerprint = fingerprint; this._notifyScopeListeners(); return this; } /** * @inheritDoc */ setLevel(level) { this._level = level; this._notifyScopeListeners(); return this; } /** * @inheritDoc */ setTransactionName(name) { this._transactionName = name; this._notifyScopeListeners(); return this; } /** * @inheritDoc */ setContext(key, context) { if (context === null) { delete this._contexts[key]; } else { this._contexts[key] = context; } this._notifyScopeListeners(); return this; } /** * @inheritDoc */ setSpan(span) { this._span = span; this._notifyScopeListeners(); return this; } /** * @inheritDoc */ getSpan() { return this._span; } /** * @inheritDoc */ getTransaction() { const span = this.getSpan(); return span && span.transaction; } /** * @inheritDoc */ setSession(session) { if (!session) { delete this._session; } else { this._session = session; } this._notifyScopeListeners(); return this; } /** * @inheritDoc */ getSession() { return this._session; } /** * @inheritDoc */ update(captureContext) { if (!captureContext) { return this; } if (typeof captureContext === "function") { const updatedScope = captureContext(this); return updatedScope instanceof Scope ? updatedScope : this; } if (captureContext instanceof Scope) { this._tags = { ...this._tags, ...captureContext._tags }; this._extra = { ...this._extra, ...captureContext._extra }; this._contexts = { ...this._contexts, ...captureContext._contexts }; if (captureContext._user && Object.keys(captureContext._user).length) { this._user = captureContext._user; } if (captureContext._level) { this._level = captureContext._level; } if (captureContext._fingerprint) { this._fingerprint = captureContext._fingerprint; } if (captureContext._requestSession) { this._requestSession = captureContext._requestSession; } } else if (isPlainObject(captureContext)) { captureContext = captureContext; this._tags = { ...this._tags, ...captureContext.tags }; this._extra = { ...this._extra, ...captureContext.extra }; this._contexts = { ...this._contexts, ...captureContext.contexts }; if (captureContext.user) { this._user = captureContext.user; } if (captureContext.level) { this._level = captureContext.level; } if (captureContext.fingerprint) { this._fingerprint = captureContext.fingerprint; } if (captureContext.requestSession) { this._requestSession = captureContext.requestSession; } } return this; } /** * @inheritDoc */ clear() { this._breadcrumbs = []; this._tags = {}; this._extra = {}; this._user = {}; this._contexts = {}; this._level = void 0; this._transactionName = void 0; this._fingerprint = void 0; this._requestSession = void 0; this._span = void 0; this._session = void 0; this._notifyScopeListeners(); this._attachments = []; return this; } /** * @inheritDoc */ addBreadcrumb(breadcrumb, maxBreadcrumbs) { const maxCrumbs = typeof maxBreadcrumbs === "number" ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS; if (maxCrumbs <= 0) { return this; } const mergedBreadcrumb = { timestamp: dateTimestampInSeconds(), ...breadcrumb }; this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs); this._notifyScopeListeners(); return this; } /** * @inheritDoc */ clearBreadcrumbs() { this._breadcrumbs = []; this._notifyScopeListeners(); return this; } /** * @inheritDoc */ addAttachment(attachment) { this._attachments.push(attachment); return this; } /** * @inheritDoc */ getAttachments() { return this._attachments; } /** * @inheritDoc */ clearAttachments() { this._attachments = []; return this; } /** * Applies data from the scope to the event and runs all event processors on it. * * @param event Event * @param hint Object containing additional information about the original exception, for use by the event processors. * @hidden */ applyToEvent(event, hint = {}) { if (this._extra && Object.keys(this._extra).length) { event.extra = { ...this._extra, ...event.extra }; } if (this._tags && Object.keys(this._tags).length) { event.tags = { ...this._tags, ...event.tags }; } if (this._user && Object.keys(this._user).length) { event.user = { ...this._user, ...event.user }; } if (this._contexts && Object.keys(this._contexts).length) { event.contexts = { ...this._contexts, ...event.contexts }; } if (this._level) { event.level = this._level; } if (this._transactionName) { event.transaction = this._transactionName; } if (this._span) { event.contexts = { trace: this._span.getTraceContext(), ...event.contexts }; const transactionName = this._span.transaction && this._span.transaction.name; if (transactionName) { event.tags = { transaction: transactionName, ...event.tags }; } } this._applyFingerprint(event); event.breadcrumbs = [...event.breadcrumbs || [], ...this._breadcrumbs]; event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : void 0; event.sdkProcessingMetadata = { ...event.sdkProcessingMetadata, ...this._sdkProcessingMetadata }; return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint); } /** * Add data which will be accessible during event processing but won't get sent to Sentry */ setSDKProcessingMetadata(newData) { this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData }; return this; } /** * This will be called after {@link applyToEvent} is finished. */ _notifyEventProcessors(processors, event, hint, index = 0) { return new SyncPromise((resolve2, reject) => { const processor = processors[index]; if (event === null || typeof processor !== "function") { resolve2(event); } else { const result = processor({ ...event }, hint); (typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__) && processor.id && result === null && logger.log(`Event processor "${processor.id}" dropped event`); if (isThenable(result)) { void result.then((final) => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve2)).then(null, reject); } else { void this._notifyEventProcessors(processors, result, hint, index + 1).then(resolve2).then(null, reject); } } }); } /** * This will be called on every set call. */ _notifyScopeListeners() { if (!this._notifyingListeners) { this._notifyingListeners = true; this._scopeListeners.forEach((callback) => { callback(this); }); this._notifyingListeners = false; } } /** * Applies fingerprint from the scope to the event if there's one, * uses message if there's one instead or get rid of empty fingerprint */ _applyFingerprint(event) { event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : []; if (this._fingerprint) { event.fingerprint = event.fingerprint.concat(this._fingerprint); } if (event.fingerprint && !event.fingerprint.length) { delete event.fingerprint; } } }; function getGlobalEventProcessors() { return getGlobalSingleton("globalEventProcessors", () => []); } function addGlobalEventProcessor(callback) { getGlobalEventProcessors().push(callback); } // ../../../node_modules/@sentry/core/esm/hub.js var NIL_EVENT_ID = "00000000000000000000000000000000"; var API_VERSION = 4; var DEFAULT_BREADCRUMBS = 100; var Hub = class { /** Is a {@link Layer}[] containing the client and scope */ __init() { this._stack = [{}]; } /** Contains the last event id of a captured event. */ /** * Creates a new instance of the hub, will push one {@link Layer} into the * internal stack on creation. * * @param client bound to the hub. * @param scope bound to the hub. * @param version number, higher number means higher priority. */ constructor(client, scope = new Scope(), _version = API_VERSION) { ; this._version = _version; Hub.prototype.__init.call(this); this.getStackTop().scope = scope; if (client) { this.bindClient(client); } } /** * @inheritDoc */ isOlderThan(version) { return this._version < version; } /** * @inheritDoc */ bindClient(client) { const top = this.getStackTop(); top.client = client; if (client && client.setupIntegrations) { client.setupIntegrations(); } } /** * @inheritDoc */ pushScope() { const scope = Scope.clone(this.getScope()); this.getStack().push({ client: this.getClient(), scope }); return scope; } /** * @inheritDoc */ popScope() { if (this.getStack().length <= 1) return false; return !!this.getStack().pop(); } /** * @inheritDoc */ withScope(callback) { const scope = this.pushScope(); try { callback(scope); } finally { this.popScope(); } } /** * @inheritDoc */ getClient() { return this.getStackTop().client; } /** Returns the scope of the top stack. */ getScope() { return this.getStackTop().scope; } /** Returns the scope stack for domains or the process. */ getStack() { return this._stack; } /** Returns the topmost scope layer in the order domain > local > process. */ getStackTop() { return this._stack[this._stack.length - 1]; } /** * @inheritDoc */ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types captureException(exception, hint) { const syntheticException = new Error("Sentry syntheticException"); this._lastEventId = this._withClient((client, scope) => { return client.captureException( exception, { originalException: exception, syntheticException, ...hint }, scope ); }) || NIL_EVENT_ID; return this._lastEventId; } /** * @inheritDoc */ captureMessage(message, level, hint) { const syntheticException = new Error(message); this._lastEventId = this._withClient((client, scope) => { return client.captureMessage( message, level, { originalException: message, syntheticException, ...hint }, scope ); }) || NIL_EVENT_ID; return this._lastEventId; } /** * @inheritDoc */ captureEvent(event, hint) { const clientId = this._withClient((client, scope) => { return client.captureEvent(event, { ...hint }, scope); }) || NIL_EVENT_ID; if (event.type !== "transaction") { this._lastEventId = clientId; } return clientId; } /** * @inheritDoc */ lastEventId() { return this._lastEventId; } /** * @inheritDoc */ addBreadcrumb(breadcrumb, hint) { const { scope, client } = this.getStackTop(); if (!scope || !client) return; const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } = client.getOptions && client.getOptions() || {}; if (maxBreadcrumbs <= 0) return; const timestamp = dateTimestampInSeconds(); const mergedBreadcrumb = { timestamp, ...breadcrumb }; const finalBreadcrumb = beforeBreadcrumb ? consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) : mergedBreadcrumb; if (finalBreadcrumb === null) return; scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs); } /** * @inheritDoc */ setUser(user) { const scope = this.getScope(); if (scope) scope.setUser(user); } /** * @inheritDoc */ setTags(tags) { const scope = this.getScope(); if (scope) scope.setTags(tags); } /** * @inheritDoc */ setExtras(extras) { const scope = this.getScope(); if (scope) scope.setExtras(extras); } /** * @inheritDoc */ setTag(key, value) { const scope = this.getScope(); if (scope) scope.setTag(key, value); } /** * @inheritDoc */ setExtra(key, extra) { const scope = this.getScope(); if (scope) scope.setExtra(key, extra); } /** * @inheritDoc */ // eslint-disable-next-line @typescript-eslint/no-explicit-any setContext(name, context) { const scope = this.getScope(); if (scope) scope.setContext(name, context); } /** * @inheritDoc */ configureScope(callback) { const { scope, client } = this.getStackTop(); if (scope && client) { callback(scope); } } /** * @inheritDoc */ run(callback) { const oldHub = makeMain(this); try { callback(this); } finally { makeMain(oldHub); } } /** * @inheritDoc */ getIntegration(integration) { const client = this.getClient(); if (!client) return null; try { return client.getIntegration(integration); } catch (_oO) { (typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__) && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`); return null; } } /** * @inheritDoc */ startTransaction(context, customSamplingContext) { return this._callExtensionMethod("startTransaction", context, customSamplingContext); } /** * @inheritDoc */ traceHeaders() { return this._callExtensionMethod("traceHeaders"); } /** * @inheritDoc */ captureSession(endSession = false) { if (endSession) { return this.endSession(); } this._sendSessionUpdate(); } /** * @inheritDoc */ endSession() { const layer = this.getStackTop(); const scope = layer && layer.scope; const session = scope && scope.getSession(); if (session) { closeSession(session); } this._sendSessionUpdate(); if (scope) { scope.setSession(); } } /** * @inheritDoc */ startSession(context) { const { scope, client } = this.getStackTop(); const { release, environment } = client && client.getOptions() || {}; const { userAgent } = GLOBAL_OBJ.navigator || {}; const session = makeSession({ release, environment, ...scope && { user: scope.getUser() }, ...userAgent && { userAgent }, ...context }); if (scope) { const currentSession = scope.getSession && scope.getSession(); if (currentSession && currentSession.status === "ok") { updateSession(currentSession, { status: "exited" }); } this.endSession(); scope.setSession(session); } return session; } /** * Returns if default PII should be sent to Sentry and propagated in ourgoing requests * when Tracing is used. */ shouldSendDefaultPii() { const client = this.getClient(); const options = client && client.getOptions(); return Boolean(options && options.sendDefaultPii); } /** * Sends the current Session on the scope */ _sendSessionUpdate() { const { scope, client } = this.getStackTop(); if (!scope) return; const session = scope.getSession(); if (session) { if (client && client.captureSession) { client.captureSession(session); } } } /** * Internal helper function to call a method on the top client if it exists. * * @param method The method to call on the client. * @param args Arguments to pass to the client function. */ _withClient(callback) { const { scope, client } = this.getStackTop(); return client && callback(client, scope); } /** * Calls global extension method and binding current instance to the function call */ // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366) // eslint-disable-next-line @typescript-eslint/no-explicit-any _callExtensionMethod(method, ...args) { const carrier = getMainCarrier(); const sentry = carrier.__SENTRY__; if (sentry && sentry.extensions && typeof sentry.extensions[method] === "function") { return sentry.extensions[method].apply(this, args); } (typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__) && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`); } }; function getMainCarrier() { GLOBAL_OBJ.__SENTRY__ = GLOBAL_OBJ.__SENTRY__ || { extensions: {}, hub: void 0 }; return GLOBAL_OBJ; } function makeMain(hub) { const registry = getMainCarrier(); const oldHub = getHubFromCarrier(registry); setHubOnCarrier(registry, hub); return oldHub; } function getCurrentHub() { const registry = getMainCarrier(); if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) { setHubOnCarrier(registry, new Hub()); } if (isNodeEnv()) { return getHubFromActiveDomain(registry); } return getHubFromCarrier(registry); } function getHubFromActiveDomain(registry) { try { const sentry = getMainCarrier().__SENTRY__; const activeDomain = sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active; if (!activeDomain) { return getHubFromCarrier(registry); } if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) { const registryHubTopStack = getHubFromCarrier(registry).getStackTop(); setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope))); } return getHubFromCarrier(activeDomain); } catch (_Oo) { return getHubFromCarrier(registry); } } function hasHubOnCarrier(carrier) { return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub); } function getHubFromCarrier(carrier) { return getGlobalSingleton("hub", () => new Hub(), carrier); } function setHubOnCarrier(carrier, hub) { if (!carrier) return false; const __SENTRY__ = carrier.__SENTRY__ = carrier.__SENTRY__ || {}; __SENTRY__.hub = hub; return true; } // ../../../node_modules/@sentry/core/esm/api.js var SENTRY_API_VERSION = "7"; function getBaseApiEndpoint(dsn) { const protocol = dsn.protocol ? `${dsn.protocol}:` : ""; const port = dsn.port ? `:${dsn.port}` : ""; return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ""}/api/`; } function _getIngestEndpoint(dsn) { return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`; } function _encodedAuth(dsn, sdkInfo) { return urlEncode({ // We send only the minimum set of required information. See // https://github.com/getsentry/sentry-javascript/issues/2572. sentry_key: dsn.publicKey, sentry_version: SENTRY_API_VERSION, ...sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` } }); } function getEnvelopeEndpointWithUrlEncodedAuth(dsn, tunnelOrOptions = {}) { const tunnel = typeof tunnelOrOptions === "string" ? tunnelOrOptions : tunnelOrOptions.tunnel; const sdkInfo = typeof tunnelOrOptions === "string" || !tunnelOrOptions._metadata ? void 0 : tunnelOrOptions._metadata.sdk; return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`; } // ../../../node_modules/@sentry/core/esm/envelope.js function getSdkMetadataForEnvelopeHeader(metadata) { if (!metadata || !metadata.sdk) { return; } const { name, version } = metadata.sdk; return { name, version }; } function enhanceEventWithSdkInfo(event, sdkInfo) { if (!sdkInfo) { return event; } event.sdk = event.sdk || {}; event.sdk.name = event.sdk.name || sdkInfo.name; event.sdk.version = event.sdk.version || sdkInfo.version; event.sdk.integrations = [...event.sdk.integrations || [], ...sdkInfo.integrations || []]; event.sdk.packages = [...event.sdk.packages || [], ...sdkInfo.packages || []]; return event; } function createSessionEnvelope(session, dsn, metadata, tunnel) { const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata); const envelopeHeaders = { sent_at: (/* @__PURE__ */ new Date()).toISOString(), ...sdkInfo && { sdk: sdkInfo }, ...!!tunnel && { dsn: dsnToString(dsn) } }; const envelopeItem = "aggregates" in session ? [{ type: "sessions" }, session] : [{ type: "session" }, session]; return createEnvelope(envelopeHeaders, [envelopeItem]); } function createEventEnvelope(event, dsn, metadata, tunnel) { const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata); const eventType = event.type || "event"; enhanceEventWithSdkInfo(event, metadata && metadata.sdk); const envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn); delete event.sdkProcessingMetadata; const eventItem = [{ type: eventType }, event]; return createEnvelope(envelopeHeaders, [eventItem]); } function createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn) { const dynamicSamplingContext = event.sdkProcessingMetadata && event.sdkProcessingMetadata.dynamicSamplingContext; return { event_id: event.event_id, sent_at: (/* @__PURE__ */ new Date()).toISOString(), ...sdkInfo && { sdk: sdkInfo }, ...!!tunnel && { dsn: dsnToString(dsn) }, ...event.type === "transaction" && dynamicSamplingContext && { trace: dropUndefinedKeys({ ...dynamicSamplingContext }) } }; } // ../../../node_modules/@sentry/core/esm/integration.js var installedIntegrations = []; function filterDuplicates(integrations) { const integrationsByName = {}; integrations.forEach((currentInstance) => { const { name } = currentInstance; const existingInstance = integrationsByName[name]; if (existingInstance && !existingInstance.isDefaultInstance && currentInstance.isDefaultInstance) { return; } integrationsByName[name] = currentInstance; }); return Object.values(integrationsByName); } function getIntegrationsToSetup(options) { const defaultIntegrations = options.defaultIntegrations || []; const userIntegrations = options.integrations; defaultIntegrations.forEach((integration) => { integration.isDefaultInstance = true; }); let integrations; if (Array.isArray(userIntegrations)) { integrations = [...defaultIntegrations, ...userIntegrations]; } else if (typeof userIntegrations === "function") { integrations = arrayify(userIntegrations(defaultIntegrations)); } else { integrations = defaultIntegrations; } const finalIntegrations = filterDuplicates(integrations); const debugIndex = finalIntegrations.findIndex((integration) => integration.name === "Debug"); if (debugIndex !== -1) { const [debugInstance] = finalIntegrations.splice(debugIndex, 1); finalIntegrations.push(debugInstance); } return finalIntegrations; } function setupIntegrations(integrations) { const integrationIndex = {}; integrations.forEach((integration) => { integrationIndex[integration.name] = integration; if (installedIntegrations.indexOf(integration.name) === -1) { integration.setupOnce(addGlobalEventProcessor, getCurrentHub); installedIntegrations.push(integration.name); (typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__) && logger.log(`Integration installed: ${integration.name}`); } }); return integrationIndex; } // ../../../node_modules/@sentry/core/esm/baseclient.js var ALREADY_SEEN_ERROR = "Not capturing exception because it's already been captured."; var BaseClient = class { /** Options passed to the SDK. */ /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */ /** Array of set up integrations. */ __init() { this._integrations = {}; } /** Indicates whether this client's integrations have been set up. */ __init2() { this._integrationsInitialized = false; } /** Number of calls being processed */ __init3() { this._numProcessing = 0; } /** Holds flushable */ __init4() { this._outcomes = {}; } /** * Initializes this client instance. * * @param options Options for the client. */ constructor(options) { ; BaseClient.prototype.__init.call(this); BaseClient.prototype.__init2.call(this); BaseClient.prototype.__init3.call(this); BaseClient.prototype.__init4.call(this); this._options = options; if (options.dsn) { this._dsn = makeDsn(options.dsn); const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options); this._transport = options.transport({ recordDroppedEvent: this.recordDroppedEvent.bind(this), ...options.transportOptions, url }); } else { (typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__) && logger.warn("No DSN provided, client will not do anything."); } } /** * @inheritDoc */ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types captureException(exception, hint, scope) { if (checkOrSetAlreadyCaught(exception)) { (typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__) && logger.log(ALREADY_SEEN_ERROR); return; } let eventId; this._process( this.eventFromException(exception, hint).then((event) => this._captureEvent(event, hint, scope)).then((result) => { eventId = result; }) ); return eventId; } /** * @inheritDoc */ captureMessage(message, level, hint, scope) { let eventId; const promisedEvent = isPrimitive(message) ? this.eventFromMessage(String(message), level, hint) : this.eventFromException(message, hint); this._process( promisedEvent.then((event) => this._captureEvent(event, hint, scope)).then((result) => { eventId = result; }) ); return eventId; } /** * @inheritDoc */ captureEvent(event, hint, scope) { if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) { (typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__) && logger.log(ALREADY_SEEN_ERROR); return; } let eventId; this._process( this._captureEvent(event, hint, scope).then((result) => { eventId = result; }) ); return eventId; } /** * @inheritDoc */ captureSession(session) { if (!this._isEnabled()) { (typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__) && logger.warn("SDK not enabled, will not capture session."); return; } if (!(typeof session.release === "string")) { (typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__) && logger.warn("Discarded session because of missing or non-string release"); } else { this.sendSession(session); updateSession(session, { init: false }); } } /** * @inheritDoc */ getDsn() { return this._dsn; } /** * @inheritDoc */ getOptions() { return this._options; } /** * @inheritDoc */ getTransport() { return this._transport; } /** * @inheritDoc */ flush(timeout) { const transport = this._transport; if (transport) { return this._isClientDoneProcessing(timeout).then((clientFinished) => { return transport.flush(timeout).then((transportFlushed) => clientFinished && transportFlushed); }); } else { return resolvedSyncPromise(true); } } /** * @inheritDoc */ close(timeout) { return this.flush(timeout).then((result) => { this.getOptions().enabled = false; return result; }); } /** * Sets up the integrations */ setupIntegrations() { if (this._isEnabled() && !this._integrationsInitialized) { this._integrations = setupIntegrations(this._options.integrations); this._integrationsInitialized = true; } } /** * Gets an installed integration by its `id`. * * @returns The installed integration or `undefined` if no integration with that `id` was installed. */ getIntegrationById(integrationId) { return this._integrations[integrationId]; } /** * @inheritDoc */ getIntegration(integration) { try { return this._integrations[integration.id] || null; } catch (_oO) { (typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__) && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`); return null; } } /** * @inheritDoc */ sendEvent(event, hint = {}) { if (this._dsn) { let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel); for (const attachment of hint.attachments || []) { env = addItemToEnvelope( env, createAttachmentEnvelopeItem( attachment, this._options.transportOptions && this._options.transportOptions.textEncoder ) ); } this._sendEnvelope(env); } } /** * @inheritDoc */ sendSession(session) { if (this._dsn) { const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel); this._sendEnvelope(env); } } /** * @inheritDoc */ recordDroppedEvent(reason, category, _event) { if (this._options.sendClientReports) { const key = `${reason}:${category}`; (typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__) && logger.log(`Adding outcome: "${key}"`); this._outcomes[key] = this._outcomes[key] + 1 || 1; } } /** Updates existing session based on the provided event */ _updateSessionFromEvent(session, event) { let crashed = false; let errored = false; const exceptions = event.exception && event.exception.values; if (exceptions) { errored = true; for (const ex of exceptions) { const mechanism = ex.mechanism; if (mechanism && mechanism.handled === false) { crashed = true; break; } } } const sessionNonTerminal = session.status === "ok"; const shouldUpdateAndSend = sessionNonTerminal && session.errors === 0 || sessionNonTerminal && crashed; if (shouldUpdateAndSend) { updateSession(session, { ...crashed && { status: "crashed" }, errors: session.errors || Number(errored || crashed) }); this.captureSession(session); } } /** * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying * "no" (resolving to `false`) in order to give the client a chance to potentially finish first. * * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to * `true`. * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and * `false` otherwise */ _isClientDoneProcessing(timeout) { return new SyncPromise((resolve2) => { let ticked = 0; const tick = 1; const interval = setInterval(() => { if (this._numProcessing == 0) { clearInterval(interval); resolve2(true); } else { ticked += tick; if (timeout && ticked >= timeout) { clearInterval(interval); resolve2(false); } } }, tick); }); } /** Determines whether this SDK is enabled and a valid Dsn is present. */ _isEnabled() { return this.getOptions().enabled !== false && this._dsn !== void 0; } /** * Adds common information to events. * * The information includes release and environment from `options`, * breadcrumbs and context (extra, tags and user) from the scope. * * Information that is already present in the event is never overwritten. For * nested objects, such as the context, keys are merged. * * @param event The original event. * @param hint May contain additional information about the original exception. * @param scope A scope containing event metadata. * @returns A new event with more information. */ _prepareEvent(event, hint, scope) { const { normalizeDepth = 3, normalizeMaxBreadth = 1e3 } = this.getOptions(); const prepared = { ...event, event_id: event.event_id || hint.event_id || uuid4(), timestamp: event.timestamp || dateTimestampInSeconds() }; this._applyClientOptions(prepared); this._applyIntegrationsMetadata(prepared); let finalScope = scope; if (hint.captureContext) { finalScope = Scope.clone(finalScope).update(hint.captureContext); } let result = resolvedSyncPromise(prepared); if (finalScope && finalScope.getAttachments) { const attachments = [...hint.attachments || [], ...finalScope.getAttachments()]; if (attachments.length) { hint.attachments = attachments; } result = finalScope.applyToEvent(prepared, hint); } return result.then((evt) => { if (typeof normalizeDepth === "number" && normalizeDepth > 0) { return this._normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth); } return evt; }); } /** * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization. * Normalized keys: * - `breadcrumbs.data` * - `user` * - `contexts` * - `extra` * @param event Event * @returns Normalized event */ _normalizeEvent(event, depth, maxBreadth) { if (!event) { return null; } const normalized = { ...event, ...event.breadcrumbs && { breadcrumbs: event.breadcrumbs.map((b) => ({ ...b, ...b.data && { data: normalize(b.data, depth, maxBreadth) } })) }, ...event.user && { user: normalize(event.user, depth, maxBreadth) }, ...event.contexts && { contexts: normalize(event.contexts, depth, maxBreadth) }, ...event.extra && { extra: normalize(event.extra, depth, maxBreadth) } }; if (event.contexts && event.contexts.trace && normalized.contexts) { normalized.contexts.trace = event.contexts.trace; if (event.contexts.trace.data) { normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth); } } if (event.spans) { normalized.spans = event.spans.map((span) => { if (span.data) { span.data = normalize(span.data, depth, maxBreadth); } return span; }); } return normalized; } /** * Enhances event using the client configuration. * It takes care of all "static" values like environment, release and `dist`, * as well as truncating overly long values. * @param event event instance to be enhanced */ _applyClientOptions(event) { const options = this.getOptions(); const { environment, release, dist, maxValueLength = 250 } = options; if (!("environment" in event)) { event.environment = "environment" in options ? environment : "production"; } if (event.release === void 0 && release !== void 0) { event.release = release; } if (event.dist === void 0 && dist !== void 0) { event.dist = dist; } if (event.message) { event.message = truncate(event.message, maxValueLength); } const exception = event.exception && event.exception.values && event.exception.values[0]; if (exception && exception.value) { exception.value = truncate(exception.value, maxValueLength); } const request = event.request; if (request && request.url) { request.url = truncate(request.url, maxValueLength); } } /** * This function adds all used integrations to the SDK info in the event. * @param event The event that will be filled with all integrations. */ _applyIntegrationsMetadata(event) { const integrationsArray = Object.keys(this._integrations); if (integrationsArray.length > 0) { event.sdk = event.sdk || {}; event.sdk.integrations = [...event.sdk.integrations || [], ...integrationsArray]; } } /** * Processes the event and logs an error in case of rejection * @param event * @param hint * @param scope */ _captureEvent(event, hint = {}, scope) { return this._processEvent(event, hint, scope).then( (finalEvent) => { return finalEvent.event_id; }, (reason) => { if (typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__) { const sentryError = reason; if (sentryError.logLevel === "log") { logger.log(sentryError.message); } else { logger.warn(sentryError); } } return void 0; } ); } /** * Processes an event (either error or message) and sends it to Sentry. * * This also adds breadcrumbs and context information to the event. However, * platform specific meta data (such as the User's IP address) must be added * by the SDK implementor. * * * @param event The event to send to Sentry. * @param hint May contain additional information about the original exception. * @param scope A scope containing event metadata. * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send. */ _processEvent(event, hint, scope) { const options = this.getOptions(); const { sampleRate } = options; if (!this._isEnabled()) { return rejectedSyncPromise(new SentryError("SDK not enabled, will not capture event.", "log")); } const isTransaction = event.type === "transaction"; const beforeSendProcessorName = isTransaction ? "beforeSendTransaction" : "beforeSend"; const beforeSendProcessor = options[beforeSendProcessorName]; if (!isTransaction && typeof sampleRate === "number" && Math.random() > sampleRate) { this.recordDroppedEvent("sample_rate", "error", event); return rejectedSyncPromise( new SentryError( `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`, "log" ) ); } return this._prepareEvent(event, hint, scope).then((prepared) => { if (prepared === null) { this.recordDroppedEvent("event_processor", event.type || "error", event); throw new SentryError("An event processor returned `null`, will not send event.", "log"); } const isInternalException = hint.data && hint.data.__sentry__ === true; if (isInternalException || !beforeSendProcessor) { return prepared; } const beforeSendResult = beforeSendProcessor(prepared, hint); return _validateBeforeSendResult(beforeSendResult, beforeSendProcessorName); }).then((processedEvent) => { if (processedEvent === null) { this.recordDroppedEvent("before_send", event.type || "error", event); throw new SentryError(`\`${beforeSendProcessorName}\` returned \`null\`, will not send event.`, "log"); } const session = scope && scope.getSession(); if (!isTransaction && session) { this._updateSessionFromEvent(session, processedEvent); } const transactionInfo = processedEvent.transaction_info; if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) { const source = "custom"; processedEvent.transaction_info = { ...transactionInfo, source, changes: [ ...transactionInfo.changes, { source, // use the same timestamp as the processed event. timestamp: processedEvent.timestamp, propagations: transactionInfo.propagations } ] }; } this.sendEvent(processedEvent, hint); return processedEvent; }).then(null, (reason) => { if (reason instanceof SentryError) { throw reason; } this.captureException(reason, { data: { __sentry__: true }, originalException: reason }); throw new SentryError( `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event. Reason: ${reason}` ); }); } /** * Occupies the client with processing and event */ _process(promise) { this._numProcessing++; void promise.then( (value) => { this._numProcessing--; return value; }, (reason) => { this._numProcessing--; return reason; } ); } /** * @inheritdoc */ _sendEnvelope(envelope) { if (this._transport && this._dsn) { this._transport.send(envelope).then(null, (reason) => { (typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__) && logger.error("Error while sending event:", reason); }); } else { (typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__) && logger.error("Transport disabled"); } } /** * Clears outcomes on this client and returns them. */ _clearOutcomes() { const outcomes = this._outcomes; this._outcomes = {}; return Object.keys(outcomes).map((key) => { const [reason, category] = key.split(":"); return { reason, category, quantity: outcomes[key] }; }); } /** * @inheritDoc */ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types }; function _validateBeforeSendResult(beforeSendResult, beforeSendProcessorName) { const invalidValueError = `\`${beforeSendProcessorName}\` must return \`null\` or a valid event.`; if (isThenable(beforeSendResult)) { return beforeSendResult.then( (event) => { if (!isPlainObject(event) && event !== null) { throw new SentryError(invalidValueError); } return event; }, (e) => { throw new SentryError(`\`${beforeSendProcessorName}\` rejected with ${e}`); } ); } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) { throw new SentryError(invalidValueError); } return beforeSendResult; } // ../../../node_modules/@sentry/core/esm/transports/base.js var DEFAULT_TRANSPORT_BUFFER_SIZE = 30; function createTransport(options, makeRequest, buffer = makePromiseBuffer(options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE)) { let rateLimits = {}; const flush = (timeout) => buffer.drain(timeout); function send(envelope) { const filteredEnvelopeItems = []; forEachEnvelopeItem(envelope, (item, type) => { const envelopeItemDataCategory = envelopeItemTypeToDataCategory(type); if (isRateLimited(rateLimits, envelopeItemDataCategory)) { const event = getEventForEnvelopeItem(item, type); options.recordDroppedEvent("ratelimit_backoff", envelopeItemDataCategory, event); } else { filteredEnvelopeItems.push(item); } }); if (filteredEnvelopeItems.length === 0) { return resolvedSyncPromise(); } const filteredEnvelope = createEnvelope(envelope[0], filteredEnvelopeItems); const recordEnvelopeLoss = (reason) => { forEachEnvelopeItem(filteredEnvelope, (item, type) => { const event = getEventForEnvelopeItem(item, type); options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type), event); }); }; const requestTask = () => makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then( (response) => { if (response.statusCode !== void 0 && (response.statusCode < 200 || response.statusCode >= 300)) { (typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__) && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`); } rateLimits = updateRateLimits(rateLimits, response); }, (error) => { (typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__) && logger.error("Failed while sending event:", error); recordEnvelopeLoss("network_error"); } ); return buffer.add(requestTask).then( (result) => result, (error) => { if (error instanceof SentryError) { (typeof __SENTRY_DEBUG__ === "undefined" || __SENTRY_DEBUG__) && logger.error("Skipped sending event because buffer is full."); recordEnvelopeLoss("queue_overflow"); return resolvedSyncPromise(); } else { throw error; } } ); } return { send, flush }; } function getEventForEnvelopeItem(item, type) { if (type !== "event" && type !== "transaction") { return void 0; } return Array.isArray(item) ? item[1] : void 0; } // ../../../node_modules/toucan-js/dist/index.esm.js function isObject(value) { return typeof value === "object" && value !== null; } function isMechanism(value) { return isObject(value) && "handled" in value && typeof value.handled === "boolean" && "type" in value && typeof value.type === "string"; } function containsMechanism(value) { return isObject(value) && "mechanism" in value && isMechanism(value["mechanism"]); } function getSentryRelease() { if (GLOBAL_OBJ.SENTRY_RELEASE && GLOBAL_OBJ.SENTRY_RELEASE.id) { return GLOBAL_OBJ.SENTRY_RELEASE.id; } } function setOnOptional(target, entry) { if (target !== void 0) { target[entry[0]] = entry[1]; return target; } else { return { [entry[0]]: entry[1] }; } } function parseStackFrames(stackParser, error) { return stackParser(error.stack || "", 1); } function extractMessage(ex) { const message = ex && ex.message; if (!message) { return "No error message"; } if (message.error && typeof message.error.message === "string") { return message.error.message; } return message; } function exceptionFromError(stackParser, error) { const exception = { type: error.name || error.constructor.name, value: extractMessage(error) }; const frames = parseStackFrames(stackParser, error); if (frames.length) { exception.stacktrace = { frames }; } if (exception.type === void 0 && exception.value === "") { exception.value = "Unrecoverable error caught"; } return exception; } function eventFromUnknownInput(sdk, stackParser, exception, hint) { let ex; const providedMechanism = hint && hint.data && containsMechanism(hint.data) ? hint.data.mechanism : void 0; const mechanism = providedMechanism ?? { handled: true, type: "generic" }; if (!isError(exception)) { if (isPlainObject(exception)) { const message = `Non-Error exception captured with keys: ${extractExceptionKeysForMessage(exception)}`; const client = sdk?.getClient(); const normalizeDepth = client && client.getOptions().normalizeDepth; sdk?.configureScope((scope) => { scope.setExtra("__serialized__", normalizeToSize(exception, normalizeDepth)); }); ex = hint && hint.syntheticException || new Error(message); ex.message = message; } else { ex = hint && hint.syntheticException || new Error(exception); ex.message = exception; } mechanism.synthetic = true; } else { ex = exception; } const event = { exception: { values: [exceptionFromError(stackParser, ex)] } }; addExceptionTypeValue(event, void 0, void 0); addExceptionMechanism(event, mechanism); return { ...event, event_id: hint && hint.event_id }; } function eventFromMessage(stackParser, message, level = "info", hint, attachStacktrace) { const event = { event_id: hint && hint.event_id, level, message }; if (attachStacktrace && hint && hint.syntheticException) { const frames = parseStackFrames(stackParser, hint.syntheticException); if (frames.length) { event.exception = { values: [ { value: message, stacktrace: { frames } } ] }; } } return event; } var DEFAULT_LIMIT = 5; var _LinkedErrors = class { name = _LinkedErrors.id; limit; constructor(options = {}) { this.limit = options.limit || DEFAULT_LIMIT; } setupOnce(addGlobalEventProcessor2, getCurrentHub2) { const client = getCurrentHub2().getClient(); if (!client) { return; } addGlobalEventProcessor2((event, hint) => { const self2 = getCurrentHub2().getIntegration(_LinkedErrors); if (!self2) { return event; } return handler(client.getOptions().stackParser, self2.limit, event, hint); }); } }; var LinkedErrors = _LinkedErrors; __publicField(LinkedErrors, "id", "LinkedErrors"); function handler(parser, limit, event, hint) { if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) { return event; } const linkedErrors = walkErrorTree(parser, limit, hint.originalException); event.exception.values = [...linkedErrors, ...event.exception.values]; return event; } function walkErrorTree(parser, limit, error, stack = []) { if (!isInstanceOf(error.cause, Error) || stack.length + 1 >= limit) { return stack; } const exception = exceptionFromError(parser, error.cause); return walkErrorTree(parser, limit, error.cause, [ exception, ...stack ]); } var defaultRequestDataOptions = { allowedHeaders: ["CF-RAY", "CF-Worker"] }; var _options; var _RequestData = class { constructor(options = {}) { __publicField(this, "name", _RequestData.id); __privateAdd(this, _options, void 0); __privateSet(this, _options, { ...defaultRequestDataOptions, ...options }); } setupOnce(addGlobalEventProcessor2, getCurrentHub2) { const client = getCurrentHub2().getClient(); if (!client) { return; } addGlobalEventProcessor2((event) => { const { sdkProcessingMetadata } = event; const self2 = getCurrentHub2().getIntegration(_RequestData); if (!self2 || !sdkProcessingMetadata) { return event; } if ("request" in sdkProcessingMetadata && sdkProcessingMetadata.request instanceof Request) { event.request = toEventRequest(sdkProcessingMetadata.request, __privateGet(this, _options)); event.user = toEventUser(event.user ?? {}, sdkProcessingMetadata.request, __privateGet(this, _options)); } if ("requestData" in sdkProcessingMetadata) { if (event.request) { event.request.data = sdkProcessingMetadata.requestData; } else { event.request = { data: sdkProcessingMetadata.requestData }; } } return event; }); } }; var RequestData = _RequestData; _options = new WeakMap(); __publicField(RequestData, "id", "RequestData"); function toEventUser(user, request, options) { const ip_address = request.headers.get("CF-Connecting-IP"); const { allowedIps } = options; const newUser = { ...user }; if (!("ip_address" in user) && // If ip_address is already set from explicitly called setUser, we don't want to overwrite it ip_address && allowedIps !== void 0 && testAllowlist(ip_address, allowedIps)) { newUser.ip_address = ip_address; } return Object.keys(newUser).length > 0 ? newUser : void 0; } function toEventRequest(request, options) { const cookieString = request.headers.get("cookie"); let cookies = void 0; if (cookieString) { try { cookies = parseCookie(cookieString); } catch (e) { } } const headers = {}; for (const [k, v] of request.headers.entries()) { if (k !== "cookie") { headers[k] = v; } } const eventRequest = { method: request.method, cookies, headers }; try { const url = new URL(request.url); eventRequest.url = `${url.protocol}//${url.hostname}${url.pathname}`; eventRequest.query_string = url.search; } catch (e) { const qi = request.url.indexOf("?"); if (qi < 0) { eventRequest.url = request.url; } else { eventRequest.url = request.url.substr(0, qi); eventRequest.query_string = request.url.substr(qi + 1); } } const { allowedHeaders, allowedCookies, allowedSearchParams } = options; if (allowedHeaders !== void 0 && eventRequest.headers) { eventRequest.headers = applyAllowlistToObject(eventRequest.headers, allowedHeaders); if (Object.keys(eventRequest.headers).length === 0) { delete eventRequest.headers; } } else { delete eventRequest.headers; } if (allowedCookies !== void 0 && eventRequest.cookies) { eventRequest.cookies = applyAllowlistToObject(eventRequest.cookies, allowedCookies); if (Object.keys(eventRequest.cookies).length === 0) { delete eventRequest.cookies; } } else { delete eventRequest.cookies; } if (allowedSearchParams !== void 0) { const params = Object.fromEntries(new URLSearchParams(eventRequest.query_string)); const allowedParams = new URLSearchParams(); Object.keys(applyAllowlistToObject(params, allowedSearchParams)).forEach((allowedKey) => { allowedParams.set(allowedKey, params[allowedKey]); }); eventRequest.query_string = allowedParams.toString(); } else { delete eventRequest.query_string; } return eventRequest; } function testAllowlist(target, allowlist) { if (typeof allowlist === "boolean") { return allowlist; } else if (allowlist instanceof RegExp) { return allowlist.test(target); } else if (Array.isArray(allowlist)) { const allowlistLowercased = allowlist.map((item) => item.toLowerCase()); return allowlistLowercased.includes(target); } else { return false; } } function applyAllowlistToObject(target, allowlist) { let predicate = () => false; if (typeof allowlist === "boolean") { return allowlist ? target : {}; } else if (allowlist instanceof RegExp) { predicate = (item) => allowlist.test(item); } else if (Array.isArray(allowlist)) { const allowlistLowercased = allowlist.map((item) => item.toLowerCase()); predicate = (item) => allowlistLowercased.includes(item); } else { return {}; } return Object.keys(target).map((key) => key.toLowerCase()).filter((key) => predicate(key)).reduce((allowed, key) => { allowed[key] = target[key]; return allowed; }, {}); } function parseCookie(cookieString) { if (typeof cookieString !== "string") { return {}; } try { return cookieString.split(";").map((part) => part.split("=")).reduce((acc, [cookieKey, cookieValue]) => { acc[decodeURIComponent(cookieKey.trim())] = decodeURIComponent(cookieValue.trim()); return acc; }, {}); } catch { return {}; } } function setupIntegrations2(integrations, sdk) { const integrationIndex = {}; integrations.forEach((integration) => { integrationIndex[integration.name] = integration; integration.setupOnce((callback) => { sdk.getScope()?.addEventProcessor(callback); }, () => sdk); }); return integrationIndex; } var ToucanClient = class extends BaseClient { /** * Some functions need to access the Hub (Toucan instance) this client is bound to, * but calling 'getCurrentHub()' is unsafe because it uses globals. * So we store a reference to the Hub after binding to it and provide it to methods that need it. */ #sdk = null; /** * Creates a new Toucan SDK instance. * @param options Configuration options for this SDK. */ constructor(options) { options._metadata = options._metadata || {}; options._metadata.sdk = options._metadata.sdk || { name: "toucan-js", packages: [ { name: "npm:toucan-js", version: "3.0.0" } ], version: "3.0.0" }; super(options); } /** * By default, integrations are stored in a global. We want to store them in a local instance because they may have contextual data, such as event request. */ setupIntegrations() { if (this._isEnabled() && !this._integrationsInitialized && this.#sdk) { this._integrations = setupIntegrations2(this._options.integrations, this.#sdk); this._integrationsInitialized = true; } } eventFromException(exception, hint) { return resolvedSyncPromise(eventFromUnknownInput(this.#sdk, this._options.stackParser, exception, hint)); } eventFromMessage(message, level = "info", hint) { return resolvedSyncPromise(eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace)); } _prepareEvent(event, hint, scope) { event.platform = event.platform || "javascript"; if (this.getOptions().request) { event.sdkProcessingMetadata = setOnOptional(event.sdkProcessingMetadata, [ "request", this.getOptions().request ]); } if (this.getOptions().requestData) { event.sdkProcessingMetadata = setOnOptional(event.sdkProcessingMetadata, [ "requestData", this.getOptions().requestData ]); } return super._prepareEvent(event, hint, scope); } getSdk() { return this.#sdk; } setSdk(sdk) { this.#sdk = sdk; } /** * Sets the request body context on all future events. * * @param body Request body. * @example * const body = await request.text(); * toucan.setRequestBody(body); */ setRequestBody(body) { this.getOptions().requestData = body; } }; function workersStackLineParser(getModule2) { const [arg1, arg2] = nodeStackLineParser(getModule2); const fn = (line) => { const result = arg2(line); if (result) { const filename = result.filename; result.abs_path = filename !== void 0 && !filename.startsWith("/") ? `/${filename}` : filename; result.in_app = filename !== void 0; } return result; }; return [arg1, fn]; } function getModule(filename) { if (!filename) { return; } return basename(filename, ".js"); } var defaultStackParser = createStackParser(workersStackLineParser(getModule)); function makeFetchTransport(options) { function makeRequest({ body }) { try { const request = fetch(options.url, { method: "POST", headers: options.headers, body }).then((response) => { return { statusCode: response.status, headers: { "retry-after": response.headers.get("Retry-After"), "x-sentry-rate-limits": response.headers.get("X-Sentry-Rate-Limits") } }; }); if (options.context) { options.context.waitUntil(request); } return request; } catch (e) { return rejectedSyncPromise(e); } } return createTransport(options, makeRequest); } var Toucan = class extends Hub { constructor(options) { options.defaultIntegrations = options.defaultIntegrations === false ? [] : [ ...Array.isArray(options.defaultIntegrations) ? options.defaultIntegrations : [ new RequestData(options.requestDataOptions), new LinkedErrors() ] ]; if (options.release === void 0) { const detectedRelease = getSentryRelease(); if (detectedRelease !== void 0) { options.release = detectedRelease; } } const client = new ToucanClient({ ...options, transport: makeFetchTransport, integrations: getIntegrationsToSetup(options), stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser), transportOptions: { ...options.transportOptions, context: options.context } }); super(client); client.setSdk(this); client.setupIntegrations(); } /** * Sets the request body context on all future events. * * @param body Request body. * @example * const body = await request.text(); * toucan.setRequestBody(body); */ setRequestBody(body) { this.getClient()?.setRequestBody(body); } }; // _middleware.ts var onRequest = async (context) => { context.data.sentry = new Toucan({ context, ...context.pluginArgs }); try { return await context.next(); } catch (thrown) { context.data.sentry.captureException(thrown); throw thrown; } }; // ../.wrangler/tmp/pages-CU0o5d/functionsRoutes-0.5195048230868211.mjs var routes = [ { routePath: "/", mountPath: "/", method: "", middlewares: [onRequest], modules: [] } ]; // ../../../node_modules/path-to-regexp/dist.es2015/index.js function lexer(str) { var tokens = []; var i = 0; while (i < str.length) { var char = str[i]; if (char === "*" || char === "+" || char === "?") { tokens.push({ type: "MODIFIER", index: i, value: str[i++] }); continue; } if (char === "\\") { tokens.push({ type: "ESCAPED_CHAR", index: i++, value: str[i++] }); continue; } if (char === "{") { tokens.push({ type: "OPEN", index: i, value: str[i++] }); continue; } if (char === "}") { tokens.push({ type: "CLOSE", index: i, value: str[i++] }); continue; } if (char === ":") { var name = ""; var j = i + 1; while (j < str.length) { var code = str.charCodeAt(j); if ( // `0-9` code >= 48 && code <= 57 || // `A-Z` code >= 65 && code <= 90 || // `a-z` code >= 97 && code <= 122 || // `_` code === 95 ) { name += str[j++]; continue; } break; } if (!name) throw new TypeError("Missing parameter name at ".concat(i)); tokens.push({ type: "NAME", index: i, value: name }); i = j; continue; } if (char === "(") { var count = 1; var pattern = ""; var j = i + 1; if (str[j] === "?") { throw new TypeError('Pattern cannot start with "?" at '.concat(j)); } while (j < str.length) { if (str[j] === "\\") { pattern += str[j++] + str[j++]; continue; } if (str[j] === ")") { count--; if (count === 0) { j++; break; } } else if (str[j] === "(") { count++; if (str[j + 1] !== "?") { throw new TypeError("Capturing groups are not allowed at ".concat(j)); } } pattern += str[j++]; } if (count) throw new TypeError("Unbalanced pattern at ".concat(i)); if (!pattern) throw new TypeError("Missing pattern at ".concat(i)); tokens.push({ type: "PATTERN", index: i, value: pattern }); i = j; continue; } tokens.push({ type: "CHAR", index: i, value: str[i++] }); } tokens.push({ type: "END", index: i, value: "" }); return tokens; } function parse(str, options) { if (options === void 0) { options = {}; } var tokens = lexer(str); var _a = options.prefixes, prefixes = _a === void 0 ? "./" : _a; var defaultPattern = "[^".concat(escapeString(options.delimiter || "/#?"), "]+?"); var result = []; var key = 0; var i = 0; var path = ""; var tryConsume = function(type) { if (i < tokens.length && tokens[i].type === type) return tokens[i++].value; }; var mustConsume = function(type) { var value2 = tryConsume(type); if (value2 !== void 0) return value2; var _a2 = tokens[i], nextType = _a2.type, index = _a2.index; throw new TypeError("Unexpected ".concat(nextType, " at ").concat(index, ", expected ").concat(type)); }; var consumeText = function() { var result2 = ""; var value2; while (value2 = tryConsume("CHAR") || tryConsume("ESCAPED_CHAR")) { result2 += value2; } return result2; }; while (i < tokens.length) { var char = tryConsume("CHAR"); var name = tryConsume("NAME"); var pattern = tryConsume("PATTERN"); if (name || pattern) { var prefix = char || ""; if (prefixes.indexOf(prefix) === -1) { path += prefix; prefix = ""; } if (path) { result.push(path); path = ""; } result.push({ name: name || key++, prefix, suffix: "", pattern: pattern || defaultPattern, modifier: tryConsume("MODIFIER") || "" }); continue; } var value = char || tryConsume("ESCAPED_CHAR"); if (value) { path += value; continue; } if (path) { result.push(path); path = ""; } var open = tryConsume("OPEN"); if (open) { var prefix = consumeText(); var name_1 = tryConsume("NAME") || ""; var pattern_1 = tryConsume("PATTERN") || ""; var suffix = consumeText(); mustConsume("CLOSE"); result.push({ name: name_1 || (pattern_1 ? key++ : ""), pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1, prefix, suffix, modifier: tryConsume("MODIFIER") || "" }); continue; } mustConsume("END"); } return result; } function match(str, options) { var keys = []; var re = pathToRegexp(str, keys, options); return regexpToFunction(re, keys, options); } function regexpToFunction(re, keys, options) { if (options === void 0) { options = {}; } var _a = options.decode, decode = _a === void 0 ? function(x) { return x; } : _a; return function(pathname) { var m = re.exec(pathname); if (!m) return false; var path = m[0], index = m.index; var params = /* @__PURE__ */ Object.create(null); var _loop_1 = function(i2) { if (m[i2] === void 0) return "continue"; var key = keys[i2 - 1]; if (key.modifier === "*" || key.modifier === "+") { params[key.name] = m[i2].split(key.prefix + key.suffix).map(function(value) { return decode(value, key); }); } else { params[key.name] = decode(m[i2], key); } }; for (var i = 1; i < m.length; i++) { _loop_1(i); } return { path, index, params }; }; } function escapeString(str) { return str.replace(/([.+*?=^!:${}()[\]|/\\])/g, "\\$1"); } function flags(options) { return options && options.sensitive ? "" : "i"; } function regexpToRegexp(path, keys) { if (!keys) return path; var groupsRegex = /\((?:\?<(.*?)>)?(?!\?)/g; var index = 0; var execResult = groupsRegex.exec(path.source); while (execResult) { keys.push({ // Use parenthesized substring match if available, index otherwise name: execResult[1] || index++, prefix: "", suffix: "", modifier: "", pattern: "" }); execResult = groupsRegex.exec(path.source); } return path; } function arrayToRegexp(paths, keys, options) { var parts = paths.map(function(path) { return pathToRegexp(path, keys, options).source; }); return new RegExp("(?:".concat(parts.join("|"), ")"), flags(options)); } function stringToRegexp(path, keys, options) { return tokensToRegexp(parse(path, options), keys, options); } function tokensToRegexp(tokens, keys, options) { if (options === void 0) { options = {}; } var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function(x) { return x; } : _d, _e = options.delimiter, delimiter = _e === void 0 ? "/#?" : _e, _f = options.endsWith, endsWith = _f === void 0 ? "" : _f; var endsWithRe = "[".concat(escapeString(endsWith), "]|$"); var delimiterRe = "[".concat(escapeString(delimiter), "]"); var route = start ? "^" : ""; for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) { var token = tokens_1[_i]; if (typeof token === "string") { route += escapeString(encode(token)); } else { var prefix = escapeString(encode(token.prefix)); var suffix = escapeString(encode(token.suffix)); if (token.pattern) { if (keys) keys.push(token); if (prefix || suffix) { if (token.modifier === "+" || token.modifier === "*") { var mod = token.modifier === "*" ? "?" : ""; route += "(?:".concat(prefix, "((?:").concat(token.pattern, ")(?:").concat(suffix).concat(prefix, "(?:").concat(token.pattern, "))*)").concat(suffix, ")").concat(mod); } else { route += "(?:".concat(prefix, "(").concat(token.pattern, ")").concat(suffix, ")").concat(token.modifier); } } else { if (token.modifier === "+" || token.modifier === "*") { route += "((?:".concat(token.pattern, ")").concat(token.modifier, ")"); } else { route += "(".concat(token.pattern, ")").concat(token.modifier); } } } else { route += "(?:".concat(prefix).concat(suffix, ")").concat(token.modifier); } } } if (end) { if (!strict) route += "".concat(delimiterRe, "?"); route += !options.endsWith ? "$" : "(?=".concat(endsWithRe, ")"); } else { var endToken = tokens[tokens.length - 1]; var isEndDelimited = typeof endToken === "string" ? delimiterRe.indexOf(endToken[endToken.length - 1]) > -1 : endToken === void 0; if (!strict) { route += "(?:".concat(delimiterRe, "(?=").concat(endsWithRe, "))?"); } if (!isEndDelimited) { route += "(?=".concat(delimiterRe, "|").concat(endsWithRe, ")"); } } return new RegExp(route, flags(options)); } function pathToRegexp(path, keys, options) { if (path instanceof RegExp) return regexpToRegexp(path, keys); if (Array.isArray(path)) return arrayToRegexp(path, keys, options); return stringToRegexp(path, keys, options); } // ../../../node_modules/wrangler/templates/pages-template-plugin.ts var escapeRegex = /[.+?^${}()|[\]\\]/g; function* executeRequest(request, relativePathname) { for (const route of [...routes].reverse()) { if (route.method && route.method !== request.method) { continue; } const routeMatcher = match(route.routePath.replace(escapeRegex, "\\$&"), { end: false }); const mountMatcher = match(route.mountPath.replace(escapeRegex, "\\$&"), { end: false }); const matchResult = routeMatcher(relativePathname); const mountMatchResult = mountMatcher(relativePathname); if (matchResult && mountMatchResult) { for (const handler2 of route.middlewares.flat()) { yield { handler: handler2, params: matchResult.params, path: mountMatchResult.path }; } } } for (const route of routes) { if (route.method && route.method !== request.method) { continue; } const routeMatcher = match(route.routePath.replace(escapeRegex, "\\$&"), { end: true }); const mountMatcher = match(route.mountPath.replace(escapeRegex, "\\$&"), { end: false }); const matchResult = routeMatcher(relativePathname); const mountMatchResult = mountMatcher(relativePathname); if (matchResult && mountMatchResult && route.modules.length) { for (const handler2 of route.modules.flat()) { yield { handler: handler2, params: matchResult.params, path: matchResult.path }; } break; } } } function pages_template_plugin_default(pluginArgs) { const onRequest2 = async (workerContext) => { let { request } = workerContext; const { env, next } = workerContext; let { data } = workerContext; const url = new URL(request.url); const relativePathname = `/${url.pathname.replace(workerContext.functionPath, "") || ""}`.replace(/^\/\//, "/"); const handlerIterator = executeRequest(request, relativePathname); const pluginNext = async (input, init) => { if (input !== void 0) { let url2 = input; if (typeof input === "string") { url2 = new URL(input, request.url).toString(); } request = new Request(url2, init); } const result = handlerIterator.next(); if (result.done === false) { const { handler: handler2, params, path } = result.value; const context = { request: new Request(request.clone()), functionPath: workerContext.functionPath + path, next: pluginNext, params, get data() { return data; }, set data(value) { if (typeof value !== "object" || value === null) { throw new Error("context.data must be an object"); } data = value; }, pluginArgs, env, waitUntil: workerContext.waitUntil.bind(workerContext), passThroughOnException: workerContext.passThroughOnException.bind(workerContext) }; const response = await handler2(context); return cloneResponse(response); } else { return next(request); } }; return pluginNext(); }; return onRequest2; } var cloneResponse = (response) => ( // https://fetch.spec.whatwg.org/#null-body-status new Response( [101, 204, 205, 304].includes(response.status) ? null : response.body, response ) ); export { pages_template_plugin_default as default }; //# sourceMappingURL=index.js.map