{"version":3,"file":"stimulus-Dahpt-si.js","names":["error","Scope","Scope","Scope","withScope","Scope","Scope"],"sources":["../../../node_modules/@sentry/core/build/esm/debug-build.js","../../../node_modules/@sentry/core/build/esm/utils/worldwide.js","../../../node_modules/@sentry/core/build/esm/utils/version.js","../../../node_modules/@sentry/core/build/esm/carrier.js","../../../node_modules/@sentry/core/build/esm/utils/debug-logger.js","../../../node_modules/@sentry/core/build/esm/utils/stacktrace.js","../../../node_modules/@sentry/core/build/esm/utils/is.js","../../../node_modules/@sentry/core/build/esm/utils/object.js","../../../node_modules/@sentry/core/build/esm/utils/randomSafeContext.js","../../../node_modules/@sentry/core/build/esm/utils/normalizationHints.js","../../../node_modules/@sentry/core/build/esm/utils/normalize.js","../../../node_modules/@sentry/core/build/esm/utils/string.js","../../../node_modules/@sentry/core/build/esm/utils/misc.js","../../../node_modules/@sentry/core/build/esm/utils/time.js","../../../node_modules/@sentry/core/build/esm/session.js","../../../node_modules/@sentry/core/build/esm/utils/merge.js","../../../node_modules/@sentry/core/build/esm/utils/propagationContext.js","../../../node_modules/@sentry/core/build/esm/utils/weakRef.js","../../../node_modules/@sentry/core/build/esm/utils/spanOnScope.js","../../../node_modules/@sentry/core/build/esm/scope.js","../../../node_modules/@sentry/core/build/esm/defaultScopes.js","../../../node_modules/@sentry/core/build/esm/utils/chain-and-copy-promiselike.js","../../../node_modules/@sentry/core/build/esm/asyncContext/stackStrategy.js","../../../node_modules/@sentry/core/build/esm/asyncContext/index.js","../../../node_modules/@sentry/core/build/esm/attributes.js","../../../node_modules/@sentry/core/build/esm/currentScopes.js","../../../node_modules/@sentry/core/build/esm/semanticAttributes.js","../../../node_modules/@sentry/core/build/esm/tracing/utils.js","../../../node_modules/@sentry/core/build/esm/utils/baggage.js","../../../node_modules/@sentry/core/build/esm/utils/dsn.js","../../../node_modules/@sentry/core/build/esm/utils/spanUtils.js","../../../node_modules/@sentry/core/build/esm/utils/hasSpansEnabled.js","../../../node_modules/@sentry/core/build/esm/constants.js","../../../node_modules/@sentry/core/build/esm/tracing/dynamicSamplingContext.js","../../../node_modules/@sentry/core/build/esm/utils/scopeData.js","../../../node_modules/@sentry/core/build/esm/utils/syncpromise.js","../../../node_modules/@sentry/core/build/esm/eventProcessors.js","../../../node_modules/@sentry/core/build/esm/utils/debug-ids.js","../../../node_modules/@sentry/core/build/esm/utils/prepareEvent.js","../../../node_modules/@sentry/core/build/esm/exports.js","../../../node_modules/@hotwired/stimulus/dist/stimulus.js"],"sourcesContent":["const DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n","const GLOBAL_OBJ = globalThis;\n\nexport { GLOBAL_OBJ };\n//# sourceMappingURL=worldwide.js.map\n","const SDK_VERSION = \"10.58.0\" ;\n\nexport { SDK_VERSION };\n//# sourceMappingURL=version.js.map\n","import { SDK_VERSION } from './utils/version.js';\nimport { GLOBAL_OBJ } from './utils/worldwide.js';\n\nfunction getMainCarrier() {\n getSentryCarrier(GLOBAL_OBJ);\n return GLOBAL_OBJ;\n}\nfunction getSentryCarrier(carrier) {\n const __SENTRY__ = carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n __SENTRY__.version = __SENTRY__.version || SDK_VERSION;\n return __SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {};\n}\nfunction getGlobalSingleton(name, creator, obj = GLOBAL_OBJ) {\n const __SENTRY__ = obj.__SENTRY__ = obj.__SENTRY__ || {};\n const carrier = __SENTRY__[SDK_VERSION] = __SENTRY__[SDK_VERSION] || {};\n return carrier[name] || (carrier[name] = creator());\n}\n\nexport { getGlobalSingleton, getMainCarrier, getSentryCarrier };\n//# sourceMappingURL=carrier.js.map\n","import { getGlobalSingleton } from '../carrier.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nconst CONSOLE_LEVELS = [\n \"debug\",\n \"info\",\n \"warn\",\n \"error\",\n \"log\",\n \"assert\",\n \"trace\"\n];\nconst PREFIX = \"Sentry Logger \";\nconst originalConsoleMethods = {};\nfunction consoleSandbox(callback) {\n if (!(\"console\" in GLOBAL_OBJ)) {\n return callback();\n }\n const console = GLOBAL_OBJ.console;\n const wrappedFuncs = {};\n const wrappedLevels = Object.keys(originalConsoleMethods);\n wrappedLevels.forEach((level) => {\n const originalConsoleMethod = originalConsoleMethods[level];\n wrappedFuncs[level] = console[level];\n console[level] = originalConsoleMethod;\n });\n try {\n return callback();\n } finally {\n wrappedLevels.forEach((level) => {\n console[level] = wrappedFuncs[level];\n });\n }\n}\nfunction enable() {\n _getLoggerSettings().enabled = true;\n}\nfunction disable() {\n _getLoggerSettings().enabled = false;\n}\nfunction isEnabled() {\n return _getLoggerSettings().enabled;\n}\nfunction log(...args) {\n _maybeLog(\"log\", ...args);\n}\nfunction warn(...args) {\n _maybeLog(\"warn\", ...args);\n}\nfunction error(...args) {\n _maybeLog(\"error\", ...args);\n}\nfunction _maybeLog(level, ...args) {\n if (!DEBUG_BUILD) {\n return;\n }\n if (isEnabled()) {\n consoleSandbox(() => {\n GLOBAL_OBJ.console[level](`${PREFIX}[${level}]:`, ...args);\n });\n }\n}\nfunction _getLoggerSettings() {\n if (!DEBUG_BUILD) {\n return { enabled: false };\n }\n return getGlobalSingleton(\"loggerSettings\", () => ({ enabled: false }));\n}\nconst debug = {\n /** Enable logging. */\n enable,\n /** Disable logging. */\n disable,\n /** Check if logging is enabled. */\n isEnabled,\n /** Log a message. */\n log,\n /** Log a warning. */\n warn,\n /** Log an error. */\n error\n};\n\nexport { CONSOLE_LEVELS, consoleSandbox, debug, originalConsoleMethods };\n//# sourceMappingURL=debug-logger.js.map\n","const STACKTRACE_FRAME_LIMIT = 50;\nconst UNKNOWN_FUNCTION = \"?\";\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STRIP_FRAME_REGEXP = /captureMessage|captureException/;\nfunction createStackParser(...parsers) {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map((p) => p[1]);\n return (stack, skipFirstLines = 0, framesToPop = 0) => {\n const frames = [];\n const lines = stack.split(\"\\n\");\n for (let i = skipFirstLines; i < lines.length; i++) {\n let line = lines[i];\n if (line.length > 1024) {\n line = line.slice(0, 1024);\n }\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, \"$1\") : line;\n if (cleanedLine.includes(\"Error: \")) {\n continue;\n }\n for (const parser of sortedParsers) {\n const frame = parser(cleanedLine);\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n if (frames.length >= STACKTRACE_FRAME_LIMIT + framesToPop) {\n break;\n }\n }\n return stripSentryFramesAndReverse(frames.slice(framesToPop));\n };\n}\nfunction stackParserFromStackParserOptions(stackParser) {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\nfunction stripSentryFramesAndReverse(stack) {\n if (!stack.length) {\n return [];\n }\n const localStack = Array.from(stack);\n if (/sentryWrapped/.test(getLastStackFrame(localStack).function || \"\")) {\n localStack.pop();\n }\n localStack.reverse();\n if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || \"\")) {\n localStack.pop();\n if (STRIP_FRAME_REGEXP.test(getLastStackFrame(localStack).function || \"\")) {\n localStack.pop();\n }\n }\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map((frame) => ({\n ...frame,\n filename: frame.filename || getLastStackFrame(localStack).filename,\n function: frame.function || UNKNOWN_FUNCTION\n }));\n}\nfunction getLastStackFrame(arr) {\n return arr[arr.length - 1] || {};\n}\nconst defaultFunctionName = \"\";\nfunction getFunctionName(fn) {\n try {\n if (!fn || typeof fn !== \"function\") {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch {\n return defaultFunctionName;\n }\n}\nfunction getFramesFromEvent(event) {\n const exception = event.exception;\n if (exception) {\n const frames = [];\n try {\n exception.values.forEach((value) => {\n if (value.stacktrace.frames) {\n frames.push(...value.stacktrace.frames);\n }\n });\n return frames;\n } catch {\n return void 0;\n }\n }\n return void 0;\n}\nfunction normalizeStackTracePath(path) {\n let filename = path?.startsWith(\"file://\") ? path.slice(7) : path;\n if (filename?.match(/\\/[A-Z]:/)) {\n filename = filename.slice(1);\n }\n return filename;\n}\n\nexport { UNKNOWN_FUNCTION, createStackParser, getFramesFromEvent, getFunctionName, normalizeStackTracePath, stackParserFromStackParserOptions, stripSentryFramesAndReverse };\n//# sourceMappingURL=stacktrace.js.map\n","const objectToString = Object.prototype.toString;\nfunction isError(wat) {\n switch (objectToString.call(wat)) {\n case \"[object Error]\":\n case \"[object Exception]\":\n case \"[object DOMException]\":\n case \"[object WebAssembly.Exception]\":\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\nfunction isBuiltin(wat, className) {\n return objectToString.call(wat) === `[object ${className}]`;\n}\nfunction isErrorEvent(wat) {\n return isBuiltin(wat, \"ErrorEvent\");\n}\nfunction isDOMError(wat) {\n return isBuiltin(wat, \"DOMError\");\n}\nfunction isDOMException(wat) {\n return isBuiltin(wat, \"DOMException\");\n}\nfunction isString(wat) {\n return isBuiltin(wat, \"String\");\n}\nfunction isParameterizedString(wat) {\n return typeof wat === \"object\" && wat !== null && \"__sentry_template_string__\" in wat && \"__sentry_template_values__\" in wat;\n}\nfunction isPrimitive(wat) {\n return wat === null || isParameterizedString(wat) || typeof wat !== \"object\" && typeof wat !== \"function\";\n}\nfunction isPlainObject(wat) {\n return isBuiltin(wat, \"Object\");\n}\nfunction isEvent(wat) {\n return typeof Event !== \"undefined\" && isInstanceOf(wat, Event);\n}\nfunction isElement(wat) {\n return typeof Element !== \"undefined\" && isInstanceOf(wat, Element);\n}\nfunction isRegExp(wat) {\n return isBuiltin(wat, \"RegExp\");\n}\nfunction isThenable(wat) {\n return Boolean(wat?.then && typeof wat.then === \"function\");\n}\nfunction isSyntheticEvent(wat) {\n return isPlainObject(wat) && \"nativeEvent\" in wat && \"preventDefault\" in wat && \"stopPropagation\" in wat;\n}\nfunction isInstanceOf(wat, base) {\n try {\n return wat instanceof base;\n } catch {\n return false;\n }\n}\nfunction isVueViewModel(wat) {\n return !!(typeof wat === \"object\" && wat !== null && (wat.__isVue || wat._isVue || wat.__v_isVNode));\n}\nfunction isRequest(request) {\n return typeof Request !== \"undefined\" && isInstanceOf(request, Request);\n}\n\nexport { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isParameterizedString, isPlainObject, isPrimitive, isRegExp, isRequest, isString, isSyntheticEvent, isThenable, isVueViewModel };\n//# sourceMappingURL=is.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from './debug-logger.js';\nimport { isError, isEvent, isPrimitive } from './is.js';\n\nfunction fill(source, name, replacementFactory) {\n if (!(name in source)) {\n return;\n }\n const original = source[name];\n if (typeof original !== \"function\") {\n return;\n }\n const wrapped = replacementFactory(original);\n if (typeof wrapped === \"function\") {\n markFunctionWrapped(wrapped, original);\n }\n try {\n source[name] = wrapped;\n } catch {\n DEBUG_BUILD && debug.log(`Failed to replace method \"${name}\" in object`, source);\n }\n}\nfunction addNonEnumerableProperty(obj, name, value) {\n try {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value,\n writable: true,\n configurable: true\n });\n } catch {\n DEBUG_BUILD && debug.log(`Failed to add non-enumerable property \"${String(name)}\" to object`, obj);\n }\n}\nfunction markFunctionWrapped(wrapped, original) {\n try {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, \"__sentry_original__\", original);\n } catch {\n }\n}\nfunction wrapMethod(obj, field, wrapped, enumerable = true) {\n const original = obj[field];\n if (typeof original !== \"function\") {\n throw new Error(`Cannot wrap method: ${field} is not a function`);\n }\n if (getOriginalFunction(original)) {\n throw new Error(`Attempting to wrap method ${field} multiple times`);\n }\n markFunctionWrapped(wrapped, original);\n Object.defineProperty(obj, field, {\n writable: true,\n configurable: true,\n enumerable,\n value: wrapped\n });\n}\nfunction getOriginalFunction(func) {\n return func.__sentry_original__;\n}\nfunction convertToPlainObject(value) {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value)\n };\n }\n if (isEvent(value)) {\n const { type, target, currentTarget, detail } = value;\n return {\n type,\n target,\n currentTarget,\n ...detail ? { detail } : {},\n ...getOwnProperties(value)\n };\n }\n return value;\n}\nfunction getOwnProperties(obj) {\n if (typeof obj === \"object\" && obj !== null) {\n return Object.fromEntries(Object.entries(obj));\n }\n return {};\n}\nfunction extractExceptionKeysForMessage(exception) {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n return !keys[0] ? \"[object has no keys]\" : keys.join(\", \");\n}\nfunction dropUndefinedKeys(inputValue) {\n const memoizationMap = /* @__PURE__ */ new Map();\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\nfunction _dropUndefinedKeys(inputValue, memoizationMap) {\n if (inputValue === null || typeof inputValue !== \"object\") {\n return inputValue;\n }\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== void 0) {\n return memoVal;\n }\n if (Array.isArray(inputValue)) {\n const returnValue = [];\n memoizationMap.set(inputValue, returnValue);\n inputValue.forEach((value) => {\n returnValue.push(_dropUndefinedKeys(value, memoizationMap));\n });\n return returnValue;\n }\n if (isPojo(inputValue)) {\n const returnValue = {};\n memoizationMap.set(inputValue, returnValue);\n const keys = Object.keys(inputValue);\n keys.forEach((key) => {\n const val = inputValue[key];\n if (val !== void 0) {\n returnValue[key] = _dropUndefinedKeys(val, memoizationMap);\n }\n });\n return returnValue;\n }\n return inputValue;\n}\nfunction isPojo(input) {\n const constructor = input.constructor;\n return constructor === Object || constructor === void 0;\n}\nfunction objectify(wat) {\n let objectified;\n switch (true) {\n // this will catch both undefined and null\n case wat == void 0:\n objectified = new String(wat);\n break;\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case (typeof wat === \"symbol\" || typeof wat === \"bigint\"):\n objectified = Object(wat);\n break;\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n objectified = new wat.constructor(wat);\n break;\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n\nexport { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify, wrapMethod };\n//# sourceMappingURL=object.js.map\n","import { GLOBAL_OBJ } from './worldwide.js';\n\nlet RESOLVED_RUNNER;\nfunction withRandomSafeContext(cb) {\n if (RESOLVED_RUNNER !== void 0) {\n return RESOLVED_RUNNER ? RESOLVED_RUNNER(cb) : cb();\n }\n const sym = /* @__PURE__ */ Symbol.for(\"__SENTRY_SAFE_RANDOM_ID_WRAPPER__\");\n const globalWithSymbol = GLOBAL_OBJ;\n if (sym in globalWithSymbol && typeof globalWithSymbol[sym] === \"function\") {\n RESOLVED_RUNNER = globalWithSymbol[sym];\n return RESOLVED_RUNNER(cb);\n }\n RESOLVED_RUNNER = null;\n return cb();\n}\nfunction safeMathRandom() {\n return withRandomSafeContext(() => Math.random());\n}\nfunction safeDateNow() {\n return withRandomSafeContext(() => Date.now());\n}\n\nexport { safeDateNow, safeMathRandom, withRandomSafeContext };\n//# sourceMappingURL=randomSafeContext.js.map\n","import { addNonEnumerableProperty } from './object.js';\n\nconst SENTRY_SKIP_NORMALIZATION = /* @__PURE__ */ Symbol.for(\"sentry.skipNormalization\");\nconst SENTRY_OVERRIDE_NORMALIZATION_DEPTH = /* @__PURE__ */ Symbol.for(\"sentry.overrideNormalizationDepth\");\nfunction setSkipNormalizationHint(obj) {\n addNonEnumerableProperty(obj, SENTRY_SKIP_NORMALIZATION, true);\n}\nfunction setNormalizationDepthOverrideHint(obj, depth) {\n addNonEnumerableProperty(obj, SENTRY_OVERRIDE_NORMALIZATION_DEPTH, depth);\n}\nfunction hasSkipNormalizationHint(value) {\n return Boolean(value[SENTRY_SKIP_NORMALIZATION]);\n}\nfunction getNormalizationDepthOverrideHint(value) {\n const v = value[SENTRY_OVERRIDE_NORMALIZATION_DEPTH];\n return typeof v === \"number\" ? v : void 0;\n}\n\nexport { getNormalizationDepthOverrideHint, hasSkipNormalizationHint, setNormalizationDepthOverrideHint, setSkipNormalizationHint };\n//# sourceMappingURL=normalizationHints.js.map\n","import { hasSkipNormalizationHint, getNormalizationDepthOverrideHint } from './normalizationHints.js';\nimport { convertToPlainObject } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\n\nlet stringifier;\nfunction setNormalizeStringifier(newStringifier) {\n stringifier = newStringifier;\n}\nfunction normalize(input, depth = 100, maxProperties = Infinity) {\n try {\n return visit(\"\", input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\nfunction normalizeToSize(object, depth = 3, maxSize = 100 * 1024) {\n const normalized = normalize(object, depth);\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n return normalized;\n}\nfunction visit(key, value, depth = Infinity, maxProperties = Infinity, memo = memoBuilder()) {\n const [memoize, unmemoize] = memo;\n if (value == null || // this matches null and undefined -> eqeq not eqeqeq\n [\"boolean\", \"string\"].includes(typeof value) || typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n const stringified = stringifyValue(key, value);\n if (!stringified.startsWith(\"[object \")) {\n return stringified;\n }\n if (hasSkipNormalizationHint(value)) {\n return value;\n }\n const overrideDepth = getNormalizationDepthOverrideHint(value);\n const remainingDepth = overrideDepth !== void 0 ? overrideDepth : depth;\n if (remainingDepth === 0) {\n return stringified.replace(\"object \", \"\");\n }\n if (memoize(value)) {\n return \"[Circular ~]\";\n }\n const valueWithToJSON = value;\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === \"function\") {\n try {\n const jsonValue = valueWithToJSON.toJSON();\n return visit(\"\", jsonValue, remainingDepth - 1, maxProperties, memo);\n } catch {\n }\n }\n const normalized = Array.isArray(value) ? [] : {};\n let numAdded = 0;\n const visitable = convertToPlainObject(value);\n for (const visitKey in visitable) {\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n if (numAdded >= maxProperties) {\n normalized[visitKey] = \"[MaxProperties ~]\";\n break;\n }\n const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, remainingDepth - 1, maxProperties, memo);\n numAdded++;\n }\n unmemoize(value);\n return normalized;\n}\nfunction stringifyValue(key, value) {\n try {\n if (stringifier) {\n const stringified = stringifier(value);\n if (stringified) {\n return stringified;\n }\n }\n if (typeof global !== \"undefined\" && value === global) {\n return \"[Global]\";\n }\n if (typeof value === \"number\" && !Number.isFinite(value)) {\n return `[${value}]`;\n }\n if (typeof value === \"function\") {\n return `[Function: ${getFunctionName(value)}]`;\n }\n if (typeof value === \"symbol\") {\n return `[${String(value)}]`;\n }\n if (typeof value === \"bigint\") {\n return `[BigInt: ${String(value)}]`;\n }\n const objName = getConstructorName(value);\n return `[object ${objName}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\nfunction getConstructorName(value) {\n const prototype = Object.getPrototypeOf(value);\n return prototype?.constructor ? prototype.constructor.name : \"null prototype\";\n}\nfunction utf8Length(value) {\n return ~-encodeURI(value).split(/%..|./).length;\n}\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\nfunction normalizeUrlToBase(url, basePath) {\n const escapedBase = basePath.replace(/\\\\/g, \"/\").replace(/[|\\\\{}()[\\]^$+*?.]/g, \"\\\\$&\");\n let newUrl = url;\n try {\n newUrl = decodeURI(url);\n } catch {\n }\n return newUrl.replace(/\\\\/g, \"/\").replace(/webpack:\\/?/g, \"\").replace(new RegExp(`(file://)?/*${escapedBase}/*`, \"ig\"), \"app:///\");\n}\nfunction memoBuilder() {\n const inner = /* @__PURE__ */ new WeakSet();\n function memoize(obj) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n function unmemoize(obj) {\n inner.delete(obj);\n }\n return [memoize, unmemoize];\n}\n\nexport { normalize, normalizeToSize, normalizeUrlToBase, setNormalizeStringifier, stringifyValue };\n//# sourceMappingURL=normalize.js.map\n","import { isString, isRegExp, isPrimitive } from './is.js';\nimport { stringifyValue } from './normalize.js';\n\nfunction truncate(str, max = 0) {\n if (typeof str !== \"string\" || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\nfunction snipLine(line, colno) {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n colno = lineLength;\n }\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += \" {snip}\";\n }\n return newLine;\n}\nfunction safeJoin(input, delimiter) {\n if (!Array.isArray(input)) {\n return \"\";\n }\n const output = [];\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n if (isPrimitive(value)) {\n output.push(String(value));\n } else if (value instanceof Error) {\n output.push(value.message ? `${value.name}: ${value.message}` : value.name);\n } else {\n output.push(stringifyValue(void 0, value));\n }\n }\n return output.join(delimiter);\n}\nfunction isMatchingPattern(value, pattern, requireExactStringMatch = false) {\n if (!isString(value)) {\n return false;\n }\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (isString(pattern)) {\n return requireExactStringMatch ? value === pattern : value.includes(pattern);\n }\n if (typeof pattern === \"function\") {\n return pattern(value);\n }\n return false;\n}\nfunction stringMatchesSomePattern(testString, patterns = [], requireExactStringMatch = false) {\n for (const pattern of patterns) {\n if (isMatchingPattern(testString, pattern, requireExactStringMatch)) {\n return true;\n }\n }\n return false;\n}\n\nexport { isMatchingPattern, safeJoin, snipLine, stringMatchesSomePattern, truncate };\n//# sourceMappingURL=string.js.map\n","import { addNonEnumerableProperty } from './object.js';\nimport { withRandomSafeContext, safeMathRandom } from './randomSafeContext.js';\nimport { snipLine } from './string.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nfunction getCrypto() {\n const gbl = GLOBAL_OBJ;\n return gbl.crypto || gbl.msCrypto;\n}\nlet emptyUuid;\nfunction getRandomByte() {\n return safeMathRandom() * 16;\n}\nfunction uuid4(crypto = getCrypto()) {\n try {\n if (crypto?.randomUUID) {\n return withRandomSafeContext(() => crypto.randomUUID()).replace(/-/g, \"\");\n }\n } catch {\n }\n if (!emptyUuid) {\n emptyUuid = \"10000000100040008000\" + 1e11;\n }\n return emptyUuid.replace(\n /[018]/g,\n (c) => (\n // eslint-disable-next-line no-bitwise\n (c ^ (getRandomByte() & 15) >> c / 4).toString(16)\n )\n );\n}\nfunction getFirstException(event) {\n return event.exception?.values?.[0];\n}\nfunction getEventDescription(event) {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || \"\";\n }\n return eventId || \"\";\n}\nfunction addExceptionTypeValue(event, value, type) {\n const exception = event.exception = event.exception || {};\n const values = exception.values = exception.values || [];\n const firstException = values[0] = values[0] || {};\n if (!firstException.value) {\n firstException.value = value || \"\";\n }\n if (!firstException.type) {\n firstException.type = type || \"Error\";\n }\n}\nfunction addExceptionMechanism(event, newMechanism) {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n const defaultMechanism = { type: \"generic\", handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n if (newMechanism && \"data\" in newMechanism) {\n const mergedData = { ...currentMechanism?.data, ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\nconst SEMVER_REGEXP = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\nfunction _parseInt(input) {\n return parseInt(input || \"\", 10);\n}\nfunction parseSemver(input) {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = _parseInt(match[1]);\n const minor = _parseInt(match[2]);\n const patch = _parseInt(match[3]);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? void 0 : major,\n minor: isNaN(minor) ? void 0 : minor,\n patch: isNaN(patch) ? void 0 : patch,\n prerelease: match[4]\n };\n}\nfunction addContextToFrame(lines, frame, linesOfContext = 5) {\n if (frame.lineno === void 0) {\n return;\n }\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n frame.pre_context = lines.slice(Math.max(0, sourceLine - linesOfContext), sourceLine).map((line) => snipLine(line, 0));\n const lineIndex = Math.min(maxLines - 1, sourceLine);\n frame.context_line = snipLine(lines[lineIndex], frame.colno || 0);\n frame.post_context = lines.slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext).map((line) => snipLine(line, 0));\n}\nfunction checkOrSetAlreadyCaught(exception) {\n if (isAlreadyCaptured(exception)) {\n return true;\n }\n try {\n addNonEnumerableProperty(exception, \"__sentry_captured__\", true);\n } catch {\n }\n return false;\n}\nfunction isAlreadyCaptured(exception) {\n try {\n return exception.__sentry_captured__;\n } catch {\n }\n}\n\nexport { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, checkOrSetAlreadyCaught, getEventDescription, isAlreadyCaptured, parseSemver, uuid4 };\n//# sourceMappingURL=misc.js.map\n","import { safeDateNow, withRandomSafeContext } from './randomSafeContext.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nconst ONE_SECOND_IN_MS = 1e3;\nfunction dateTimestampInSeconds() {\n return safeDateNow() / ONE_SECOND_IN_MS;\n}\nfunction createUnixTimestampInSecondsFunc() {\n const { performance } = GLOBAL_OBJ;\n if (!performance?.now || !performance.timeOrigin) {\n return dateTimestampInSeconds;\n }\n const timeOrigin = performance.timeOrigin;\n return () => {\n return (timeOrigin + withRandomSafeContext(() => performance.now())) / ONE_SECOND_IN_MS;\n };\n}\nlet _cachedTimestampInSeconds;\nfunction timestampInSeconds() {\n const func = _cachedTimestampInSeconds ?? (_cachedTimestampInSeconds = createUnixTimestampInSecondsFunc());\n return func();\n}\nlet cachedTimeOrigin = null;\nfunction getBrowserTimeOrigin() {\n const { performance } = GLOBAL_OBJ;\n if (!performance?.now) {\n return void 0;\n }\n const threshold = 3e5;\n const performanceNow = withRandomSafeContext(() => performance.now());\n const dateNow = safeDateNow();\n const timeOrigin = performance.timeOrigin;\n if (typeof timeOrigin === \"number\") {\n const timeOriginDelta = Math.abs(timeOrigin + performanceNow - dateNow);\n if (timeOriginDelta < threshold) {\n return timeOrigin;\n }\n }\n const navigationStart = performance.timing?.navigationStart;\n if (typeof navigationStart === \"number\") {\n const navigationStartDelta = Math.abs(navigationStart + performanceNow - dateNow);\n if (navigationStartDelta < threshold) {\n return navigationStart;\n }\n }\n return dateNow - performanceNow;\n}\nfunction browserPerformanceTimeOrigin() {\n if (cachedTimeOrigin === null) {\n cachedTimeOrigin = getBrowserTimeOrigin();\n }\n return cachedTimeOrigin;\n}\n\nexport { browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds };\n//# sourceMappingURL=time.js.map\n","import { uuid4 } from './utils/misc.js';\nimport { timestampInSeconds } from './utils/time.js';\n\nfunction makeSession(context) {\n const startingTime = timestampInSeconds();\n const session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: \"ok\",\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session)\n };\n if (context) {\n updateSession(session, context);\n }\n return session;\n}\nfunction updateSession(session, context = {}) {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n session.timestamp = context.timestamp || timestampInSeconds();\n if (context.abnormal_mechanism) {\n session.abnormal_mechanism = context.abnormal_mechanism;\n }\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== void 0) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === \"number\") {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = void 0;\n } else if (typeof context.duration === \"number\") {\n session.duration = context.duration;\n } else {\n const duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === \"number\") {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\nfunction closeSession(session, status) {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === \"ok\") {\n context = { status: \"exited\" };\n }\n updateSession(session, context);\n}\nfunction sessionToJSON(session) {\n return {\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1e3).toISOString(),\n timestamp: new Date(session.timestamp * 1e3).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === \"number\" || typeof session.did === \"string\" ? `${session.did}` : void 0,\n duration: session.duration,\n abnormal_mechanism: session.abnormal_mechanism,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent\n }\n };\n}\n\nexport { closeSession, makeSession, updateSession };\n//# sourceMappingURL=session.js.map\n","function merge(initialObj, mergeObj, levels = 2) {\n if (!mergeObj || typeof mergeObj !== \"object\" || levels <= 0) {\n return mergeObj;\n }\n if (initialObj && Object.keys(mergeObj).length === 0) {\n return initialObj;\n }\n const output = { ...initialObj };\n for (const key in mergeObj) {\n if (Object.prototype.hasOwnProperty.call(mergeObj, key)) {\n output[key] = merge(output[key], mergeObj[key], levels - 1);\n }\n }\n return output;\n}\n\nexport { merge };\n//# sourceMappingURL=merge.js.map\n","import { uuid4 } from './misc.js';\n\nfunction generateTraceId() {\n return uuid4();\n}\nfunction generateSpanId() {\n return uuid4().substring(16);\n}\n\nexport { generateSpanId, generateTraceId };\n//# sourceMappingURL=propagationContext.js.map\n","import { GLOBAL_OBJ } from './worldwide.js';\n\nfunction makeWeakRef(value) {\n try {\n const WeakRefImpl = GLOBAL_OBJ.WeakRef;\n if (typeof WeakRefImpl === \"function\") {\n return new WeakRefImpl(value);\n }\n } catch {\n }\n return value;\n}\nfunction derefWeakRef(ref) {\n if (!ref) {\n return void 0;\n }\n if (typeof ref === \"object\" && \"deref\" in ref && typeof ref.deref === \"function\") {\n try {\n return ref.deref();\n } catch {\n return void 0;\n }\n }\n return ref;\n}\n\nexport { derefWeakRef, makeWeakRef };\n//# sourceMappingURL=weakRef.js.map\n","import { addNonEnumerableProperty } from './object.js';\nimport { makeWeakRef, derefWeakRef } from './weakRef.js';\n\nconst SCOPE_SPAN_FIELD = \"_sentrySpan\";\nfunction _setSpanForScope(scope, span) {\n if (span) {\n addNonEnumerableProperty(scope, SCOPE_SPAN_FIELD, makeWeakRef(span));\n } else {\n delete scope[SCOPE_SPAN_FIELD];\n }\n}\nfunction _getSpanForScope(scope) {\n return derefWeakRef(scope[SCOPE_SPAN_FIELD]);\n}\n\nexport { _getSpanForScope, _setSpanForScope };\n//# sourceMappingURL=spanOnScope.js.map\n","import { DEBUG_BUILD } from './debug-build.js';\nimport { updateSession } from './session.js';\nimport { debug } from './utils/debug-logger.js';\nimport { isPlainObject } from './utils/is.js';\nimport { merge } from './utils/merge.js';\nimport { uuid4 } from './utils/misc.js';\nimport { generateTraceId } from './utils/propagationContext.js';\nimport { safeMathRandom } from './utils/randomSafeContext.js';\nimport { _setSpanForScope, _getSpanForScope } from './utils/spanOnScope.js';\nimport { truncate } from './utils/string.js';\nimport { dateTimestampInSeconds } from './utils/time.js';\n\nconst DEFAULT_MAX_BREADCRUMBS = 100;\nclass Scope {\n // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._attributes = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n this._propagationContext = {\n traceId: generateTraceId(),\n sampleRand: safeMathRandom()\n };\n }\n /**\n * Clone all data from this scope into a new scope.\n */\n clone() {\n const newScope = new Scope();\n newScope._breadcrumbs = [...this._breadcrumbs];\n newScope._tags = { ...this._tags };\n newScope._attributes = { ...this._attributes };\n newScope._extra = { ...this._extra };\n newScope._contexts = { ...this._contexts };\n if (this._contexts.flags) {\n newScope._contexts.flags = {\n values: [...this._contexts.flags.values]\n };\n }\n newScope._user = this._user;\n newScope._level = this._level;\n newScope._session = this._session;\n newScope._transactionName = this._transactionName;\n newScope._fingerprint = this._fingerprint;\n newScope._eventProcessors = [...this._eventProcessors];\n newScope._attachments = [...this._attachments];\n newScope._sdkProcessingMetadata = { ...this._sdkProcessingMetadata };\n newScope._propagationContext = { ...this._propagationContext };\n newScope._client = this._client;\n newScope._lastEventId = this._lastEventId;\n newScope._conversationId = this._conversationId;\n _setSpanForScope(newScope, _getSpanForScope(this));\n return newScope;\n }\n /**\n * Update the client assigned to this scope.\n * Note that not every scope will have a client assigned - isolation scopes & the global scope will generally not have a client,\n * as well as manually created scopes.\n */\n setClient(client) {\n this._client = client;\n }\n /**\n * Set the ID of the last captured error event.\n * This is generally only captured on the isolation scope.\n */\n setLastEventId(lastEventId) {\n this._lastEventId = lastEventId;\n }\n /**\n * Get the client assigned to this scope.\n */\n getClient() {\n return this._client;\n }\n /**\n * Get the ID of the last captured error event.\n * This is generally only available on the isolation scope.\n */\n lastEventId() {\n return this._lastEventId;\n }\n /**\n * @inheritDoc\n */\n addScopeListener(callback) {\n this._scopeListeners.push(callback);\n }\n /**\n * Add an event processor that will be called before an event is sent.\n */\n addEventProcessor(callback) {\n this._eventProcessors.push(callback);\n return this;\n }\n /**\n * Set the user for this scope.\n * Set to `null` to unset the user.\n */\n setUser(user) {\n this._user = user || {\n email: void 0,\n id: void 0,\n ip_address: void 0,\n username: void 0\n };\n if (this._session) {\n updateSession(this._session, { user });\n }\n this._notifyScopeListeners();\n return this;\n }\n /**\n * Get the user from this scope.\n */\n getUser() {\n return this._user;\n }\n /**\n * Set the conversation ID for this scope.\n * Set to `null` to unset the conversation ID.\n */\n setConversationId(conversationId) {\n this._conversationId = conversationId || void 0;\n this._notifyScopeListeners();\n return this;\n }\n /**\n * Set an object that will be merged into existing tags on the scope,\n * and will be sent as tags data with the event.\n */\n setTags(tags) {\n this._tags = {\n ...this._tags,\n ...tags\n };\n this._notifyScopeListeners();\n return this;\n }\n /**\n * Set a single tag that will be sent as tags data with the event.\n */\n setTag(key, value) {\n return this.setTags({ [key]: value });\n }\n /**\n * Sets attributes onto the scope.\n *\n * These attributes are currently applied to logs and metrics.\n * In the future, they will also be applied to spans.\n *\n * Important: For now, only strings, numbers and boolean attributes are supported, despite types allowing for\n * more complex attribute types. We'll add this support in the future but already specify the wider type to\n * avoid a breaking change in the future.\n *\n * @param newAttributes - The attributes to set on the scope. You can either pass in key-value pairs, or\n * an object with a `value` and an optional `unit` (if applicable to your attribute).\n *\n * @example\n * ```typescript\n * scope.setAttributes({\n * is_admin: true,\n * payment_selection: 'credit_card',\n * render_duration: { value: 'render_duration', unit: 'ms' },\n * });\n * ```\n */\n setAttributes(newAttributes) {\n this._attributes = {\n ...this._attributes,\n ...newAttributes\n };\n this._notifyScopeListeners();\n return this;\n }\n /**\n * Sets an attribute onto the scope.\n *\n * These attributes are currently applied to logs and metrics.\n * In the future, they will also be applied to spans.\n *\n * Important: For now, only strings, numbers and boolean attributes are supported, despite types allowing for\n * more complex attribute types. We'll add this support in the future but already specify the wider type to\n * avoid a breaking change in the future.\n *\n * @param key - The attribute key.\n * @param value - the attribute value. You can either pass in a raw value, or an attribute\n * object with a `value` and an optional `unit` (if applicable to your attribute).\n *\n * @example\n * ```typescript\n * scope.setAttribute('is_admin', true);\n * scope.setAttribute('render_duration', { value: 'render_duration', unit: 'ms' });\n * ```\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setAttribute(key, value) {\n return this.setAttributes({ [key]: value });\n }\n /**\n * Removes the attribute with the given key from the scope.\n *\n * @param key - The attribute key.\n *\n * @example\n * ```typescript\n * scope.removeAttribute('is_admin');\n * ```\n */\n removeAttribute(key) {\n if (key in this._attributes) {\n delete this._attributes[key];\n this._notifyScopeListeners();\n }\n return this;\n }\n /**\n * Set an object that will be merged into existing extra on the scope,\n * and will be sent as extra data with the event.\n */\n setExtras(extras) {\n this._extra = {\n ...this._extra,\n ...extras\n };\n this._notifyScopeListeners();\n return this;\n }\n /**\n * Set a single key:value extra entry that will be sent as extra data with the event.\n */\n setExtra(key, extra) {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n /**\n * Sets the fingerprint on the scope to send with the events.\n * @param {string[]} fingerprint Fingerprint to group events in Sentry.\n */\n setFingerprint(fingerprint) {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n /**\n * Sets the level on the scope for future events.\n */\n setLevel(level) {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n /**\n * Sets the transaction name on the scope so that the name of e.g. taken server route or\n * the page location is attached to future events.\n *\n * IMPORTANT: Calling this function does NOT change the name of the currently active\n * root span. If you want to change the name of the active root span, use\n * `Sentry.updateSpanName(rootSpan, 'new name')` instead.\n *\n * By default, the SDK updates the scope's transaction name automatically on sensible\n * occasions, such as a page navigation or when handling a new request on the server.\n */\n setTransactionName(name) {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n /**\n * Sets context data with the given name.\n * Data passed as context will be normalized. You can also pass `null` to unset the context.\n * Note that context data will not be merged - calling `setContext` will overwrite an existing context with the same key.\n */\n setContext(key, context) {\n if (context === null) {\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n this._notifyScopeListeners();\n return this;\n }\n /**\n * Set the session for the scope.\n */\n setSession(session) {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n /**\n * Get the session from the scope.\n */\n getSession() {\n return this._session;\n }\n /**\n * Updates the scope with provided data. Can work in three variations:\n * - plain object containing updatable attributes\n * - Scope instance that'll extract the attributes from\n * - callback function that'll receive the current scope as an argument and allow for modifications\n */\n update(captureContext) {\n if (!captureContext) {\n return this;\n }\n const scopeToMerge = typeof captureContext === \"function\" ? captureContext(this) : captureContext;\n const scopeInstance = scopeToMerge instanceof Scope ? scopeToMerge.getScopeData() : isPlainObject(scopeToMerge) ? captureContext : void 0;\n const {\n tags,\n attributes,\n extra,\n user,\n contexts,\n level,\n fingerprint = [],\n propagationContext,\n conversationId\n } = scopeInstance || {};\n this._tags = { ...this._tags, ...tags };\n this._attributes = { ...this._attributes, ...attributes };\n this._extra = { ...this._extra, ...extra };\n this._contexts = { ...this._contexts, ...contexts };\n if (user && Object.keys(user).length) {\n this._user = user;\n }\n if (level) {\n this._level = level;\n }\n if (fingerprint.length) {\n this._fingerprint = fingerprint;\n }\n if (propagationContext) {\n this._propagationContext = propagationContext;\n }\n if (conversationId) {\n this._conversationId = conversationId;\n }\n return this;\n }\n /**\n * Clears the current scope and resets its properties.\n * Note: The client will not be cleared.\n */\n clear() {\n this._breadcrumbs = [];\n this._tags = {};\n this._attributes = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = void 0;\n this._transactionName = void 0;\n this._fingerprint = void 0;\n this._session = void 0;\n this._conversationId = void 0;\n _setSpanForScope(this, void 0);\n this._attachments = [];\n this.setPropagationContext({\n traceId: generateTraceId(),\n sampleRand: safeMathRandom()\n });\n this._notifyScopeListeners();\n return this;\n }\n /**\n * Adds a breadcrumb to the scope.\n * By default, the last 100 breadcrumbs are kept.\n */\n addBreadcrumb(breadcrumb, maxBreadcrumbs) {\n const maxCrumbs = typeof maxBreadcrumbs === \"number\" ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n if (maxCrumbs <= 0) {\n return this;\n }\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n // Breadcrumb messages can theoretically be infinitely large and they're held in memory so we truncate them not to leak (too much) memory\n message: breadcrumb.message ? truncate(breadcrumb.message, 2048) : breadcrumb.message\n };\n this._breadcrumbs.push(mergedBreadcrumb);\n if (this._breadcrumbs.length > maxCrumbs) {\n this._breadcrumbs = this._breadcrumbs.slice(-maxCrumbs);\n this._client?.recordDroppedEvent(\"buffer_overflow\", \"log_item\");\n }\n this._notifyScopeListeners();\n return this;\n }\n /**\n * Get the last breadcrumb of the scope.\n */\n getLastBreadcrumb() {\n return this._breadcrumbs[this._breadcrumbs.length - 1];\n }\n /**\n * Clear all breadcrumbs from the scope.\n */\n clearBreadcrumbs() {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n /**\n * Add an attachment to the scope.\n */\n addAttachment(attachment) {\n this._attachments.push(attachment);\n return this;\n }\n /**\n * Clear all attachments from the scope.\n */\n clearAttachments() {\n this._attachments = [];\n return this;\n }\n /**\n * Get the data of this scope, which should be applied to an event during processing.\n */\n getScopeData() {\n return {\n breadcrumbs: this._breadcrumbs,\n attachments: this._attachments,\n contexts: this._contexts,\n tags: this._tags,\n attributes: this._attributes,\n extra: this._extra,\n user: this._user,\n level: this._level,\n fingerprint: this._fingerprint || [],\n eventProcessors: this._eventProcessors,\n propagationContext: this._propagationContext,\n sdkProcessingMetadata: this._sdkProcessingMetadata,\n transactionName: this._transactionName,\n span: _getSpanForScope(this),\n conversationId: this._conversationId\n };\n }\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry.\n */\n setSDKProcessingMetadata(newData) {\n this._sdkProcessingMetadata = merge(this._sdkProcessingMetadata, newData, 2);\n return this;\n }\n /**\n * Add propagation context to the scope, used for distributed tracing\n */\n setPropagationContext(context) {\n this._propagationContext = context;\n return this;\n }\n /**\n * Get propagation context from the scope, used for distributed tracing\n */\n getPropagationContext() {\n return this._propagationContext;\n }\n /**\n * Capture an exception for this scope.\n *\n * @returns {string} The id of the captured Sentry event.\n */\n captureException(exception, hint) {\n const eventId = hint?.event_id || uuid4();\n if (!this._client) {\n DEBUG_BUILD && debug.warn(\"No client configured on scope - will not capture exception!\");\n return eventId;\n }\n const syntheticException = new Error(\"Sentry syntheticException\");\n this._client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId\n },\n this\n );\n return eventId;\n }\n /**\n * Capture a message for this scope.\n *\n * @returns {string} The id of the captured message.\n */\n captureMessage(message, level, hint) {\n const eventId = hint?.event_id || uuid4();\n if (!this._client) {\n DEBUG_BUILD && debug.warn(\"No client configured on scope - will not capture message!\");\n return eventId;\n }\n const syntheticException = hint?.syntheticException ?? new Error(message);\n this._client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId\n },\n this\n );\n return eventId;\n }\n /**\n * Capture a Sentry event for this scope.\n *\n * @returns {string} The id of the captured event.\n */\n captureEvent(event, hint) {\n const eventId = event.event_id || hint?.event_id || uuid4();\n if (!this._client) {\n DEBUG_BUILD && debug.warn(\"No client configured on scope - will not capture event!\");\n return eventId;\n }\n this._client.captureEvent(event, { ...hint, event_id: eventId }, this);\n return eventId;\n }\n /**\n * This will be called on every set call.\n */\n _notifyScopeListeners() {\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach((callback) => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n}\n\nexport { Scope };\n//# sourceMappingURL=scope.js.map\n","import { getGlobalSingleton } from './carrier.js';\nimport { Scope } from './scope.js';\n\nfunction getDefaultCurrentScope() {\n return getGlobalSingleton(\"defaultCurrentScope\", () => new Scope());\n}\nfunction getDefaultIsolationScope() {\n return getGlobalSingleton(\"defaultIsolationScope\", () => new Scope());\n}\n\nexport { getDefaultCurrentScope, getDefaultIsolationScope };\n//# sourceMappingURL=defaultScopes.js.map\n","const isActualPromise = (p) => p instanceof Promise && !p[kChainedCopy];\nconst kChainedCopy = /* @__PURE__ */ Symbol(\"chained PromiseLike\");\nconst chainAndCopyPromiseLike = (original, onSuccess, onError) => {\n const chained = original.then(\n (value) => {\n onSuccess(value);\n return value;\n },\n (err) => {\n onError(err);\n throw err;\n }\n );\n return isActualPromise(chained) && isActualPromise(original) ? chained : copyProps(original, chained);\n};\nconst copyProps = (original, chained) => {\n if (!chained) return original;\n let mutated = false;\n for (const key in original) {\n if (key in chained) continue;\n mutated = true;\n const value = original[key];\n if (typeof value === \"function\") {\n Object.defineProperty(chained, key, {\n value: (...args) => value.apply(original, args),\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n chained[key] = value;\n }\n }\n if (mutated) Object.assign(chained, { [kChainedCopy]: true });\n return chained;\n};\n\nexport { chainAndCopyPromiseLike };\n//# sourceMappingURL=chain-and-copy-promiselike.js.map\n","import { getDefaultCurrentScope, getDefaultIsolationScope } from '../defaultScopes.js';\nimport { Scope } from '../scope.js';\nimport { chainAndCopyPromiseLike } from '../utils/chain-and-copy-promiselike.js';\nimport { isThenable } from '../utils/is.js';\nimport { getMainCarrier, getSentryCarrier } from '../carrier.js';\n\nclass AsyncContextStack {\n constructor(scope, isolationScope) {\n let assignedScope;\n if (!scope) {\n assignedScope = new Scope();\n } else {\n assignedScope = scope;\n }\n let assignedIsolationScope;\n if (!isolationScope) {\n assignedIsolationScope = new Scope();\n } else {\n assignedIsolationScope = isolationScope;\n }\n this._stack = [{ scope: assignedScope }];\n this._isolationScope = assignedIsolationScope;\n }\n /**\n * Fork a scope for the stack.\n */\n withScope(callback) {\n const scope = this._pushScope();\n let maybePromiseResult;\n try {\n maybePromiseResult = callback(scope);\n } catch (e) {\n this._popScope();\n throw e;\n }\n if (isThenable(maybePromiseResult)) {\n return chainAndCopyPromiseLike(\n maybePromiseResult,\n () => this._popScope(),\n () => this._popScope()\n );\n }\n this._popScope();\n return maybePromiseResult;\n }\n /**\n * Get the client of the stack.\n */\n getClient() {\n return this.getStackTop().client;\n }\n /**\n * Returns the scope of the top stack.\n */\n getScope() {\n return this.getStackTop().scope;\n }\n /**\n * Get the isolation scope for the stack.\n */\n getIsolationScope() {\n return this._isolationScope;\n }\n /**\n * Returns the topmost scope layer in the order domain > local > process.\n */\n getStackTop() {\n return this._stack[this._stack.length - 1];\n }\n /**\n * Push a scope to the stack.\n */\n _pushScope() {\n const scope = this.getScope().clone();\n this._stack.push({\n client: this.getClient(),\n scope\n });\n return scope;\n }\n /**\n * Pop a scope from the stack.\n */\n _popScope() {\n if (this._stack.length <= 1) return false;\n return !!this._stack.pop();\n }\n}\nfunction getAsyncContextStack() {\n const registry = getMainCarrier();\n const sentry = getSentryCarrier(registry);\n return sentry.stack = sentry.stack || new AsyncContextStack(getDefaultCurrentScope(), getDefaultIsolationScope());\n}\nfunction withScope(callback) {\n return getAsyncContextStack().withScope(callback);\n}\nfunction withSetScope(scope, callback) {\n const stack = getAsyncContextStack();\n return stack.withScope(() => {\n stack.getStackTop().scope = scope;\n return callback(scope);\n });\n}\nfunction withIsolationScope(callback) {\n return getAsyncContextStack().withScope(() => {\n return callback(getAsyncContextStack().getIsolationScope());\n });\n}\nfunction getStackAsyncContextStrategy() {\n return {\n withIsolationScope,\n withScope,\n withSetScope,\n withSetIsolationScope: (_isolationScope, callback) => {\n return withIsolationScope(callback);\n },\n getCurrentScope: () => getAsyncContextStack().getScope(),\n getIsolationScope: () => getAsyncContextStack().getIsolationScope()\n };\n}\n\nexport { AsyncContextStack, getStackAsyncContextStrategy };\n//# sourceMappingURL=stackStrategy.js.map\n","import { getMainCarrier, getSentryCarrier } from '../carrier.js';\nimport { getStackAsyncContextStrategy } from './stackStrategy.js';\n\nfunction setAsyncContextStrategy(strategy) {\n const registry = getMainCarrier();\n const sentry = getSentryCarrier(registry);\n sentry.acs = strategy;\n}\nfunction getAsyncContextStrategy(carrier) {\n const sentry = getSentryCarrier(carrier);\n if (sentry.acs) {\n return sentry.acs;\n }\n return getStackAsyncContextStrategy();\n}\n\nexport { getAsyncContextStrategy, setAsyncContextStrategy };\n//# sourceMappingURL=index.js.map\n","import { isPrimitive } from './utils/is.js';\n\nfunction isAttributeObject(maybeObj) {\n return typeof maybeObj === \"object\" && maybeObj != null && !Array.isArray(maybeObj) && Object.keys(maybeObj).includes(\"value\");\n}\nfunction attributeValueToTypedAttributeValue(rawValue, useFallback) {\n const { value, unit } = isAttributeObject(rawValue) ? rawValue : { value: rawValue, unit: void 0 };\n const attributeValue = getTypedAttributeValue(value);\n const checkedUnit = unit && typeof unit === \"string\" ? { unit } : {};\n if (attributeValue) {\n return { ...attributeValue, ...checkedUnit };\n }\n if (!useFallback || useFallback === \"skip-undefined\" && value === void 0) {\n return;\n }\n let stringValue = \"\";\n try {\n stringValue = JSON.stringify(value) ?? \"\";\n } catch {\n }\n return {\n value: stringValue,\n type: \"string\",\n ...checkedUnit\n };\n}\nfunction serializeAttributes(attributes, fallback = false) {\n const serializedAttributes = {};\n for (const [key, value] of Object.entries(attributes ?? {})) {\n const typedValue = attributeValueToTypedAttributeValue(value, fallback);\n if (typedValue) {\n serializedAttributes[key] = typedValue;\n }\n }\n return serializedAttributes;\n}\nfunction estimateTypedAttributesSizeInBytes(attributes) {\n if (!attributes) {\n return 0;\n }\n let weight = 0;\n for (const [key, attr] of Object.entries(attributes)) {\n weight += key.length * 2;\n weight += attr.type.length * 2;\n weight += (attr.unit?.length ?? 0) * 2;\n const val = attr.value;\n if (Array.isArray(val)) {\n weight += estimatePrimitiveSizeInBytes(val[0]) * val.length;\n } else if (isPrimitive(val)) {\n weight += estimatePrimitiveSizeInBytes(val);\n } else {\n weight += 100;\n }\n }\n return weight;\n}\nfunction estimatePrimitiveSizeInBytes(value) {\n if (typeof value === \"string\") {\n return value.length * 2;\n } else if (typeof value === \"boolean\") {\n return 4;\n } else if (typeof value === \"number\") {\n return 8;\n }\n return 0;\n}\nfunction getTypedAttributeValue(value) {\n if (Array.isArray(value)) {\n return { value, type: \"array\" };\n }\n const primitiveType = typeof value === \"string\" ? \"string\" : typeof value === \"boolean\" ? \"boolean\" : typeof value === \"number\" && !Number.isNaN(value) ? Number.isInteger(value) ? \"integer\" : \"double\" : null;\n if (primitiveType) {\n return { value, type: primitiveType };\n }\n}\n\nexport { attributeValueToTypedAttributeValue, estimateTypedAttributesSizeInBytes, isAttributeObject, serializeAttributes };\n//# sourceMappingURL=attributes.js.map\n","import { getAsyncContextStrategy } from './asyncContext/index.js';\nimport { getMainCarrier, getGlobalSingleton } from './carrier.js';\nimport { Scope } from './scope.js';\nimport { generateSpanId } from './utils/propagationContext.js';\n\nlet _externalPropagationContextProvider;\nfunction registerExternalPropagationContext(fn) {\n _externalPropagationContextProvider = fn;\n}\nfunction getExternalPropagationContext() {\n return _externalPropagationContextProvider?.();\n}\nfunction hasExternalPropagationContext() {\n return _externalPropagationContextProvider !== void 0;\n}\nfunction getCurrentScope() {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n return acs.getCurrentScope();\n}\nfunction getIsolationScope() {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n return acs.getIsolationScope();\n}\nfunction getGlobalScope() {\n return getGlobalSingleton(\"globalScope\", () => new Scope());\n}\nfunction withScope(...rest) {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n if (rest.length === 2) {\n const [scope, callback] = rest;\n if (!scope) {\n return acs.withScope(callback);\n }\n return acs.withSetScope(scope, callback);\n }\n return acs.withScope(rest[0]);\n}\nfunction withIsolationScope(...rest) {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n if (rest.length === 2) {\n const [isolationScope, callback] = rest;\n if (!isolationScope) {\n return acs.withIsolationScope(callback);\n }\n return acs.withSetIsolationScope(isolationScope, callback);\n }\n return acs.withIsolationScope(rest[0]);\n}\nfunction getClient() {\n return getCurrentScope().getClient();\n}\nfunction getTraceContextFromScope(scope) {\n const externalContext = getExternalPropagationContext();\n if (externalContext) {\n return { trace_id: externalContext.traceId, span_id: externalContext.spanId };\n }\n const propagationContext = scope.getPropagationContext();\n const { traceId, parentSpanId, propagationSpanId } = propagationContext;\n const traceContext = {\n trace_id: traceId,\n span_id: propagationSpanId || generateSpanId()\n };\n if (parentSpanId) {\n traceContext.parent_span_id = parentSpanId;\n }\n return traceContext;\n}\n\nexport { getClient, getCurrentScope, getExternalPropagationContext, getGlobalScope, getIsolationScope, getTraceContextFromScope, hasExternalPropagationContext, registerExternalPropagationContext, withIsolationScope, withScope };\n//# sourceMappingURL=currentScopes.js.map\n","const SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = \"sentry.source\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = \"sentry.sample_rate\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE = \"sentry.previous_trace_sample_rate\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_OP = \"sentry.op\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = \"sentry.origin\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON = \"sentry.idle_span_finish_reason\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT = \"sentry.measurement_unit\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE = \"sentry.measurement_value\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_RELEASE = \"sentry.release\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_ENVIRONMENT = \"sentry.environment\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_SEGMENT_NAME = \"sentry.segment.name\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_SEGMENT_ID = \"sentry.segment.id\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_SDK_NAME = \"sentry.sdk.name\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_SDK_VERSION = \"sentry.sdk.version\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_SDK_INTEGRATIONS = \"sentry.sdk.integrations\";\nconst SEMANTIC_ATTRIBUTE_USER_ID = \"user.id\";\nconst SEMANTIC_ATTRIBUTE_USER_EMAIL = \"user.email\";\nconst SEMANTIC_ATTRIBUTE_USER_IP_ADDRESS = \"user.ip_address\";\nconst SEMANTIC_ATTRIBUTE_USER_USERNAME = \"user.name\";\nconst SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME = \"sentry.custom_span_name\";\nconst SEMANTIC_ATTRIBUTE_PROFILE_ID = \"sentry.profile_id\";\nconst SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME = \"sentry.exclusive_time\";\nconst SEMANTIC_ATTRIBUTE_CACHE_HIT = \"cache.hit\";\nconst SEMANTIC_ATTRIBUTE_CACHE_KEY = \"cache.key\";\nconst SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE = \"cache.item_size\";\nconst SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD = \"http.request.method\";\nconst SEMANTIC_ATTRIBUTE_URL_FULL = \"url.full\";\nconst SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE = \"sentry.link.type\";\nconst GEN_AI_CONVERSATION_ID_ATTRIBUTE = \"gen_ai.conversation.id\";\n\nexport { GEN_AI_CONVERSATION_ID_ATTRIBUTE, SEMANTIC_ATTRIBUTE_CACHE_HIT, SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE, SEMANTIC_ATTRIBUTE_CACHE_KEY, SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME, SEMANTIC_ATTRIBUTE_HTTP_REQUEST_METHOD, SEMANTIC_ATTRIBUTE_PROFILE_ID, SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME, SEMANTIC_ATTRIBUTE_SENTRY_ENVIRONMENT, SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON, SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_UNIT, SEMANTIC_ATTRIBUTE_SENTRY_MEASUREMENT_VALUE, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_RELEASE, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SDK_INTEGRATIONS, SEMANTIC_ATTRIBUTE_SENTRY_SDK_NAME, SEMANTIC_ATTRIBUTE_SENTRY_SDK_VERSION, SEMANTIC_ATTRIBUTE_SENTRY_SEGMENT_ID, SEMANTIC_ATTRIBUTE_SENTRY_SEGMENT_NAME, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_URL_FULL, SEMANTIC_ATTRIBUTE_USER_EMAIL, SEMANTIC_ATTRIBUTE_USER_ID, SEMANTIC_ATTRIBUTE_USER_IP_ADDRESS, SEMANTIC_ATTRIBUTE_USER_USERNAME, SEMANTIC_LINK_ATTRIBUTE_LINK_TYPE };\n//# sourceMappingURL=semanticAttributes.js.map\n","import { addNonEnumerableProperty } from '../utils/object.js';\nimport { derefWeakRef, makeWeakRef } from '../utils/weakRef.js';\n\nconst SCOPE_ON_START_SPAN_FIELD = \"_sentryScope\";\nconst ISOLATION_SCOPE_ON_START_SPAN_FIELD = \"_sentryIsolationScope\";\nfunction setCapturedScopesOnSpan(span, scope, isolationScope) {\n if (span) {\n addNonEnumerableProperty(span, ISOLATION_SCOPE_ON_START_SPAN_FIELD, makeWeakRef(isolationScope));\n addNonEnumerableProperty(span, SCOPE_ON_START_SPAN_FIELD, scope);\n }\n}\nfunction getCapturedScopesOnSpan(span) {\n const spanWithScopes = span;\n return {\n scope: spanWithScopes[SCOPE_ON_START_SPAN_FIELD],\n isolationScope: derefWeakRef(spanWithScopes[ISOLATION_SCOPE_ON_START_SPAN_FIELD])\n };\n}\n\nexport { getCapturedScopesOnSpan, setCapturedScopesOnSpan };\n//# sourceMappingURL=utils.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { debug } from './debug-logger.js';\nimport { isString } from './is.js';\n\nconst SENTRY_BAGGAGE_KEY_PREFIX = \"sentry-\";\nconst SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\nconst MAX_BAGGAGE_STRING_LENGTH = 8192;\nfunction baggageHeaderToDynamicSamplingContext(baggageHeader) {\n const baggageObject = parseBaggageHeader(baggageHeader);\n if (!baggageObject) {\n return void 0;\n }\n const dynamicSamplingContext = Object.entries(baggageObject).reduce((acc, [key, value]) => {\n if (key.startsWith(SENTRY_BAGGAGE_KEY_PREFIX)) {\n const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n acc[nonPrefixedKey] = value;\n }\n return acc;\n }, {});\n if (Object.keys(dynamicSamplingContext).length > 0) {\n return dynamicSamplingContext;\n } else {\n return void 0;\n }\n}\nfunction dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext) {\n if (!dynamicSamplingContext) {\n return void 0;\n }\n const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce(\n (acc, [dscKey, dscValue]) => {\n if (dscValue) {\n acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n }\n return acc;\n },\n {}\n );\n return objectToBaggageHeader(sentryPrefixedDSC);\n}\nfunction parseBaggageHeader(baggageHeader) {\n if (!baggageHeader || !isString(baggageHeader) && !Array.isArray(baggageHeader)) {\n return void 0;\n }\n if (Array.isArray(baggageHeader)) {\n return baggageHeader.reduce((acc, curr) => {\n const currBaggageObject = baggageHeaderToObject(curr);\n Object.entries(currBaggageObject).forEach(([key, value]) => {\n acc[key] = value;\n });\n return acc;\n }, {});\n }\n return baggageHeaderToObject(baggageHeader);\n}\nfunction baggageHeaderToObject(baggageHeader) {\n return baggageHeader.split(\",\").map((baggageEntry) => {\n const eqIdx = baggageEntry.indexOf(\"=\");\n if (eqIdx === -1) {\n return [];\n }\n const key = baggageEntry.slice(0, eqIdx);\n const value = baggageEntry.slice(eqIdx + 1);\n return [key, value].map((keyOrValue) => {\n try {\n return decodeURIComponent(keyOrValue.trim());\n } catch {\n return;\n }\n });\n }).reduce((acc, [key, value]) => {\n if (key && value) {\n acc[key] = value;\n }\n return acc;\n }, {});\n}\nfunction objectToBaggageHeader(object) {\n if (Object.keys(object).length === 0) {\n return void 0;\n }\n return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n DEBUG_BUILD && debug.warn(\n `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`\n );\n return baggageHeader;\n } else {\n return newBaggageHeader;\n }\n }, \"\");\n}\nfunction mergeBaggageHeaders(existing, incoming) {\n if (!existing) {\n return incoming;\n }\n const existingEntries = parseBaggageHeader(existing);\n const incomingEntries = parseBaggageHeader(incoming);\n if (!incomingEntries) {\n return existing;\n }\n const merged = {};\n let hasNewSentryEntries = false;\n const newSentryEntries = {};\n const newNonSentryEntries = {};\n for (const [key, value] of Object.entries(incomingEntries)) {\n if (key.startsWith(SENTRY_BAGGAGE_KEY_PREFIX)) {\n newSentryEntries[key] = value;\n hasNewSentryEntries = true;\n } else {\n newNonSentryEntries[key] = value;\n }\n }\n if (existingEntries) {\n for (const [key, value] of Object.entries(existingEntries)) {\n if (!hasNewSentryEntries || !key.startsWith(SENTRY_BAGGAGE_KEY_PREFIX)) {\n merged[key] = value;\n }\n }\n }\n if (hasNewSentryEntries) {\n Object.assign(merged, newSentryEntries);\n }\n for (const [key, value] of Object.entries(newNonSentryEntries)) {\n merged[key] ?? (merged[key] = value);\n }\n return objectToBaggageHeader(merged);\n}\n\nexport { MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader, mergeBaggageHeaders, objectToBaggageHeader, parseBaggageHeader };\n//# sourceMappingURL=baggage.js.map\n","import { DEBUG_BUILD } from '../debug-build.js';\nimport { consoleSandbox, debug } from './debug-logger.js';\n\nconst ORG_ID_REGEX = /^o(\\d+)\\./;\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+)?)?@)((?:\\[[:.%\\w]+\\]|[\\w.-]+))(?::(\\d+))?\\/(.+)/;\nfunction isValidProtocol(protocol) {\n return protocol === \"http\" || protocol === \"https\";\n}\nfunction dsnToString(dsn, withPassword = false) {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : \"\"}@${host}${port ? `:${port}` : \"\"}/${path ? `${path}/` : path}${projectId}`;\n}\nfunction dsnFromString(str) {\n const match = DSN_REGEX.exec(str);\n if (!match) {\n consoleSandbox(() => {\n console.error(`Invalid Sentry Dsn: ${str}`);\n });\n return void 0;\n }\n const [protocol, publicKey, pass = \"\", host = \"\", port = \"\", lastPath = \"\"] = match.slice(1);\n let path = \"\";\n let projectId = lastPath;\n const split = projectId.split(\"/\");\n if (split.length > 1) {\n path = split.slice(0, -1).join(\"/\");\n projectId = split.pop();\n }\n if (projectId) {\n const projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n return dsnFromComponents({ host, pass, path, projectId, port, protocol, publicKey });\n}\nfunction dsnFromComponents(components) {\n return {\n protocol: components.protocol,\n publicKey: components.publicKey || \"\",\n pass: components.pass || \"\",\n host: components.host,\n port: components.port || \"\",\n path: components.path || \"\",\n projectId: components.projectId\n };\n}\nfunction validateDsn(dsn) {\n if (!DEBUG_BUILD) {\n return true;\n }\n const { port, projectId, protocol } = dsn;\n const requiredComponents = [\"protocol\", \"publicKey\", \"host\", \"projectId\"];\n const hasMissingRequiredComponent = requiredComponents.find((component) => {\n if (!dsn[component]) {\n debug.error(`Invalid Sentry Dsn: ${component} missing`);\n return true;\n }\n return false;\n });\n if (hasMissingRequiredComponent) {\n return false;\n }\n if (!projectId.match(/^\\d+$/)) {\n debug.error(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n return false;\n }\n if (!isValidProtocol(protocol)) {\n debug.error(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n return false;\n }\n if (port && isNaN(parseInt(port, 10))) {\n debug.error(`Invalid Sentry Dsn: Invalid port ${port}`);\n return false;\n }\n return true;\n}\nfunction extractOrgIdFromDsnHost(host) {\n const match = host.match(ORG_ID_REGEX);\n return match?.[1];\n}\nfunction extractOrgIdFromClient(client) {\n const options = client.getOptions();\n const { host } = client.getDsn() || {};\n let org_id;\n if (options.orgId) {\n org_id = String(options.orgId);\n } else if (host) {\n org_id = extractOrgIdFromDsnHost(host);\n }\n return org_id;\n}\nfunction makeDsn(from) {\n const components = typeof from === \"string\" ? dsnFromString(from) : dsnFromComponents(from);\n if (!components || !validateDsn(components)) {\n return void 0;\n }\n return components;\n}\n\nexport { dsnFromString, dsnToString, extractOrgIdFromClient, extractOrgIdFromDsnHost, makeDsn };\n//# sourceMappingURL=dsn.js.map\n","import { getAsyncContextStrategy } from '../asyncContext/index.js';\nimport { serializeAttributes } from '../attributes.js';\nimport { getMainCarrier } from '../carrier.js';\nimport { getCurrentScope } from '../currentScopes.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes.js';\nimport { SPAN_STATUS_UNSET, SPAN_STATUS_OK } from '../tracing/spanstatus.js';\nimport { getCapturedScopesOnSpan } from '../tracing/utils.js';\nimport { addNonEnumerableProperty } from './object.js';\nimport { generateSpanId } from './propagationContext.js';\nimport { timestampInSeconds } from './time.js';\nimport { generateSentryTraceHeader, generateTraceparentHeader } from './tracing.js';\nimport { consoleSandbox } from './debug-logger.js';\nimport { _getSpanForScope } from './spanOnScope.js';\n\nconst TRACE_FLAG_NONE = 0;\nconst TRACE_FLAG_SAMPLED = 1;\nlet hasShownSpanDropWarning = false;\nfunction spanToTransactionTraceContext(span) {\n const { spanId: span_id, traceId: trace_id } = span.spanContext();\n const { data, op, parent_span_id, status, origin, links } = spanToJSON(span);\n return {\n parent_span_id,\n span_id,\n trace_id,\n data,\n op,\n status,\n origin,\n links\n };\n}\nfunction spanToTraceContext(span) {\n const { spanId, traceId: trace_id, isRemote } = span.spanContext();\n const parent_span_id = isRemote ? spanId : spanToJSON(span).parent_span_id;\n const scope = getCapturedScopesOnSpan(span).scope;\n const span_id = isRemote ? scope?.getPropagationContext().propagationSpanId || generateSpanId() : spanId;\n return {\n parent_span_id,\n span_id,\n trace_id\n };\n}\nfunction spanToTraceHeader(span) {\n const { traceId, spanId } = span.spanContext();\n const sampled = spanIsSampled(span);\n return generateSentryTraceHeader(traceId, spanId, sampled);\n}\nfunction spanToTraceparentHeader(span) {\n const { traceId, spanId } = span.spanContext();\n const sampled = spanIsSampled(span);\n return generateTraceparentHeader(traceId, spanId, sampled);\n}\nfunction convertSpanLinksForEnvelope(links) {\n if (links && links.length > 0) {\n return links.map(({ context: { spanId, traceId, traceFlags, ...restContext }, attributes }) => ({\n span_id: spanId,\n trace_id: traceId,\n sampled: traceFlags === TRACE_FLAG_SAMPLED,\n attributes,\n ...restContext\n }));\n } else {\n return void 0;\n }\n}\nfunction getStreamedSpanLinks(links) {\n if (links?.length) {\n return links.map(({ context: { spanId, traceId, traceFlags }, attributes }) => ({\n span_id: spanId,\n trace_id: traceId,\n sampled: traceFlags === TRACE_FLAG_SAMPLED,\n attributes\n }));\n } else {\n return void 0;\n }\n}\nfunction spanTimeInputToSeconds(input) {\n if (typeof input === \"number\") {\n return ensureTimestampInSeconds(input);\n }\n if (Array.isArray(input)) {\n return input[0] + input[1] / 1e9;\n }\n if (input instanceof Date) {\n return ensureTimestampInSeconds(input.getTime());\n }\n return timestampInSeconds();\n}\nfunction ensureTimestampInSeconds(timestamp) {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp / 1e3 : timestamp;\n}\nfunction spanToJSON(span) {\n if (spanIsSentrySpan(span)) {\n return span.getSpanJSON();\n }\n const { spanId: span_id, traceId: trace_id } = span.spanContext();\n if (spanIsOpenTelemetrySdkTraceBaseSpan(span)) {\n const { attributes, startTime, name, endTime, status, links } = span;\n return {\n span_id,\n trace_id,\n data: attributes,\n description: name,\n parent_span_id: getOtelParentSpanId(span),\n start_timestamp: spanTimeInputToSeconds(startTime),\n // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time\n timestamp: spanTimeInputToSeconds(endTime) || void 0,\n status: getStatusMessage(status),\n op: attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP],\n origin: attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN],\n links: convertSpanLinksForEnvelope(links)\n };\n }\n return {\n span_id,\n trace_id,\n start_timestamp: 0,\n data: {}\n };\n}\nfunction spanToStreamedSpanJSON(span) {\n if (spanIsSentrySpan(span)) {\n return span.getStreamedSpanJSON();\n }\n const { spanId: span_id, traceId: trace_id } = span.spanContext();\n if (spanIsOpenTelemetrySdkTraceBaseSpan(span)) {\n const { attributes, startTime, name, endTime, status, links } = span;\n return {\n name,\n span_id,\n trace_id,\n parent_span_id: getOtelParentSpanId(span),\n start_timestamp: spanTimeInputToSeconds(startTime),\n end_timestamp: spanTimeInputToSeconds(endTime),\n is_segment: span === INTERNAL_getSegmentSpan(span),\n status: getSimpleStatusMessage(status),\n attributes,\n links: getStreamedSpanLinks(links)\n };\n }\n return {\n span_id,\n trace_id,\n start_timestamp: 0,\n name: \"\",\n end_timestamp: 0,\n status: \"ok\",\n is_segment: span === INTERNAL_getSegmentSpan(span)\n };\n}\nfunction getOtelParentSpanId(span) {\n return \"parentSpanId\" in span ? span.parentSpanId : \"parentSpanContext\" in span ? span.parentSpanContext?.spanId : void 0;\n}\nfunction streamedSpanJsonToSerializedSpan(spanJson) {\n return {\n ...spanJson,\n attributes: serializeAttributes(spanJson.attributes),\n links: spanJson.links?.map((link) => ({\n ...link,\n attributes: serializeAttributes(link.attributes)\n }))\n };\n}\nfunction spanIsOpenTelemetrySdkTraceBaseSpan(span) {\n const castSpan = span;\n return !!castSpan.attributes && !!castSpan.startTime && !!castSpan.name && !!castSpan.endTime && !!castSpan.status;\n}\nfunction spanIsSentrySpan(span) {\n return typeof span.getSpanJSON === \"function\";\n}\nfunction spanIsSampled(span) {\n const { traceFlags } = span.spanContext();\n return traceFlags === TRACE_FLAG_SAMPLED;\n}\nfunction getStatusMessage(status) {\n if (!status || status.code === SPAN_STATUS_UNSET) {\n return void 0;\n }\n if (status.code === SPAN_STATUS_OK) {\n return \"ok\";\n }\n return status.message || \"internal_error\";\n}\nfunction getSimpleStatusMessage(status) {\n return !status || status.code === SPAN_STATUS_OK || status.code === SPAN_STATUS_UNSET || status.message === \"cancelled\" ? \"ok\" : \"error\";\n}\nconst CHILD_SPANS_FIELD = \"_sentryChildSpans\";\nconst ROOT_SPAN_FIELD = \"_sentryRootSpan\";\nfunction addChildSpanToSpan(span, childSpan) {\n const rootSpan = span[ROOT_SPAN_FIELD] || span;\n addNonEnumerableProperty(childSpan, ROOT_SPAN_FIELD, rootSpan);\n if (span[CHILD_SPANS_FIELD]) {\n span[CHILD_SPANS_FIELD].add(childSpan);\n } else {\n addNonEnumerableProperty(span, CHILD_SPANS_FIELD, /* @__PURE__ */ new Set([childSpan]));\n }\n}\nfunction removeChildSpanFromSpan(span, childSpan) {\n if (span[CHILD_SPANS_FIELD]) {\n span[CHILD_SPANS_FIELD].delete(childSpan);\n }\n}\nfunction getSpanDescendants(span) {\n const resultSet = /* @__PURE__ */ new Set();\n function addSpanChildren(span2) {\n if (resultSet.has(span2)) {\n return;\n } else if (spanIsSampled(span2)) {\n resultSet.add(span2);\n const childSpans = span2[CHILD_SPANS_FIELD] ? Array.from(span2[CHILD_SPANS_FIELD]) : [];\n for (const childSpan of childSpans) {\n addSpanChildren(childSpan);\n }\n }\n }\n addSpanChildren(span);\n return Array.from(resultSet);\n}\nconst getRootSpan = INTERNAL_getSegmentSpan;\nfunction INTERNAL_getSegmentSpan(span) {\n return span[ROOT_SPAN_FIELD] || span;\n}\nfunction getActiveSpan() {\n const carrier = getMainCarrier();\n const acs = getAsyncContextStrategy(carrier);\n if (acs.getActiveSpan) {\n return acs.getActiveSpan();\n }\n return _getSpanForScope(getCurrentScope());\n}\nfunction showSpanDropWarning() {\n if (!hasShownSpanDropWarning) {\n consoleSandbox(() => {\n console.warn(\n \"[Sentry] Returning null from `beforeSendSpan` is disallowed. To drop certain spans, configure the respective integrations directly or use `ignoreSpans`.\"\n );\n });\n hasShownSpanDropWarning = true;\n }\n}\nfunction updateSpanName(span, name) {\n span.updateName(name);\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: \"custom\",\n [SEMANTIC_ATTRIBUTE_SENTRY_CUSTOM_SPAN_NAME]: name\n });\n}\n\nexport { INTERNAL_getSegmentSpan, TRACE_FLAG_NONE, TRACE_FLAG_SAMPLED, addChildSpanToSpan, convertSpanLinksForEnvelope, getActiveSpan, getRootSpan, getSimpleStatusMessage, getSpanDescendants, getStatusMessage, getStreamedSpanLinks, removeChildSpanFromSpan, showSpanDropWarning, spanIsSampled, spanTimeInputToSeconds, spanToJSON, spanToStreamedSpanJSON, spanToTraceContext, spanToTraceHeader, spanToTraceparentHeader, spanToTransactionTraceContext, streamedSpanJsonToSerializedSpan, updateSpanName };\n//# sourceMappingURL=spanUtils.js.map\n","import { getClient } from '../currentScopes.js';\n\nfunction hasSpansEnabled(maybeOptions) {\n if (typeof __SENTRY_TRACING__ === \"boolean\" && !__SENTRY_TRACING__) {\n return false;\n }\n const options = maybeOptions || getClient()?.getOptions();\n return !!options && // Note: This check is `!= null`, meaning \"nullish\". `0` is not \"nullish\", `undefined` and `null` are. (This comment was brought to you by 15 minutes of questioning life)\n (options.tracesSampleRate != null || !!options.tracesSampler);\n}\n\nexport { hasSpansEnabled };\n//# sourceMappingURL=hasSpansEnabled.js.map\n","const DEFAULT_ENVIRONMENT = \"production\";\nconst DEV_ENVIRONMENT = \"development\";\n\nexport { DEFAULT_ENVIRONMENT, DEV_ENVIRONMENT };\n//# sourceMappingURL=constants.js.map\n","import { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { getClient } from '../currentScopes.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes.js';\nimport { baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader } from '../utils/baggage.js';\nimport { extractOrgIdFromClient } from '../utils/dsn.js';\nimport { hasSpansEnabled } from '../utils/hasSpansEnabled.js';\nimport { addNonEnumerableProperty } from '../utils/object.js';\nimport { getRootSpan, spanToJSON, spanIsSampled } from '../utils/spanUtils.js';\nimport { getCapturedScopesOnSpan } from './utils.js';\n\nconst FROZEN_DSC_FIELD = \"_frozenDsc\";\nfunction freezeDscOnSpan(span, dsc) {\n const spanWithMaybeDsc = span;\n addNonEnumerableProperty(spanWithMaybeDsc, FROZEN_DSC_FIELD, dsc);\n}\nfunction getDynamicSamplingContextFromClient(trace_id, client) {\n const options = client.getOptions();\n const { publicKey: public_key } = client.getDsn() || {};\n const dsc = {\n environment: options.environment || DEFAULT_ENVIRONMENT,\n release: options.release,\n public_key,\n trace_id,\n org_id: extractOrgIdFromClient(client)\n };\n client.emit(\"createDsc\", dsc);\n return dsc;\n}\nfunction getDynamicSamplingContextFromScope(client, scope) {\n const propagationContext = scope.getPropagationContext();\n return propagationContext.dsc || getDynamicSamplingContextFromClient(propagationContext.traceId, client);\n}\nfunction getDynamicSamplingContextFromSpan(span) {\n const client = getClient();\n if (!client) {\n return {};\n }\n const rootSpan = getRootSpan(span);\n const rootSpanJson = spanToJSON(rootSpan);\n const rootSpanAttributes = rootSpanJson.data;\n const traceState = rootSpan.spanContext().traceState;\n const rootSpanSampleRate = traceState?.get(\"sentry.sample_rate\") ?? rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] ?? rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_PREVIOUS_TRACE_SAMPLE_RATE];\n function applyLocalSampleRateToDsc(dsc2) {\n if (typeof rootSpanSampleRate === \"number\" || typeof rootSpanSampleRate === \"string\") {\n dsc2.sample_rate = `${rootSpanSampleRate}`;\n }\n return dsc2;\n }\n const frozenDsc = rootSpan[FROZEN_DSC_FIELD];\n if (frozenDsc) {\n return applyLocalSampleRateToDsc(frozenDsc);\n }\n const traceStateDsc = traceState?.get(\"sentry.dsc\");\n const dscOnTraceState = traceStateDsc && baggageHeaderToDynamicSamplingContext(traceStateDsc);\n if (dscOnTraceState) {\n return applyLocalSampleRateToDsc(dscOnTraceState);\n }\n const dsc = getDynamicSamplingContextFromClient(span.spanContext().traceId, client);\n const source = rootSpanAttributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] ?? rootSpanAttributes[\"sentry.span.source\"];\n const name = rootSpanJson.description;\n if (source !== \"url\" && name) {\n dsc.transaction = name;\n }\n if (hasSpansEnabled()) {\n dsc.sampled = String(spanIsSampled(rootSpan));\n dsc.sample_rand = // In OTEL we store the sample rand on the trace state because we cannot access scopes for NonRecordingSpans\n // The Sentry OTEL SpanSampler takes care of writing the sample rand on the root span\n traceState?.get(\"sentry.sample_rand\") ?? // On all other platforms we can actually get the scopes from a root span (we use this as a fallback)\n getCapturedScopesOnSpan(rootSpan).scope?.getPropagationContext().sampleRand.toString();\n }\n applyLocalSampleRateToDsc(dsc);\n client.emit(\"createDsc\", dsc, rootSpan);\n return dsc;\n}\nfunction spanToBaggageHeader(span) {\n const dsc = getDynamicSamplingContextFromSpan(span);\n return dynamicSamplingContextToSentryBaggageHeader(dsc);\n}\n\nexport { freezeDscOnSpan, getDynamicSamplingContextFromClient, getDynamicSamplingContextFromScope, getDynamicSamplingContextFromSpan, spanToBaggageHeader };\n//# sourceMappingURL=dynamicSamplingContext.js.map\n","import { getGlobalScope } from '../currentScopes.js';\nimport { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext.js';\nimport { merge } from './merge.js';\nimport { spanToTraceContext, getRootSpan, spanToJSON } from './spanUtils.js';\n\nfunction applyScopeDataToEvent(event, data) {\n const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data;\n applyDataToEvent(event, data);\n if (span) {\n applySpanToEvent(event, span);\n }\n applyFingerprintToEvent(event, fingerprint);\n applyBreadcrumbsToEvent(event, breadcrumbs);\n applySdkMetadataToEvent(event, sdkProcessingMetadata);\n}\nfunction mergeScopeData(data, mergeData) {\n const {\n extra,\n tags,\n attributes,\n user,\n contexts,\n level,\n sdkProcessingMetadata,\n breadcrumbs,\n fingerprint,\n eventProcessors,\n attachments,\n propagationContext,\n transactionName,\n span\n } = mergeData;\n mergeAndOverwriteScopeData(data, \"extra\", extra);\n mergeAndOverwriteScopeData(data, \"tags\", tags);\n mergeAndOverwriteScopeData(data, \"attributes\", attributes);\n mergeAndOverwriteScopeData(data, \"user\", user);\n mergeAndOverwriteScopeData(data, \"contexts\", contexts);\n data.sdkProcessingMetadata = merge(data.sdkProcessingMetadata, sdkProcessingMetadata, 2);\n if (level) {\n data.level = level;\n }\n if (transactionName) {\n data.transactionName = transactionName;\n }\n if (span) {\n data.span = span;\n }\n if (breadcrumbs.length) {\n data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs];\n }\n if (fingerprint.length) {\n data.fingerprint = [...data.fingerprint, ...fingerprint];\n }\n if (eventProcessors.length) {\n data.eventProcessors = [...data.eventProcessors, ...eventProcessors];\n }\n if (attachments.length) {\n data.attachments = [...data.attachments, ...attachments];\n }\n data.propagationContext = { ...data.propagationContext, ...propagationContext };\n}\nfunction mergeAndOverwriteScopeData(data, prop, mergeVal) {\n data[prop] = merge(data[prop], mergeVal, 1);\n}\nfunction getCombinedScopeData(isolationScope, currentScope) {\n const scopeData = getGlobalScope().getScopeData();\n isolationScope && mergeScopeData(scopeData, isolationScope.getScopeData());\n currentScope && mergeScopeData(scopeData, currentScope.getScopeData());\n return scopeData;\n}\nfunction applyDataToEvent(event, data) {\n const { extra, tags, user, contexts, level, transactionName } = data;\n if (Object.keys(extra).length) {\n event.extra = { ...extra, ...event.extra };\n }\n if (Object.keys(tags).length) {\n event.tags = { ...tags, ...event.tags };\n }\n if (Object.keys(user).length) {\n event.user = { ...user, ...event.user };\n }\n if (Object.keys(contexts).length) {\n event.contexts = { ...contexts, ...event.contexts };\n }\n if (level) {\n event.level = level;\n }\n if (transactionName && event.type !== \"transaction\") {\n event.transaction = transactionName;\n }\n}\nfunction applyBreadcrumbsToEvent(event, breadcrumbs) {\n const mergedBreadcrumbs = [...event.breadcrumbs || [], ...breadcrumbs];\n event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : void 0;\n}\nfunction applySdkMetadataToEvent(event, sdkProcessingMetadata) {\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n ...sdkProcessingMetadata\n };\n}\nfunction applySpanToEvent(event, span) {\n event.contexts = {\n trace: spanToTraceContext(span),\n ...event.contexts\n };\n event.sdkProcessingMetadata = {\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n ...event.sdkProcessingMetadata\n };\n const rootSpan = getRootSpan(span);\n const transactionName = spanToJSON(rootSpan).description;\n if (transactionName && !event.transaction && event.type === \"transaction\") {\n event.transaction = transactionName;\n }\n}\nfunction applyFingerprintToEvent(event, fingerprint) {\n event.fingerprint = event.fingerprint ? Array.isArray(event.fingerprint) ? event.fingerprint : [event.fingerprint] : [];\n if (fingerprint) {\n event.fingerprint = event.fingerprint.concat(fingerprint);\n }\n if (!event.fingerprint.length) {\n delete event.fingerprint;\n }\n}\n\nexport { applyScopeDataToEvent, getCombinedScopeData, mergeAndOverwriteScopeData, mergeScopeData };\n//# sourceMappingURL=scopeData.js.map\n","import { isThenable } from './is.js';\n\nconst STATE_PENDING = 0;\nconst STATE_RESOLVED = 1;\nconst STATE_REJECTED = 2;\nfunction resolvedSyncPromise(value) {\n return new SyncPromise((resolve) => {\n resolve(value);\n });\n}\nfunction rejectedSyncPromise(reason) {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\nclass SyncPromise {\n constructor(executor) {\n this._state = STATE_PENDING;\n this._handlers = [];\n this._runExecutor(executor);\n }\n /** @inheritdoc */\n then(onfulfilled, onrejected) {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n (result) => {\n if (!onfulfilled) {\n resolve(result);\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n (reason) => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n }\n ]);\n this._executeHandlers();\n });\n }\n /** @inheritdoc */\n catch(onrejected) {\n return this.then((val) => val, onrejected);\n }\n /** @inheritdoc */\n finally(onfinally) {\n return new SyncPromise((resolve, reject) => {\n let val;\n let isRejected;\n return this.then(\n (value) => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n (reason) => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n }\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n resolve(val);\n });\n });\n }\n /** Excute the resolve/reject handlers. */\n _executeHandlers() {\n if (this._state === STATE_PENDING) {\n return;\n }\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n cachedHandlers.forEach((handler) => {\n if (handler[0]) {\n return;\n }\n if (this._state === STATE_RESOLVED) {\n handler[1](this._value);\n }\n if (this._state === STATE_REJECTED) {\n handler[2](this._value);\n }\n handler[0] = true;\n });\n }\n /** Run the executor for the SyncPromise. */\n _runExecutor(executor) {\n const setResult = (state, value) => {\n if (this._state !== STATE_PENDING) {\n return;\n }\n if (isThenable(value)) {\n void value.then(resolve, reject);\n return;\n }\n this._state = state;\n this._value = value;\n this._executeHandlers();\n };\n const resolve = (value) => {\n setResult(STATE_RESOLVED, value);\n };\n const reject = (reason) => {\n setResult(STATE_REJECTED, reason);\n };\n try {\n executor(resolve, reject);\n } catch (e) {\n reject(e);\n }\n }\n}\n\nexport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise };\n//# sourceMappingURL=syncpromise.js.map\n","import { DEBUG_BUILD } from './debug-build.js';\nimport { debug } from './utils/debug-logger.js';\nimport { isThenable } from './utils/is.js';\nimport { resolvedSyncPromise, rejectedSyncPromise } from './utils/syncpromise.js';\n\nfunction notifyEventProcessors(processors, event, hint, index = 0) {\n try {\n const result = _notifyEventProcessors(event, hint, processors, index);\n return isThenable(result) ? result : resolvedSyncPromise(result);\n } catch (error) {\n return rejectedSyncPromise(error);\n }\n}\nfunction _notifyEventProcessors(event, hint, processors, index) {\n const processor = processors[index];\n if (!event || !processor) {\n return event;\n }\n const result = processor({ ...event }, hint);\n DEBUG_BUILD && result === null && debug.log(`Event processor \"${processor.id || \"?\"}\" dropped event`);\n if (isThenable(result)) {\n return result.then((final) => _notifyEventProcessors(final, hint, processors, index + 1));\n }\n return _notifyEventProcessors(result, hint, processors, index + 1);\n}\n\nexport { notifyEventProcessors };\n//# sourceMappingURL=eventProcessors.js.map\n","import { normalizeStackTracePath } from './stacktrace.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\nlet parsedStackResults;\nlet lastSentryKeysCount;\nlet lastNativeKeysCount;\nlet cachedFilenameDebugIds;\nfunction getFilenameToDebugIdMap(stackParser) {\n const sentryDebugIdMap = GLOBAL_OBJ._sentryDebugIds;\n const nativeDebugIdMap = GLOBAL_OBJ._debugIds;\n if (!sentryDebugIdMap && !nativeDebugIdMap) {\n return {};\n }\n const sentryDebugIdKeys = sentryDebugIdMap ? Object.keys(sentryDebugIdMap) : [];\n const nativeDebugIdKeys = nativeDebugIdMap ? Object.keys(nativeDebugIdMap) : [];\n if (cachedFilenameDebugIds && sentryDebugIdKeys.length === lastSentryKeysCount && nativeDebugIdKeys.length === lastNativeKeysCount) {\n return cachedFilenameDebugIds;\n }\n lastSentryKeysCount = sentryDebugIdKeys.length;\n lastNativeKeysCount = nativeDebugIdKeys.length;\n cachedFilenameDebugIds = {};\n if (!parsedStackResults) {\n parsedStackResults = {};\n }\n const processDebugIds = (debugIdKeys, debugIdMap) => {\n for (const key of debugIdKeys) {\n const debugId = debugIdMap[key];\n const result = parsedStackResults?.[key];\n if (result && cachedFilenameDebugIds && debugId) {\n cachedFilenameDebugIds[result[0]] = debugId;\n if (parsedStackResults) {\n parsedStackResults[key] = [result[0], debugId];\n }\n } else if (debugId) {\n const parsedStack = stackParser(key);\n for (let i = parsedStack.length - 1; i >= 0; i--) {\n const stackFrame = parsedStack[i];\n const filename = stackFrame?.filename;\n if (filename && cachedFilenameDebugIds && parsedStackResults) {\n cachedFilenameDebugIds[filename] = debugId;\n parsedStackResults[key] = [filename, debugId];\n break;\n }\n }\n }\n }\n };\n if (sentryDebugIdMap) {\n processDebugIds(sentryDebugIdKeys, sentryDebugIdMap);\n }\n if (nativeDebugIdMap) {\n processDebugIds(nativeDebugIdKeys, nativeDebugIdMap);\n }\n return cachedFilenameDebugIds;\n}\nfunction getDebugImagesForResources(stackParser, resource_paths) {\n const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n if (!filenameDebugIdMap) {\n return [];\n }\n const images = [];\n for (const path of resource_paths) {\n const normalizedPath = normalizeStackTracePath(path);\n if (normalizedPath && filenameDebugIdMap[normalizedPath]) {\n images.push({\n type: \"sourcemap\",\n code_file: path,\n debug_id: filenameDebugIdMap[normalizedPath]\n });\n }\n }\n return images;\n}\n\nexport { getDebugImagesForResources, getFilenameToDebugIdMap };\n//# sourceMappingURL=debug-ids.js.map\n","import { DEFAULT_ENVIRONMENT } from '../constants.js';\nimport { notifyEventProcessors } from '../eventProcessors.js';\nimport { Scope } from '../scope.js';\nimport { getFilenameToDebugIdMap } from './debug-ids.js';\nimport { uuid4, addExceptionMechanism } from './misc.js';\nimport { normalize } from './normalize.js';\nimport { getCombinedScopeData, applyScopeDataToEvent } from './scopeData.js';\nimport { truncate } from './string.js';\nimport { resolvedSyncPromise } from './syncpromise.js';\nimport { dateTimestampInSeconds } from './time.js';\n\nfunction prepareEvent(options, event, hint, scope, client, isolationScope) {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1e3 } = options;\n const prepared = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds()\n };\n const integrations = hint.integrations || options.integrations.map((i) => i.name);\n applyClientOptions(prepared, options);\n applyIntegrationsMetadata(prepared, integrations);\n if (client) {\n client.emit(\"applyFrameMetadata\", event);\n }\n if (event.type === void 0) {\n applyDebugIds(prepared, options.stackParser);\n }\n const finalScope = getFinalScope(scope, hint.captureContext);\n if (hint.mechanism) {\n addExceptionMechanism(prepared, hint.mechanism);\n }\n const clientEventProcessors = client ? client.getEventProcessors() : [];\n const data = getCombinedScopeData(isolationScope, finalScope);\n const attachments = [...hint.attachments || [], ...data.attachments];\n if (attachments.length) {\n hint.attachments = attachments;\n }\n applyScopeDataToEvent(prepared, data);\n const eventProcessors = [\n ...clientEventProcessors,\n // Run scope event processors _after_ all other processors\n ...data.eventProcessors\n ];\n const isInternalException = hint.data && hint.data.__sentry__ === true;\n const result = isInternalException ? resolvedSyncPromise(prepared) : notifyEventProcessors(eventProcessors, prepared, hint);\n return result.then((evt) => {\n if (evt) {\n applyDebugMeta(evt);\n }\n if (typeof normalizeDepth === \"number\" && normalizeDepth > 0) {\n return normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\n}\nfunction applyClientOptions(event, options) {\n const { environment, release, dist, maxValueLength } = options;\n event.environment = event.environment || environment || DEFAULT_ENVIRONMENT;\n if (!event.release && release) {\n event.release = release;\n }\n if (!event.dist && dist) {\n event.dist = dist;\n }\n const request = event.request;\n if (request?.url && maxValueLength) {\n request.url = truncate(request.url, maxValueLength);\n }\n if (maxValueLength) {\n event.exception?.values?.forEach((exception) => {\n if (exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n });\n }\n}\nfunction applyDebugIds(event, stackParser) {\n const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n event.exception?.values?.forEach((exception) => {\n exception.stacktrace?.frames?.forEach((frame) => {\n if (frame.filename) {\n frame.debug_id = filenameDebugIdMap[frame.filename];\n }\n });\n });\n}\nfunction applyDebugMeta(event) {\n const filenameDebugIdMap = {};\n event.exception?.values?.forEach((exception) => {\n exception.stacktrace?.frames?.forEach((frame) => {\n if (frame.debug_id) {\n if (frame.abs_path) {\n filenameDebugIdMap[frame.abs_path] = frame.debug_id;\n } else if (frame.filename) {\n filenameDebugIdMap[frame.filename] = frame.debug_id;\n }\n delete frame.debug_id;\n }\n });\n });\n if (Object.keys(filenameDebugIdMap).length === 0) {\n return;\n }\n event.debug_meta = event.debug_meta || {};\n event.debug_meta.images = event.debug_meta.images || [];\n const images = event.debug_meta.images;\n Object.entries(filenameDebugIdMap).forEach(([filename, debug_id]) => {\n images.push({\n type: \"sourcemap\",\n code_file: filename,\n debug_id\n });\n });\n}\nfunction applyIntegrationsMetadata(event, integrationNames) {\n if (integrationNames.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...event.sdk.integrations || [], ...integrationNames];\n }\n}\nfunction normalizeEvent(event, depth, maxBreadth) {\n if (!event) {\n return null;\n }\n const normalized = {\n ...event,\n ...event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map((b) => ({\n ...b,\n ...b.data && {\n data: normalize(b.data, depth, maxBreadth)\n }\n }))\n },\n ...event.user && {\n user: normalize(event.user, depth, maxBreadth)\n },\n ...event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth)\n },\n ...event.extra && {\n extra: normalize(event.extra, depth, maxBreadth)\n }\n };\n if (event.contexts?.trace && normalized.contexts) {\n normalized.contexts.trace = event.contexts.trace;\n if (event.contexts.trace.data) {\n normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n }\n }\n if (event.spans) {\n normalized.spans = event.spans.map((span) => {\n return {\n ...span,\n ...span.data && {\n data: normalize(span.data, depth, maxBreadth)\n }\n };\n });\n }\n if (event.contexts?.flags && normalized.contexts) {\n normalized.contexts.flags = normalize(event.contexts.flags, 3, maxBreadth);\n }\n return normalized;\n}\nfunction getFinalScope(scope, captureContext) {\n if (!captureContext) {\n return scope;\n }\n const finalScope = scope ? scope.clone() : new Scope();\n finalScope.update(captureContext);\n return finalScope;\n}\nfunction parseEventHintOrCaptureContext(hint) {\n if (!hint) {\n return void 0;\n }\n if (hintIsScopeOrFunction(hint)) {\n return { captureContext: hint };\n }\n if (hintIsScopeContext(hint)) {\n return {\n captureContext: hint\n };\n }\n return hint;\n}\nfunction hintIsScopeOrFunction(hint) {\n return hint instanceof Scope || typeof hint === \"function\";\n}\nconst captureContextKeys = [\n \"user\",\n \"level\",\n \"extra\",\n \"contexts\",\n \"tags\",\n \"fingerprint\",\n \"propagationContext\"\n];\nfunction hintIsScopeContext(hint) {\n return Object.keys(hint).some((key) => captureContextKeys.includes(key));\n}\n\nexport { applyClientOptions, applyDebugIds, applyDebugMeta, parseEventHintOrCaptureContext, prepareEvent };\n//# sourceMappingURL=prepareEvent.js.map\n","import { getIsolationScope, getCurrentScope, getClient, withIsolationScope } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { closeSession, makeSession, updateSession } from './session.js';\nimport { startNewTrace } from './tracing/trace.js';\nimport { debug } from './utils/debug-logger.js';\nimport { isThenable } from './utils/is.js';\nimport { uuid4 } from './utils/misc.js';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent.js';\nimport { getCombinedScopeData } from './utils/scopeData.js';\nimport { timestampInSeconds } from './utils/time.js';\nimport { GLOBAL_OBJ } from './utils/worldwide.js';\n\nfunction captureException(exception, hint) {\n return getCurrentScope().captureException(exception, parseEventHintOrCaptureContext(hint));\n}\nfunction captureMessage(message, captureContext) {\n const level = typeof captureContext === \"string\" ? captureContext : void 0;\n const hint = typeof captureContext !== \"string\" ? { captureContext } : void 0;\n return getCurrentScope().captureMessage(message, level, hint);\n}\nfunction captureEvent(event, hint) {\n return getCurrentScope().captureEvent(event, hint);\n}\nfunction setContext(name, context) {\n getIsolationScope().setContext(name, context);\n}\nfunction setExtras(extras) {\n getIsolationScope().setExtras(extras);\n}\nfunction setExtra(key, extra) {\n getIsolationScope().setExtra(key, extra);\n}\nfunction setTags(tags) {\n getIsolationScope().setTags(tags);\n}\nfunction setTag(key, value) {\n getIsolationScope().setTag(key, value);\n}\nfunction setUser(user) {\n getIsolationScope().setUser(user);\n}\nfunction setConversationId(conversationId) {\n getIsolationScope().setConversationId(conversationId);\n}\nfunction lastEventId() {\n return getIsolationScope().lastEventId();\n}\nfunction captureCheckIn(checkIn, upsertMonitorConfig) {\n const scope = getCurrentScope();\n const client = getClient();\n if (!client) {\n DEBUG_BUILD && debug.warn(\"Cannot capture check-in. No client defined.\");\n } else if (!client.captureCheckIn) {\n DEBUG_BUILD && debug.warn(\"Cannot capture check-in. Client does not support sending check-ins.\");\n } else {\n return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n }\n return uuid4();\n}\nfunction withMonitor(monitorSlug, callback, upsertMonitorConfig) {\n function runCallback() {\n const checkInId = captureCheckIn({ monitorSlug, status: \"in_progress\" }, upsertMonitorConfig);\n const now = timestampInSeconds();\n function finishCheckIn(status) {\n captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now });\n }\n let maybePromiseResult;\n try {\n maybePromiseResult = callback();\n } catch (e) {\n finishCheckIn(\"error\");\n throw e;\n }\n if (isThenable(maybePromiseResult)) {\n return maybePromiseResult.then(\n (r) => {\n finishCheckIn(\"ok\");\n return r;\n },\n (e) => {\n finishCheckIn(\"error\");\n throw e;\n }\n );\n }\n finishCheckIn(\"ok\");\n return maybePromiseResult;\n }\n return withIsolationScope(() => upsertMonitorConfig?.isolateTrace ? startNewTrace(runCallback) : runCallback());\n}\nasync function flush(timeout) {\n const client = getClient();\n if (client) {\n return client.flush(timeout);\n }\n DEBUG_BUILD && debug.warn(\"Cannot flush events. No client defined.\");\n return Promise.resolve(false);\n}\nasync function close(timeout) {\n const client = getClient();\n if (client) {\n return client.close(timeout);\n }\n DEBUG_BUILD && debug.warn(\"Cannot flush events and disable SDK. No client defined.\");\n return Promise.resolve(false);\n}\nfunction isInitialized() {\n return !!getClient();\n}\nfunction isEnabled() {\n const client = getClient();\n return client?.getOptions().enabled !== false && !!client?.getTransport();\n}\nfunction addEventProcessor(callback) {\n getIsolationScope().addEventProcessor(callback);\n}\nfunction startSession(context) {\n const isolationScope = getIsolationScope();\n const { user } = getCombinedScopeData(isolationScope, getCurrentScope());\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n const session = makeSession({\n user,\n ...userAgent && { userAgent },\n ...context\n });\n const currentSession = isolationScope.getSession();\n if (currentSession?.status === \"ok\") {\n updateSession(currentSession, { status: \"exited\" });\n }\n endSession();\n isolationScope.setSession(session);\n return session;\n}\nfunction endSession() {\n const isolationScope = getIsolationScope();\n const currentScope = getCurrentScope();\n const session = currentScope.getSession() || isolationScope.getSession();\n if (session) {\n closeSession(session);\n }\n _sendSessionUpdate();\n isolationScope.setSession();\n}\nfunction _sendSessionUpdate() {\n const isolationScope = getIsolationScope();\n const client = getClient();\n const session = isolationScope.getSession();\n if (session && client) {\n client.captureSession(session);\n }\n}\nfunction captureSession(end = false) {\n if (end) {\n endSession();\n return;\n }\n _sendSessionUpdate();\n}\n\nexport { addEventProcessor, captureCheckIn, captureEvent, captureException, captureMessage, captureSession, close, endSession, flush, isEnabled, isInitialized, lastEventId, setContext, setConversationId, setExtra, setExtras, setTag, setTags, setUser, startSession, withMonitor };\n//# sourceMappingURL=exports.js.map\n","/*\nStimulus 3.2.1\nCopyright © 2023 Basecamp, LLC\n */\nclass EventListener {\n constructor(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n handleEvent(event) {\n const extendedEvent = extendEvent(event);\n for (const binding of this.bindings) {\n if (extendedEvent.immediatePropagationStopped) {\n break;\n }\n else {\n binding.handleEvent(extendedEvent);\n }\n }\n }\n hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n get bindings() {\n return Array.from(this.unorderedBindings).sort((left, right) => {\n const leftIndex = left.index, rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n }\n}\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n }\n else {\n const { stopImmediatePropagation } = event;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation.call(this);\n },\n });\n }\n}\n\nclass Dispatcher {\n constructor(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach((eventListener) => eventListener.connect());\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n }\n }\n get eventListeners() {\n return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding, clearEventListeners = false) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners)\n this.clearEventListenersForBinding(binding);\n }\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\n }\n clearEventListenersForBinding(binding) {\n const eventListener = this.fetchEventListenerForBinding(binding);\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n removeMappedEventListenerFor(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0)\n this.eventListenerMaps.delete(eventTarget);\n }\n fetchEventListenerForBinding(binding) {\n const { eventTarget, eventName, eventOptions } = binding;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n fetchEventListener(eventTarget, eventName, eventOptions) {\n const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n const cacheKey = this.cacheKey(eventName, eventOptions);\n let eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n }\n createEventListener(eventTarget, eventName, eventOptions) {\n const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n }\n fetchEventListenerMapForEventTarget(eventTarget) {\n let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n }\n cacheKey(eventName, eventOptions) {\n const parts = [eventName];\n Object.keys(eventOptions)\n .sort()\n .forEach((key) => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst defaultActionDescriptorFilters = {\n stop({ event, value }) {\n if (value)\n event.stopPropagation();\n return true;\n },\n prevent({ event, value }) {\n if (value)\n event.preventDefault();\n return true;\n },\n self({ event, value, element }) {\n if (value) {\n return element === event.target;\n }\n else {\n return true;\n }\n },\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n let eventName = matches[2];\n let keyFilter = matches[3];\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += `.${keyFilter}`;\n keyFilter = \"\";\n }\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName,\n eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n identifier: matches[5],\n methodName: matches[6],\n keyFilter: matches[1] || keyFilter,\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n }\n else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions\n .split(\":\")\n .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n }\n else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nfunction isSomething(object) {\n return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n constructor(element, index, descriptor, schema) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n static forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n toString() {\n const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n }\n shouldIgnoreKeyboardEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = this.keyFilter.split(\"+\");\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];\n if (!standardFilter) {\n return false;\n }\n if (!hasProperty(this.keyMappings, standardFilter)) {\n error(`contains unknown key filter: ${this.keyFilter}`);\n }\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n shouldIgnoreMouseEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n const filters = [this.keyFilter];\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n return false;\n }\n get params() {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n for (const { name, value } of Array.from(this.element.attributes)) {\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n get keyMappings() {\n return this.schema.keyMappings;\n }\n keyFilterDissatisfied(event, filters) {\n const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));\n return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n }\n}\nconst defaultEventNames = {\n a: () => \"click\",\n button: () => \"click\",\n form: () => \"submit\",\n details: () => \"toggle\",\n input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n select: () => \"change\",\n textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n const tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n }\n catch (o_O) {\n return value;\n }\n}\n\nclass Binding {\n constructor(context, action) {\n this.context = context;\n this.action = action;\n }\n get index() {\n return this.action.index;\n }\n get eventTarget() {\n return this.action.eventTarget;\n }\n get eventOptions() {\n return this.action.eventOptions;\n }\n get identifier() {\n return this.context.identifier;\n }\n handleEvent(event) {\n const actionEvent = this.prepareActionEvent(event);\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n this.invokeWithEvent(actionEvent);\n }\n }\n get eventName() {\n return this.action.eventName;\n }\n get method() {\n const method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n }\n applyEventModifiers(event) {\n const { element } = this.action;\n const { actionDescriptorFilters } = this.context.application;\n const { controller } = this.context;\n let passes = true;\n for (const [name, value] of Object.entries(this.eventOptions)) {\n if (name in actionDescriptorFilters) {\n const filter = actionDescriptorFilters[name];\n passes = passes && filter({ name, value, event, element, controller });\n }\n else {\n continue;\n }\n }\n return passes;\n }\n prepareActionEvent(event) {\n return Object.assign(event, { params: this.action.params });\n }\n invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n this.method.call(this.controller, event);\n this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n }\n catch (error) {\n const { identifier, controller, element, index } = this;\n const detail = { identifier, controller, element, index, event };\n this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n }\n }\n willBeInvokedByEvent(event) {\n const eventTarget = event.target;\n if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n return false;\n }\n if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n return false;\n }\n if (this.element === eventTarget) {\n return true;\n }\n else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n }\n else {\n return this.scope.containsElement(this.action.element);\n }\n }\n get controller() {\n return this.context.controller;\n }\n get methodName() {\n return this.action.methodName;\n }\n get element() {\n return this.scope.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nclass ElementObserver {\n constructor(element, delegate) {\n this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n callback();\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n const matches = new Set(this.matchElementsInTree());\n for (const element of Array.from(this.elements)) {\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (const element of Array.from(matches)) {\n this.addElement(element);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n }\n else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n }\n processAttributeChange(element, attributeName) {\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n }\n else {\n this.removeElement(element);\n }\n }\n else if (this.matchElement(element)) {\n this.addElement(element);\n }\n }\n processRemovedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n processAddedNodes(nodes) {\n for (const node of Array.from(nodes)) {\n const element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n matchElement(element) {\n return this.delegate.matchElement(element);\n }\n matchElementsInTree(tree = this.element) {\n return this.delegate.matchElementsInTree(tree);\n }\n processTree(tree, processor) {\n for (const element of this.matchElementsInTree(tree)) {\n processor.call(this, element);\n }\n }\n elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n }\n else {\n return this.element.contains(element);\n }\n }\n addElement(element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n }\n removeElement(element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n }\n}\n\nclass AttributeObserver {\n constructor(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n get element() {\n return this.elementObserver.element;\n }\n get selector() {\n return `[${this.attributeName}]`;\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get started() {\n return this.elementObserver.started;\n }\n matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n matchElementsInTree(tree) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n }\n elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n}\n\nfunction add(map, key, value) {\n fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nfunction fetch(map, key) {\n let values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nfunction prune(map, key) {\n const values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nclass Multimap {\n constructor() {\n this.valuesByKey = new Map();\n }\n get keys() {\n return Array.from(this.valuesByKey.keys());\n }\n get values() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n }\n get size() {\n const sets = Array.from(this.valuesByKey.values());\n return sets.reduce((size, set) => size + set.size, 0);\n }\n add(key, value) {\n add(this.valuesByKey, key, value);\n }\n delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n has(key, value) {\n const values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n hasKey(key) {\n return this.valuesByKey.has(key);\n }\n hasValue(value) {\n const sets = Array.from(this.valuesByKey.values());\n return sets.some((set) => set.has(value));\n }\n getValuesForKey(key) {\n const values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n getKeysForValue(value) {\n return Array.from(this.valuesByKey)\n .filter(([_key, values]) => values.has(value))\n .map(([key, _values]) => key);\n }\n}\n\nclass IndexedMultimap extends Multimap {\n constructor() {\n super();\n this.keysByValue = new Map();\n }\n get values() {\n return Array.from(this.keysByValue.keys());\n }\n add(key, value) {\n super.add(key, value);\n add(this.keysByValue, value, key);\n }\n delete(key, value) {\n super.delete(key, value);\n del(this.keysByValue, value, key);\n }\n hasValue(value) {\n return this.keysByValue.has(value);\n }\n getKeysForValue(value) {\n const set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n}\n\nclass SelectorObserver {\n constructor(element, selector, delegate, details) {\n this._selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n get started() {\n return this.elementObserver.started;\n }\n get selector() {\n return this._selector;\n }\n set selector(selector) {\n this._selector = selector;\n this.refresh();\n }\n start() {\n this.elementObserver.start();\n }\n pause(callback) {\n this.elementObserver.pause(callback);\n }\n stop() {\n this.elementObserver.stop();\n }\n refresh() {\n this.elementObserver.refresh();\n }\n get element() {\n return this.elementObserver.element;\n }\n matchElement(element) {\n const { selector } = this;\n if (selector) {\n const matches = element.matches(selector);\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n return matches;\n }\n else {\n return false;\n }\n }\n matchElementsInTree(tree) {\n const { selector } = this;\n if (selector) {\n const match = this.matchElement(tree) ? [tree] : [];\n const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match));\n return match.concat(matches);\n }\n else {\n return [];\n }\n }\n elementMatched(element) {\n const { selector } = this;\n if (selector) {\n this.selectorMatched(element, selector);\n }\n }\n elementUnmatched(element) {\n const selectors = this.matchesByElement.getKeysForValue(element);\n for (const selector of selectors) {\n this.selectorUnmatched(element, selector);\n }\n }\n elementAttributeChanged(element, _attributeName) {\n const { selector } = this;\n if (selector) {\n const matches = this.matchElement(element);\n const matchedBefore = this.matchesByElement.has(selector, element);\n if (matches && !matchedBefore) {\n this.selectorMatched(element, selector);\n }\n else if (!matches && matchedBefore) {\n this.selectorUnmatched(element, selector);\n }\n }\n }\n selectorMatched(element, selector) {\n this.delegate.selectorMatched(element, selector, this.details);\n this.matchesByElement.add(selector, element);\n }\n selectorUnmatched(element, selector) {\n this.delegate.selectorUnmatched(element, selector, this.details);\n this.matchesByElement.delete(selector, element);\n }\n}\n\nclass StringMapObserver {\n constructor(element, delegate) {\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n this.refresh();\n }\n }\n stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n refresh() {\n if (this.started) {\n for (const attributeName of this.knownAttributeNames) {\n this.refreshAttribute(attributeName, null);\n }\n }\n }\n processMutations(mutations) {\n if (this.started) {\n for (const mutation of mutations) {\n this.processMutation(mutation);\n }\n }\n }\n processMutation(mutation) {\n const attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n refreshAttribute(attributeName, oldValue) {\n const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n const value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n if (value == null) {\n const oldValue = this.stringMap.get(attributeName);\n this.stringMap.delete(attributeName);\n if (oldValue)\n this.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n get knownAttributeNames() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n get currentAttributeNames() {\n return Array.from(this.element.attributes).map((attribute) => attribute.name);\n }\n get recordedAttributeNames() {\n return Array.from(this.stringMap.keys());\n }\n}\n\nclass TokenListObserver {\n constructor(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n get started() {\n return this.attributeObserver.started;\n }\n start() {\n this.attributeObserver.start();\n }\n pause(callback) {\n this.attributeObserver.pause(callback);\n }\n stop() {\n this.attributeObserver.stop();\n }\n refresh() {\n this.attributeObserver.refresh();\n }\n get element() {\n return this.attributeObserver.element;\n }\n get attributeName() {\n return this.attributeObserver.attributeName;\n }\n elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n elementAttributeValueChanged(element) {\n const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n tokensMatched(tokens) {\n tokens.forEach((token) => this.tokenMatched(token));\n }\n tokensUnmatched(tokens) {\n tokens.forEach((token) => this.tokenUnmatched(token));\n }\n tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n refreshTokensForElement(element) {\n const previousTokens = this.tokensByElement.getValuesForKey(element);\n const currentTokens = this.readTokensForElement(element);\n const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n if (firstDifferingIndex == -1) {\n return [[], []];\n }\n else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n }\n readTokensForElement(element) {\n const attributeName = this.attributeName;\n const tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString\n .trim()\n .split(/\\s+/)\n .filter((content) => content.length)\n .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n const length = Math.max(left.length, right.length);\n return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n constructor(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n get started() {\n return this.tokenListObserver.started;\n }\n start() {\n this.tokenListObserver.start();\n }\n stop() {\n this.tokenListObserver.stop();\n }\n refresh() {\n this.tokenListObserver.refresh();\n }\n get element() {\n return this.tokenListObserver.element;\n }\n get attributeName() {\n return this.tokenListObserver.attributeName;\n }\n tokenMatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n tokenUnmatched(token) {\n const { element } = token;\n const { value } = this.fetchParseResultForToken(token);\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n fetchParseResultForToken(token) {\n let parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n }\n fetchValuesByTokenForElement(element) {\n let valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n }\n parseToken(token) {\n try {\n const value = this.delegate.parseValueForToken(token);\n return { value };\n }\n catch (error) {\n return { error };\n }\n }\n}\n\nclass BindingObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n get element() {\n return this.context.element;\n }\n get identifier() {\n return this.context.identifier;\n }\n get actionAttribute() {\n return this.schema.actionAttribute;\n }\n get schema() {\n return this.context.schema;\n }\n get bindings() {\n return Array.from(this.bindingsByAction.values());\n }\n connectAction(action) {\n const binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n disconnectAction(action) {\n const binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n }\n disconnectAllActions() {\n this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token, this.schema);\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n}\n\nclass ValueObserver {\n constructor(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n stop() {\n this.stringMapObserver.stop();\n }\n get element() {\n return this.context.element;\n }\n get controller() {\n return this.context.controller;\n }\n getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n stringMapKeyAdded(key, attributeName) {\n const descriptor = this.valueDescriptorMap[attributeName];\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n stringMapValueChanged(value, name, oldValue) {\n const descriptor = this.valueDescriptorNameMap[name];\n if (value === null)\n return;\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n this.invokeChangedCallback(name, value, oldValue);\n }\n stringMapKeyRemoved(key, attributeName, oldValue) {\n const descriptor = this.valueDescriptorNameMap[key];\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n }\n else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n invokeChangedCallbacksForDefaultValues() {\n for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n }\n invokeChangedCallback(name, rawValue, rawOldValue) {\n const changedMethodName = `${name}Changed`;\n const changedMethod = this.receiver[changedMethodName];\n if (typeof changedMethod == \"function\") {\n const descriptor = this.valueDescriptorNameMap[name];\n try {\n const value = descriptor.reader(rawValue);\n let oldValue = rawOldValue;\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n changedMethod.call(this.receiver, value, oldValue);\n }\n catch (error) {\n if (error instanceof TypeError) {\n error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n }\n throw error;\n }\n }\n }\n get valueDescriptors() {\n const { valueDescriptorMap } = this;\n return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n }\n get valueDescriptorNameMap() {\n const descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach((key) => {\n const descriptor = this.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n hasValue(attributeName) {\n const descriptor = this.valueDescriptorNameMap[attributeName];\n const hasMethodName = `has${capitalize(descriptor.name)}`;\n return this.receiver[hasMethodName];\n }\n}\n\nclass TargetObserver {\n constructor(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n tokenMatched({ element, content: name }) {\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n tokenUnmatched({ element, content: name }) {\n this.disconnectTarget(element, name);\n }\n connectTarget(element, name) {\n var _a;\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n }\n }\n disconnectTarget(element, name) {\n var _a;\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n }\n }\n disconnectAllTargets() {\n for (const name of this.targetsByName.keys) {\n for (const element of this.targetsByName.getValuesForKey(name)) {\n this.disconnectTarget(element, name);\n }\n }\n }\n get attributeName() {\n return `data-${this.context.identifier}-target`;\n }\n get element() {\n return this.context.element;\n }\n get scope() {\n return this.context.scope;\n }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce((values, constructor) => {\n getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n return values;\n }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n const ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce((pairs, constructor) => {\n pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n const ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n const definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n const definition = constructor[propertyName];\n return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n constructor(context, delegate) {\n this.started = false;\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n this.attributeObserverMap = new Map();\n }\n start() {\n if (!this.started) {\n this.outletDefinitions.forEach((outletName) => {\n this.setupSelectorObserverForOutlet(outletName);\n this.setupAttributeObserverForOutlet(outletName);\n });\n this.started = true;\n this.dependentContexts.forEach((context) => context.refresh());\n }\n }\n refresh() {\n this.selectorObserverMap.forEach((observer) => observer.refresh());\n this.attributeObserverMap.forEach((observer) => observer.refresh());\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.disconnectAllOutlets();\n this.stopSelectorObservers();\n this.stopAttributeObservers();\n }\n }\n stopSelectorObservers() {\n if (this.selectorObserverMap.size > 0) {\n this.selectorObserverMap.forEach((observer) => observer.stop());\n this.selectorObserverMap.clear();\n }\n }\n stopAttributeObservers() {\n if (this.attributeObserverMap.size > 0) {\n this.attributeObserverMap.forEach((observer) => observer.stop());\n this.attributeObserverMap.clear();\n }\n }\n selectorMatched(element, _selector, { outletName }) {\n const outlet = this.getOutlet(element, outletName);\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n selectorUnmatched(element, _selector, { outletName }) {\n const outlet = this.getOutletFromMap(element, outletName);\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n selectorMatchElement(element, { outletName }) {\n const selector = this.selector(outletName);\n const hasOutlet = this.hasOutlet(element, outletName);\n const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n if (selector) {\n return hasOutlet && hasOutletController && element.matches(selector);\n }\n else {\n return false;\n }\n }\n elementMatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementAttributeValueChanged(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n elementUnmatchedAttribute(_element, attributeName) {\n const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n connectOutlet(outlet, element, outletName) {\n var _a;\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n }\n }\n disconnectOutlet(outlet, element, outletName) {\n var _a;\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap\n .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n }\n }\n disconnectAllOutlets() {\n for (const outletName of this.outletElementsByName.keys) {\n for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }\n }\n updateSelectorObserverForOutlet(outletName) {\n const observer = this.selectorObserverMap.get(outletName);\n if (observer) {\n observer.selector = this.selector(outletName);\n }\n }\n setupSelectorObserverForOutlet(outletName) {\n const selector = this.selector(outletName);\n const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });\n this.selectorObserverMap.set(outletName, selectorObserver);\n selectorObserver.start();\n }\n setupAttributeObserverForOutlet(outletName) {\n const attributeName = this.attributeNameForOutletName(outletName);\n const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n this.attributeObserverMap.set(outletName, attributeObserver);\n attributeObserver.start();\n }\n selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n attributeNameForOutletName(outletName) {\n return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n }\n getOutletNameFromOutletAttributeName(attributeName) {\n return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);\n }\n get outletDependencies() {\n const dependencies = new Multimap();\n this.router.modules.forEach((module) => {\n const constructor = module.definition.controllerConstructor;\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n });\n return dependencies;\n }\n get outletDefinitions() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n get dependentControllerIdentifiers() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n get dependentContexts() {\n const identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n }\n hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n }\n get scope() {\n return this.context.scope;\n }\n get schema() {\n return this.context.schema;\n }\n get identifier() {\n return this.context.identifier;\n }\n get application() {\n return this.context.application;\n }\n get router() {\n return this.application.router;\n }\n}\n\nclass Context {\n constructor(module, scope) {\n this.logDebugActivity = (functionName, detail = {}) => {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.logDebugActivity(this.identifier, functionName, detail);\n };\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n }\n catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n refresh() {\n this.outletObserver.refresh();\n }\n disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n }\n catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n get application() {\n return this.module.application;\n }\n get identifier() {\n return this.module.identifier;\n }\n get schema() {\n return this.application.schema;\n }\n get dispatcher() {\n return this.application.dispatcher;\n }\n get element() {\n return this.scope.element;\n }\n get parentElement() {\n return this.element.parentElement;\n }\n handleError(error, message, detail = {}) {\n const { identifier, controller, element } = this;\n detail = Object.assign({ identifier, controller, element }, detail);\n this.application.handleError(error, `Error ${message}`, detail);\n }\n targetConnected(element, name) {\n this.invokeControllerMethod(`${name}TargetConnected`, element);\n }\n targetDisconnected(element, name) {\n this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n }\n outletConnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n }\n outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n }\n invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\n }\n}\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n const shadowConstructor = extend(constructor);\n const shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce((blessedProperties, blessing) => {\n const properties = blessing(constructor);\n for (const key in properties) {\n const descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce((shadowProperties, key) => {\n const descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, { [key]: descriptor });\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nconst getOwnKeys = (() => {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n }\n else {\n return Object.getOwnPropertyNames;\n }\n})();\nconst extend = (() => {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, new.target);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: { value: extended },\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n const a = function () {\n this.a.call(this);\n };\n const b = extendWithReflect(a);\n b.prototype.a = function () { };\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n }\n catch (error) {\n return (constructor) => class extended extends constructor {\n };\n }\n})();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor),\n };\n}\n\nclass Module {\n constructor(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n get identifier() {\n return this.definition.identifier;\n }\n get controllerConstructor() {\n return this.definition.controllerConstructor;\n }\n get contexts() {\n return Array.from(this.connectedContexts);\n }\n connectContextForScope(scope) {\n const context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n disconnectContextForScope(scope) {\n const context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n fetchContextForScope(scope) {\n let context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n }\n}\n\nclass ClassMap {\n constructor(scope) {\n this.scope = scope;\n }\n has(name) {\n return this.data.has(this.getDataKey(name));\n }\n get(name) {\n return this.getAll(name)[0];\n }\n getAll(name) {\n const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n getDataKey(name) {\n return `${name}-class`;\n }\n get data() {\n return this.scope.data;\n }\n}\n\nclass DataMap {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n set(key, value) {\n const name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n has(key) {\n const name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n delete(key) {\n if (this.has(key)) {\n const name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n }\n else {\n return false;\n }\n }\n getAttributeNameForKey(key) {\n return `data-${this.identifier}-${dasherize(key)}`;\n }\n}\n\nclass Guide {\n constructor(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n warn(object, key, message) {\n let warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n constructor(scope) {\n this.scope = scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(targetName) {\n return this.find(targetName) != null;\n }\n find(...targetNames) {\n return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n }\n findAll(...targetNames) {\n return targetNames.reduce((targets, targetName) => [\n ...targets,\n ...this.findAllTargets(targetName),\n ...this.findAllLegacyTargets(targetName),\n ], []);\n }\n findTarget(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n findAllTargets(targetName) {\n const selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n getSelectorForTargetName(targetName) {\n const attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n findLegacyTarget(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n findAllLegacyTargets(targetName) {\n const selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n }\n getLegacySelectorForTargetName(targetName) {\n const targetDescriptor = `${this.identifier}.${targetName}`;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n deprecate(element, targetName) {\n if (element) {\n const { identifier } = this;\n const attributeName = this.schema.targetAttribute;\n const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n }\n return element;\n }\n get guide() {\n return this.scope.guide;\n }\n}\n\nclass OutletSet {\n constructor(scope, controllerElement) {\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get schema() {\n return this.scope.schema;\n }\n has(outletName) {\n return this.find(outletName) != null;\n }\n find(...outletNames) {\n return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n }\n findAll(...outletNames) {\n return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n }\n getSelectorForOutletName(outletName) {\n const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n findOutlet(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n if (selector)\n return this.findElement(selector, outletName);\n }\n findAllOutlets(outletName) {\n const selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n findElement(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n }\n findAllElements(selector, outletName) {\n const elements = this.scope.queryElements(selector);\n return elements.filter((element) => this.matchesElement(element, selector, outletName));\n }\n matchesElement(element, selector, outletName) {\n const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n}\n\nclass Scope {\n constructor(schema, element, identifier, logger) {\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = (element) => {\n return element.closest(this.controllerSelector) === this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n findAllElements(selector) {\n return [\n ...(this.element.matches(selector) ? [this.element] : []),\n ...this.queryElements(selector).filter(this.containsElement),\n ];\n }\n queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n get controllerSelector() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n get isDocumentScope() {\n return this.element === document.documentElement;\n }\n get documentScope() {\n return this.isDocumentScope\n ? this\n : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n}\n\nclass ScopeObserver {\n constructor(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n start() {\n this.valueListObserver.start();\n }\n stop() {\n this.valueListObserver.stop();\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n parseValueForToken(token) {\n const { element, content: identifier } = token;\n return this.parseValueForElementAndIdentifier(element, identifier);\n }\n parseValueForElementAndIdentifier(element, identifier) {\n const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n let scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n }\n elementMatchedValue(element, value) {\n const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n }\n elementUnmatchedValue(element, value) {\n const referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n }\n fetchScopesByIdentifierForElement(element) {\n let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n }\n}\n\nclass Router {\n constructor(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n get element() {\n return this.application.element;\n }\n get schema() {\n return this.application.schema;\n }\n get logger() {\n return this.application.logger;\n }\n get controllerAttribute() {\n return this.schema.controllerAttribute;\n }\n get modules() {\n return Array.from(this.modulesByIdentifier.values());\n }\n get contexts() {\n return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n }\n start() {\n this.scopeObserver.start();\n }\n stop() {\n this.scopeObserver.stop();\n }\n loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n const module = new Module(this.application, definition);\n this.connectModule(module);\n const afterLoad = definition.controllerConstructor.afterLoad;\n if (afterLoad) {\n afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n }\n }\n unloadIdentifier(identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n }\n getContextForElementAndIdentifier(element, identifier) {\n const module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find((context) => context.element == element);\n }\n }\n proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n if (scope) {\n this.scopeObserver.elementMatchedValue(scope.element, scope);\n }\n else {\n console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n }\n }\n handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n scopeConnected(scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n }\n scopeDisconnected(scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n const module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }\n connectModule(module) {\n this.modulesByIdentifier.set(module.identifier, module);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.connectContextForScope(scope));\n }\n disconnectModule(module) {\n this.modulesByIdentifier.delete(module.identifier);\n const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach((scope) => module.disconnectContextForScope(scope));\n }\n}\n\nconst defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\", page_up: \"PageUp\", page_down: \"PageDown\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n constructor(element = document.documentElement, schema = defaultSchema) {\n this.logger = console;\n this.debug = false;\n this.logDebugActivity = (identifier, functionName, detail = {}) => {\n if (this.debug) {\n this.logFormattedMessage(identifier, functionName, detail);\n }\n };\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n static start(element, schema) {\n const application = new this(element, schema);\n application.start();\n return application;\n }\n async start() {\n await domReady();\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n }\n stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n register(identifier, controllerConstructor) {\n this.load({ identifier, controllerConstructor });\n }\n registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach((definition) => {\n if (definition.controllerConstructor.shouldLoad) {\n this.router.loadDefinition(definition);\n }\n });\n }\n unload(head, ...rest) {\n const identifiers = Array.isArray(head) ? head : [head, ...rest];\n identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n }\n get controllers() {\n return this.router.contexts.map((context) => context.controller);\n }\n getControllerForElementAndIdentifier(element, identifier) {\n const context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n handleError(error, message, detail) {\n var _a;\n this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n logFormattedMessage(identifier, functionName, detail = {}) {\n detail = Object.assign({ application: this }, detail);\n this.logger.groupCollapsed(`${identifier} #${functionName}`);\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n}\nfunction domReady() {\n return new Promise((resolve) => {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", () => resolve());\n }\n else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce((properties, classDefinition) => {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n return {\n [`${key}Class`]: {\n get() {\n const { classes } = this;\n if (classes.has(key)) {\n return classes.get(key);\n }\n else {\n const attribute = classes.getAttributeName(key);\n throw new Error(`Missing attribute \"${attribute}\"`);\n }\n },\n },\n [`${key}Classes`]: {\n get() {\n return this.classes.getAll(key);\n },\n },\n [`has${capitalize(key)}Class`]: {\n get() {\n return this.classes.has(key);\n },\n },\n };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce((properties, outletDefinition) => {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n let outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n outletController = getOutletController(controller, element, outletName);\n if (outletController)\n return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n const camelizedName = namespaceCamelize(name);\n return {\n [`${camelizedName}Outlet`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n }\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n },\n },\n [`${camelizedName}Outlets`]: {\n get() {\n const outlets = this.outlets.findAll(name);\n if (outlets.length > 0) {\n return outlets\n .map((outletElement) => {\n const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController)\n return outletController;\n console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n })\n .filter((controller) => controller);\n }\n return [];\n },\n },\n [`${camelizedName}OutletElement`]: {\n get() {\n const outletElement = this.outlets.find(name);\n const selector = this.outlets.getSelectorForOutletName(name);\n if (outletElement) {\n return outletElement;\n }\n else {\n throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n }\n },\n },\n [`${camelizedName}OutletElements`]: {\n get() {\n return this.outlets.findAll(name);\n },\n },\n [`has${capitalize(camelizedName)}Outlet`]: {\n get() {\n return this.outlets.has(name);\n },\n },\n };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce((properties, targetDefinition) => {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n return {\n [`${name}Target`]: {\n get() {\n const target = this.targets.find(name);\n if (target) {\n return target;\n }\n else {\n throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n }\n },\n },\n [`${name}Targets`]: {\n get() {\n return this.targets.findAll(name);\n },\n },\n [`has${capitalize(name)}Target`]: {\n get() {\n return this.targets.has(name);\n },\n },\n };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n const propertyDescriptorMap = {\n valueDescriptorMap: {\n get() {\n return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, { [attributeName]: valueDescriptor });\n }, {});\n },\n },\n };\n return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n const { key, name, reader: read, writer: write } = definition;\n return {\n [name]: {\n get() {\n const value = this.data.get(key);\n if (value !== null) {\n return read(value);\n }\n else {\n return definition.defaultValue;\n }\n },\n set(value) {\n if (value === undefined) {\n this.data.delete(key);\n }\n else {\n this.data.set(key, write(value));\n }\n },\n },\n [`has${capitalize(name)}`]: {\n get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n },\n },\n };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n return valueDescriptorForTokenAndTypeDefinition({\n controller,\n token,\n typeDefinition,\n });\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\":\n return \"boolean\";\n case \"number\":\n return \"number\";\n case \"string\":\n return \"string\";\n }\n if (Array.isArray(defaultValue))\n return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n const { controller, token, typeObject } = payload;\n const hasType = isSomething(typeObject.type);\n const hasDefault = isSomething(typeObject.default);\n const fullObject = hasType && hasDefault;\n const onlyType = hasType && !hasDefault;\n const onlyDefault = !hasType && hasDefault;\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n if (onlyType)\n return typeFromObject;\n if (onlyDefault)\n return typeFromDefaultValue;\n if (typeFromObject !== typeFromDefaultValue) {\n const propertyPath = controller ? `${controller}.${token}` : token;\n throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n }\n if (fullObject)\n return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n const { controller, token, typeDefinition } = payload;\n const typeObject = { controller, token, typeObject: typeDefinition };\n const typeFromObject = parseValueTypeObject(typeObject);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const hasDefault = hasProperty(typeDefinition, \"default\");\n const hasType = hasProperty(typeDefinition, \"type\");\n const typeObject = typeDefinition;\n if (hasDefault)\n return typeObject.default;\n if (hasType) {\n const { type } = typeObject;\n const constantFromType = parseValueTypeConstant(type);\n if (constantFromType)\n return defaultValuesByType[constantFromType];\n }\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n const { token, typeDefinition } = payload;\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(payload);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(typeDefinition) !== undefined;\n },\n reader: readers[type],\n writer: writers[type] || writers.default,\n };\n}\nconst defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\",\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number(value) {\n return Number(value.replace(/_/g, \"\"));\n },\n object(value) {\n const object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n }\n return object;\n },\n string(value) {\n return value;\n },\n};\nconst writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON,\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return `${value}`;\n}\n\nclass Controller {\n constructor(context) {\n this.context = context;\n }\n static get shouldLoad() {\n return true;\n }\n static afterLoad(_identifier, _application) {\n return;\n }\n get application() {\n return this.context.application;\n }\n get scope() {\n return this.context.scope;\n }\n get element() {\n return this.scope.element;\n }\n get identifier() {\n return this.scope.identifier;\n }\n get targets() {\n return this.scope.targets;\n }\n get outlets() {\n return this.scope.outlets;\n }\n get classes() {\n return this.scope.classes;\n }\n get data() {\n return this.scope.data;\n }\n initialize() {\n }\n connect() {\n }\n disconnect() {\n }\n dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true, } = {}) {\n const type = prefix ? `${prefix}:${eventName}` : eventName;\n const event = new CustomEvent(type, { detail, bubbles, cancelable });\n target.dispatchEvent(event);\n return event;\n }\n}\nController.blessings = [\n ClassPropertiesBlessing,\n TargetPropertiesBlessing,\n ValuePropertiesBlessing,\n OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"mappings":"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"}