{"version":3,"sources":["webpack:///./node_modules/@sentry/core/esm/basebackend.js","webpack:///./node_modules/@sentry/browser/esm/eventbuilder.js","webpack:///./node_modules/@sentry/browser/esm/tracekit.js","webpack:///./node_modules/@sentry/utils/esm/polyfill.js","webpack:///./node_modules/@sentry/utils/esm/error.js","webpack:///./node_modules/@sentry/browser/esm/parsers.js","webpack:///./node_modules/@sentry/types/esm/status.js","webpack:///./node_modules/@sentry/types/esm/session.js","webpack:///./node_modules/@sentry/browser/esm/integrations/linkederrors.js","webpack:///./node_modules/@sentry/utils/esm/promisebuffer.js","webpack:///./node_modules/@sentry/browser/esm/transports/base.js","webpack:///./node_modules/@sentry/utils/esm/supports.js","webpack:///./node_modules/@sentry/types/esm/severity.js","webpack:///./node_modules/@sentry/core/esm/transports/noop.js","webpack:///./node_modules/@sentry/hub/esm/scope.js","webpack:///./node_modules/@sentry/utils/esm/browser.js","webpack:///./node_modules/@sentry/integrations/esm/dedupe.js","webpack:///./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js","webpack:///./node_modules/@sentry/browser/esm/backend.js","webpack:///./node_modules/@sentry/browser/esm/client.js","webpack:///./node_modules/@sentry/utils/esm/time.js","webpack:///./node_modules/@sentry/react/esm/redux.js","webpack:///./node_modules/@sentry/utils/esm/memo.js","webpack:///./node_modules/@sentry/hub/esm/session.js","webpack:///./node_modules/@sentry/hub/esm/hub.js","webpack:///./node_modules/@sentry/browser/esm/integrations/useragent.js","webpack:///./node_modules/@sentry/utils/esm/syncpromise.js","webpack:///./node_modules/@sentry/utils/esm/misc.js","webpack:///./node_modules/@sentry/browser/esm/integrations/globalhandlers.js","webpack:///./node_modules/@sentry/core/esm/integration.js","webpack:///./node_modules/@sentry/core/esm/baseclient.js","webpack:///./node_modules/@sentry/utils/esm/logger.js","webpack:///./node_modules/@sentry/browser/esm/transports/xhr.js","webpack:///./node_modules/@sentry/browser/esm/transports/fetch.js","webpack:///./node_modules/@sentry/core/esm/request.js","webpack:///./node_modules/@sentry/utils/esm/object.js","webpack:///./node_modules/@sentry/core/esm/integrations/functiontostring.js","webpack:///./node_modules/@sentry/core/esm/integrations/inboundfilters.js","webpack:///./node_modules/@sentry/core/esm/sdk.js","webpack:///./node_modules/@sentry/browser/esm/integrations/trycatch.js","webpack:///./node_modules/@sentry/browser/esm/sdk.js","webpack:///./node_modules/@sentry/browser/esm/helpers.js","webpack:///./node_modules/@sentry/utils/esm/dsn.js","webpack:///./node_modules/@sentry/browser/esm/version.js","webpack:///./node_modules/@sentry/browser/esm/index.js","webpack:///./node_modules/@sentry/core/esm/api.js","webpack:///./node_modules/@sentry/minimal/esm/index.js","webpack:///./node_modules/@sentry/browser/esm/integrations/index.js","webpack:///./node_modules/@sentry/utils/esm/node.js","webpack:///./node_modules/@sentry/utils/esm/instrument.js","webpack:///./node_modules/@sentry/core/esm/version.js","webpack:///./node_modules/@sentry/utils/esm/stacktrace.js","webpack:///./node_modules/@sentry/utils/esm/string.js","webpack:///./node_modules/@sentry/browser/esm/transports/index.js","webpack:///./node_modules/@sentry/utils/esm/is.js"],"names":["BaseBackend","options","this","_options","dsn","warn","_transport","_setupTransport","prototype","eventFromException","_exception","_hint","eventFromMessage","_message","_level","sendEvent","event","then","reason","error","sendSession","session","getTransport","exception","hint","eventFromUnknownInput","syntheticException","undefined","attachStacktrace","handled","type","level","Error","event_id","resolve","message","Info","eventFromString","domException","name_1","name","tags","code","objectException","rejection","synthetic","input","stacktrace","frames_1","stack","frames","UNKNOWN_FUNCTION","chrome","gecko","winjs","geckoEval","chromeEval","reactMinifiedRegexp","computeStackTrace","ex","popSize","framesToPop","test","parts","opera10Regex","opera11Regex","lines","split","line","length","element","exec","url","func","args","column","push","extractMessage","computeStackTraceFromStacktraceProp","popFrames","e","submatch","i","isNative","indexOf","substr","isSafariExtension","isSafariWebExtension","columnNumber","computeStackTraceFromStackProp","failed","slice","setPrototypeOf","Object","__proto__","Array","obj","proto","prop","hasOwnProperty","_super","SentryError","_newTarget","constructor","_this","call","exceptionFromStacktrace","prepareFramesForEvent","value","eventFromPlainObject","values","extra","__serialized__","eventFromStacktrace","localStack","firstFrameFunction","lastFrameFunction","map","frame","colno","filename","function","in_app","lineno","reverse","Status","fromHttpCode","Success","RateLimit","Invalid","Failed","Unknown","SessionStatus","RequestSessionStatus","LinkedErrors","id","_key","key","_limit","limit","setupOnce","self","getIntegration","_handler","originalException","linkedErrors","_walkErrorTree","PromiseBuffer","_buffer","isReady","add","task","remove","reject","splice","drain","timeout","capturedSetTimeout","setTimeout","all","clearTimeout","CATEGORY_MAPPING","transaction","attachment","BaseTransport","_rateLimits","_api","_metadata","getStoreEndpointWithUrlEncodedAuth","_","close","_handleResponse","_a","requestType","response","headers","status","_handleRateLimit","logger","_disabledUntil","category","_isRateLimited","Date","now","e_1","e_2","_b","rlHeader","raHeader","_c","trim","_d","next","done","parameters","headerDelay","parseInt","delay","isNaN","_e","_f","e_2_1","return","e_1_1","supportsFetch","Headers","Request","Response","isNativeFetch","toString","supportsNativeFetch","global","fetch","result","doc","document","createElement","sandbox","hidden","head","appendChild","contentWindow","removeChild","err","supportsReferrerPolicy","referrerPolicy","supportsHistory","isChromePackagedApp","app","runtime","hasHistoryApi","history","pushState","replaceState","Severity","fromString","Debug","Warning","Fatal","Critical","Log","NoopTransport","Skipped","Scope","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_user","_tags","_extra","_contexts","clone","scope","newScope","_span","_session","_transactionName","_fingerprint","_requestSession","addScopeListener","callback","addEventProcessor","setUser","user","update","_notifyScopeListeners","getUser","getRequestSession","setRequestSession","requestSession","setTags","setTag","setExtras","extras","setExtra","setFingerprint","fingerprint","setLevel","setTransactionName","setTransaction","setContext","context","setSpan","span","getSpan","getTransaction","spanRecorder","spans","setSession","getSession","captureContext","updatedScope","keys","contexts","clear","addBreadcrumb","breadcrumb","maxBreadcrumbs","mergedBreadcrumb","timestamp","clearBreadcrumbs","applyToEvent","trace","getTraceContext","transactionName","_applyFingerprint","breadcrumbs","_notifyEventProcessors","getGlobalEventProcessors","processors","index","processor","final","forEach","isArray","concat","__SENTRY__","globalEventProcessors","addGlobalEventProcessor","htmlTreeAsString","elem","currentElem","out","height","len","sepLength","nextStr","_htmlElementAsString","parentNode","join","_oO","el","className","classes","attr","tagName","toLowerCase","allowedAttrs","getAttribute","Dedupe","getCurrentHub","currentEvent","_shouldDropEvent","_previousEvent","previousEvent","_isSameMessageEvent","_isSameExceptionEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","_getFramesFromEvent","currentFrames","previousFrames","frameA","frameB","_getExceptionFromEvent","previousException","currentException","currentFingerprint","previousFingerprint","Breadcrumbs","console","dom","sentry","xhr","addSentryBreadcrumb","_i","arguments","_consoleBreadcrumb","apply","_domBreadcrumb","_xhrBreadcrumb","_fetchBreadcrumb","_historyBreadcrumb","handlerData","data","target","endTimestamp","__sentry_own_request__","__sentry_xhr__","method","status_code","body","fetchData","match","from","to","parsedLoc","location","href","parsedFrom","parsedTo","path","protocol","host","relative","BrowserBackend","transportOptions","transport","supports","BrowserClient","sdk","packages","version","showReportDialog","_isEnabled","getDsn","_prepareEvent","platform","_sendEvent","integration","dateTimestampSource","nowSeconds","platformPerformance","module","performance","getNodePerformance","timeOrigin","getBrowserPerformance","timestampSource","dateTimestampInSeconds","bind","threshold","performanceNow","dateNow","timeOriginDelta","Math","abs","timeOriginIsReliable","navigationStart","timing","navigationStartDelta","STATE_CONTEXT_KEY","defaultOptions","actionTransformer","action","stateTransformer","state","createReduxEnhancer","enhancerOptions","reducer","initialState","newState","transformedAction","transformedState","configureScopeWithState","Memo","_hasWeakSet","WeakSet","_inner","memoize","has","unmemoize","delete","Session","errors","sid","started","duration","Ok","init","ip_address","ipAddress","did","email","username","release","environment","userAgent","Exited","toJSON","toISOString","attrs","user_agent","SessionFlusher","flushTimeout","_pendingAggregates","_intervalId","setInterval","flush","_sessionAttrs","sendSessionAggregates","sessionAggregates","getSessionAggregates","aggregates","clearInterval","incrementSessionStatusCount","getScope","_incrementSessionStatusCount","date","sessionStartedTrunc","setSeconds","aggregationCounts","Errored","errored","exited","Crashed","crashed","Hub","client","_version","_stack","getStackTop","bindClient","isOlderThan","setupIntegrations","pushScope","getStack","getClient","popScope","pop","withScope","captureException","eventId","_lastEventId","finalHint","_invokeClient","captureMessage","captureEvent","lastEventId","getOptions","beforeBreadcrumb","finalBreadcrumb","min","configureScope","run","oldHub","makeMain","startSpan","_callExtensionMethod","startTransaction","customSamplingContext","traceHeaders","captureSession","endSession","_sendSessionUpdate","startSession","currentSession","carrier","getMainCarrier","extensions","hub","registry","getHubFromCarrier","setHubOnCarrier","hasHubOnCarrier","activeDomain","domain","active","registryHubTopStack","_Oo","getHubFromActiveDomain","UserAgent","navigator","request","referrer","Referer","States","SyncPromise","executor","_state","PENDING","_handlers","_resolve","_setResult","RESOLVED","_reject","REJECTED","_value","_executeHandlers","_attachHandler","handler","cachedHandlers","onfulfilled","onrejected","collection","counter","resolvedCollection","item","TypeError","catch","val","finally","onfinally","isRejected","fallbackGlobalObject","getGlobalObject","window","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","replace","c","r","random","parseUrl","query","fragment","getEventDescription","consoleSandbox","originalConsole","wrappedLevels","__sentry_original__","addExceptionTypeValue","addExceptionMechanism","mechanism","getLocationHref","oO","parseRetryAfterHeader","header","headerDate","parse","GlobalHandlers","_onErrorHandlerInstalled","_onUnhandledRejectionHandlerInstalled","onerror","onunhandledrejection","stackTraceLimit","log","_installGlobalOnErrorHandler","_installGlobalOnUnhandledRejectionHandler","currentHub","hasIntegration","isFailedOwnDelivery","_eventFromIncompleteOnError","msg","_enhanceEventWithInitialFrame","detail","_eventFromRejectionWithPrimitive","groups","String","installedIntegrations","filterDuplicates","integrations","reduce","acc","every","accIntegration","defaultIntegrations","userIntegrations","filter","userIntegration","integrationsNames","alwaysLastToRun","getIntegrationsToSetup","setupIntegration","BaseClient","backendClass","_integrations","_processing","_backend","_dsn","_process","_getBackend","_captureEvent","promisedEvent","is","_sendSession","_isClientProcessing","ready","transportFlushed","enabled","_updateSessionFromEvent","exceptions","exceptions_1","exceptions_1_1","Number","ticked","interval","normalizeDepth","prepared","_applyClientOptions","_applyIntegrationsMetadata","finalScope","evt","_normalizeEvent","depth","normalized","b","dist","maxValueLength","integrationsArray","_processEvent","finalEvent","beforeSend","sampleRate","isTransaction","__sentry__","beforeSendResult","processedEvent","promise","PREFIX","Logger","_enabled","disable","enable","XHRTransport","_sendRequest","sentryRequest","originalPayload","Promise","XMLHttpRequest","onreadystatechange","readyState","getResponseHeader","open","setRequestHeader","send","FetchTransport","fetchImpl","getNativeFetchImplementation","_fetch","fetchParameters","assign","get","getSdkMetadataForEnvelopeHeader","api","metadata","enhanceEventWithSdkInfo","sdkInfo","sessionToSentryRequest","JSON","stringify","sent_at","getEnvelopeEndpointWithUrlEncodedAuth","eventToSentryRequest","eventType","useEnvelope","debug_meta","transactionSampling","samplingMethod","rate","req","envelope","sample_rates","fill","source","replacementFactory","original","wrapped","defineProperties","enumerable","urlEncode","object","encodeURIComponent","getWalkSource","event_1","currentTarget","CustomEvent","jsonSize","encodeURI","utf8Length","normalizeToSize","maxSize","serialized","normalize","normalizeValue","_events","walk","memo","Infinity","serializeValue","innerKey","extractExceptionKeysForMessage","maxLength","sort","includedKeys","dropUndefinedKeys","rv","originalFunctionToString","FunctionToString","Function","DEFAULT_IGNORE_ERRORS","InboundFilters","clientOptions","_mergeOptions","_isSentryError","_isIgnoredError","_isDeniedUrl","_getEventFilterUrl","_isAllowedUrl","ignoreInternal","ignoreErrors","_getPossibleEventMessages","some","pattern","denyUrls","allowUrls","whitelistUrls","blacklistUrls","frames_2","initAndBind","clientClass","debug","initialScope","DEFAULT_EVENT_TARGET","TryCatch","eventTarget","requestAnimationFrame","_wrapTimeFunction","_wrapRAF","_wrapXHR","_wrapEventTarget","originalCallback","eventName","fn","handleEvent","originalRemoveEventListener","wrappedEventHandler","originalEventHandler","__sentry_wrapped__","originalSend","xmlHttpRequestProps","wrapOptions","window_1","SENTRY_RELEASE","autoSessionTracking","startSessionTracking","forceLoad","onLoad","wrap","ignoreOnError","shouldIgnoreOnError","ignoreNextOnError","before","sentryWrapped","wrappedArguments","arg","property","defineProperty","getOwnPropertyDescriptor","configurable","injectReportDialog","script","async","src","getReportDialogEndpoint","onload","DSN_REGEX","ERROR_MESSAGE","Dsn","_fromString","_fromComponents","_validate","withPassword","pass","port","projectId","publicKey","str","projectMatch","components","component","SDK_NAME","windowIntegrations","_window","Sentry","Integrations","INTEGRATIONS","API","_dsnObject","getBaseApiEndpoint","getStoreEndpoint","_getIngestEndpoint","_encodedAuth","_getEnvelopeEndpoint","getStoreEndpointPath","getRequestHeaders","clientName","clientVersion","dialogOptions","endpoint","encodedOptions","auth","sentry_key","sentry_version","callOnHub","isNodeEnv","process","dynamicRequire","mod","require","lastHref","handlers","instrumented","instrument","originalConsoleLevel","triggerHandlers","instrumentConsole","triggerDOMHandler","globalDOMEventHandler","makeDOMEventHandler","addEventListener","originalAddEventListener","listener","handlers_1","__sentry_instrumentation_handlers__","handlerForType","refCount","handlers_2","instrumentDOM","requestKeys","requestValues","xhrproto","originalOpen","toUpperCase","onreadystatechangeHandler","requestPos","args_1","startTimestamp","readyStateArgs","instrumentXHR","originalFetch","getFetchMethod","getFetchUrl","instrumentFetch","oldOnPopState","onpopstate","historyReplacementFunction","originalHistoryFunction","instrumentHistory","_oldOnErrorHandler","_oldOnUnhandledRejectionHandler","addInstrumentationHandler","fetchArgs","debounceTimerID","lastCapturedEvent","globalListener","isContentEditable","shouldSkipDOMEvent","previous","current","shouldShortcircuitPreviousDebounce","SDK_VERSION","defaultFunctionName","getFunctionName","truncate","max","snipLine","newLine","ll","start","end","safeJoin","delimiter","output","isMatchingPattern","isError","wat","isInstanceOf","isErrorEvent","isDOMError","isDOMException","isString","isPrimitive","isPlainObject","isEvent","Event","isElement","Element","isRegExp","isThenable","Boolean","isSyntheticEvent","base"],"mappings":"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","file":"script/chunks/chunk.vendor-sentry.1366277e85.js","sourcesContent":["import { logger, SentryError } from '@sentry/utils';\nimport { NoopTransport } from './transports/noop';\n/**\n * This is the base implemention of a Backend.\n * @hidden\n */\nvar BaseBackend = /** @class */ (function () {\n /** Creates a new backend instance. */\n function BaseBackend(options) {\n this._options = options;\n if (!this._options.dsn) {\n logger.warn('No DSN provided, backend will not do anything.');\n }\n this._transport = this._setupTransport();\n }\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n BaseBackend.prototype.eventFromException = function (_exception, _hint) {\n throw new SentryError('Backend has to implement `eventFromException` method');\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.eventFromMessage = function (_message, _level, _hint) {\n throw new SentryError('Backend has to implement `eventFromMessage` method');\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.sendEvent = function (event) {\n this._transport.sendEvent(event).then(null, function (reason) {\n logger.error(\"Error while sending event: \" + reason);\n });\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.sendSession = function (session) {\n if (!this._transport.sendSession) {\n logger.warn(\"Dropping session because custom transport doesn't implement sendSession\");\n return;\n }\n this._transport.sendSession(session).then(null, function (reason) {\n logger.error(\"Error while sending session: \" + reason);\n });\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.getTransport = function () {\n return this._transport;\n };\n /**\n * Sets up the transport so it can be used later to send requests.\n */\n BaseBackend.prototype._setupTransport = function () {\n return new NoopTransport();\n };\n return BaseBackend;\n}());\nexport { BaseBackend };\n//# sourceMappingURL=basebackend.js.map","import { __assign } from \"tslib\";\nimport { Severity } from '@sentry/types';\nimport { addExceptionMechanism, addExceptionTypeValue, isDOMError, isDOMException, isError, isErrorEvent, isEvent, isPlainObject, SyncPromise, } from '@sentry/utils';\nimport { eventFromPlainObject, eventFromStacktrace, prepareFramesForEvent } from './parsers';\nimport { computeStackTrace } from './tracekit';\n/**\n * Builds and Event from a Exception\n * @hidden\n */\nexport function eventFromException(options, exception, hint) {\n var syntheticException = (hint && hint.syntheticException) || undefined;\n var event = eventFromUnknownInput(exception, syntheticException, {\n attachStacktrace: options.attachStacktrace,\n });\n addExceptionMechanism(event, {\n handled: true,\n type: 'generic',\n });\n event.level = Severity.Error;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return SyncPromise.resolve(event);\n}\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(options, message, level, hint) {\n if (level === void 0) { level = Severity.Info; }\n var syntheticException = (hint && hint.syntheticException) || undefined;\n var event = eventFromString(message, syntheticException, {\n attachStacktrace: options.attachStacktrace,\n });\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return SyncPromise.resolve(event);\n}\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(exception, syntheticException, options) {\n if (options === void 0) { options = {}; }\n var event;\n if (isErrorEvent(exception) && exception.error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n var errorEvent = exception;\n // eslint-disable-next-line no-param-reassign\n exception = errorEvent.error;\n event = eventFromStacktrace(computeStackTrace(exception));\n return event;\n }\n if (isDOMError(exception) || isDOMException(exception)) {\n // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers)\n // then we just extract the name, code, and message, as they don't provide anything else\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n var domException = exception;\n var name_1 = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n var message = domException.message ? name_1 + \": \" + domException.message : name_1;\n event = eventFromString(message, syntheticException, options);\n addExceptionTypeValue(event, message);\n if ('code' in domException) {\n event.tags = __assign(__assign({}, event.tags), { 'DOMException.code': \"\" + domException.code });\n }\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n event = eventFromStacktrace(computeStackTrace(exception));\n return event;\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it is plain Object or Event, serialize it manually and extract options\n // This will allow us to group events based on top-level keys\n // which is much better than creating new group when any key/value change\n var objectException = exception;\n event = eventFromPlainObject(objectException, syntheticException, options.rejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(exception, syntheticException, options);\n addExceptionTypeValue(event, \"\" + exception, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n}\n/**\n * @hidden\n */\nexport function eventFromString(input, syntheticException, options) {\n if (options === void 0) { options = {}; }\n var event = {\n message: input,\n };\n if (options.attachStacktrace && syntheticException) {\n var stacktrace = computeStackTrace(syntheticException);\n var frames_1 = prepareFramesForEvent(stacktrace.stack);\n event.stacktrace = {\n frames: frames_1,\n };\n }\n return event;\n}\n//# sourceMappingURL=eventbuilder.js.map","/**\n * This was originally forked from https://github.com/occ/TraceKit, but has since been\n * largely modified and is now maintained as part of Sentry JS SDK.\n */\nimport { __assign } from \"tslib\";\n// global reference to slice\nvar UNKNOWN_FUNCTION = '?';\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nvar chrome = /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nvar gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|capacitor).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nvar geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nvar chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nvar reactMinifiedRegexp = /Minified React error #\\d+;/i;\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function computeStackTrace(ex) {\n var stack = null;\n var popSize = 0;\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n popSize = ex.framesToPop;\n }\n else if (reactMinifiedRegexp.test(ex.message)) {\n popSize = 1;\n }\n }\n try {\n // This must be tried first because Opera 10 *destroys*\n // its stacktrace property if you try to access the stack\n // property first!!\n stack = computeStackTraceFromStacktraceProp(ex);\n if (stack) {\n return popFrames(stack, popSize);\n }\n }\n catch (e) {\n // no-empty\n }\n try {\n stack = computeStackTraceFromStackProp(ex);\n if (stack) {\n return popFrames(stack, popSize);\n }\n }\n catch (e) {\n // no-empty\n }\n return {\n message: extractMessage(ex),\n name: ex && ex.name,\n stack: [],\n failed: true,\n };\n}\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, complexity\nfunction computeStackTraceFromStackProp(ex) {\n if (!ex || !ex.stack) {\n return null;\n }\n var stack = [];\n var lines = ex.stack.split('\\n');\n var isEval;\n var submatch;\n var parts;\n var element;\n for (var i = 0; i < lines.length; ++i) {\n if ((parts = chrome.exec(lines[i]))) {\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n // Arpad: Working with the regexp above is super painful. it is quite a hack, but just stripping the `address at `\n // prefix here seems like the quickest solution for now.\n var url = parts[2] && parts[2].indexOf('address at ') === 0 ? parts[2].substr('address at '.length) : parts[2];\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n var func = parts[1] || UNKNOWN_FUNCTION;\n var isSafariExtension = func.indexOf('safari-extension') !== -1;\n var isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n if (isSafariExtension || isSafariWebExtension) {\n func = func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION;\n url = isSafariExtension ? \"safari-extension:\" + url : \"safari-web-extension:\" + url;\n }\n element = {\n url: url,\n func: func,\n args: isNative ? [parts[2]] : [],\n line: parts[3] ? +parts[3] : null,\n column: parts[4] ? +parts[4] : null,\n };\n }\n else if ((parts = winjs.exec(lines[i]))) {\n element = {\n url: parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: [],\n line: +parts[3],\n column: parts[4] ? +parts[4] : null,\n };\n }\n else if ((parts = gecko.exec(lines[i]))) {\n isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || \"eval\";\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = ''; // no column when eval\n }\n else if (i === 0 && !parts[5] && ex.columnNumber !== void 0) {\n // FireFox uses this awesome columnNumber property for its top frame\n // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n // so adding 1\n // NOTE: this hack doesn't work if top-most frame is eval\n stack[0].column = ex.columnNumber + 1;\n }\n element = {\n url: parts[3],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: parts[2] ? parts[2].split(',') : [],\n line: parts[4] ? +parts[4] : null,\n column: parts[5] ? +parts[5] : null,\n };\n }\n else {\n continue;\n }\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n stack.push(element);\n }\n if (!stack.length) {\n return null;\n }\n return {\n message: extractMessage(ex),\n name: ex.name,\n stack: stack,\n };\n}\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction computeStackTraceFromStacktraceProp(ex) {\n if (!ex || !ex.stacktrace) {\n return null;\n }\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n var stacktrace = ex.stacktrace;\n var opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n var opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\((.*)\\))? in (.*):\\s*$/i;\n var lines = stacktrace.split('\\n');\n var stack = [];\n var parts;\n for (var line = 0; line < lines.length; line += 2) {\n var element = null;\n if ((parts = opera10Regex.exec(lines[line]))) {\n element = {\n url: parts[2],\n func: parts[3],\n args: [],\n line: +parts[1],\n column: null,\n };\n }\n else if ((parts = opera11Regex.exec(lines[line]))) {\n element = {\n url: parts[6],\n func: parts[3] || parts[4],\n args: parts[5] ? parts[5].split(',') : [],\n line: +parts[1],\n column: +parts[2],\n };\n }\n if (element) {\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n stack.push(element);\n }\n }\n if (!stack.length) {\n return null;\n }\n return {\n message: extractMessage(ex),\n name: ex.name,\n stack: stack,\n };\n}\n/** Remove N number of frames from the stack */\nfunction popFrames(stacktrace, popSize) {\n try {\n return __assign(__assign({}, stacktrace), { stack: stacktrace.stack.slice(popSize) });\n }\n catch (e) {\n return stacktrace;\n }\n}\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extractMessage(ex) {\n var message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n//# sourceMappingURL=tracekit.js.map","export var setPrototypeOf = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties);\n/**\n * setPrototypeOf polyfill using __proto__\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction setProtoOf(obj, proto) {\n // @ts-ignore __proto__ does not exist on obj\n obj.__proto__ = proto;\n return obj;\n}\n/**\n * setPrototypeOf polyfill using mixin\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction mixinProperties(obj, proto) {\n for (var prop in proto) {\n // eslint-disable-next-line no-prototype-builtins\n if (!obj.hasOwnProperty(prop)) {\n // @ts-ignore typescript complains about indexing so we remove\n obj[prop] = proto[prop];\n }\n }\n return obj;\n}\n//# sourceMappingURL=polyfill.js.map","import { __extends } from \"tslib\";\nimport { setPrototypeOf } from './polyfill';\n/** An error emitted by Sentry SDKs and related utilities. */\nvar SentryError = /** @class */ (function (_super) {\n __extends(SentryError, _super);\n function SentryError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n _this.message = message;\n _this.name = _newTarget.prototype.constructor.name;\n setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return SentryError;\n}(Error));\nexport { SentryError };\n//# sourceMappingURL=error.js.map","import { extractExceptionKeysForMessage, isEvent, normalizeToSize } from '@sentry/utils';\nimport { computeStackTrace } from './tracekit';\nvar STACKTRACE_LIMIT = 50;\n/**\n * This function creates an exception from an TraceKitStackTrace\n * @param stacktrace TraceKitStackTrace that will be converted to an exception\n * @hidden\n */\nexport function exceptionFromStacktrace(stacktrace) {\n var frames = prepareFramesForEvent(stacktrace.stack);\n var exception = {\n type: stacktrace.name,\n value: stacktrace.message,\n };\n if (frames && frames.length) {\n exception.stacktrace = { frames: frames };\n }\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n return exception;\n}\n/**\n * @hidden\n */\nexport function eventFromPlainObject(exception, syntheticException, rejection) {\n var event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : rejection ? 'UnhandledRejection' : 'Error',\n value: \"Non-Error \" + (rejection ? 'promise rejection' : 'exception') + \" captured with keys: \" + extractExceptionKeysForMessage(exception),\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n };\n if (syntheticException) {\n var stacktrace = computeStackTrace(syntheticException);\n var frames_1 = prepareFramesForEvent(stacktrace.stack);\n event.stacktrace = {\n frames: frames_1,\n };\n }\n return event;\n}\n/**\n * @hidden\n */\nexport function eventFromStacktrace(stacktrace) {\n var exception = exceptionFromStacktrace(stacktrace);\n return {\n exception: {\n values: [exception],\n },\n };\n}\n/**\n * @hidden\n */\nexport function prepareFramesForEvent(stack) {\n if (!stack || !stack.length) {\n return [];\n }\n var localStack = stack;\n var firstFrameFunction = localStack[0].func || '';\n var lastFrameFunction = localStack[localStack.length - 1].func || '';\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n localStack = localStack.slice(1);\n }\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n localStack = localStack.slice(0, -1);\n }\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .slice(0, STACKTRACE_LIMIT)\n .map(function (frame) { return ({\n colno: frame.column === null ? undefined : frame.column,\n filename: frame.url || localStack[0].url,\n function: frame.func || '?',\n in_app: true,\n lineno: frame.line === null ? undefined : frame.line,\n }); })\n .reverse();\n}\n//# sourceMappingURL=parsers.js.map","/** The status of an event. */\n// eslint-disable-next-line import/export\nexport var Status;\n(function (Status) {\n /** The status could not be determined. */\n Status[\"Unknown\"] = \"unknown\";\n /** The event was skipped due to configuration or callbacks. */\n Status[\"Skipped\"] = \"skipped\";\n /** The event was sent to Sentry successfully. */\n Status[\"Success\"] = \"success\";\n /** The client is currently rate limited and will try again later. */\n Status[\"RateLimit\"] = \"rate_limit\";\n /** The event could not be processed. */\n Status[\"Invalid\"] = \"invalid\";\n /** A server-side error ocurred during submission. */\n Status[\"Failed\"] = \"failed\";\n})(Status || (Status = {}));\n// eslint-disable-next-line @typescript-eslint/no-namespace, import/export\n(function (Status) {\n /**\n * Converts a HTTP status code into a {@link Status}.\n *\n * @param code The HTTP response status code.\n * @returns The send status or {@link Status.Unknown}.\n */\n function fromHttpCode(code) {\n if (code >= 200 && code < 300) {\n return Status.Success;\n }\n if (code === 429) {\n return Status.RateLimit;\n }\n if (code >= 400 && code < 500) {\n return Status.Invalid;\n }\n if (code >= 500) {\n return Status.Failed;\n }\n return Status.Unknown;\n }\n Status.fromHttpCode = fromHttpCode;\n})(Status || (Status = {}));\n//# sourceMappingURL=status.js.map","/**\n * Session Status\n */\nexport var SessionStatus;\n(function (SessionStatus) {\n /** JSDoc */\n SessionStatus[\"Ok\"] = \"ok\";\n /** JSDoc */\n SessionStatus[\"Exited\"] = \"exited\";\n /** JSDoc */\n SessionStatus[\"Crashed\"] = \"crashed\";\n /** JSDoc */\n SessionStatus[\"Abnormal\"] = \"abnormal\";\n})(SessionStatus || (SessionStatus = {}));\nexport var RequestSessionStatus;\n(function (RequestSessionStatus) {\n /** JSDoc */\n RequestSessionStatus[\"Ok\"] = \"ok\";\n /** JSDoc */\n RequestSessionStatus[\"Errored\"] = \"errored\";\n /** JSDoc */\n RequestSessionStatus[\"Crashed\"] = \"crashed\";\n})(RequestSessionStatus || (RequestSessionStatus = {}));\n//# sourceMappingURL=session.js.map","import { __read, __spread } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { isInstanceOf } from '@sentry/utils';\nimport { exceptionFromStacktrace } from '../parsers';\nimport { computeStackTrace } from '../tracekit';\nvar DEFAULT_KEY = 'cause';\nvar DEFAULT_LIMIT = 5;\n/** Adds SDK info to an event. */\nvar LinkedErrors = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function LinkedErrors(options) {\n if (options === void 0) { options = {}; }\n /**\n * @inheritDoc\n */\n this.name = LinkedErrors.id;\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n /**\n * @inheritDoc\n */\n LinkedErrors.prototype.setupOnce = function () {\n addGlobalEventProcessor(function (event, hint) {\n var self = getCurrentHub().getIntegration(LinkedErrors);\n if (self) {\n return self._handler(event, hint);\n }\n return event;\n });\n };\n /**\n * @inheritDoc\n */\n LinkedErrors.prototype._handler = function (event, hint) {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n var linkedErrors = this._walkErrorTree(hint.originalException, this._key);\n event.exception.values = __spread(linkedErrors, event.exception.values);\n return event;\n };\n /**\n * @inheritDoc\n */\n LinkedErrors.prototype._walkErrorTree = function (error, key, stack) {\n if (stack === void 0) { stack = []; }\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= this._limit) {\n return stack;\n }\n var stacktrace = computeStackTrace(error[key]);\n var exception = exceptionFromStacktrace(stacktrace);\n return this._walkErrorTree(error[key], key, __spread([exception], stack));\n };\n /**\n * @inheritDoc\n */\n LinkedErrors.id = 'LinkedErrors';\n return LinkedErrors;\n}());\nexport { LinkedErrors };\n//# sourceMappingURL=linkederrors.js.map","import { SentryError } from './error';\nimport { SyncPromise } from './syncpromise';\n/** A simple queue that holds promises. */\nvar PromiseBuffer = /** @class */ (function () {\n function PromiseBuffer(_limit) {\n this._limit = _limit;\n /** Internal set of queued Promises */\n this._buffer = [];\n }\n /**\n * Says if the buffer is ready to take more requests\n */\n PromiseBuffer.prototype.isReady = function () {\n return this._limit === undefined || this.length() < this._limit;\n };\n /**\n * Add a promise to the queue.\n *\n * @param task Can be any PromiseLike\n * @returns The original promise.\n */\n PromiseBuffer.prototype.add = function (task) {\n var _this = this;\n if (!this.isReady()) {\n return SyncPromise.reject(new SentryError('Not adding Promise due to buffer limit reached.'));\n }\n if (this._buffer.indexOf(task) === -1) {\n this._buffer.push(task);\n }\n task\n .then(function () { return _this.remove(task); })\n .then(null, function () {\n return _this.remove(task).then(null, function () {\n // We have to add this catch here otherwise we have an unhandledPromiseRejection\n // because it's a new Promise chain.\n });\n });\n return task;\n };\n /**\n * Remove a promise to the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n PromiseBuffer.prototype.remove = function (task) {\n var removedTask = this._buffer.splice(this._buffer.indexOf(task), 1)[0];\n return removedTask;\n };\n /**\n * This function returns the number of unresolved promises in the queue.\n */\n PromiseBuffer.prototype.length = function () {\n return this._buffer.length;\n };\n /**\n * This will drain the whole queue, returns true if queue is empty or drained.\n * If timeout is provided and the queue takes longer to drain, the promise still resolves but with false.\n *\n * @param timeout Number in ms to wait until it resolves with false.\n */\n PromiseBuffer.prototype.drain = function (timeout) {\n var _this = this;\n return new SyncPromise(function (resolve) {\n var capturedSetTimeout = setTimeout(function () {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n SyncPromise.all(_this._buffer)\n .then(function () {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n })\n .then(null, function () {\n resolve(true);\n });\n });\n };\n return PromiseBuffer;\n}());\nexport { PromiseBuffer };\n//# sourceMappingURL=promisebuffer.js.map","import { __values } from \"tslib\";\nimport { API } from '@sentry/core';\nimport { Status, } from '@sentry/types';\nimport { logger, parseRetryAfterHeader, PromiseBuffer, SentryError } from '@sentry/utils';\nvar CATEGORY_MAPPING = {\n event: 'error',\n transaction: 'transaction',\n session: 'session',\n attachment: 'attachment',\n};\n/** Base Transport class implementation */\nvar BaseTransport = /** @class */ (function () {\n function BaseTransport(options) {\n this.options = options;\n /** A simple buffer holding all requests. */\n this._buffer = new PromiseBuffer(30);\n /** Locks transport after receiving rate limits in a response */\n this._rateLimits = {};\n this._api = new API(options.dsn, options._metadata);\n // eslint-disable-next-line deprecation/deprecation\n this.url = this._api.getStoreEndpointWithUrlEncodedAuth();\n }\n /**\n * @inheritDoc\n */\n BaseTransport.prototype.sendEvent = function (_) {\n throw new SentryError('Transport Class has to implement `sendEvent` method');\n };\n /**\n * @inheritDoc\n */\n BaseTransport.prototype.close = function (timeout) {\n return this._buffer.drain(timeout);\n };\n /**\n * Handle Sentry repsonse for promise-based transports.\n */\n BaseTransport.prototype._handleResponse = function (_a) {\n var requestType = _a.requestType, response = _a.response, headers = _a.headers, resolve = _a.resolve, reject = _a.reject;\n var status = Status.fromHttpCode(response.status);\n /**\n * \"The name is case-insensitive.\"\n * https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n */\n var limited = this._handleRateLimit(headers);\n if (limited)\n logger.warn(\"Too many requests, backing off until: \" + this._disabledUntil(requestType));\n if (status === Status.Success) {\n resolve({ status: status });\n return;\n }\n reject(response);\n };\n /**\n * Gets the time that given category is disabled until for rate limiting\n */\n BaseTransport.prototype._disabledUntil = function (requestType) {\n var category = CATEGORY_MAPPING[requestType];\n return this._rateLimits[category] || this._rateLimits.all;\n };\n /**\n * Checks if a category is rate limited\n */\n BaseTransport.prototype._isRateLimited = function (requestType) {\n return this._disabledUntil(requestType) > new Date(Date.now());\n };\n /**\n * Sets internal _rateLimits from incoming headers. Returns true if headers contains a non-empty rate limiting header.\n */\n BaseTransport.prototype._handleRateLimit = function (headers) {\n var e_1, _a, e_2, _b;\n var now = Date.now();\n var rlHeader = headers['x-sentry-rate-limits'];\n var raHeader = headers['retry-after'];\n if (rlHeader) {\n try {\n // rate limit headers are of the form\n //
,
,..\n // where each
is of the form\n // : : : \n // where\n // is a delay in ms\n // is the event type(s) (error, transaction, etc) being rate limited and is of the form\n // ;;...\n // is what's being limited (org, project, or key) - ignored by SDK\n // is an arbitrary string like \"org_quota\" - ignored by SDK\n for (var _c = __values(rlHeader.trim().split(',')), _d = _c.next(); !_d.done; _d = _c.next()) {\n var limit = _d.value;\n var parameters = limit.split(':', 2);\n var headerDelay = parseInt(parameters[0], 10);\n var delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n try {\n for (var _e = (e_2 = void 0, __values(parameters[1].split(';'))), _f = _e.next(); !_f.done; _f = _e.next()) {\n var category = _f.value;\n this._rateLimits[category || 'all'] = new Date(now + delay);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return true;\n }\n else if (raHeader) {\n this._rateLimits.all = new Date(now + parseRetryAfterHeader(now, raHeader));\n return true;\n }\n return false;\n };\n return BaseTransport;\n}());\nexport { BaseTransport };\n//# sourceMappingURL=base.js.map","import { logger } from './logger';\nimport { getGlobalObject } from './misc';\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent() {\n try {\n new ErrorEvent('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError() {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException() {\n try {\n new DOMException('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch() {\n if (!('fetch' in getGlobalObject())) {\n return false;\n }\n try {\n new Headers();\n new Request('');\n new Response();\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFetch(func) {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch() {\n if (!supportsFetch()) {\n return false;\n }\n var global = getGlobalObject();\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(global.fetch)) {\n return true;\n }\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n var result = false;\n var doc = global.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof doc.createElement === \"function\") {\n try {\n var sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n }\n catch (err) {\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n return result;\n}\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver() {\n return 'ReportingObserver' in getGlobalObject();\n}\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy() {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n if (!supportsFetch()) {\n return false;\n }\n try {\n new Request('_', {\n referrerPolicy: 'origin',\n });\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory() {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n var global = getGlobalObject();\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var chrome = global.chrome;\n var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n var hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n return !isChromePackagedApp && hasHistoryApi;\n}\n//# sourceMappingURL=supports.js.map","/** JSDoc */\n// eslint-disable-next-line import/export\nexport var Severity;\n(function (Severity) {\n /** JSDoc */\n Severity[\"Fatal\"] = \"fatal\";\n /** JSDoc */\n Severity[\"Error\"] = \"error\";\n /** JSDoc */\n Severity[\"Warning\"] = \"warning\";\n /** JSDoc */\n Severity[\"Log\"] = \"log\";\n /** JSDoc */\n Severity[\"Info\"] = \"info\";\n /** JSDoc */\n Severity[\"Debug\"] = \"debug\";\n /** JSDoc */\n Severity[\"Critical\"] = \"critical\";\n})(Severity || (Severity = {}));\n// eslint-disable-next-line @typescript-eslint/no-namespace, import/export\n(function (Severity) {\n /**\n * Converts a string-based level into a {@link Severity}.\n *\n * @param level string representation of Severity\n * @returns Severity\n */\n function fromString(level) {\n switch (level) {\n case 'debug':\n return Severity.Debug;\n case 'info':\n return Severity.Info;\n case 'warn':\n case 'warning':\n return Severity.Warning;\n case 'error':\n return Severity.Error;\n case 'fatal':\n return Severity.Fatal;\n case 'critical':\n return Severity.Critical;\n case 'log':\n default:\n return Severity.Log;\n }\n }\n Severity.fromString = fromString;\n})(Severity || (Severity = {}));\n//# sourceMappingURL=severity.js.map","import { Status } from '@sentry/types';\nimport { SyncPromise } from '@sentry/utils';\n/** Noop transport */\nvar NoopTransport = /** @class */ (function () {\n function NoopTransport() {\n }\n /**\n * @inheritDoc\n */\n NoopTransport.prototype.sendEvent = function (_) {\n return SyncPromise.resolve({\n reason: \"NoopTransport: Event has been skipped because no Dsn is configured.\",\n status: Status.Skipped,\n });\n };\n /**\n * @inheritDoc\n */\n NoopTransport.prototype.close = function (_) {\n return SyncPromise.resolve(true);\n };\n return NoopTransport;\n}());\nexport { NoopTransport };\n//# sourceMappingURL=noop.js.map","import { __assign, __read, __spread } from \"tslib\";\nimport { dateTimestampInSeconds, getGlobalObject, isPlainObject, isThenable, SyncPromise } from '@sentry/utils';\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nvar Scope = /** @class */ (function () {\n function Scope() {\n /** Flag if notifiying is happening. */\n this._notifyingListeners = false;\n /** Callback for client to receive scope changes. */\n this._scopeListeners = [];\n /** Callback list that will be called after {@link applyToEvent}. */\n this._eventProcessors = [];\n /** Array of breadcrumbs. */\n this._breadcrumbs = [];\n /** User */\n this._user = {};\n /** Tags */\n this._tags = {};\n /** Extra */\n this._extra = {};\n /** Contexts */\n this._contexts = {};\n }\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n Scope.clone = function (scope) {\n var newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = __spread(scope._breadcrumbs);\n newScope._tags = __assign({}, scope._tags);\n newScope._extra = __assign({}, scope._extra);\n newScope._contexts = __assign({}, scope._contexts);\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = __spread(scope._eventProcessors);\n newScope._requestSession = scope._requestSession;\n }\n return newScope;\n };\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n Scope.prototype.addScopeListener = function (callback) {\n this._scopeListeners.push(callback);\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.addEventProcessor = function (callback) {\n this._eventProcessors.push(callback);\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setUser = function (user) {\n this._user = user || {};\n if (this._session) {\n this._session.update({ user: user });\n }\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.getUser = function () {\n return this._user;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.getRequestSession = function () {\n return this._requestSession;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setRequestSession = function (requestSession) {\n this._requestSession = requestSession;\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setTags = function (tags) {\n this._tags = __assign(__assign({}, this._tags), tags);\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setTag = function (key, value) {\n var _a;\n this._tags = __assign(__assign({}, this._tags), (_a = {}, _a[key] = value, _a));\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setExtras = function (extras) {\n this._extra = __assign(__assign({}, this._extra), extras);\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setExtra = function (key, extra) {\n var _a;\n this._extra = __assign(__assign({}, this._extra), (_a = {}, _a[key] = extra, _a));\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setFingerprint = function (fingerprint) {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setLevel = function (level) {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setTransactionName = function (name) {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * Can be removed in major version.\n * @deprecated in favor of {@link this.setTransactionName}\n */\n Scope.prototype.setTransaction = function (name) {\n return this.setTransactionName(name);\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setContext = function (key, context) {\n var _a;\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n }\n else {\n this._contexts = __assign(__assign({}, this._contexts), (_a = {}, _a[key] = context, _a));\n }\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setSpan = function (span) {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.getSpan = function () {\n return this._span;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.getTransaction = function () {\n var _a, _b, _c, _d;\n // often, this span will be a transaction, but it's not guaranteed to be\n var span = this.getSpan();\n // try it the new way first\n if ((_a = span) === null || _a === void 0 ? void 0 : _a.transaction) {\n return (_b = span) === null || _b === void 0 ? void 0 : _b.transaction;\n }\n // fallback to the old way (known bug: this only finds transactions with sampled = true)\n if ((_d = (_c = span) === null || _c === void 0 ? void 0 : _c.spanRecorder) === null || _d === void 0 ? void 0 : _d.spans[0]) {\n return span.spanRecorder.spans[0];\n }\n // neither way found a transaction\n return undefined;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setSession = function (session) {\n if (!session) {\n delete this._session;\n }\n else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.getSession = function () {\n return this._session;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.update = function (captureContext) {\n if (!captureContext) {\n return this;\n }\n if (typeof captureContext === 'function') {\n var updatedScope = captureContext(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n if (captureContext instanceof Scope) {\n this._tags = __assign(__assign({}, this._tags), captureContext._tags);\n this._extra = __assign(__assign({}, this._extra), captureContext._extra);\n this._contexts = __assign(__assign({}, this._contexts), captureContext._contexts);\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n if (captureContext._requestSession) {\n this._requestSession = captureContext._requestSession;\n }\n }\n else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext;\n this._tags = __assign(__assign({}, this._tags), captureContext.tags);\n this._extra = __assign(__assign({}, this._extra), captureContext.extra);\n this._contexts = __assign(__assign({}, this._contexts), captureContext.contexts);\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n if (captureContext.requestSession) {\n this._requestSession = captureContext.requestSession;\n }\n }\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.clear = function () {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.addBreadcrumb = function (breadcrumb, maxBreadcrumbs) {\n var mergedBreadcrumb = __assign({ timestamp: dateTimestampInSeconds() }, breadcrumb);\n this._breadcrumbs =\n maxBreadcrumbs !== undefined && maxBreadcrumbs >= 0\n ? __spread(this._breadcrumbs, [mergedBreadcrumb]).slice(-maxBreadcrumbs)\n : __spread(this._breadcrumbs, [mergedBreadcrumb]);\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.clearBreadcrumbs = function () {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n };\n /**\n * Applies the current context and fingerprint to the event.\n * Note that breadcrumbs will be added by the client.\n * Also if the event has already breadcrumbs on it, we do not merge them.\n * @param event Event\n * @param hint May contain additional informartion about the original exception.\n * @hidden\n */\n Scope.prototype.applyToEvent = function (event, hint) {\n var _a;\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = __assign(__assign({}, this._extra), event.extra);\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = __assign(__assign({}, this._tags), event.tags);\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = __assign(__assign({}, this._user), event.user);\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = __assign(__assign({}, this._contexts), event.contexts);\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relys on that.\n if (this._span) {\n event.contexts = __assign({ trace: this._span.getTraceContext() }, event.contexts);\n var transactionName = (_a = this._span.transaction) === null || _a === void 0 ? void 0 : _a.name;\n if (transactionName) {\n event.tags = __assign({ transaction: transactionName }, event.tags);\n }\n }\n this._applyFingerprint(event);\n event.breadcrumbs = __spread((event.breadcrumbs || []), this._breadcrumbs);\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n return this._notifyEventProcessors(__spread(getGlobalEventProcessors(), this._eventProcessors), event, hint);\n };\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n Scope.prototype._notifyEventProcessors = function (processors, event, hint, index) {\n var _this = this;\n if (index === void 0) { index = 0; }\n return new SyncPromise(function (resolve, reject) {\n var processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n }\n else {\n var result = processor(__assign({}, event), hint);\n if (isThenable(result)) {\n result\n .then(function (final) { return _this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve); })\n .then(null, reject);\n }\n else {\n _this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n };\n /**\n * This will be called on every set call.\n */\n Scope.prototype._notifyScopeListeners = function () {\n var _this = this;\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(function (callback) {\n callback(_this);\n });\n this._notifyingListeners = false;\n }\n };\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n Scope.prototype._applyFingerprint = function (event) {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n };\n return Scope;\n}());\nexport { Scope };\n/**\n * Retruns the global event processors.\n */\nfunction getGlobalEventProcessors() {\n /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\n var global = getGlobalObject();\n global.__SENTRY__ = global.__SENTRY__ || {};\n global.__SENTRY__.globalEventProcessors = global.__SENTRY__.globalEventProcessors || [];\n return global.__SENTRY__.globalEventProcessors;\n /* eslint-enable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\n}\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback) {\n getGlobalEventProcessors().push(callback);\n}\n//# sourceMappingURL=scope.js.map","import { isString } from './is';\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(elem) {\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n var currentElem = elem;\n var MAX_TRAVERSE_HEIGHT = 5;\n var MAX_OUTPUT_LEN = 80;\n var out = [];\n var height = 0;\n var len = 0;\n var separator = ' > ';\n var sepLength = separator.length;\n var nextStr = void 0;\n // eslint-disable-next-line no-plusplus\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n break;\n }\n out.push(nextStr);\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n return out.reverse().join(separator);\n }\n catch (_oO) {\n return '';\n }\n}\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el) {\n var elem = el;\n var out = [];\n var className;\n var classes;\n var key;\n var attr;\n var i;\n if (!elem || !elem.tagName) {\n return '';\n }\n out.push(elem.tagName.toLowerCase());\n if (elem.id) {\n out.push(\"#\" + elem.id);\n }\n // eslint-disable-next-line prefer-const\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(\".\" + classes[i]);\n }\n }\n var allowedAttrs = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(\"[\" + key + \"=\\\"\" + attr + \"\\\"]\");\n }\n }\n return out.join('');\n}\n//# sourceMappingURL=browser.js.map","/** Deduplication filter */\nvar Dedupe = /** @class */ (function () {\n function Dedupe() {\n /**\n * @inheritDoc\n */\n this.name = Dedupe.id;\n }\n /**\n * @inheritDoc\n */\n Dedupe.prototype.setupOnce = function (addGlobalEventProcessor, getCurrentHub) {\n addGlobalEventProcessor(function (currentEvent) {\n var self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (self._shouldDropEvent(currentEvent, self._previousEvent)) {\n return null;\n }\n }\n catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n });\n };\n /** JSDoc */\n Dedupe.prototype._shouldDropEvent = function (currentEvent, previousEvent) {\n if (!previousEvent) {\n return false;\n }\n if (this._isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n if (this._isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n return false;\n };\n /** JSDoc */\n Dedupe.prototype._isSameMessageEvent = function (currentEvent, previousEvent) {\n var currentMessage = currentEvent.message;\n var previousMessage = previousEvent.message;\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n if (currentMessage !== previousMessage) {\n return false;\n }\n if (!this._isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n if (!this._isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n return true;\n };\n /** JSDoc */\n Dedupe.prototype._getFramesFromEvent = function (event) {\n var exception = event.exception;\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n }\n catch (_oO) {\n return undefined;\n }\n }\n else if (event.stacktrace) {\n return event.stacktrace.frames;\n }\n return undefined;\n };\n /** JSDoc */\n Dedupe.prototype._isSameStacktrace = function (currentEvent, previousEvent) {\n var currentFrames = this._getFramesFromEvent(currentEvent);\n var previousFrames = this._getFramesFromEvent(previousEvent);\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n currentFrames = currentFrames;\n previousFrames = previousFrames;\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n // Otherwise, compare the two\n for (var i = 0; i < previousFrames.length; i++) {\n var frameA = previousFrames[i];\n var frameB = currentFrames[i];\n if (frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function) {\n return false;\n }\n }\n return true;\n };\n /** JSDoc */\n Dedupe.prototype._getExceptionFromEvent = function (event) {\n return event.exception && event.exception.values && event.exception.values[0];\n };\n /** JSDoc */\n Dedupe.prototype._isSameExceptionEvent = function (currentEvent, previousEvent) {\n var previousException = this._getExceptionFromEvent(previousEvent);\n var currentException = this._getExceptionFromEvent(currentEvent);\n if (!previousException || !currentException) {\n return false;\n }\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n if (!this._isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n if (!this._isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n return true;\n };\n /** JSDoc */\n Dedupe.prototype._isSameFingerprint = function (currentEvent, previousEvent) {\n var currentFingerprint = currentEvent.fingerprint;\n var previousFingerprint = previousEvent.fingerprint;\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n currentFingerprint = currentFingerprint;\n previousFingerprint = previousFingerprint;\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n }\n catch (_oO) {\n return false;\n }\n };\n /**\n * @inheritDoc\n */\n Dedupe.id = 'Dedupe';\n return Dedupe;\n}());\nexport { Dedupe };\n//# sourceMappingURL=dedupe.js.map","import { __assign, __read, __spread } from \"tslib\";\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable max-lines */\nimport { getCurrentHub } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { addInstrumentationHandler, getEventDescription, getGlobalObject, htmlTreeAsString, parseUrl, safeJoin, } from '@sentry/utils';\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nvar Breadcrumbs = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function Breadcrumbs(options) {\n /**\n * @inheritDoc\n */\n this.name = Breadcrumbs.id;\n this._options = __assign({ console: true, dom: true, fetch: true, history: true, sentry: true, xhr: true }, options);\n }\n /**\n * Create a breadcrumb of `sentry` from the events themselves\n */\n Breadcrumbs.prototype.addSentryBreadcrumb = function (event) {\n if (!this._options.sentry) {\n return;\n }\n getCurrentHub().addBreadcrumb({\n category: \"sentry.\" + (event.type === 'transaction' ? 'transaction' : 'event'),\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n }, {\n event: event,\n });\n };\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n Breadcrumbs.prototype.setupOnce = function () {\n var _this = this;\n if (this._options.console) {\n addInstrumentationHandler({\n callback: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this._consoleBreadcrumb.apply(_this, __spread(args));\n },\n type: 'console',\n });\n }\n if (this._options.dom) {\n addInstrumentationHandler({\n callback: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this._domBreadcrumb.apply(_this, __spread(args));\n },\n type: 'dom',\n });\n }\n if (this._options.xhr) {\n addInstrumentationHandler({\n callback: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this._xhrBreadcrumb.apply(_this, __spread(args));\n },\n type: 'xhr',\n });\n }\n if (this._options.fetch) {\n addInstrumentationHandler({\n callback: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this._fetchBreadcrumb.apply(_this, __spread(args));\n },\n type: 'fetch',\n });\n }\n if (this._options.history) {\n addInstrumentationHandler({\n callback: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this._historyBreadcrumb.apply(_this, __spread(args));\n },\n type: 'history',\n });\n }\n };\n /**\n * Creates breadcrumbs from console API calls\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Breadcrumbs.prototype._consoleBreadcrumb = function (handlerData) {\n var breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: Severity.fromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = \"Assertion failed: \" + (safeJoin(handlerData.args.slice(1), ' ') || 'console.assert');\n breadcrumb.data.arguments = handlerData.args.slice(1);\n }\n else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n };\n /**\n * Creates breadcrumbs from DOM API calls\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Breadcrumbs.prototype._domBreadcrumb = function (handlerData) {\n var target;\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target)\n : htmlTreeAsString(handlerData.event);\n }\n catch (e) {\n target = '';\n }\n if (target.length === 0) {\n return;\n }\n getCurrentHub().addBreadcrumb({\n category: \"ui.\" + handlerData.name,\n message: target,\n }, {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n });\n };\n /**\n * Creates breadcrumbs from XHR API calls\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Breadcrumbs.prototype._xhrBreadcrumb = function (handlerData) {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n var _a = handlerData.xhr.__sentry_xhr__ || {}, method = _a.method, url = _a.url, status_code = _a.status_code, body = _a.body;\n getCurrentHub().addBreadcrumb({\n category: 'xhr',\n data: {\n method: method,\n url: url,\n status_code: status_code,\n },\n type: 'http',\n }, {\n xhr: handlerData.xhr,\n input: body,\n });\n return;\n }\n };\n /**\n * Creates breadcrumbs from fetch API calls\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Breadcrumbs.prototype._fetchBreadcrumb = function (handlerData) {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb({\n category: 'fetch',\n data: handlerData.fetchData,\n level: Severity.Error,\n type: 'http',\n }, {\n data: handlerData.error,\n input: handlerData.args,\n });\n }\n else {\n getCurrentHub().addBreadcrumb({\n category: 'fetch',\n data: __assign(__assign({}, handlerData.fetchData), { status_code: handlerData.response.status }),\n type: 'http',\n }, {\n input: handlerData.args,\n response: handlerData.response,\n });\n }\n };\n /**\n * Creates breadcrumbs from history API calls\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Breadcrumbs.prototype._historyBreadcrumb = function (handlerData) {\n var global = getGlobalObject();\n var from = handlerData.from;\n var to = handlerData.to;\n var parsedLoc = parseUrl(global.location.href);\n var parsedFrom = parseUrl(from);\n var parsedTo = parseUrl(to);\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from: from,\n to: to,\n },\n });\n };\n /**\n * @inheritDoc\n */\n Breadcrumbs.id = 'Breadcrumbs';\n return Breadcrumbs;\n}());\nexport { Breadcrumbs };\n//# sourceMappingURL=breadcrumbs.js.map","import { __assign, __extends } from \"tslib\";\nimport { BaseBackend } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { supportsFetch } from '@sentry/utils';\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { FetchTransport, XHRTransport } from './transports';\n/**\n * The Sentry Browser SDK Backend.\n * @hidden\n */\nvar BrowserBackend = /** @class */ (function (_super) {\n __extends(BrowserBackend, _super);\n function BrowserBackend() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @inheritDoc\n */\n BrowserBackend.prototype.eventFromException = function (exception, hint) {\n return eventFromException(this._options, exception, hint);\n };\n /**\n * @inheritDoc\n */\n BrowserBackend.prototype.eventFromMessage = function (message, level, hint) {\n if (level === void 0) { level = Severity.Info; }\n return eventFromMessage(this._options, message, level, hint);\n };\n /**\n * @inheritDoc\n */\n BrowserBackend.prototype._setupTransport = function () {\n if (!this._options.dsn) {\n // We return the noop transport here in case there is no Dsn.\n return _super.prototype._setupTransport.call(this);\n }\n var transportOptions = __assign(__assign({}, this._options.transportOptions), { dsn: this._options.dsn, _metadata: this._options._metadata });\n if (this._options.transport) {\n return new this._options.transport(transportOptions);\n }\n if (supportsFetch()) {\n return new FetchTransport(transportOptions);\n }\n return new XHRTransport(transportOptions);\n };\n return BrowserBackend;\n}(BaseBackend));\nexport { BrowserBackend };\n//# sourceMappingURL=backend.js.map","import { __assign, __extends } from \"tslib\";\nimport { BaseClient, SDK_VERSION } from '@sentry/core';\nimport { getGlobalObject, logger } from '@sentry/utils';\nimport { BrowserBackend } from './backend';\nimport { injectReportDialog } from './helpers';\nimport { Breadcrumbs } from './integrations';\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nvar BrowserClient = /** @class */ (function (_super) {\n __extends(BrowserClient, _super);\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n function BrowserClient(options) {\n if (options === void 0) { options = {}; }\n var _this = this;\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.browser',\n packages: [\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n _this = _super.call(this, BrowserBackend, options) || this;\n return _this;\n }\n /**\n * Show a report dialog to the user to send feedback to a specific event.\n *\n * @param options Set individual options for the dialog\n */\n BrowserClient.prototype.showReportDialog = function (options) {\n if (options === void 0) { options = {}; }\n // doesn't work without a document (React Native)\n var document = getGlobalObject().document;\n if (!document) {\n return;\n }\n if (!this._isEnabled()) {\n logger.error('Trying to call showReportDialog with Sentry Client disabled');\n return;\n }\n injectReportDialog(__assign(__assign({}, options), { dsn: options.dsn || this.getDsn() }));\n };\n /**\n * @inheritDoc\n */\n BrowserClient.prototype._prepareEvent = function (event, scope, hint) {\n event.platform = event.platform || 'javascript';\n return _super.prototype._prepareEvent.call(this, event, scope, hint);\n };\n /**\n * @inheritDoc\n */\n BrowserClient.prototype._sendEvent = function (event) {\n var integration = this.getIntegration(Breadcrumbs);\n if (integration) {\n integration.addSentryBreadcrumb(event);\n }\n _super.prototype._sendEvent.call(this, event);\n };\n return BrowserClient;\n}(BaseClient));\nexport { BrowserClient };\n//# sourceMappingURL=client.js.map","import { getGlobalObject } from './misc';\nimport { dynamicRequire, isNodeEnv } from './node';\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nvar dateTimestampSource = {\n nowSeconds: function () { return Date.now() / 1000; },\n};\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance() {\n var performance = getGlobalObject().performance;\n if (!performance || !performance.now) {\n return undefined;\n }\n // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n //\n // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n // performance.now() gives a date arbitrarily in the past.\n //\n // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n // undefined.\n //\n // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n // interact with data coming out of performance entries.\n //\n // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n // observed skews that can be as long as days, weeks or months.\n //\n // See https://github.com/getsentry/sentry-javascript/issues/2590.\n //\n // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n // transactions of long-lived web pages.\n var timeOrigin = Date.now() - performance.now();\n return {\n now: function () { return performance.now(); },\n timeOrigin: timeOrigin,\n };\n}\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance() {\n try {\n var perfHooks = dynamicRequire(module, 'perf_hooks');\n return perfHooks.performance;\n }\n catch (_) {\n return undefined;\n }\n}\n/**\n * The Performance API implementation for the current platform, if available.\n */\nvar platformPerformance = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\nvar timestampSource = platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: function () { return (platformPerformance.timeOrigin + platformPerformance.now()) / 1000; },\n };\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nexport var dateTimestampInSeconds = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nexport var timestampInSeconds = timestampSource.nowSeconds.bind(timestampSource);\n// Re-exported with an old name for backwards-compatibility.\nexport var timestampWithMs = timestampInSeconds;\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nexport var usingPerformanceAPI = platformPerformance !== undefined;\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nexport var _browserPerformanceTimeOriginMode;\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nexport var browserPerformanceTimeOrigin = (function () {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n var performance = getGlobalObject().performance;\n if (!performance) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n var threshold = 3600 * 1000;\n var performanceNow = performance.now();\n var dateNow = Date.now();\n // if timeOrigin isn't available set delta to threshold so it isn't used\n var timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n var timeOriginIsReliable = timeOriginDelta < threshold;\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n var navigationStart = performance.timing && performance.timing.navigationStart;\n var hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n var navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n var navigationStartIsReliable = navigationStartDelta < threshold;\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n }\n else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n//# sourceMappingURL=time.js.map","import { __assign } from \"tslib\";\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { configureScope } from '@sentry/minimal';\nvar ACTION_BREADCRUMB_CATEGORY = 'redux.action';\nvar ACTION_BREADCRUMB_TYPE = 'info';\nvar STATE_CONTEXT_KEY = 'redux.state';\nvar defaultOptions = {\n actionTransformer: function (action) { return action; },\n stateTransformer: function (state) { return state || null; },\n};\n/**\n * Creates an enhancer that would be passed to Redux's createStore to log actions and the latest state to Sentry.\n *\n * @param enhancerOptions Options to pass to the enhancer\n */\nfunction createReduxEnhancer(enhancerOptions) {\n // Note: We return an any type as to not have type conflicts.\n var options = __assign(__assign({}, defaultOptions), enhancerOptions);\n return function (next) { return function (reducer, initialState) {\n var sentryReducer = function (state, action) {\n var newState = reducer(state, action);\n configureScope(function (scope) {\n /* Action breadcrumbs */\n var transformedAction = options.actionTransformer(action);\n if (typeof transformedAction !== 'undefined' && transformedAction !== null) {\n scope.addBreadcrumb({\n category: ACTION_BREADCRUMB_CATEGORY,\n data: transformedAction,\n type: ACTION_BREADCRUMB_TYPE,\n });\n }\n /* Set latest state to scope */\n var transformedState = options.stateTransformer(newState);\n if (typeof transformedState !== 'undefined' && transformedState !== null) {\n scope.setContext(STATE_CONTEXT_KEY, transformedState);\n }\n else {\n scope.setContext(STATE_CONTEXT_KEY, null);\n }\n /* Allow user to configure scope with latest state */\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var configureScopeWithState = options.configureScopeWithState;\n if (typeof configureScopeWithState === 'function') {\n configureScopeWithState(scope, newState);\n }\n });\n return newState;\n };\n return next(sentryReducer, initialState);\n }; };\n}\nexport { createReduxEnhancer };\n//# sourceMappingURL=redux.js.map","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/**\n * Memo class used for decycle json objects. Uses WeakSet if available otherwise array.\n */\nvar Memo = /** @class */ (function () {\n function Memo() {\n this._hasWeakSet = typeof WeakSet === 'function';\n this._inner = this._hasWeakSet ? new WeakSet() : [];\n }\n /**\n * Sets obj to remember.\n * @param obj Object to remember\n */\n Memo.prototype.memoize = function (obj) {\n if (this._hasWeakSet) {\n if (this._inner.has(obj)) {\n return true;\n }\n this._inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (var i = 0; i < this._inner.length; i++) {\n var value = this._inner[i];\n if (value === obj) {\n return true;\n }\n }\n this._inner.push(obj);\n return false;\n };\n /**\n * Removes object from internal storage.\n * @param obj Object to forget\n */\n Memo.prototype.unmemoize = function (obj) {\n if (this._hasWeakSet) {\n this._inner.delete(obj);\n }\n else {\n for (var i = 0; i < this._inner.length; i++) {\n if (this._inner[i] === obj) {\n this._inner.splice(i, 1);\n break;\n }\n }\n }\n };\n return Memo;\n}());\nexport { Memo };\n//# sourceMappingURL=memo.js.map","import { RequestSessionStatus, SessionStatus, } from '@sentry/types';\nimport { dropUndefinedKeys, logger, uuid4 } from '@sentry/utils';\nimport { getCurrentHub } from './hub';\n/**\n * @inheritdoc\n */\nvar Session = /** @class */ (function () {\n function Session(context) {\n this.errors = 0;\n this.sid = uuid4();\n this.timestamp = Date.now();\n this.started = Date.now();\n this.duration = 0;\n this.status = SessionStatus.Ok;\n this.init = true;\n if (context) {\n this.update(context);\n }\n }\n /** JSDoc */\n // eslint-disable-next-line complexity\n Session.prototype.update = function (context) {\n if (context === void 0) { context = {}; }\n if (context.user) {\n if (context.user.ip_address) {\n this.ipAddress = context.user.ip_address;\n }\n if (!context.did) {\n this.did = context.user.id || context.user.email || context.user.username;\n }\n }\n this.timestamp = context.timestamp || Date.now();\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n this.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n this.init = context.init;\n }\n if (context.did) {\n this.did = \"\" + context.did;\n }\n if (typeof context.started === 'number') {\n this.started = context.started;\n }\n if (typeof context.duration === 'number') {\n this.duration = context.duration;\n }\n else {\n this.duration = this.timestamp - this.started;\n }\n if (context.release) {\n this.release = context.release;\n }\n if (context.environment) {\n this.environment = context.environment;\n }\n if (context.ipAddress) {\n this.ipAddress = context.ipAddress;\n }\n if (context.userAgent) {\n this.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n this.errors = context.errors;\n }\n if (context.status) {\n this.status = context.status;\n }\n };\n /** JSDoc */\n Session.prototype.close = function (status) {\n if (status) {\n this.update({ status: status });\n }\n else if (this.status === SessionStatus.Ok) {\n this.update({ status: SessionStatus.Exited });\n }\n else {\n this.update();\n }\n };\n /** JSDoc */\n Session.prototype.toJSON = function () {\n return dropUndefinedKeys({\n sid: \"\" + this.sid,\n init: this.init,\n started: new Date(this.started).toISOString(),\n timestamp: new Date(this.timestamp).toISOString(),\n status: this.status,\n errors: this.errors,\n did: typeof this.did === 'number' || typeof this.did === 'string' ? \"\" + this.did : undefined,\n duration: this.duration,\n attrs: dropUndefinedKeys({\n release: this.release,\n environment: this.environment,\n ip_address: this.ipAddress,\n user_agent: this.userAgent,\n }),\n });\n };\n return Session;\n}());\nexport { Session };\n/**\n * @inheritdoc\n */\nvar SessionFlusher = /** @class */ (function () {\n function SessionFlusher(transport, attrs) {\n var _this = this;\n this.flushTimeout = 60;\n this._pendingAggregates = {};\n this._isEnabled = true;\n this._transport = transport;\n // Call to setInterval, so that flush is called every 60 seconds\n this._intervalId = setInterval(function () { return _this.flush(); }, this.flushTimeout * 1000);\n this._sessionAttrs = attrs;\n }\n /** Sends session aggregates to Transport */\n SessionFlusher.prototype.sendSessionAggregates = function (sessionAggregates) {\n if (!this._transport.sendSession) {\n logger.warn(\"Dropping session because custom transport doesn't implement sendSession\");\n return;\n }\n this._transport.sendSession(sessionAggregates).then(null, function (reason) {\n logger.error(\"Error while sending session: \" + reason);\n });\n };\n /** Checks if `pendingAggregates` has entries, and if it does flushes them by calling `sendSessions` */\n SessionFlusher.prototype.flush = function () {\n var sessionAggregates = this.getSessionAggregates();\n if (sessionAggregates.aggregates.length === 0) {\n return;\n }\n this._pendingAggregates = {};\n this.sendSessionAggregates(sessionAggregates);\n };\n /** Massages the entries in `pendingAggregates` and returns aggregated sessions */\n SessionFlusher.prototype.getSessionAggregates = function () {\n var _this = this;\n var aggregates = Object.keys(this._pendingAggregates).map(function (key) {\n return _this._pendingAggregates[parseInt(key)];\n });\n var sessionAggregates = {\n attrs: this._sessionAttrs,\n aggregates: aggregates,\n };\n return dropUndefinedKeys(sessionAggregates);\n };\n /** JSDoc */\n SessionFlusher.prototype.close = function () {\n clearInterval(this._intervalId);\n this._isEnabled = false;\n this.flush();\n };\n /**\n * Wrapper function for _incrementSessionStatusCount that checks if the instance of SessionFlusher is enabled then\n * fetches the session status of the request from `Scope.getRequestSession().status` on the scope and passes them to\n * `_incrementSessionStatusCount` along with the start date\n */\n SessionFlusher.prototype.incrementSessionStatusCount = function () {\n var _a, _b;\n if (!this._isEnabled) {\n return;\n }\n var scope = getCurrentHub().getScope();\n var requestSession = (_a = scope) === null || _a === void 0 ? void 0 : _a.getRequestSession();\n if (requestSession && requestSession.status) {\n this._incrementSessionStatusCount(requestSession.status, new Date());\n // This is not entirely necessarily but is added as a safe guard to indicate the bounds of a request and so in\n // case captureRequestSession is called more than once to prevent double count\n (_b = scope) === null || _b === void 0 ? void 0 : _b.setRequestSession(undefined);\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n }\n };\n /**\n * Increments status bucket in pendingAggregates buffer (internal state) corresponding to status of\n * the session received\n */\n SessionFlusher.prototype._incrementSessionStatusCount = function (status, date) {\n // Truncate minutes and seconds on Session Started attribute to have one minute bucket keys\n var sessionStartedTrunc = new Date(date).setSeconds(0, 0);\n this._pendingAggregates[sessionStartedTrunc] = this._pendingAggregates[sessionStartedTrunc] || {};\n // corresponds to aggregated sessions in one specific minute bucket\n // for example, {\"started\":\"2021-03-16T08:00:00.000Z\",\"exited\":4, \"errored\": 1}\n var aggregationCounts = this._pendingAggregates[sessionStartedTrunc];\n if (!aggregationCounts.started) {\n aggregationCounts.started = new Date(sessionStartedTrunc).toISOString();\n }\n switch (status) {\n case RequestSessionStatus.Errored:\n aggregationCounts.errored = (aggregationCounts.errored || 0) + 1;\n return aggregationCounts.errored;\n case RequestSessionStatus.Ok:\n aggregationCounts.exited = (aggregationCounts.exited || 0) + 1;\n return aggregationCounts.exited;\n case RequestSessionStatus.Crashed:\n aggregationCounts.crashed = (aggregationCounts.crashed || 0) + 1;\n return aggregationCounts.crashed;\n }\n };\n return SessionFlusher;\n}());\nexport { SessionFlusher };\n//# sourceMappingURL=session.js.map","import { __assign, __read, __spread } from \"tslib\";\n/* eslint-disable max-lines */\nimport { SessionStatus, } from '@sentry/types';\nimport { consoleSandbox, dateTimestampInSeconds, getGlobalObject, isNodeEnv, logger, uuid4 } from '@sentry/utils';\nimport { Scope } from './scope';\nimport { Session } from './session';\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport var API_VERSION = 4;\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nvar DEFAULT_BREADCRUMBS = 100;\n/**\n * Absolute maximum number of breadcrumbs added to an event. The\n * `maxBreadcrumbs` option cannot be higher than this value.\n */\nvar MAX_BREADCRUMBS = 100;\n/**\n * @inheritDoc\n */\nvar Hub = /** @class */ (function () {\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n function Hub(client, scope, _version) {\n if (scope === void 0) { scope = new Scope(); }\n if (_version === void 0) { _version = API_VERSION; }\n this._version = _version;\n /** Is a {@link Layer}[] containing the client and scope */\n this._stack = [{}];\n this.getStackTop().scope = scope;\n this.bindClient(client);\n }\n /**\n * @inheritDoc\n */\n Hub.prototype.isOlderThan = function (version) {\n return this._version < version;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.bindClient = function (client) {\n var top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.pushScope = function () {\n // We want to clone the content of prev scope\n var scope = Scope.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope: scope,\n });\n return scope;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.popScope = function () {\n if (this.getStack().length <= 1)\n return false;\n return !!this.getStack().pop();\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.withScope = function (callback) {\n var scope = this.pushScope();\n try {\n callback(scope);\n }\n finally {\n this.popScope();\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.getClient = function () {\n return this.getStackTop().client;\n };\n /** Returns the scope of the top stack. */\n Hub.prototype.getScope = function () {\n return this.getStackTop().scope;\n };\n /** Returns the scope stack for domains or the process. */\n Hub.prototype.getStack = function () {\n return this._stack;\n };\n /** Returns the topmost scope layer in the order domain > local > process. */\n Hub.prototype.getStackTop = function () {\n return this._stack[this._stack.length - 1];\n };\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n Hub.prototype.captureException = function (exception, hint) {\n var eventId = (this._lastEventId = uuid4());\n var finalHint = hint;\n // If there's no explicit hint provided, mimick the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n var syntheticException = void 0;\n try {\n throw new Error('Sentry syntheticException');\n }\n catch (exception) {\n syntheticException = exception;\n }\n finalHint = {\n originalException: exception,\n syntheticException: syntheticException,\n };\n }\n this._invokeClient('captureException', exception, __assign(__assign({}, finalHint), { event_id: eventId }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.captureMessage = function (message, level, hint) {\n var eventId = (this._lastEventId = uuid4());\n var finalHint = hint;\n // If there's no explicit hint provided, mimick the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n var syntheticException = void 0;\n try {\n throw new Error(message);\n }\n catch (exception) {\n syntheticException = exception;\n }\n finalHint = {\n originalException: message,\n syntheticException: syntheticException,\n };\n }\n this._invokeClient('captureMessage', message, level, __assign(__assign({}, finalHint), { event_id: eventId }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.captureEvent = function (event, hint) {\n var eventId = (this._lastEventId = uuid4());\n this._invokeClient('captureEvent', event, __assign(__assign({}, hint), { event_id: eventId }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.lastEventId = function () {\n return this._lastEventId;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.addBreadcrumb = function (breadcrumb, hint) {\n var _a = this.getStackTop(), scope = _a.scope, client = _a.client;\n if (!scope || !client)\n return;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var _b = (client.getOptions && client.getOptions()) || {}, _c = _b.beforeBreadcrumb, beforeBreadcrumb = _c === void 0 ? null : _c, _d = _b.maxBreadcrumbs, maxBreadcrumbs = _d === void 0 ? DEFAULT_BREADCRUMBS : _d;\n if (maxBreadcrumbs <= 0)\n return;\n var timestamp = dateTimestampInSeconds();\n var mergedBreadcrumb = __assign({ timestamp: timestamp }, breadcrumb);\n var finalBreadcrumb = beforeBreadcrumb\n ? consoleSandbox(function () { return beforeBreadcrumb(mergedBreadcrumb, hint); })\n : mergedBreadcrumb;\n if (finalBreadcrumb === null)\n return;\n scope.addBreadcrumb(finalBreadcrumb, Math.min(maxBreadcrumbs, MAX_BREADCRUMBS));\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setUser = function (user) {\n var scope = this.getScope();\n if (scope)\n scope.setUser(user);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setTags = function (tags) {\n var scope = this.getScope();\n if (scope)\n scope.setTags(tags);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setExtras = function (extras) {\n var scope = this.getScope();\n if (scope)\n scope.setExtras(extras);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setTag = function (key, value) {\n var scope = this.getScope();\n if (scope)\n scope.setTag(key, value);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setExtra = function (key, extra) {\n var scope = this.getScope();\n if (scope)\n scope.setExtra(key, extra);\n };\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Hub.prototype.setContext = function (name, context) {\n var scope = this.getScope();\n if (scope)\n scope.setContext(name, context);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.configureScope = function (callback) {\n var _a = this.getStackTop(), scope = _a.scope, client = _a.client;\n if (scope && client) {\n callback(scope);\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.run = function (callback) {\n var oldHub = makeMain(this);\n try {\n callback(this);\n }\n finally {\n makeMain(oldHub);\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.getIntegration = function (integration) {\n var client = this.getClient();\n if (!client)\n return null;\n try {\n return client.getIntegration(integration);\n }\n catch (_oO) {\n logger.warn(\"Cannot retrieve integration \" + integration.id + \" from the current Hub\");\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.startSpan = function (context) {\n return this._callExtensionMethod('startSpan', context);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.startTransaction = function (context, customSamplingContext) {\n return this._callExtensionMethod('startTransaction', context, customSamplingContext);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.traceHeaders = function () {\n return this._callExtensionMethod('traceHeaders');\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.captureSession = function (endSession) {\n if (endSession === void 0) { endSession = false; }\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n // only send the update\n this._sendSessionUpdate();\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.endSession = function () {\n var _a, _b, _c, _d, _e;\n (_c = (_b = (_a = this.getStackTop()) === null || _a === void 0 ? void 0 : _a.scope) === null || _b === void 0 ? void 0 : _b.getSession()) === null || _c === void 0 ? void 0 : _c.close();\n this._sendSessionUpdate();\n // the session is over; take it off of the scope\n (_e = (_d = this.getStackTop()) === null || _d === void 0 ? void 0 : _d.scope) === null || _e === void 0 ? void 0 : _e.setSession();\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.startSession = function (context) {\n var _a = this.getStackTop(), scope = _a.scope, client = _a.client;\n var _b = (client && client.getOptions()) || {}, release = _b.release, environment = _b.environment;\n var session = new Session(__assign(__assign({ release: release,\n environment: environment }, (scope && { user: scope.getUser() })), context));\n if (scope) {\n // End existing session if there's one\n var currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === SessionStatus.Ok) {\n currentSession.update({ status: SessionStatus.Exited });\n }\n this.endSession();\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n }\n return session;\n };\n /**\n * Sends the current Session on the scope\n */\n Hub.prototype._sendSessionUpdate = function () {\n var _a = this.getStackTop(), scope = _a.scope, client = _a.client;\n if (!scope)\n return;\n var session = scope.getSession && scope.getSession();\n if (session) {\n if (client && client.captureSession) {\n client.captureSession(session);\n }\n }\n };\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Hub.prototype._invokeClient = function (method) {\n var _a;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var _b = this.getStackTop(), scope = _b.scope, client = _b.client;\n if (client && client[method]) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n (_a = client)[method].apply(_a, __spread(args, [scope]));\n }\n };\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Hub.prototype._callExtensionMethod = function (method) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var carrier = getMainCarrier();\n var sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n logger.warn(\"Extension method \" + method + \" couldn't be found, doing nothing.\");\n };\n return Hub;\n}());\nexport { Hub };\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier() {\n var carrier = getGlobalObject();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\n}\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub) {\n var registry = getMainCarrier();\n var oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub() {\n // Get main carrier (global for every environment)\n var registry = getMainCarrier();\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n/**\n * Returns the active domain, if one exists\n * @deprecated No longer used; remove in v7\n * @returns The domain, or undefined if there is no active domain\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getActiveDomain() {\n logger.warn('Function `getActiveDomain` is deprecated and will be removed in a future version.');\n var sentry = getMainCarrier().__SENTRY__;\n return sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n}\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry) {\n var _a, _b, _c;\n try {\n var activeDomain = (_c = (_b = (_a = getMainCarrier().__SENTRY__) === null || _a === void 0 ? void 0 : _a.extensions) === null || _b === void 0 ? void 0 : _b.domain) === null || _c === void 0 ? void 0 : _c.active;\n // If there's no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n var registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n }\n catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier) {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier) {\n if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub)\n return carrier.__SENTRY__.hub;\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = new Hub();\n return carrier.__SENTRY__.hub;\n}\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nexport function setHubOnCarrier(carrier, hub) {\n if (!carrier)\n return false;\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = hub;\n return true;\n}\n//# sourceMappingURL=hub.js.map","import { __assign } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\nvar global = getGlobalObject();\n/** UserAgent */\nvar UserAgent = /** @class */ (function () {\n function UserAgent() {\n /**\n * @inheritDoc\n */\n this.name = UserAgent.id;\n }\n /**\n * @inheritDoc\n */\n UserAgent.prototype.setupOnce = function () {\n addGlobalEventProcessor(function (event) {\n var _a, _b, _c;\n if (getCurrentHub().getIntegration(UserAgent)) {\n // if none of the information we want exists, don't bother\n if (!global.navigator && !global.location && !global.document) {\n return event;\n }\n // grab as much info as exists and add it to the event\n var url = ((_a = event.request) === null || _a === void 0 ? void 0 : _a.url) || ((_b = global.location) === null || _b === void 0 ? void 0 : _b.href);\n var referrer = (global.document || {}).referrer;\n var userAgent = (global.navigator || {}).userAgent;\n var headers = __assign(__assign(__assign({}, (_c = event.request) === null || _c === void 0 ? void 0 : _c.headers), (referrer && { Referer: referrer })), (userAgent && { 'User-Agent': userAgent }));\n var request = __assign(__assign({}, (url && { url: url })), { headers: headers });\n return __assign(__assign({}, event), { request: request });\n }\n return event;\n });\n };\n /**\n * @inheritDoc\n */\n UserAgent.id = 'UserAgent';\n return UserAgent;\n}());\nexport { UserAgent };\n//# sourceMappingURL=useragent.js.map","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n/** SyncPromise internal states */\nvar States;\n(function (States) {\n /** Pending */\n States[\"PENDING\"] = \"PENDING\";\n /** Resolved / OK */\n States[\"RESOLVED\"] = \"RESOLVED\";\n /** Rejected / Error */\n States[\"REJECTED\"] = \"REJECTED\";\n})(States || (States = {}));\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nvar SyncPromise = /** @class */ (function () {\n function SyncPromise(executor) {\n var _this = this;\n this._state = States.PENDING;\n this._handlers = [];\n /** JSDoc */\n this._resolve = function (value) {\n _this._setResult(States.RESOLVED, value);\n };\n /** JSDoc */\n this._reject = function (reason) {\n _this._setResult(States.REJECTED, reason);\n };\n /** JSDoc */\n this._setResult = function (state, value) {\n if (_this._state !== States.PENDING) {\n return;\n }\n if (isThenable(value)) {\n value.then(_this._resolve, _this._reject);\n return;\n }\n _this._state = state;\n _this._value = value;\n _this._executeHandlers();\n };\n // TODO: FIXME\n /** JSDoc */\n this._attachHandler = function (handler) {\n _this._handlers = _this._handlers.concat(handler);\n _this._executeHandlers();\n };\n /** JSDoc */\n this._executeHandlers = function () {\n if (_this._state === States.PENDING) {\n return;\n }\n var cachedHandlers = _this._handlers.slice();\n _this._handlers = [];\n cachedHandlers.forEach(function (handler) {\n if (handler.done) {\n return;\n }\n if (_this._state === States.RESOLVED) {\n if (handler.onfulfilled) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler.onfulfilled(_this._value);\n }\n }\n if (_this._state === States.REJECTED) {\n if (handler.onrejected) {\n handler.onrejected(_this._value);\n }\n }\n handler.done = true;\n });\n };\n try {\n executor(this._resolve, this._reject);\n }\n catch (e) {\n this._reject(e);\n }\n }\n /** JSDoc */\n SyncPromise.resolve = function (value) {\n return new SyncPromise(function (resolve) {\n resolve(value);\n });\n };\n /** JSDoc */\n SyncPromise.reject = function (reason) {\n return new SyncPromise(function (_, reject) {\n reject(reason);\n });\n };\n /** JSDoc */\n SyncPromise.all = function (collection) {\n return new SyncPromise(function (resolve, reject) {\n if (!Array.isArray(collection)) {\n reject(new TypeError(\"Promise.all requires an array as input.\"));\n return;\n }\n if (collection.length === 0) {\n resolve([]);\n return;\n }\n var counter = collection.length;\n var resolvedCollection = [];\n collection.forEach(function (item, index) {\n SyncPromise.resolve(item)\n .then(function (value) {\n resolvedCollection[index] = value;\n counter -= 1;\n if (counter !== 0) {\n return;\n }\n resolve(resolvedCollection);\n })\n .then(null, reject);\n });\n });\n };\n /** JSDoc */\n SyncPromise.prototype.then = function (onfulfilled, onrejected) {\n var _this = this;\n return new SyncPromise(function (resolve, reject) {\n _this._attachHandler({\n done: false,\n onfulfilled: function (result) {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result);\n return;\n }\n try {\n resolve(onfulfilled(result));\n return;\n }\n catch (e) {\n reject(e);\n return;\n }\n },\n onrejected: function (reason) {\n if (!onrejected) {\n reject(reason);\n return;\n }\n try {\n resolve(onrejected(reason));\n return;\n }\n catch (e) {\n reject(e);\n return;\n }\n },\n });\n });\n };\n /** JSDoc */\n SyncPromise.prototype.catch = function (onrejected) {\n return this.then(function (val) { return val; }, onrejected);\n };\n /** JSDoc */\n SyncPromise.prototype.finally = function (onfinally) {\n var _this = this;\n return new SyncPromise(function (resolve, reject) {\n var val;\n var isRejected;\n return _this.then(function (value) {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n }, function (reason) {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n }).then(function () {\n if (isRejected) {\n reject(val);\n return;\n }\n resolve(val);\n });\n });\n };\n /** JSDoc */\n SyncPromise.prototype.toString = function () {\n return '[object SyncPromise]';\n };\n return SyncPromise;\n}());\nexport { SyncPromise };\n//# sourceMappingURL=syncpromise.js.map","import { isNodeEnv } from './node';\nimport { snipLine } from './string';\nvar fallbackGlobalObject = {};\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nexport function getGlobalObject() {\n return (isNodeEnv()\n ? global\n : typeof window !== 'undefined'\n ? window\n : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject);\n}\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4() {\n var global = getGlobalObject();\n var crypto = global.crypto || global.msCrypto;\n if (!(crypto === void 0) && crypto.getRandomValues) {\n // Use window.crypto API if available\n var arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n // set 4 in byte 7\n // eslint-disable-next-line no-bitwise\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n // eslint-disable-next-line no-bitwise\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n var pad = function (num) {\n var v = num.toString(16);\n while (v.length < 4) {\n v = \"0\" + v;\n }\n return v;\n };\n return (pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]));\n }\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n // eslint-disable-next-line no-bitwise\n var r = (Math.random() * 16) | 0;\n // eslint-disable-next-line no-bitwise\n var v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url) {\n if (!url) {\n return {};\n }\n var match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n if (!match) {\n return {};\n }\n // coerce to undefined values to empty string so we don't get 'undefined'\n var query = match[6] || '';\n var fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment,\n };\n}\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event) {\n if (event.message) {\n return event.message;\n }\n if (event.exception && event.exception.values && event.exception.values[0]) {\n var exception = event.exception.values[0];\n if (exception.type && exception.value) {\n return exception.type + \": \" + exception.value;\n }\n return exception.type || exception.value || event.event_id || '';\n }\n return event.event_id || '';\n}\n/** JSDoc */\nexport function consoleSandbox(callback) {\n var global = getGlobalObject();\n var levels = ['debug', 'info', 'warn', 'error', 'log', 'assert'];\n if (!('console' in global)) {\n return callback();\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n var originalConsole = global.console;\n var wrappedLevels = {};\n // Restore all wrapped console methods\n levels.forEach(function (level) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (level in global.console && originalConsole[level].__sentry_original__) {\n wrappedLevels[level] = originalConsole[level];\n originalConsole[level] = originalConsole[level].__sentry_original__;\n }\n });\n // Perform callback manipulations\n var result = callback();\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(function (level) {\n originalConsole[level] = wrappedLevels[level];\n });\n return result;\n}\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event, value, type) {\n event.exception = event.exception || {};\n event.exception.values = event.exception.values || [];\n event.exception.values[0] = event.exception.values[0] || {};\n event.exception.values[0].value = event.exception.values[0].value || value || '';\n event.exception.values[0].type = event.exception.values[0].type || type || 'Error';\n}\n/**\n * Adds exception mechanism to a given event.\n * @param event The event to modify.\n * @param mechanism Mechanism of the mechanism.\n * @hidden\n */\nexport function addExceptionMechanism(event, mechanism) {\n if (mechanism === void 0) { mechanism = {}; }\n // TODO: Use real type with `keyof Mechanism` thingy and maybe make it better?\n try {\n // @ts-ignore Type 'Mechanism | {}' is not assignable to type 'Mechanism | undefined'\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values[0].mechanism = event.exception.values[0].mechanism || {};\n Object.keys(mechanism).forEach(function (key) {\n // @ts-ignore Mechanism has no index signature\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values[0].mechanism[key] = mechanism[key];\n });\n }\n catch (_oO) {\n // no-empty\n }\n}\n/**\n * A safe form of location.href\n */\nexport function getLocationHref() {\n try {\n return document.location.href;\n }\n catch (oO) {\n return '';\n }\n}\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nvar 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-]+)*))?$/;\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input) {\n var match = input.match(SEMVER_REGEXP) || [];\n var major = parseInt(match[1], 10);\n var minor = parseInt(match[2], 10);\n var patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\nvar defaultRetryAfter = 60 * 1000; // 60 seconds\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param now current unix timestamp\n * @param header string representation of 'Retry-After' header\n */\nexport function parseRetryAfterHeader(now, header) {\n if (!header) {\n return defaultRetryAfter;\n }\n var headerDelay = parseInt(\"\" + header, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n var headerDate = Date.parse(\"\" + header);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n return defaultRetryAfter;\n}\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines, frame, linesOfContext) {\n if (linesOfContext === void 0) { linesOfContext = 5; }\n var lineno = frame.lineno || 0;\n var maxLines = lines.length;\n var sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map(function (line) { return snipLine(line, 0); });\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map(function (line) { return snipLine(line, 0); });\n}\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath) {\n // eslint-disable-next-line no-useless-escape\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n//# sourceMappingURL=misc.js.map","import { __assign } from \"tslib\";\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { getCurrentHub } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { addExceptionMechanism, addInstrumentationHandler, getLocationHref, isErrorEvent, isPrimitive, isString, logger, } from '@sentry/utils';\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n/** Global handlers */\nvar GlobalHandlers = /** @class */ (function () {\n /** JSDoc */\n function GlobalHandlers(options) {\n /**\n * @inheritDoc\n */\n this.name = GlobalHandlers.id;\n /** JSDoc */\n this._onErrorHandlerInstalled = false;\n /** JSDoc */\n this._onUnhandledRejectionHandlerInstalled = false;\n this._options = __assign({ onerror: true, onunhandledrejection: true }, options);\n }\n /**\n * @inheritDoc\n */\n GlobalHandlers.prototype.setupOnce = function () {\n Error.stackTraceLimit = 50;\n if (this._options.onerror) {\n logger.log('Global Handler attached: onerror');\n this._installGlobalOnErrorHandler();\n }\n if (this._options.onunhandledrejection) {\n logger.log('Global Handler attached: onunhandledrejection');\n this._installGlobalOnUnhandledRejectionHandler();\n }\n };\n /** JSDoc */\n GlobalHandlers.prototype._installGlobalOnErrorHandler = function () {\n var _this = this;\n if (this._onErrorHandlerInstalled) {\n return;\n }\n addInstrumentationHandler({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback: function (data) {\n var error = data.error;\n var currentHub = getCurrentHub();\n var hasIntegration = currentHub.getIntegration(GlobalHandlers);\n var isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return;\n }\n var client = currentHub.getClient();\n var event = isPrimitive(error)\n ? _this._eventFromIncompleteOnError(data.msg, data.url, data.line, data.column)\n : _this._enhanceEventWithInitialFrame(eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: false,\n }), data.url, data.line, data.column);\n addExceptionMechanism(event, {\n handled: false,\n type: 'onerror',\n });\n currentHub.captureEvent(event, {\n originalException: error,\n });\n },\n type: 'error',\n });\n this._onErrorHandlerInstalled = true;\n };\n /** JSDoc */\n GlobalHandlers.prototype._installGlobalOnUnhandledRejectionHandler = function () {\n var _this = this;\n if (this._onUnhandledRejectionHandlerInstalled) {\n return;\n }\n addInstrumentationHandler({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback: function (e) {\n var error = e;\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n }\n catch (_oO) {\n // no-empty\n }\n var currentHub = getCurrentHub();\n var hasIntegration = currentHub.getIntegration(GlobalHandlers);\n var isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return true;\n }\n var client = currentHub.getClient();\n var event = isPrimitive(error)\n ? _this._eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: true,\n });\n event.level = Severity.Error;\n addExceptionMechanism(event, {\n handled: false,\n type: 'onunhandledrejection',\n });\n currentHub.captureEvent(event, {\n originalException: error,\n });\n return;\n },\n type: 'unhandledrejection',\n });\n this._onUnhandledRejectionHandlerInstalled = true;\n };\n /**\n * This function creates a stack from an old, error-less onerror handler.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n GlobalHandlers.prototype._eventFromIncompleteOnError = function (msg, url, line, column) {\n var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n // If 'message' is ErrorEvent, get real message from inside\n var message = isErrorEvent(msg) ? msg.message : msg;\n var name;\n if (isString(message)) {\n var groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n }\n var event = {\n exception: {\n values: [\n {\n type: name || 'Error',\n value: message,\n },\n ],\n },\n };\n return this._enhanceEventWithInitialFrame(event, url, line, column);\n };\n /**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\n GlobalHandlers.prototype._eventFromRejectionWithPrimitive = function (reason) {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: \"Non-Error promise rejection captured with value: \" + String(reason),\n },\n ],\n },\n };\n };\n /** JSDoc */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n GlobalHandlers.prototype._enhanceEventWithInitialFrame = function (event, url, line, column) {\n event.exception = event.exception || {};\n event.exception.values = event.exception.values || [];\n event.exception.values[0] = event.exception.values[0] || {};\n event.exception.values[0].stacktrace = event.exception.values[0].stacktrace || {};\n event.exception.values[0].stacktrace.frames = event.exception.values[0].stacktrace.frames || [];\n var colno = isNaN(parseInt(column, 10)) ? undefined : column;\n var lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n var filename = isString(url) && url.length > 0 ? url : getLocationHref();\n if (event.exception.values[0].stacktrace.frames.length === 0) {\n event.exception.values[0].stacktrace.frames.push({\n colno: colno,\n filename: filename,\n function: '?',\n in_app: true,\n lineno: lineno,\n });\n }\n return event;\n };\n /**\n * @inheritDoc\n */\n GlobalHandlers.id = 'GlobalHandlers';\n return GlobalHandlers;\n}());\nexport { GlobalHandlers };\n//# sourceMappingURL=globalhandlers.js.map","import { __read, __spread } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { logger } from '@sentry/utils';\nexport var installedIntegrations = [];\n/**\n * @private\n */\nfunction filterDuplicates(integrations) {\n return integrations.reduce(function (acc, integrations) {\n if (acc.every(function (accIntegration) { return integrations.name !== accIntegration.name; })) {\n acc.push(integrations);\n }\n return acc;\n }, []);\n}\n/** Gets integration to install */\nexport function getIntegrationsToSetup(options) {\n var defaultIntegrations = (options.defaultIntegrations && __spread(options.defaultIntegrations)) || [];\n var userIntegrations = options.integrations;\n var integrations = __spread(filterDuplicates(defaultIntegrations));\n if (Array.isArray(userIntegrations)) {\n // Filter out integrations that are also included in user options\n integrations = __spread(integrations.filter(function (integrations) {\n return userIntegrations.every(function (userIntegration) { return userIntegration.name !== integrations.name; });\n }), filterDuplicates(userIntegrations));\n }\n else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(integrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n }\n // Make sure that if present, `Debug` integration will always run last\n var integrationsNames = integrations.map(function (i) { return i.name; });\n var alwaysLastToRun = 'Debug';\n if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n integrations.push.apply(integrations, __spread(integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1)));\n }\n return integrations;\n}\n/** Setup given integration */\nexport function setupIntegration(integration) {\n if (installedIntegrations.indexOf(integration.name) !== -1) {\n return;\n }\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n logger.log(\"Integration installed: \" + integration.name);\n}\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(options) {\n var integrations = {};\n getIntegrationsToSetup(options).forEach(function (integration) {\n integrations[integration.name] = integration;\n setupIntegration(integration);\n });\n return integrations;\n}\n//# sourceMappingURL=integration.js.map","import { __assign, __read, __spread, __values } from \"tslib\";\n/* eslint-disable max-lines */\nimport { Scope } from '@sentry/hub';\nimport { SessionStatus, } from '@sentry/types';\nimport { dateTimestampInSeconds, Dsn, isPrimitive, isThenable, logger, normalize, SentryError, SyncPromise, truncate, uuid4, } from '@sentry/utils';\nimport { setupIntegrations } from './integration';\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding backend constructor and options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}. Also, the Backend instance is available via\n * {@link Client.getBackend}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event via the backend, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(NodeBackend, options);\n * }\n *\n * // ...\n * }\n */\nvar BaseClient = /** @class */ (function () {\n /**\n * Initializes this client instance.\n *\n * @param backendClass A constructor function to create the backend.\n * @param options Options for the client.\n */\n function BaseClient(backendClass, options) {\n /** Array of used integrations. */\n this._integrations = {};\n /** Number of call being processed */\n this._processing = 0;\n this._backend = new backendClass(options);\n this._options = options;\n if (options.dsn) {\n this._dsn = new Dsn(options.dsn);\n }\n }\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n BaseClient.prototype.captureException = function (exception, hint, scope) {\n var _this = this;\n var eventId = hint && hint.event_id;\n this._process(this._getBackend()\n .eventFromException(exception, hint)\n .then(function (event) { return _this._captureEvent(event, hint, scope); })\n .then(function (result) {\n eventId = result;\n }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureMessage = function (message, level, hint, scope) {\n var _this = this;\n var eventId = hint && hint.event_id;\n var promisedEvent = isPrimitive(message)\n ? this._getBackend().eventFromMessage(String(message), level, hint)\n : this._getBackend().eventFromException(message, hint);\n this._process(promisedEvent\n .then(function (event) { return _this._captureEvent(event, hint, scope); })\n .then(function (result) {\n eventId = result;\n }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureEvent = function (event, hint, scope) {\n var eventId = hint && hint.event_id;\n this._process(this._captureEvent(event, hint, scope).then(function (result) {\n eventId = result;\n }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureSession = function (session) {\n if (!(typeof session.release === 'string')) {\n logger.warn('Discarded session because of missing or non-string release');\n }\n else {\n this._sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n session.update({ init: false });\n }\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getDsn = function () {\n return this._dsn;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getOptions = function () {\n return this._options;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.flush = function (timeout) {\n var _this = this;\n return this._isClientProcessing(timeout).then(function (ready) {\n return _this._getBackend()\n .getTransport()\n .close(timeout)\n .then(function (transportFlushed) { return ready && transportFlushed; });\n });\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.close = function (timeout) {\n var _this = this;\n return this.flush(timeout).then(function (result) {\n _this.getOptions().enabled = false;\n return result;\n });\n };\n /**\n * Sets up the integrations\n */\n BaseClient.prototype.setupIntegrations = function () {\n if (this._isEnabled()) {\n this._integrations = setupIntegrations(this._options);\n }\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getIntegration = function (integration) {\n try {\n return this._integrations[integration.id] || null;\n }\n catch (_oO) {\n logger.warn(\"Cannot retrieve integration \" + integration.id + \" from the current Client\");\n return null;\n }\n };\n /** Updates existing session based on the provided event */\n BaseClient.prototype._updateSessionFromEvent = function (session, event) {\n var e_1, _a;\n var crashed = false;\n var errored = false;\n var userAgent;\n var exceptions = event.exception && event.exception.values;\n if (exceptions) {\n errored = true;\n try {\n for (var exceptions_1 = __values(exceptions), exceptions_1_1 = exceptions_1.next(); !exceptions_1_1.done; exceptions_1_1 = exceptions_1.next()) {\n var ex = exceptions_1_1.value;\n var mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (exceptions_1_1 && !exceptions_1_1.done && (_a = exceptions_1.return)) _a.call(exceptions_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n var user = event.user;\n if (!session.userAgent) {\n var headers = event.request ? event.request.headers : {};\n for (var key in headers) {\n if (key.toLowerCase() === 'user-agent') {\n userAgent = headers[key];\n break;\n }\n }\n }\n session.update(__assign(__assign({}, (crashed && { status: SessionStatus.Crashed })), { user: user,\n userAgent: userAgent, errors: session.errors + Number(errored || crashed) }));\n this.captureSession(session);\n };\n /** Deliver captured session to Sentry */\n BaseClient.prototype._sendSession = function (session) {\n this._getBackend().sendSession(session);\n };\n /** Waits for the client to be done with processing. */\n BaseClient.prototype._isClientProcessing = function (timeout) {\n var _this = this;\n return new SyncPromise(function (resolve) {\n var ticked = 0;\n var tick = 1;\n var interval = setInterval(function () {\n if (_this._processing == 0) {\n clearInterval(interval);\n resolve(true);\n }\n else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n };\n /** Returns the current backend. */\n BaseClient.prototype._getBackend = function () {\n return this._backend;\n };\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n BaseClient.prototype._isEnabled = function () {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n };\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n BaseClient.prototype._prepareEvent = function (event, scope, hint) {\n var _this = this;\n var _a = this.getOptions().normalizeDepth, normalizeDepth = _a === void 0 ? 3 : _a;\n var prepared = __assign(__assign({}, event), { event_id: event.event_id || (hint && hint.event_id ? hint.event_id : uuid4()), timestamp: event.timestamp || dateTimestampInSeconds() });\n this._applyClientOptions(prepared);\n this._applyIntegrationsMetadata(prepared);\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n var finalScope = scope;\n if (hint && hint.captureContext) {\n finalScope = Scope.clone(finalScope).update(hint.captureContext);\n }\n // We prepare the result here with a resolved Event.\n var result = SyncPromise.resolve(prepared);\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (finalScope) {\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n return result.then(function (evt) {\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return _this._normalizeEvent(evt, normalizeDepth);\n }\n return evt;\n });\n };\n /**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\n BaseClient.prototype._normalizeEvent = function (event, depth) {\n if (!event) {\n return null;\n }\n var normalized = __assign(__assign(__assign(__assign(__assign({}, event), (event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(function (b) { return (__assign(__assign({}, b), (b.data && {\n data: normalize(b.data, depth),\n }))); }),\n })), (event.user && {\n user: normalize(event.user, depth),\n })), (event.contexts && {\n contexts: normalize(event.contexts, depth),\n })), (event.extra && {\n extra: normalize(event.extra, depth),\n }));\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n normalized.contexts.trace = event.contexts.trace;\n }\n return normalized;\n };\n /**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\n BaseClient.prototype._applyClientOptions = function (event) {\n var options = this.getOptions();\n var environment = options.environment, release = options.release, dist = options.dist, _a = options.maxValueLength, maxValueLength = _a === void 0 ? 250 : _a;\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : 'production';\n }\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n var exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n var request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n };\n /**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\n BaseClient.prototype._applyIntegrationsMetadata = function (event) {\n var integrationsArray = Object.keys(this._integrations);\n if (integrationsArray.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = __spread((event.sdk.integrations || []), integrationsArray);\n }\n };\n /**\n * Tells the backend to send this event\n * @param event The Sentry event to send\n */\n BaseClient.prototype._sendEvent = function (event) {\n this._getBackend().sendEvent(event);\n };\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n BaseClient.prototype._captureEvent = function (event, hint, scope) {\n return this._processEvent(event, hint, scope).then(function (finalEvent) {\n return finalEvent.event_id;\n }, function (reason) {\n logger.error(reason);\n return undefined;\n });\n };\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n BaseClient.prototype._processEvent = function (event, hint, scope) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var _a = this.getOptions(), beforeSend = _a.beforeSend, sampleRate = _a.sampleRate;\n if (!this._isEnabled()) {\n return SyncPromise.reject(new SentryError('SDK not enabled, will not send event.'));\n }\n var isTransaction = event.type === 'transaction';\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (!isTransaction && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n return SyncPromise.reject(new SentryError(\"Discarding event because it's not included in the random sample (sampling rate = \" + sampleRate + \")\"));\n }\n return this._prepareEvent(event, scope, hint)\n .then(function (prepared) {\n if (prepared === null) {\n throw new SentryError('An event processor returned null, will not send event.');\n }\n var isInternalException = hint && hint.data && hint.data.__sentry__ === true;\n if (isInternalException || isTransaction || !beforeSend) {\n return prepared;\n }\n var beforeSendResult = beforeSend(prepared, hint);\n if (typeof beforeSendResult === 'undefined') {\n throw new SentryError('`beforeSend` method has to return `null` or a valid event.');\n }\n else if (isThenable(beforeSendResult)) {\n return beforeSendResult.then(function (event) { return event; }, function (e) {\n throw new SentryError(\"beforeSend rejected with \" + e);\n });\n }\n return beforeSendResult;\n })\n .then(function (processedEvent) {\n if (processedEvent === null) {\n throw new SentryError('`beforeSend` returned `null`, will not send event.');\n }\n var session = scope && scope.getSession && scope.getSession();\n if (!isTransaction && session) {\n _this._updateSessionFromEvent(session, processedEvent);\n }\n _this._sendEvent(processedEvent);\n return processedEvent;\n })\n .then(null, function (reason) {\n if (reason instanceof SentryError) {\n throw reason;\n }\n _this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason,\n });\n throw new SentryError(\"Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: \" + reason);\n });\n };\n /**\n * Occupies the client with processing and event\n */\n BaseClient.prototype._process = function (promise) {\n var _this = this;\n this._processing += 1;\n promise.then(function (value) {\n _this._processing -= 1;\n return value;\n }, function (reason) {\n _this._processing -= 1;\n return reason;\n });\n };\n return BaseClient;\n}());\nexport { BaseClient };\n//# sourceMappingURL=baseclient.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { consoleSandbox, getGlobalObject } from './misc';\n// TODO: Implement different loggers for different environments\nvar global = getGlobalObject();\n/** Prefix for logging strings */\nvar PREFIX = 'Sentry Logger ';\n/** JSDoc */\nvar Logger = /** @class */ (function () {\n /** JSDoc */\n function Logger() {\n this._enabled = false;\n }\n /** JSDoc */\n Logger.prototype.disable = function () {\n this._enabled = false;\n };\n /** JSDoc */\n Logger.prototype.enable = function () {\n this._enabled = true;\n };\n /** JSDoc */\n Logger.prototype.log = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this._enabled) {\n return;\n }\n consoleSandbox(function () {\n global.console.log(PREFIX + \"[Log]: \" + args.join(' '));\n });\n };\n /** JSDoc */\n Logger.prototype.warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this._enabled) {\n return;\n }\n consoleSandbox(function () {\n global.console.warn(PREFIX + \"[Warn]: \" + args.join(' '));\n });\n };\n /** JSDoc */\n Logger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this._enabled) {\n return;\n }\n consoleSandbox(function () {\n global.console.error(PREFIX + \"[Error]: \" + args.join(' '));\n });\n };\n return Logger;\n}());\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nglobal.__SENTRY__ = global.__SENTRY__ || {};\nvar logger = global.__SENTRY__.logger || (global.__SENTRY__.logger = new Logger());\nexport { logger };\n//# sourceMappingURL=logger.js.map","import { __extends } from \"tslib\";\nimport { eventToSentryRequest, sessionToSentryRequest } from '@sentry/core';\nimport { SyncPromise } from '@sentry/utils';\nimport { BaseTransport } from './base';\n/** `XHR` based transport */\nvar XHRTransport = /** @class */ (function (_super) {\n __extends(XHRTransport, _super);\n function XHRTransport() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @inheritDoc\n */\n XHRTransport.prototype.sendEvent = function (event) {\n return this._sendRequest(eventToSentryRequest(event, this._api), event);\n };\n /**\n * @inheritDoc\n */\n XHRTransport.prototype.sendSession = function (session) {\n return this._sendRequest(sessionToSentryRequest(session, this._api), session);\n };\n /**\n * @param sentryRequest Prepared SentryRequest to be delivered\n * @param originalPayload Original payload used to create SentryRequest\n */\n XHRTransport.prototype._sendRequest = function (sentryRequest, originalPayload) {\n var _this = this;\n if (this._isRateLimited(sentryRequest.type)) {\n return Promise.reject({\n event: originalPayload,\n type: sentryRequest.type,\n reason: \"Transport locked till \" + this._disabledUntil(sentryRequest.type) + \" due to too many requests.\",\n status: 429,\n });\n }\n return this._buffer.add(new SyncPromise(function (resolve, reject) {\n var request = new XMLHttpRequest();\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n var headers = {\n 'x-sentry-rate-limits': request.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': request.getResponseHeader('Retry-After'),\n };\n _this._handleResponse({ requestType: sentryRequest.type, response: request, headers: headers, resolve: resolve, reject: reject });\n }\n };\n request.open('POST', sentryRequest.url);\n for (var header in _this.options.headers) {\n if (_this.options.headers.hasOwnProperty(header)) {\n request.setRequestHeader(header, _this.options.headers[header]);\n }\n }\n request.send(sentryRequest.body);\n }));\n };\n return XHRTransport;\n}(BaseTransport));\nexport { XHRTransport };\n//# sourceMappingURL=xhr.js.map","import { __extends } from \"tslib\";\nimport { eventToSentryRequest, sessionToSentryRequest } from '@sentry/core';\nimport { getGlobalObject, isNativeFetch, logger, supportsReferrerPolicy, SyncPromise } from '@sentry/utils';\nimport { BaseTransport } from './base';\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n * const p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nfunction getNativeFetchImplementation() {\n /* eslint-disable @typescript-eslint/unbound-method */\n var _a, _b;\n // Fast path to avoid DOM I/O\n var global = getGlobalObject();\n if (isNativeFetch(global.fetch)) {\n return global.fetch.bind(global);\n }\n var document = global.document;\n var fetchImpl = global.fetch;\n // eslint-disable-next-line deprecation/deprecation\n if (typeof ((_a = document) === null || _a === void 0 ? void 0 : _a.createElement) === \"function\") {\n try {\n var sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n if ((_b = sandbox.contentWindow) === null || _b === void 0 ? void 0 : _b.fetch) {\n fetchImpl = sandbox.contentWindow.fetch;\n }\n document.head.removeChild(sandbox);\n }\n catch (e) {\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n return fetchImpl.bind(global);\n /* eslint-enable @typescript-eslint/unbound-method */\n}\n/** `fetch` based transport */\nvar FetchTransport = /** @class */ (function (_super) {\n __extends(FetchTransport, _super);\n function FetchTransport(options, fetchImpl) {\n if (fetchImpl === void 0) { fetchImpl = getNativeFetchImplementation(); }\n var _this = _super.call(this, options) || this;\n _this._fetch = fetchImpl;\n return _this;\n }\n /**\n * @inheritDoc\n */\n FetchTransport.prototype.sendEvent = function (event) {\n return this._sendRequest(eventToSentryRequest(event, this._api), event);\n };\n /**\n * @inheritDoc\n */\n FetchTransport.prototype.sendSession = function (session) {\n return this._sendRequest(sessionToSentryRequest(session, this._api), session);\n };\n /**\n * @param sentryRequest Prepared SentryRequest to be delivered\n * @param originalPayload Original payload used to create SentryRequest\n */\n FetchTransport.prototype._sendRequest = function (sentryRequest, originalPayload) {\n var _this = this;\n if (this._isRateLimited(sentryRequest.type)) {\n return Promise.reject({\n event: originalPayload,\n type: sentryRequest.type,\n reason: \"Transport locked till \" + this._disabledUntil(sentryRequest.type) + \" due to too many requests.\",\n status: 429,\n });\n }\n var options = {\n body: sentryRequest.body,\n method: 'POST',\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n referrerPolicy: (supportsReferrerPolicy() ? 'origin' : ''),\n };\n if (this.options.fetchParameters !== undefined) {\n Object.assign(options, this.options.fetchParameters);\n }\n if (this.options.headers !== undefined) {\n options.headers = this.options.headers;\n }\n return this._buffer.add(new SyncPromise(function (resolve, reject) {\n _this._fetch(sentryRequest.url, options)\n .then(function (response) {\n var headers = {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n };\n _this._handleResponse({\n requestType: sentryRequest.type,\n response: response,\n headers: headers,\n resolve: resolve,\n reject: reject,\n });\n })\n .catch(reject);\n }));\n };\n return FetchTransport;\n}(BaseTransport));\nexport { FetchTransport };\n//# sourceMappingURL=fetch.js.map","import { __assign, __read, __rest, __spread } from \"tslib\";\n/** Extract sdk info from from the API metadata */\nfunction getSdkMetadataForEnvelopeHeader(api) {\n if (!api.metadata || !api.metadata.sdk) {\n return;\n }\n var _a = api.metadata.sdk, name = _a.name, version = _a.version;\n return { name: name, version: version };\n}\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event, sdkInfo) {\n if (!sdkInfo) {\n return event;\n }\n event.sdk = event.sdk || {};\n event.sdk.name = event.sdk.name || sdkInfo.name;\n event.sdk.version = event.sdk.version || sdkInfo.version;\n event.sdk.integrations = __spread((event.sdk.integrations || []), (sdkInfo.integrations || []));\n event.sdk.packages = __spread((event.sdk.packages || []), (sdkInfo.packages || []));\n return event;\n}\n/** Creates a SentryRequest from a Session. */\nexport function sessionToSentryRequest(session, api) {\n var sdkInfo = getSdkMetadataForEnvelopeHeader(api);\n var envelopeHeaders = JSON.stringify(__assign({ sent_at: new Date().toISOString() }, (sdkInfo && { sdk: sdkInfo })));\n // I know this is hacky but we don't want to add `session` to request type since it's never rate limited\n var type = 'aggregates' in session ? 'sessions' : 'session';\n var itemHeaders = JSON.stringify({\n type: type,\n });\n return {\n body: envelopeHeaders + \"\\n\" + itemHeaders + \"\\n\" + JSON.stringify(session),\n type: type,\n url: api.getEnvelopeEndpointWithUrlEncodedAuth(),\n };\n}\n/** Creates a SentryRequest from an event. */\nexport function eventToSentryRequest(event, api) {\n var sdkInfo = getSdkMetadataForEnvelopeHeader(api);\n var eventType = event.type || 'event';\n var useEnvelope = eventType === 'transaction';\n var _a = event.debug_meta || {}, transactionSampling = _a.transactionSampling, metadata = __rest(_a, [\"transactionSampling\"]);\n var _b = transactionSampling || {}, samplingMethod = _b.method, sampleRate = _b.rate;\n if (Object.keys(metadata).length === 0) {\n delete event.debug_meta;\n }\n else {\n event.debug_meta = metadata;\n }\n var req = {\n body: JSON.stringify(sdkInfo ? enhanceEventWithSdkInfo(event, api.metadata.sdk) : event),\n type: eventType,\n url: useEnvelope ? api.getEnvelopeEndpointWithUrlEncodedAuth() : api.getStoreEndpointWithUrlEncodedAuth(),\n };\n // https://develop.sentry.dev/sdk/envelopes/\n // Since we don't need to manipulate envelopes nor store them, there is no\n // exported concept of an Envelope with operations including serialization and\n // deserialization. Instead, we only implement a minimal subset of the spec to\n // serialize events inline here.\n if (useEnvelope) {\n var envelopeHeaders = JSON.stringify(__assign({ event_id: event.event_id, sent_at: new Date().toISOString() }, (sdkInfo && { sdk: sdkInfo })));\n var itemHeaders = JSON.stringify({\n type: event.type,\n // TODO: Right now, sampleRate may or may not be defined (it won't be in the cases of inheritance and\n // explicitly-set sampling decisions). Are we good with that?\n sample_rates: [{ id: samplingMethod, rate: sampleRate }],\n });\n // The trailing newline is optional. We intentionally don't send it to avoid\n // sending unnecessary bytes.\n //\n // const envelope = `${envelopeHeaders}\\n${itemHeaders}\\n${req.body}\\n`;\n var envelope = envelopeHeaders + \"\\n\" + itemHeaders + \"\\n\" + req.body;\n req.body = envelope;\n }\n return req;\n}\n//# sourceMappingURL=request.js.map","import { __values } from \"tslib\";\nimport { htmlTreeAsString } from './browser';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive, isSyntheticEvent } from './is';\nimport { Memo } from './memo';\nimport { getFunctionName } from './stacktrace';\nimport { truncate } from './string';\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nexport function fill(source, name, replacementFactory) {\n if (!(name in source)) {\n return;\n }\n var original = source[name];\n var wrapped = replacementFactory(original);\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __sentry_original__: {\n enumerable: false,\n value: original,\n },\n });\n }\n catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n source[name] = wrapped;\n}\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object) {\n return Object.keys(object)\n .map(function (key) { return encodeURIComponent(key) + \"=\" + encodeURIComponent(object[key]); })\n .join('&');\n}\n/**\n * Transforms any object into an object literal with all its attributes\n * attached to it.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n */\nfunction getWalkSource(value) {\n if (isError(value)) {\n var error = value;\n var err = {\n message: error.message,\n name: error.name,\n stack: error.stack,\n };\n for (var i in error) {\n if (Object.prototype.hasOwnProperty.call(error, i)) {\n err[i] = error[i];\n }\n }\n return err;\n }\n if (isEvent(value)) {\n var event_1 = value;\n var source = {};\n source.type = event_1.type;\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n source.target = isElement(event_1.target)\n ? htmlTreeAsString(event_1.target)\n : Object.prototype.toString.call(event_1.target);\n }\n catch (_oO) {\n source.target = '';\n }\n try {\n source.currentTarget = isElement(event_1.currentTarget)\n ? htmlTreeAsString(event_1.currentTarget)\n : Object.prototype.toString.call(event_1.currentTarget);\n }\n catch (_oO) {\n source.currentTarget = '';\n }\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n source.detail = event_1.detail;\n }\n for (var i in event_1) {\n if (Object.prototype.hasOwnProperty.call(event_1, i)) {\n source[i] = event_1;\n }\n }\n return source;\n }\n return value;\n}\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n/** Calculates bytes size of input object */\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n/** JSDoc */\nexport function normalizeToSize(object, \n// Default Node.js REPL depth\ndepth, \n// 100kB, as 200kB is max payload size, so half sounds reasonable\nmaxSize) {\n if (depth === void 0) { depth = 3; }\n if (maxSize === void 0) { maxSize = 100 * 1024; }\n var serialized = normalize(object, depth);\n if (jsonSize(serialized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n return serialized;\n}\n/**\n * Transform any non-primitive, BigInt, or Symbol-type value into a string. Acts as a no-op on strings, numbers,\n * booleans, null, and undefined.\n *\n * @param value The value to stringify\n * @returns For non-primitive, BigInt, and Symbol-type values, a string denoting the value's type, type and value, or\n * type and `description` property, respectively. For non-BigInt, non-Symbol primitives, returns the original value,\n * unchanged.\n */\nfunction serializeValue(value) {\n var type = Object.prototype.toString.call(value);\n // Node.js REPL notation\n if (typeof value === 'string') {\n return value;\n }\n if (type === '[object Object]') {\n return '[Object]';\n }\n if (type === '[object Array]') {\n return '[Array]';\n }\n var normalized = normalizeValue(value);\n return isPrimitive(normalized) ? normalized : type;\n}\n/**\n * normalizeValue()\n *\n * Takes unserializable input and make it serializable friendly\n *\n * - translates undefined/NaN values to \"[undefined]\"/\"[NaN]\" respectively,\n * - serializes Error objects\n * - filter global objects\n */\nfunction normalizeValue(value, key) {\n if (key === 'domain' && value && typeof value === 'object' && value._events) {\n return '[Domain]';\n }\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n if (value === void 0) {\n return '[undefined]';\n }\n if (typeof value === 'function') {\n return \"[Function: \" + getFunctionName(value) + \"]\";\n }\n // symbols and bigints are considered primitives by TS, but aren't natively JSON-serilaizable\n if (typeof value === 'symbol') {\n return \"[\" + String(value) + \"]\";\n }\n if (typeof value === 'bigint') {\n return \"[BigInt: \" + String(value) + \"]\";\n }\n return value;\n}\n/**\n * Walks an object to perform a normalization on it\n *\n * @param key of object that's walked in current iteration\n * @param value object to be walked\n * @param depth Optional number indicating how deep should walking be performed\n * @param memo Optional Memo class handling decycling\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function walk(key, value, depth, memo) {\n if (depth === void 0) { depth = +Infinity; }\n if (memo === void 0) { memo = new Memo(); }\n // If we reach the maximum depth, serialize whatever has left\n if (depth === 0) {\n return serializeValue(value);\n }\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // If value implements `toJSON` method, call it and return early\n if (value !== null && value !== undefined && typeof value.toJSON === 'function') {\n return value.toJSON();\n }\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n // If normalized value is a primitive, there are no branches left to walk, so we can just bail out, as theres no point in going down that branch any further\n var normalized = normalizeValue(value, key);\n if (isPrimitive(normalized)) {\n return normalized;\n }\n // Create source that we will use for next itterations, either objectified error object (Error type with extracted keys:value pairs) or the input itself\n var source = getWalkSource(value);\n // Create an accumulator that will act as a parent for all future itterations of that branch\n var acc = Array.isArray(value) ? [] : {};\n // If we already walked that branch, bail out, as it's circular reference\n if (memo.memoize(value)) {\n return '[Circular ~]';\n }\n // Walk all keys of the source\n for (var innerKey in source) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(source, innerKey)) {\n continue;\n }\n // Recursively walk through all the child nodes\n acc[innerKey] = walk(innerKey, source[innerKey], depth - 1, memo);\n }\n // Once walked through all the branches, remove the parent from memo storage\n memo.unmemoize(value);\n // Return accumulated values\n return acc;\n}\n/**\n * normalize()\n *\n * - Creates a copy to prevent original input mutation\n * - Skip non-enumerablers\n * - Calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializeable values (undefined/NaN/Functions) to serializable format\n * - Translates known global objects/Classes to a string representations\n * - Takes care of Error objects serialization\n * - Optionally limit depth of final output\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function normalize(input, depth) {\n try {\n return JSON.parse(JSON.stringify(input, function (key, value) { return walk(key, value, depth); }));\n }\n catch (_oO) {\n return '**non-serializable**';\n }\n}\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function extractExceptionKeysForMessage(exception, maxLength) {\n if (maxLength === void 0) { maxLength = 40; }\n var keys = Object.keys(getWalkSource(exception));\n keys.sort();\n if (!keys.length) {\n return '[object has no keys]';\n }\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n for (var includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n var serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n return '';\n}\n/**\n * Given any object, return the new object with removed keys that value was `undefined`.\n * Works recursively on objects and arrays.\n */\nexport function dropUndefinedKeys(val) {\n var e_1, _a;\n if (isPlainObject(val)) {\n var obj = val;\n var rv = {};\n try {\n for (var _b = __values(Object.keys(obj)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n if (typeof obj[key] !== 'undefined') {\n rv[key] = dropUndefinedKeys(obj[key]);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return rv;\n }\n if (Array.isArray(val)) {\n return val.map(dropUndefinedKeys);\n }\n return val;\n}\n//# sourceMappingURL=object.js.map","var originalFunctionToString;\n/** Patch toString calls to return proper name for wrapped functions */\nvar FunctionToString = /** @class */ (function () {\n function FunctionToString() {\n /**\n * @inheritDoc\n */\n this.name = FunctionToString.id;\n }\n /**\n * @inheritDoc\n */\n FunctionToString.prototype.setupOnce = function () {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Function.prototype.toString = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var context = this.__sentry_original__ || this;\n return originalFunctionToString.apply(context, args);\n };\n };\n /**\n * @inheritDoc\n */\n FunctionToString.id = 'FunctionToString';\n return FunctionToString;\n}());\nexport { FunctionToString };\n//# sourceMappingURL=functiontostring.js.map","import { __read, __spread } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { getEventDescription, isMatchingPattern, logger } from '@sentry/utils';\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nvar DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n/** Inbound filters configurable by the user */\nvar InboundFilters = /** @class */ (function () {\n function InboundFilters(_options) {\n if (_options === void 0) { _options = {}; }\n this._options = _options;\n /**\n * @inheritDoc\n */\n this.name = InboundFilters.id;\n }\n /**\n * @inheritDoc\n */\n InboundFilters.prototype.setupOnce = function () {\n addGlobalEventProcessor(function (event) {\n var hub = getCurrentHub();\n if (!hub) {\n return event;\n }\n var self = hub.getIntegration(InboundFilters);\n if (self) {\n var client = hub.getClient();\n var clientOptions = client ? client.getOptions() : {};\n // This checks prevents most of the occurrences of the bug linked below:\n // https://github.com/getsentry/sentry-javascript/issues/2622\n // The bug is caused by multiple SDK instances, where one is minified and one is using non-mangled code.\n // Unfortunatelly we cannot fix it reliably (thus reserved property in rollup's terser config),\n // as we cannot force people using multiple instances in their apps to sync SDK versions.\n var options = typeof self._mergeOptions === 'function' ? self._mergeOptions(clientOptions) : {};\n if (typeof self._shouldDropEvent !== 'function') {\n return event;\n }\n return self._shouldDropEvent(event, options) ? null : event;\n }\n return event;\n });\n };\n /** JSDoc */\n InboundFilters.prototype._shouldDropEvent = function (event, options) {\n if (this._isSentryError(event, options)) {\n logger.warn(\"Event dropped due to being internal Sentry Error.\\nEvent: \" + getEventDescription(event));\n return true;\n }\n if (this._isIgnoredError(event, options)) {\n logger.warn(\"Event dropped due to being matched by `ignoreErrors` option.\\nEvent: \" + getEventDescription(event));\n return true;\n }\n if (this._isDeniedUrl(event, options)) {\n logger.warn(\"Event dropped due to being matched by `denyUrls` option.\\nEvent: \" + getEventDescription(event) + \".\\nUrl: \" + this._getEventFilterUrl(event));\n return true;\n }\n if (!this._isAllowedUrl(event, options)) {\n logger.warn(\"Event dropped due to not being matched by `allowUrls` option.\\nEvent: \" + getEventDescription(event) + \".\\nUrl: \" + this._getEventFilterUrl(event));\n return true;\n }\n return false;\n };\n /** JSDoc */\n InboundFilters.prototype._isSentryError = function (event, options) {\n if (!options.ignoreInternal) {\n return false;\n }\n try {\n return ((event &&\n event.exception &&\n event.exception.values &&\n event.exception.values[0] &&\n event.exception.values[0].type === 'SentryError') ||\n false);\n }\n catch (_oO) {\n return false;\n }\n };\n /** JSDoc */\n InboundFilters.prototype._isIgnoredError = function (event, options) {\n if (!options.ignoreErrors || !options.ignoreErrors.length) {\n return false;\n }\n return this._getPossibleEventMessages(event).some(function (message) {\n // Not sure why TypeScript complains here...\n return options.ignoreErrors.some(function (pattern) { return isMatchingPattern(message, pattern); });\n });\n };\n /** JSDoc */\n InboundFilters.prototype._isDeniedUrl = function (event, options) {\n // TODO: Use Glob instead?\n if (!options.denyUrls || !options.denyUrls.length) {\n return false;\n }\n var url = this._getEventFilterUrl(event);\n return !url ? false : options.denyUrls.some(function (pattern) { return isMatchingPattern(url, pattern); });\n };\n /** JSDoc */\n InboundFilters.prototype._isAllowedUrl = function (event, options) {\n // TODO: Use Glob instead?\n if (!options.allowUrls || !options.allowUrls.length) {\n return true;\n }\n var url = this._getEventFilterUrl(event);\n return !url ? true : options.allowUrls.some(function (pattern) { return isMatchingPattern(url, pattern); });\n };\n /** JSDoc */\n InboundFilters.prototype._mergeOptions = function (clientOptions) {\n if (clientOptions === void 0) { clientOptions = {}; }\n return {\n allowUrls: __spread((this._options.whitelistUrls || []), (this._options.allowUrls || []), (clientOptions.whitelistUrls || []), (clientOptions.allowUrls || [])),\n denyUrls: __spread((this._options.blacklistUrls || []), (this._options.denyUrls || []), (clientOptions.blacklistUrls || []), (clientOptions.denyUrls || [])),\n ignoreErrors: __spread((this._options.ignoreErrors || []), (clientOptions.ignoreErrors || []), DEFAULT_IGNORE_ERRORS),\n ignoreInternal: typeof this._options.ignoreInternal !== 'undefined' ? this._options.ignoreInternal : true,\n };\n };\n /** JSDoc */\n InboundFilters.prototype._getPossibleEventMessages = function (event) {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n var _a = (event.exception.values && event.exception.values[0]) || {}, _b = _a.type, type = _b === void 0 ? '' : _b, _c = _a.value, value = _c === void 0 ? '' : _c;\n return [\"\" + value, type + \": \" + value];\n }\n catch (oO) {\n logger.error(\"Cannot extract message for event \" + getEventDescription(event));\n return [];\n }\n }\n return [];\n };\n /** JSDoc */\n InboundFilters.prototype._getEventFilterUrl = function (event) {\n try {\n if (event.stacktrace) {\n var frames_1 = event.stacktrace.frames;\n return (frames_1 && frames_1[frames_1.length - 1].filename) || null;\n }\n if (event.exception) {\n var frames_2 = event.exception.values && event.exception.values[0].stacktrace && event.exception.values[0].stacktrace.frames;\n return (frames_2 && frames_2[frames_2.length - 1].filename) || null;\n }\n return null;\n }\n catch (oO) {\n logger.error(\"Cannot extract url for event \" + getEventDescription(event));\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n InboundFilters.id = 'InboundFilters';\n return InboundFilters;\n}());\nexport { InboundFilters };\n//# sourceMappingURL=inboundfilters.js.map","import { getCurrentHub } from '@sentry/hub';\nimport { logger } from '@sentry/utils';\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind(clientClass, options) {\n var _a;\n if (options.debug === true) {\n logger.enable();\n }\n var hub = getCurrentHub();\n (_a = hub.getScope()) === null || _a === void 0 ? void 0 : _a.update(options.initialScope);\n var client = new clientClass(options);\n hub.bindClient(client);\n}\n//# sourceMappingURL=sdk.js.map","import { __assign } from \"tslib\";\nimport { fill, getFunctionName, getGlobalObject } from '@sentry/utils';\nimport { wrap } from '../helpers';\nvar DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nvar TryCatch = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function TryCatch(options) {\n /**\n * @inheritDoc\n */\n this.name = TryCatch.id;\n this._options = __assign({ XMLHttpRequest: true, eventTarget: true, requestAnimationFrame: true, setInterval: true, setTimeout: true }, options);\n }\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n TryCatch.prototype.setupOnce = function () {\n var global = getGlobalObject();\n if (this._options.setTimeout) {\n fill(global, 'setTimeout', this._wrapTimeFunction.bind(this));\n }\n if (this._options.setInterval) {\n fill(global, 'setInterval', this._wrapTimeFunction.bind(this));\n }\n if (this._options.requestAnimationFrame) {\n fill(global, 'requestAnimationFrame', this._wrapRAF.bind(this));\n }\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in global) {\n fill(XMLHttpRequest.prototype, 'send', this._wrapXHR.bind(this));\n }\n if (this._options.eventTarget) {\n var eventTarget = Array.isArray(this._options.eventTarget) ? this._options.eventTarget : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(this._wrapEventTarget.bind(this));\n }\n };\n /** JSDoc */\n TryCatch.prototype._wrapTimeFunction = function (original) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n };\n /** JSDoc */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TryCatch.prototype._wrapRAF = function (original) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (callback) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.call(this, wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }));\n };\n };\n /** JSDoc */\n TryCatch.prototype._wrapEventTarget = function (target) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var global = getGlobalObject();\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n var proto = global[target] && global[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n fill(proto, 'addEventListener', function (original) {\n return function (eventName, fn, options) {\n try {\n if (typeof fn.handleEvent === 'function') {\n fn.handleEvent = wrap(fn.handleEvent.bind(fn), {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target: target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n }\n catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n return original.call(this, eventName, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target: target,\n },\n handled: true,\n type: 'instrument',\n },\n }), options);\n };\n });\n fill(proto, 'removeEventListener', function (originalRemoveEventListener) {\n return function (eventName, fn, options) {\n var _a;\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n var wrappedEventHandler = fn;\n try {\n var originalEventHandler = (_a = wrappedEventHandler) === null || _a === void 0 ? void 0 : _a.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n }\n catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n });\n };\n /** JSDoc */\n TryCatch.prototype._wrapXHR = function (originalSend) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var xhr = this;\n var xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n xmlHttpRequestProps.forEach(function (prop) {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original) {\n var wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n // If Instrument integration has been called before TryCatch, get the name of original function\n if (original.__sentry_original__) {\n wrapOptions.mechanism.data.handler = getFunctionName(original.__sentry_original__);\n }\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n return originalSend.apply(this, args);\n };\n };\n /**\n * @inheritDoc\n */\n TryCatch.id = 'TryCatch';\n return TryCatch;\n}());\nexport { TryCatch };\n//# sourceMappingURL=trycatch.js.map","import { getCurrentHub, initAndBind, Integrations as CoreIntegrations } from '@sentry/core';\nimport { addInstrumentationHandler, getGlobalObject, logger, SyncPromise } from '@sentry/utils';\nimport { BrowserClient } from './client';\nimport { wrap as internalWrap } from './helpers';\nimport { Breadcrumbs, GlobalHandlers, LinkedErrors, TryCatch, UserAgent } from './integrations';\nexport var defaultIntegrations = [\n new CoreIntegrations.InboundFilters(),\n new CoreIntegrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new UserAgent(),\n];\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options) {\n if (options === void 0) { options = {}; }\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n var window_1 = getGlobalObject();\n // This supports the variable that sentry-webpack-plugin injects\n if (window_1.SENTRY_RELEASE && window_1.SENTRY_RELEASE.id) {\n options.release = window_1.SENTRY_RELEASE.id;\n }\n }\n if (options.autoSessionTracking === undefined) {\n options.autoSessionTracking = true;\n }\n initAndBind(BrowserClient, options);\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\n}\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nexport function showReportDialog(options) {\n if (options === void 0) { options = {}; }\n if (!options.eventId) {\n options.eventId = getCurrentHub().lastEventId();\n }\n var client = getCurrentHub().getClient();\n if (client) {\n client.showReportDialog(options);\n }\n}\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId() {\n return getCurrentHub().lastEventId();\n}\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad() {\n // Noop\n}\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback) {\n callback();\n}\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function flush(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n return SyncPromise.reject(false);\n}\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function close(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n return SyncPromise.reject(false);\n}\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrap(fn) {\n return internalWrap(fn)();\n}\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking() {\n var window = getGlobalObject();\n var document = window.document;\n if (typeof document === 'undefined') {\n logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n return;\n }\n var hub = getCurrentHub();\n // The only way for this to be false is for there to be a version mismatch between @sentry/browser (>= 6.0.0) and\n // @sentry/hub (< 5.27.0). In the simple case, there won't ever be such a mismatch, because the two packages are\n // pinned at the same version in package.json, but there are edge cases where it's possible. See\n // https://github.com/getsentry/sentry-javascript/issues/3207 and\n // https://github.com/getsentry/sentry-javascript/issues/3234 and\n // https://github.com/getsentry/sentry-javascript/issues/3278.\n if (typeof hub.startSession !== 'function' || typeof hub.captureSession !== 'function') {\n return;\n }\n hub.startSession();\n hub.captureSession();\n // We want to create a session for every navigation as well\n addInstrumentationHandler({\n callback: function () {\n hub.startSession();\n hub.captureSession();\n },\n type: 'history',\n });\n}\n//# sourceMappingURL=sdk.js.map","import { __assign } from \"tslib\";\nimport { API, captureException, withScope } from '@sentry/core';\nimport { addExceptionMechanism, addExceptionTypeValue, logger } from '@sentry/utils';\nvar ignoreOnError = 0;\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError() {\n return ignoreOnError > 0;\n}\n/**\n * @hidden\n */\nexport function ignoreNextOnError() {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(function () {\n ignoreOnError -= 1;\n });\n}\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(fn, options, before) {\n if (options === void 0) { options = {}; }\n if (typeof fn !== 'function') {\n return fn;\n }\n try {\n // We don't wanna wrap it twice\n if (fn.__sentry__) {\n return fn;\n }\n // If this has already been wrapped in the past, return that wrapped function\n if (fn.__sentry_wrapped__) {\n return fn.__sentry_wrapped__;\n }\n }\n catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n /* eslint-disable prefer-rest-params */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var sentryWrapped = function () {\n var args = Array.prototype.slice.call(arguments);\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n var wrappedArguments = args.map(function (arg) { return wrap(arg, options); });\n if (fn.handleEvent) {\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return fn.handleEvent.apply(this, wrappedArguments);\n }\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n }\n catch (ex) {\n ignoreNextOnError();\n withScope(function (scope) {\n scope.addEventProcessor(function (event) {\n var processedEvent = __assign({}, event);\n if (options.mechanism) {\n addExceptionTypeValue(processedEvent, undefined, undefined);\n addExceptionMechanism(processedEvent, options.mechanism);\n }\n processedEvent.extra = __assign(__assign({}, processedEvent.extra), { arguments: args });\n return processedEvent;\n });\n captureException(ex);\n });\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (var property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n }\n catch (_oO) { } // eslint-disable-line no-empty\n fn.prototype = fn.prototype || {};\n sentryWrapped.prototype = fn.prototype;\n Object.defineProperty(fn, '__sentry_wrapped__', {\n enumerable: false,\n value: sentryWrapped,\n });\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n Object.defineProperties(sentryWrapped, {\n __sentry__: {\n enumerable: false,\n value: true,\n },\n __sentry_original__: {\n enumerable: false,\n value: fn,\n },\n });\n // Restore original function name (not all browsers allow that)\n try {\n var descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name');\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get: function () {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n }\n catch (_oO) { }\n return sentryWrapped;\n}\n/**\n * Injects the Report Dialog script\n * @hidden\n */\nexport function injectReportDialog(options) {\n if (options === void 0) { options = {}; }\n if (!options.eventId) {\n logger.error(\"Missing eventId option in showReportDialog call\");\n return;\n }\n if (!options.dsn) {\n logger.error(\"Missing dsn option in showReportDialog call\");\n return;\n }\n var script = document.createElement('script');\n script.async = true;\n script.src = new API(options.dsn).getReportDialogEndpoint(options);\n if (options.onLoad) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n script.onload = options.onLoad;\n }\n (document.head || document.body).appendChild(script);\n}\n//# sourceMappingURL=helpers.js.map","import { __read } from \"tslib\";\nimport { SentryError } from './error';\n/** Regular expression used to parse a Dsn. */\nvar DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n/** Error message */\nvar ERROR_MESSAGE = 'Invalid Dsn';\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nvar Dsn = /** @class */ (function () {\n /** Creates a new Dsn component */\n function Dsn(from) {\n if (typeof from === 'string') {\n this._fromString(from);\n }\n else {\n this._fromComponents(from);\n }\n this._validate();\n }\n /**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\n Dsn.prototype.toString = function (withPassword) {\n if (withPassword === void 0) { withPassword = false; }\n var _a = this, host = _a.host, path = _a.path, pass = _a.pass, port = _a.port, projectId = _a.projectId, protocol = _a.protocol, publicKey = _a.publicKey;\n return (protocol + \"://\" + publicKey + (withPassword && pass ? \":\" + pass : '') +\n (\"@\" + host + (port ? \":\" + port : '') + \"/\" + (path ? path + \"/\" : path) + projectId));\n };\n /** Parses a string into this Dsn. */\n Dsn.prototype._fromString = function (str) {\n var match = DSN_REGEX.exec(str);\n if (!match) {\n throw new SentryError(ERROR_MESSAGE);\n }\n var _a = __read(match.slice(1), 6), protocol = _a[0], publicKey = _a[1], _b = _a[2], pass = _b === void 0 ? '' : _b, host = _a[3], _c = _a[4], port = _c === void 0 ? '' : _c, lastPath = _a[5];\n var path = '';\n var projectId = lastPath;\n var split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop();\n }\n if (projectId) {\n var projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n this._fromComponents({ host: host, pass: pass, path: path, projectId: projectId, port: port, protocol: protocol, publicKey: publicKey });\n };\n /** Maps Dsn components into this instance. */\n Dsn.prototype._fromComponents = function (components) {\n // TODO this is for backwards compatibility, and can be removed in a future version\n if ('user' in components && !('publicKey' in components)) {\n components.publicKey = components.user;\n }\n this.user = components.publicKey || '';\n this.protocol = components.protocol;\n this.publicKey = components.publicKey || '';\n this.pass = components.pass || '';\n this.host = components.host;\n this.port = components.port || '';\n this.path = components.path || '';\n this.projectId = components.projectId;\n };\n /** Validates this Dsn and throws on error. */\n Dsn.prototype._validate = function () {\n var _this = this;\n ['protocol', 'publicKey', 'host', 'projectId'].forEach(function (component) {\n if (!_this[component]) {\n throw new SentryError(ERROR_MESSAGE + \": \" + component + \" missing\");\n }\n });\n if (!this.projectId.match(/^\\d+$/)) {\n throw new SentryError(ERROR_MESSAGE + \": Invalid projectId \" + this.projectId);\n }\n if (this.protocol !== 'http' && this.protocol !== 'https') {\n throw new SentryError(ERROR_MESSAGE + \": Invalid protocol \" + this.protocol);\n }\n if (this.port && isNaN(parseInt(this.port, 10))) {\n throw new SentryError(ERROR_MESSAGE + \": Invalid port \" + this.port);\n }\n };\n return Dsn;\n}());\nexport { Dsn };\n//# sourceMappingURL=dsn.js.map","// TODO: Remove in the next major release and rely only on @sentry/core SDK_VERSION and SdkInfo metadata\nexport var SDK_NAME = 'sentry.javascript.browser';\n//# sourceMappingURL=version.js.map","import { __assign } from \"tslib\";\nexport * from './exports';\nimport { Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\nimport * as BrowserIntegrations from './integrations';\nimport * as Transports from './transports';\nvar windowIntegrations = {};\n// This block is needed to add compatibility with the integrations packages when used with a CDN\nvar _window = getGlobalObject();\nif (_window.Sentry && _window.Sentry.Integrations) {\n windowIntegrations = _window.Sentry.Integrations;\n}\nvar INTEGRATIONS = __assign(__assign(__assign({}, windowIntegrations), CoreIntegrations), BrowserIntegrations);\nexport { INTEGRATIONS as Integrations, Transports };\n//# sourceMappingURL=index.js.map","import { Dsn, urlEncode } from '@sentry/utils';\nvar SENTRY_API_VERSION = '7';\n/**\n * Helper class to provide urls, headers and metadata that can be used to form\n * different types of requests to Sentry endpoints.\n * Supports both envelopes and regular event requests.\n **/\nvar API = /** @class */ (function () {\n /** Create a new instance of API */\n function API(dsn, metadata) {\n if (metadata === void 0) { metadata = {}; }\n this.dsn = dsn;\n this._dsnObject = new Dsn(dsn);\n this.metadata = metadata;\n }\n /** Returns the Dsn object. */\n API.prototype.getDsn = function () {\n return this._dsnObject;\n };\n /** Returns the prefix to construct Sentry ingestion API endpoints. */\n API.prototype.getBaseApiEndpoint = function () {\n var dsn = this._dsnObject;\n var protocol = dsn.protocol ? dsn.protocol + \":\" : '';\n var port = dsn.port ? \":\" + dsn.port : '';\n return protocol + \"//\" + dsn.host + port + (dsn.path ? \"/\" + dsn.path : '') + \"/api/\";\n };\n /** Returns the store endpoint URL. */\n API.prototype.getStoreEndpoint = function () {\n return this._getIngestEndpoint('store');\n };\n /**\n * Returns the store endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\n API.prototype.getStoreEndpointWithUrlEncodedAuth = function () {\n return this.getStoreEndpoint() + \"?\" + this._encodedAuth();\n };\n /**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\n API.prototype.getEnvelopeEndpointWithUrlEncodedAuth = function () {\n return this._getEnvelopeEndpoint() + \"?\" + this._encodedAuth();\n };\n /** Returns only the path component for the store endpoint. */\n API.prototype.getStoreEndpointPath = function () {\n var dsn = this._dsnObject;\n return (dsn.path ? \"/\" + dsn.path : '') + \"/api/\" + dsn.projectId + \"/store/\";\n };\n /**\n * Returns an object that can be used in request headers.\n * This is needed for node and the old /store endpoint in sentry\n */\n API.prototype.getRequestHeaders = function (clientName, clientVersion) {\n // CHANGE THIS to use metadata but keep clientName and clientVersion compatible\n var dsn = this._dsnObject;\n var header = [\"Sentry sentry_version=\" + SENTRY_API_VERSION];\n header.push(\"sentry_client=\" + clientName + \"/\" + clientVersion);\n header.push(\"sentry_key=\" + dsn.publicKey);\n if (dsn.pass) {\n header.push(\"sentry_secret=\" + dsn.pass);\n }\n return {\n 'Content-Type': 'application/json',\n 'X-Sentry-Auth': header.join(', '),\n };\n };\n /** Returns the url to the report dialog endpoint. */\n API.prototype.getReportDialogEndpoint = function (dialogOptions) {\n if (dialogOptions === void 0) { dialogOptions = {}; }\n var dsn = this._dsnObject;\n var endpoint = this.getBaseApiEndpoint() + \"embed/error-page/\";\n var encodedOptions = [];\n encodedOptions.push(\"dsn=\" + dsn.toString());\n for (var key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n if (key === 'user') {\n if (!dialogOptions.user) {\n continue;\n }\n if (dialogOptions.user.name) {\n encodedOptions.push(\"name=\" + encodeURIComponent(dialogOptions.user.name));\n }\n if (dialogOptions.user.email) {\n encodedOptions.push(\"email=\" + encodeURIComponent(dialogOptions.user.email));\n }\n }\n else {\n encodedOptions.push(encodeURIComponent(key) + \"=\" + encodeURIComponent(dialogOptions[key]));\n }\n }\n if (encodedOptions.length) {\n return endpoint + \"?\" + encodedOptions.join('&');\n }\n return endpoint;\n };\n /** Returns the envelope endpoint URL. */\n API.prototype._getEnvelopeEndpoint = function () {\n return this._getIngestEndpoint('envelope');\n };\n /** Returns the ingest API endpoint for target. */\n API.prototype._getIngestEndpoint = function (target) {\n var base = this.getBaseApiEndpoint();\n var dsn = this._dsnObject;\n return \"\" + base + dsn.projectId + \"/\" + target + \"/\";\n };\n /** Returns a URL-encoded string with auth config suitable for a query string. */\n API.prototype._encodedAuth = function () {\n var dsn = this._dsnObject;\n var auth = {\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n };\n return urlEncode(auth);\n };\n return API;\n}());\nexport { API };\n//# sourceMappingURL=api.js.map","import { __assign, __read, __spread } from \"tslib\";\nimport { getCurrentHub } from '@sentry/hub';\n/**\n * This calls a function on the current hub.\n * @param method function to call on hub.\n * @param args to pass to function.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction callOnHub(method) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var hub = getCurrentHub();\n if (hub && hub[method]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return hub[method].apply(hub, __spread(args));\n }\n throw new Error(\"No hub defined or \" + method + \" was not found on the hub, please open a bug report.\");\n}\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @returns The generated eventId.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function captureException(exception, captureContext) {\n var syntheticException;\n try {\n throw new Error('Sentry syntheticException');\n }\n catch (exception) {\n syntheticException = exception;\n }\n return callOnHub('captureException', exception, {\n captureContext: captureContext,\n originalException: exception,\n syntheticException: syntheticException,\n });\n}\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param level Define the level of the message.\n * @returns The generated eventId.\n */\nexport function captureMessage(message, captureContext) {\n var syntheticException;\n try {\n throw new Error(message);\n }\n catch (exception) {\n syntheticException = exception;\n }\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n var level = typeof captureContext === 'string' ? captureContext : undefined;\n var context = typeof captureContext !== 'string' ? { captureContext: captureContext } : undefined;\n return callOnHub('captureMessage', message, level, __assign({ originalException: message, syntheticException: syntheticException }, context));\n}\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nexport function captureEvent(event) {\n return callOnHub('captureEvent', event);\n}\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nexport function configureScope(callback) {\n callOnHub('configureScope', callback);\n}\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nexport function addBreadcrumb(breadcrumb) {\n callOnHub('addBreadcrumb', breadcrumb);\n}\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function setContext(name, context) {\n callOnHub('setContext', name, context);\n}\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nexport function setExtras(extras) {\n callOnHub('setExtras', extras);\n}\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nexport function setTags(tags) {\n callOnHub('setTags', tags);\n}\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nexport function setExtra(key, extra) {\n callOnHub('setExtra', key, extra);\n}\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nexport function setTag(key, value) {\n callOnHub('setTag', key, value);\n}\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nexport function setUser(user) {\n callOnHub('setUser', user);\n}\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nexport function withScope(callback) {\n callOnHub('withScope', callback);\n}\n/**\n * Calls a function on the latest client. Use this with caution, it's meant as\n * in \"internal\" helper so we don't need to expose every possible function in\n * the shim. It is not guaranteed that the client actually implements the\n * function.\n *\n * @param method The method to call on the client/client.\n * @param args Arguments to pass to the client/fontend.\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _callOnClient(method) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n callOnHub.apply(void 0, __spread(['_invokeClient', method], args));\n}\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.finish()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n */\nexport function startTransaction(context, customSamplingContext) {\n return callOnHub('startTransaction', __assign({}, context), customSamplingContext);\n}\n//# sourceMappingURL=index.js.map","export { GlobalHandlers } from './globalhandlers';\nexport { TryCatch } from './trycatch';\nexport { Breadcrumbs } from './breadcrumbs';\nexport { LinkedErrors } from './linkederrors';\nexport { UserAgent } from './useragent';\n//# sourceMappingURL=index.js.map","/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv() {\n return Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n}\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nexport function dynamicRequire(mod, request) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nexport function loadModule(moduleName) {\n var mod;\n try {\n mod = dynamicRequire(module, moduleName);\n }\n catch (e) {\n // no-empty\n }\n try {\n var cwd = dynamicRequire(module, 'process').cwd;\n mod = dynamicRequire(module, cwd() + \"/node_modules/\" + moduleName);\n }\n catch (e) {\n // no-empty\n }\n return mod;\n}\n//# sourceMappingURL=node.js.map","import { __assign, __values } from \"tslib\";\nimport { isInstanceOf, isString } from './is';\nimport { logger } from './logger';\nimport { getGlobalObject } from './misc';\nimport { fill } from './object';\nimport { getFunctionName } from './stacktrace';\nimport { supportsHistory, supportsNativeFetch } from './supports';\nvar global = getGlobalObject();\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\nvar handlers = {};\nvar instrumented = {};\n/** Instruments given API */\nfunction instrument(type) {\n if (instrumented[type]) {\n return;\n }\n instrumented[type] = true;\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n logger.warn('unknown instrumentation type:', type);\n }\n}\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addInstrumentationHandler(handler) {\n if (!handler || typeof handler.type !== 'string' || typeof handler.callback !== 'function') {\n return;\n }\n handlers[handler.type] = handlers[handler.type] || [];\n handlers[handler.type].push(handler.callback);\n instrument(handler.type);\n}\n/** JSDoc */\nfunction triggerHandlers(type, data) {\n var e_1, _a;\n if (!type || !handlers[type]) {\n return;\n }\n try {\n for (var _b = __values(handlers[type] || []), _c = _b.next(); !_c.done; _c = _b.next()) {\n var handler = _c.value;\n try {\n handler(data);\n }\n catch (e) {\n logger.error(\"Error while triggering instrumentation handler.\\nType: \" + type + \"\\nName: \" + getFunctionName(handler) + \"\\nError: \" + e);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n}\n/** JSDoc */\nfunction instrumentConsole() {\n if (!('console' in global)) {\n return;\n }\n ['debug', 'info', 'warn', 'error', 'log', 'assert'].forEach(function (level) {\n if (!(level in global.console)) {\n return;\n }\n fill(global.console, level, function (originalConsoleLevel) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n triggerHandlers('console', { args: args, level: level });\n // this fails for some browsers. :(\n if (originalConsoleLevel) {\n Function.prototype.apply.call(originalConsoleLevel, global.console, args);\n }\n };\n });\n });\n}\n/** JSDoc */\nfunction instrumentFetch() {\n if (!supportsNativeFetch()) {\n return;\n }\n fill(global, 'fetch', function (originalFetch) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var handlerData = {\n args: args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n triggerHandlers('fetch', __assign({}, handlerData));\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(global, args).then(function (response) {\n triggerHandlers('fetch', __assign(__assign({}, handlerData), { endTimestamp: Date.now(), response: response }));\n return response;\n }, function (error) {\n triggerHandlers('fetch', __assign(__assign({}, handlerData), { endTimestamp: Date.now(), error: error }));\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n });\n };\n });\n}\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs) {\n if (fetchArgs === void 0) { fetchArgs = []; }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs) {\n if (fetchArgs === void 0) { fetchArgs = []; }\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n/* eslint-enable @typescript-eslint/no-unsafe-member-access */\n/** JSDoc */\nfunction instrumentXHR() {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n // Poor man's implementation of ES6 `Map`, tracking and keeping in sync key and value separately.\n var requestKeys = [];\n var requestValues = [];\n var xhrproto = XMLHttpRequest.prototype;\n fill(xhrproto, 'open', function (originalOpen) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var xhr = this;\n var url = args[1];\n xhr.__sentry_xhr__ = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n };\n // if Sentry key appears in URL, don't capture it as a request\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isString(url) && xhr.__sentry_xhr__.method === 'POST' && url.match(/sentry_key/)) {\n xhr.__sentry_own_request__ = true;\n }\n var onreadystatechangeHandler = function () {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n if (xhr.__sentry_xhr__) {\n xhr.__sentry_xhr__.status_code = xhr.status;\n }\n }\n catch (e) {\n /* do nothing */\n }\n try {\n var requestPos = requestKeys.indexOf(xhr);\n if (requestPos !== -1) {\n // Make sure to pop both key and value to keep it in sync.\n requestKeys.splice(requestPos);\n var args_1 = requestValues.splice(requestPos)[0];\n if (xhr.__sentry_xhr__ && args_1[0] !== undefined) {\n xhr.__sentry_xhr__.body = args_1[0];\n }\n }\n }\n catch (e) {\n /* do nothing */\n }\n triggerHandlers('xhr', {\n args: args,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr: xhr,\n });\n }\n };\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n fill(xhr, 'onreadystatechange', function (original) {\n return function () {\n var readyStateArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n readyStateArgs[_i] = arguments[_i];\n }\n onreadystatechangeHandler();\n return original.apply(xhr, readyStateArgs);\n };\n });\n }\n else {\n xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n return originalOpen.apply(xhr, args);\n };\n });\n fill(xhrproto, 'send', function (originalSend) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n requestKeys.push(this);\n requestValues.push(args);\n triggerHandlers('xhr', {\n args: args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n return originalSend.apply(this, args);\n };\n });\n}\nvar lastHref;\n/** JSDoc */\nfunction instrumentHistory() {\n if (!supportsHistory()) {\n return;\n }\n var oldOnPopState = global.onpopstate;\n global.onpopstate = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var to = global.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n var from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from: from,\n to: to,\n });\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n }\n catch (_oO) {\n // no-empty\n }\n }\n };\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n var from = lastHref;\n var to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from: from,\n to: to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n fill(global.history, 'pushState', historyReplacementFunction);\n fill(global.history, 'replaceState', historyReplacementFunction);\n}\nvar debounceDuration = 1000;\nvar debounceTimerID;\nvar lastCapturedEvent;\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous, current) {\n // If there was no previous event, it should always be swapped for the new one.\n if (!previous) {\n return true;\n }\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (previous.type !== current.type) {\n return true;\n }\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (previous.target !== current.target) {\n return true;\n }\n }\n catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return false;\n}\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event) {\n // We are only interested in filtering `keypress` events for now.\n if (event.type !== 'keypress') {\n return false;\n }\n try {\n var target = event.target;\n if (!target || !target.tagName) {\n return true;\n }\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n }\n catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n return true;\n}\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler, globalListener) {\n if (globalListener === void 0) { globalListener = false; }\n return function (event) {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event)) {\n return;\n }\n var name = event.type === 'keypress' ? 'input' : event.type;\n // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n if (debounceTimerID === undefined) {\n handler({\n event: event,\n name: name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n handler({\n event: event,\n name: name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = global.setTimeout(function () {\n debounceTimerID = undefined;\n }, debounceDuration);\n };\n}\n/** JSDoc */\nfunction instrumentDOM() {\n if (!('document' in global)) {\n return;\n }\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n var triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n var globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n global.document.addEventListener('click', globalDOMEventHandler, false);\n global.document.addEventListener('keypress', globalDOMEventHandler, false);\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach(function (target) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n var proto = global[target] && global[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n fill(proto, 'addEventListener', function (originalAddEventListener) {\n return function (type, listener, options) {\n if (type === 'click' || type == 'keypress') {\n try {\n var el = this;\n var handlers_1 = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n var handlerForType = (handlers_1[type] = handlers_1[type] || { refCount: 0 });\n if (!handlerForType.handler) {\n var handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n handlerForType.refCount += 1;\n }\n catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n fill(proto, 'removeEventListener', function (originalRemoveEventListener) {\n return function (type, listener, options) {\n if (type === 'click' || type == 'keypress') {\n try {\n var el = this;\n var handlers_2 = el.__sentry_instrumentation_handlers__ || {};\n var handlerForType = handlers_2[type];\n if (handlerForType) {\n handlerForType.refCount -= 1;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers_2[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n }\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers_2).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n }\n catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n });\n });\n}\nvar _oldOnErrorHandler = null;\n/** JSDoc */\nfunction instrumentError() {\n _oldOnErrorHandler = global.onerror;\n global.onerror = function (msg, url, line, column, error) {\n triggerHandlers('error', {\n column: column,\n error: error,\n line: line,\n msg: msg,\n url: url,\n });\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n return false;\n };\n}\nvar _oldOnUnhandledRejectionHandler = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection() {\n _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n global.onunhandledrejection = function (e) {\n triggerHandlers('unhandledrejection', e);\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n return true;\n };\n}\n//# sourceMappingURL=instrument.js.map","export var SDK_VERSION = '6.4.1';\n//# sourceMappingURL=version.js.map","var defaultFunctionName = '';\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn) {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n }\n catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n//# sourceMappingURL=stacktrace.js.map","import { isRegExp, isString } from './is';\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nexport function truncate(str, max) {\n if (max === void 0) { max = 0; }\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : str.substr(0, max) + \"...\";\n}\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line, colno) {\n var newLine = line;\n var ll = newLine.length;\n if (ll <= 150) {\n return newLine;\n }\n if (colno > ll) {\n // eslint-disable-next-line no-param-reassign\n colno = ll;\n }\n var start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n var end = Math.min(start + 140, ll);\n if (end > ll - 5) {\n end = ll;\n }\n if (end === ll) {\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 < ll) {\n newLine += ' {snip}';\n }\n return newLine;\n}\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input, delimiter) {\n if (!Array.isArray(input)) {\n return '';\n }\n var output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (var i = 0; i < input.length; i++) {\n var value = input[i];\n try {\n output.push(String(value));\n }\n catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n return output.join(delimiter);\n}\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nexport function isMatchingPattern(value, pattern) {\n if (!isString(value)) {\n return false;\n }\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n//# sourceMappingURL=string.js.map","export { BaseTransport } from './base';\nexport { FetchTransport } from './fetch';\nexport { XHRTransport } from './xhr';\n//# sourceMappingURL=index.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat) {\n switch (Object.prototype.toString.call(wat)) {\n case '[object Error]':\n return true;\n case '[object Exception]':\n return true;\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat) {\n return Object.prototype.toString.call(wat) === '[object ErrorEvent]';\n}\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat) {\n return Object.prototype.toString.call(wat) === '[object DOMError]';\n}\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat) {\n return Object.prototype.toString.call(wat) === '[object DOMException]';\n}\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat) {\n return Object.prototype.toString.call(wat) === '[object String]';\n}\n/**\n * Checks whether given value's is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat) {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat) {\n return Object.prototype.toString.call(wat) === '[object Object]';\n}\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat) {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat) {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat) {\n return Object.prototype.toString.call(wat) === '[object RegExp]';\n}\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat) {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat, base) {\n try {\n return wat instanceof base;\n }\n catch (_e) {\n return false;\n }\n}\n//# sourceMappingURL=is.js.map"],"sourceRoot":""}