{"version":3,"file":"stimulus-kBi8pTg8.js","names":["error","Scope","Scope","Scope","withScope","Scope","Scope","DEBUG_BUILD","GLOBAL_OBJ","SDK_VERSION","getMainCarrier","getSentryCarrier","__SENTRY__","carrier","getGlobalSingleton","obj","name","creator","CONSOLE_LEVELS","PREFIX","originalConsoleMethods","consoleSandbox","callback","console","wrappedFuncs","wrappedLevels","originalConsoleMethod","level","enable","disable","isEnabled","_getLoggerSettings","log","args","_maybeLog","warn","error$1","debug","STACKTRACE_FRAME_LIMIT","WEBPACK_ERROR_REGEXP","STRIP_FRAME_REGEXP","createStackParser","parsers","sortedParsers","a","b","p","frames","lines","stack","i","skipFirstLines","line","cleanedLine","parser","frame","framesToPop","stripSentryFramesAndReverse","stackParserFromStackParserOptions","stackParser","localStack","getLastStackFrame","arr","defaultFunctionName","getFunctionName","fn","getFramesFromEvent","exception","event","value","objectToString","isError","wat","isInstanceOf","isBuiltin","className","isErrorEvent","isDOMError","isDOMException","isString","isParameterizedString","isPrimitive","isPlainObject","isObjectLike","isEvent","isRegExp","isThenable","base","isRequest","request","fill","source","original","wrapped","replacementFactory","markFunctionWrapped","addNonEnumerableProperty","getOriginalFunction","func","convertToPlainObject","getOwnProperties","detail","extractExceptionKeysForMessage","keys","RESOLVED_RUNNER","withRandomSafeContext","cb","sym","globalWithSymbol","safeMathRandom","safeDateNow","SENTRY_SKIP_NORMALIZATION","SENTRY_OVERRIDE_NORMALIZATION_DEPTH","hasSkipNormalizationHint","getNormalizationDepthOverrideHint","v","stringifier","setNormalizeStringifier","newStringifier","normalize","visit","input","depth","maxProperties","err","normalizeToSize","normalized","object","jsonSize","maxSize","memoBuilder","memoize","unmemoize","memo","stringified","stringifyValue","key","overrideDepth","remainingDepth","valueWithToJSON","numAdded","visitable","visitKey","visitValue","getConstructorName","prototype","utf8Length","inner","truncate","str","max","safeJoin","output","delimiter","isMatchingPattern","pattern","requireExactStringMatch","stringMatchesSomePattern","patterns","testString","getCrypto","gbl","emptyUuid","getRandomByte","uuid4","crypto","c","getFirstException","getEventDescription","eventId","message","firstException","addExceptionTypeValue","values","type","addExceptionMechanism","defaultMechanism","currentMechanism","newMechanism","mergedData","checkOrSetAlreadyCaught","isAlreadyCaptured","ONE_SECOND_IN_MS","dateTimestampInSeconds","createUnixTimestampInSecondsFunc","performance","timeOrigin","_cachedTimestampInSeconds","timestampInSeconds","cachedTimeOrigin","getBrowserTimeOrigin","threshold","performanceNow","dateNow","navigationStart","browserPerformanceTimeOrigin","makeSession","startingTime","session","sessionToJSON","context","updateSession","duration","closeSession","status","merge","mergeObj","levels","initialObj","generateTraceId","generateSpanId","makeWeakRef","WeakRefImpl","derefWeakRef","ref","SCOPE_SPAN_FIELD","_setSpanForScope","span","scope","_getSpanForScope","DEFAULT_MAX_BREADCRUMBS","Scope$1","newScope","client","lastEventId","user","conversationId","tags","newAttributes","extras","extra","fingerprint","captureContext","scopeToMerge","attributes","contexts","propagationContext","maxCrumbs","maxBreadcrumbs","mergedBreadcrumb","breadcrumb","attachment","newData","hint","syntheticException","getDefaultCurrentScope","getDefaultIsolationScope","isActualPromise","kChainedCopy","chainAndCopyPromiseLike","chained","onSuccess","onError","copyProps","mutated","AsyncContextStack","assignedScope","assignedIsolationScope","isolationScope","maybePromiseResult","getAsyncContextStack","sentry","withScope$1","withSetScope","withIsolationScope","getStackAsyncContextStrategy","getAsyncContextStrategy","isAttributeObject","maybeObj","attributeValueToTypedAttributeValue","rawValue","attributeValue","getTypedAttributeValue","checkedUnit","unit","useFallback","stringValue","serializeAttributes","serializedAttributes","typedValue","fallback","primitiveType","getCurrentScope","getIsolationScope","getGlobalScope","withScope","rest","acs","getClient","getTraceContextFromScope","traceContext","traceId","propagationSpanId","parentSpanId","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","SEMANTIC_ATTRIBUTE_SENTRY_OP","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","SEMANTIC_ATTRIBUTE_PROFILE_ID","SEMANTIC_ATTRIBUTE_EXCLUSIVE_TIME","GEN_AI_CONVERSATION_ID_ATTRIBUTE","SCOPE_ON_START_SPAN_FIELD","ISOLATION_SCOPE_ON_START_SPAN_FIELD","getCapturedScopesOnSpan","spanWithScopes","baggageHeaderToDynamicSamplingContext","baggageObject","parseBaggageHeader","baggageHeader","dynamicSamplingContext","nonPrefixedKey","acc","currBaggageObject","baggageHeaderToObject","curr","eqIdx","baggageEntry","keyOrValue","ORG_ID_REGEX","DSN_REGEX","isValidProtocol","protocol","dsnToString","dsn","publicKey","withPassword","pass","host","port","path","projectId","dsnFromString","match","lastPath","split","projectMatch","dsnFromComponents","components","validateDsn","component","extractOrgIdFromDsnHost","extractOrgIdFromClient","options","org_id","makeDsn","from","hasShownSpanDropWarning","spanToTraceContext","trace_id","parent_span_id","isRemote","spanId","spanToJSON","convertSpanLinksForEnvelope","links","restContext","traceFlags","spanTimeInputToSeconds","ensureTimestampInSeconds","timestamp","spanIsSentrySpan","span_id","spanIsOpenTelemetrySdkTraceBaseSpan","getOtelParentSpanId","startTime","endTime","getStatusMessage","streamedSpanJsonToSerializedSpan","spanJson","link","castSpan","spanIsSampled","ROOT_SPAN_FIELD","getRootSpan","INTERNAL_getSegmentSpan","getActiveSpan","showSpanDropWarning","hasSpansEnabled","maybeOptions","NON_RECORDING_SPAN_FIELD","spanIsNonRecordingSpan","DEFAULT_ENVIRONMENT","FROZEN_DSC_FIELD","getDynamicSamplingContextFromClient","public_key","dsc","getDynamicSamplingContextFromScope","getDynamicSamplingContextFromSpan","rootSpan","rootSpanJson","rootSpanAttributes","traceState","rootSpanSampleRate","applyLocalSampleRateToDsc","dsc2","frozenDsc","isNonRecordingRoot","isIgnoredRoot","capturedScope","traceStateDsc","dscOnTraceState","applyScopeDataToEvent","data","applyDataToEvent","applySpanToEvent","applyFingerprintToEvent","applyBreadcrumbsToEvent","breadcrumbs","applySdkMetadataToEvent","sdkProcessingMetadata","mergeScopeData","mergeData","mergeAndOverwriteScopeData","transactionName","eventProcessors","attachments","prop","mergeVal","getCombinedScopeData","scopeData","currentScope","mergedBreadcrumbs","STATE_PENDING","STATE_RESOLVED","STATE_REJECTED","resolvedSyncPromise","SyncPromise","resolve","rejectedSyncPromise","reject","reason","executor","onfulfilled","result","onrejected","val","isRejected","onfinally","cachedHandlers","handler","setResult","state","notifyEventProcessors","_notifyEventProcessors","processors","index","error","processor","final","parsedStackResults","lastSentryKeysCount","lastNativeKeysCount","cachedFilenameDebugIds","getFilenameToDebugIdMap","sentryDebugIdMap","nativeDebugIdMap","sentryDebugIdKeys","nativeDebugIdKeys","processDebugIds","debugIdKeys","debugId","debugIdMap","parsedStack","filename","prepareEvent","prepared","integrations","applyClientOptions","applyIntegrationsMetadata","applyDebugIds","finalScope","getFinalScope","clientEventProcessors","evt","applyDebugMeta","normalizeDepth","normalizeEvent","normalizeMaxBreadth","environment","release","dist","maxValueLength","filenameDebugIdMap","images","debug_id","integrationNames","maxBreadth","parseEventHintOrCaptureContext","hintIsScopeOrFunction","hintIsScopeContext","captureContextKeys","captureException","captureMessage","captureEvent","setContext","setUser","addEventProcessor","startSession","userAgent","currentSession","endSession","_sendSessionUpdate","captureSession","end","EventListener","eventTarget","eventName","eventOptions","binding","extendedEvent","extendEvent","leftIndex","left","rightIndex","right","stopImmediatePropagation","Dispatcher","application","eventListener","listeners","map","clearEventListeners","eventListenerMap","cacheKey","parts","defaultActionDescriptorFilters","element","descriptorPattern","parseActionDescriptorString","matches","descriptorString","keyFilter","parseEventTarget","parseEventOptions","eventTargetName","token","stringifyEventTarget","camelize","char","namespaceCamelize","capitalize","dasherize","tokenize","isSomething","hasProperty","property","allModifiers","Action","descriptor","getDefaultEventNameForElement","schema","eventFilter","filters","standardFilter","params","typecast","meta","ctrl","alt","shift","modifier","defaultEventNames","tagName","Binding","action","actionEvent","method","passes","actionDescriptorFilters","filter","ElementObserver","delegate","mutations","mutation","attributeName","node","nodes","tree","AttributeObserver","add","fetch","del","prune","Multimap","set","size","_key","_values","SelectorObserver","selector","details","selectors","matchedBefore","StringMapObserver","oldValue","attribute","TokenListObserver","unmatchedTokens","matchedTokens","tokens","previousTokens","currentTokens","firstDifferingIndex","zip","previousToken","currentToken","tokensAreEqual","parseTokenString","tokenString","content","length","ValueListObserver","parseResult","valuesByToken","BindingObserver","ValueObserver","receiver","defaultValue","writer","changedMethodName","changedMethod","rawOldValue","valueDescriptorMap","descriptors","hasMethodName","TargetObserver","_a","readInheritableStaticArrayValues","ancestors","getAncestorsForConstructor","constructor","getOwnStaticArrayValues","propertyName","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","definition","OutletObserver","outletName","observer","outlet","hasOutlet","hasOutletController","selectorObserver","attributeObserver","dependencies","module","identifiers","Context","functionName","controller","methodName","bless","shadow","getBlessedProperties","shadowConstructor","extend","shadowProperties","getShadowProperties","properties","blessing","blessedProperties","getOwnKeys","getShadowedDescriptor","shadowingDescriptor","extendWithReflect","extended","testReflectExtension","blessDefinition","Module","ClassMap","DataMap","Guide","logger","warnedKeys","attributeValueContainsToken","TargetSet","targetName","targetNames","target","targets","targetDescriptor","revisedAttributeName","identifier","OutletSet","controllerElement","outletNames","outlets","controllerAttribute","Scope","ScopeObserver","scopesByIdentifier","referenceCount","Router","afterLoad","defaultSchema","objectFromEntries","n","array","k","Application","domReady","head","ClassPropertiesBlessing","propertiesForClassDefinition","classDefinition","classes","OutletPropertiesBlessing","propertiesForOutletDefinition","outletDefinition","getOutletController","getControllerAndEnsureConnectedScope","outletController","camelizedName","outletElement","TargetPropertiesBlessing","propertiesForTargetDefinition","targetDefinition","ValuePropertiesBlessing","valueDefinitionPairs","propertiesForValueDefinitionPair","valueDefinitionPair","valueDescriptor","parseValueDefinitionPair","read","write","typeDefinition","valueDescriptorForTokenAndTypeDefinition","parseValueTypeConstant","constant","parseValueTypeDefault","parseValueTypeObject","payload","hasType","typeObject","hasDefault","fullObject","onlyType","onlyDefault","typeFromObject","typeFromDefaultValue","propertyPath","parseValueTypeDefinition","typeFromConstant","defaultValueForDefinition","defaultValuesByType","constantFromType","readers","writers","writeString","writeJSON","Controller","prefix"],"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/tracing/sentryNonRecordingSpan.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.76.1\" ;\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 isObjectLike(wat) {\n return typeof wat === \"object\" && wat !== null;\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, isObjectLike, 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, isObjectLike } 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 (isObjectLike(obj)) {\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 stringify(value, fallback = \"[unserializable]\") {\n if (typeof value === \"string\") {\n return value;\n }\n try {\n return JSON.stringify(value);\n } catch {\n return typeof fallback === \"function\" ? fallback(value) : fallback;\n }\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, stringify, 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 applied to logs, metrics and streamed spans.\n *\n * Supported attribute value types are `string`, `number`, `boolean`, `string[]`, `number[]` and `boolean[]`.\n *\n * @param newAttributes - The attributes to set on the scope, as key-value pairs.\n *\n * @example\n * ```typescript\n * scope.setAttributes({\n * is_admin: true,\n * payment_selection: 'credit_card',\n * render_duration: 150,\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 applied to logs, metrics and streamed spans.\n *\n * Supported attribute value types are `string`, `number`, `boolean`, `string[]`, `number[]` and `boolean[]`.\n *\n * @param key - The attribute key.\n * @param value - The attribute value.\n *\n * @example\n * ```typescript\n * scope.setAttribute('is_admin', true);\n * scope.setAttribute('render_duration', 150);\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 * @deprecated This method will be removed in v11. To reset scope state, re-initialize the SDK or run\n * your code in a fresh scope via `withScope` instead.\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 { getSentryCarrier, getMainCarrier } 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_STATUS_MESSAGE = \"sentry.status.message\";\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_SENTRY_STATUS_MESSAGE, 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\";\nconst OTEL_SOURCE_INFERENCE_SPAN_FIELD = /* @__PURE__ */ Symbol.for(\"sentry.otelSourceInference\");\nconst OTEL_SOURCE_EXPLICITLY_SET_SPAN_FIELD = /* @__PURE__ */ Symbol.for(\"sentry.otelSourceExplicitlySet\");\nconst TRACER_PROVIDER_SPAN_FIELD = /* @__PURE__ */ Symbol.for(\"sentry.tracerProviderSpan\");\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}\nfunction markSpanForOtelSourceInference(span) {\n addNonEnumerableProperty(span, OTEL_SOURCE_INFERENCE_SPAN_FIELD, true);\n}\nfunction spanShouldInferOtelSource(span) {\n return span[OTEL_SOURCE_INFERENCE_SPAN_FIELD] === true;\n}\nfunction markSpanSourceAsExplicit(span) {\n addNonEnumerableProperty(span, OTEL_SOURCE_EXPLICITLY_SET_SPAN_FIELD, true);\n}\nfunction spanSourceWasExplicitlySet(span) {\n return span[OTEL_SOURCE_EXPLICITLY_SET_SPAN_FIELD] === true;\n}\nfunction markSpanAsTracerProviderSpan(span) {\n addNonEnumerableProperty(span, TRACER_PROVIDER_SPAN_FIELD, true);\n}\nfunction spanIsTracerProviderSpan(span) {\n return span[TRACER_PROVIDER_SPAN_FIELD] === true;\n}\n\nexport { getCapturedScopesOnSpan, markSpanAsTracerProviderSpan, markSpanForOtelSourceInference, markSpanSourceAsExplicit, setCapturedScopesOnSpan, spanIsTracerProviderSpan, spanShouldInferOtelSource, spanSourceWasExplicitlySet };\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, SEMANTIC_ATTRIBUTE_SENTRY_STATUS_MESSAGE } 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: getSimpleStatus(status),\n attributes: addStatusMessageAttribute(attributes, status),\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 getSimpleStatus(status) {\n return !status || status.code === SPAN_STATUS_OK || status.code === SPAN_STATUS_UNSET || status.message === \"cancelled\" ? \"ok\" : \"error\";\n}\nfunction addStatusMessageAttribute(attributes, status) {\n const statusMessage = getSimpleStatus(status) === \"error\" ? status?.message : void 0;\n return {\n ...statusMessage && { [SEMANTIC_ATTRIBUTE_SENTRY_STATUS_MESSAGE]: statusMessage },\n ...attributes\n };\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 (!spanIsSampled(span)) {\n return;\n }\n if (!span.isRecording() && !rootSpan.isRecording()) {\n return;\n }\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, addStatusMessageAttribute, convertSpanLinksForEnvelope, getActiveSpan, getRootSpan, getSimpleStatus, getSpanDescendants, getStatusMessage, getStreamedSpanLinks, removeChildSpanFromSpan, showSpanDropWarning, spanIsSampled, spanIsSentrySpan, 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","import { addNonEnumerableProperty } from '../utils/object.js';\nimport { generateTraceId, generateSpanId } from '../utils/propagationContext.js';\nimport { TRACE_FLAG_NONE } from '../utils/spanUtils.js';\n\nconst NON_RECORDING_SPAN_FIELD = /* @__PURE__ */ Symbol.for(\"sentry.nonRecordingSpan\");\nclass SentryNonRecordingSpan {\n constructor(spanContext = {}) {\n this._traceId = spanContext.traceId || generateTraceId();\n this._spanId = spanContext.spanId || generateSpanId();\n this.dropReason = spanContext.dropReason;\n addNonEnumerableProperty(this, NON_RECORDING_SPAN_FIELD, true);\n }\n /** @inheritdoc */\n spanContext() {\n return {\n spanId: this._spanId,\n traceId: this._traceId,\n traceFlags: TRACE_FLAG_NONE\n };\n }\n /** @inheritdoc */\n end(_timestamp) {\n }\n /** @inheritdoc */\n setAttribute(_key, _value) {\n return this;\n }\n /** @inheritdoc */\n setAttributes(_values) {\n return this;\n }\n /** @inheritdoc */\n setStatus(_status) {\n return this;\n }\n /** @inheritdoc */\n updateName(_name) {\n return this;\n }\n /** @inheritdoc */\n isRecording() {\n return false;\n }\n /** @inheritdoc */\n addEvent(_name, _attributesOrStartTime, _startTime) {\n return this;\n }\n /** @inheritDoc */\n addLink(_link) {\n return this;\n }\n /** @inheritDoc */\n addLinks(_links) {\n return this;\n }\n /**\n * This should generally not be used,\n * but we need it for being compliant with the OTEL Span interface.\n *\n * @hidden\n * @internal\n */\n recordException(_exception, _time) {\n }\n}\nfunction spanIsNonRecordingSpan(span) {\n return !!span && span[NON_RECORDING_SPAN_FIELD] === true;\n}\n\nexport { SentryNonRecordingSpan, spanIsNonRecordingSpan };\n//# sourceMappingURL=sentryNonRecordingSpan.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 { spanIsNonRecordingSpan } from './sentryNonRecordingSpan.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 isNonRecordingRoot = spanIsNonRecordingSpan(rootSpan);\n const isIgnoredRoot = isNonRecordingRoot && rootSpan.dropReason === \"ignored\";\n if (isNonRecordingRoot && (!hasSpansEnabled(client.getOptions()) || isIgnoredRoot)) {\n const capturedScope = getCapturedScopesOnSpan(rootSpan).scope;\n if (capturedScope) {\n const dsc2 = { ...getDynamicSamplingContextFromScope(client, capturedScope) };\n if (isIgnoredRoot) {\n dsc2.sampled = \"false\";\n }\n return applyLocalSampleRateToDsc(dsc2);\n }\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.segment.name.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 } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { closeSession, makeSession, updateSession } from './session.js';\nimport { debug } from './utils/debug-logger.js';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent.js';\nimport { getCombinedScopeData } from './utils/scopeData.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 setAttributes(attributes) {\n getIsolationScope().setAttributes(attributes);\n}\nfunction setAttribute(key, value) {\n getIsolationScope().setAttribute(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}\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, captureEvent, captureException, captureMessage, captureSession, close, endSession, flush, isEnabled, isInitialized, lastEventId, setAttribute, setAttributes, setContext, setConversationId, setExtra, setExtras, setTag, setTags, setUser, startSession };\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"],"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,41],"mappings":"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"}