{"version":3,"sources":["webpack:///./node_modules/@sentry/utils/esm/node.js","webpack:///./node_modules/@sentry/utils/esm/logger.js","webpack:///./node_modules/@sentry/utils/esm/syncpromise.js","webpack:///./node_modules/@sentry/utils/esm/stacktrace.js","webpack:///./node_modules/@sentry/utils/esm/is.js","webpack:///./node_modules/@sentry/hub/esm/scope.js","webpack:///./node_modules/@sentry/types/esm/severity.js","webpack:///./node_modules/@sentry/utils/esm/browser.js","webpack:///./node_modules/@sentry/minimal/esm/index.js","webpack:///./node_modules/@sentry/utils/esm/memo.js","webpack:///./node_modules/@sentry/utils/esm/misc.js","webpack:///./node_modules/@sentry/utils/esm/object.js","webpack:///./node_modules/@sentry/utils/esm/time.js","webpack:///./node_modules/@sentry/hub/esm/session.js","webpack:///./node_modules/@sentry/hub/esm/hub.js","webpack:///./node_modules/@sentry/types/esm/session.js","webpack:///./node_modules/@sentry/core/esm/integrations/functiontostring.js","webpack:///./node_modules/@sentry/core/esm/integrations/inboundfilters.js","webpack:///./node_modules/@sentry/utils/esm/polyfill.js","webpack:///./node_modules/@sentry/utils/esm/error.js","webpack:///./node_modules/@sentry/utils/esm/dsn.js","webpack:///./node_modules/@sentry/core/esm/integration.js","webpack:///./node_modules/@sentry/core/esm/baseclient.js","webpack:///./node_modules/@sentry/types/esm/status.js","webpack:///./node_modules/@sentry/core/esm/transports/noop.js","webpack:///./node_modules/@sentry/core/esm/basebackend.js","webpack:///./node_modules/@sentry/utils/esm/supports.js","webpack:///./node_modules/@sentry/browser/esm/tracekit.js","webpack:///./node_modules/@sentry/browser/esm/parsers.js","webpack:///./node_modules/@sentry/browser/esm/eventbuilder.js","webpack:///./node_modules/@sentry/core/esm/request.js","webpack:///./node_modules/@sentry/core/esm/api.js","webpack:///./node_modules/@sentry/utils/esm/promisebuffer.js","webpack:///./node_modules/@sentry/browser/esm/transports/base.js","webpack:///./node_modules/@sentry/browser/esm/transports/fetch.js","webpack:///./node_modules/@sentry/browser/esm/transports/xhr.js","webpack:///./node_modules/@sentry/browser/esm/backend.js","webpack:///./node_modules/@sentry/browser/esm/helpers.js","webpack:///./node_modules/@sentry/utils/esm/instrument.js","webpack:///./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js","webpack:///./node_modules/@sentry/browser/esm/client.js","webpack:///./node_modules/@sentry/browser/esm/version.js","webpack:///./node_modules/@sentry/browser/esm/integrations/trycatch.js","webpack:///./node_modules/@sentry/browser/esm/integrations/globalhandlers.js","webpack:///./node_modules/@sentry/browser/esm/integrations/linkederrors.js","webpack:///./node_modules/@sentry/browser/esm/integrations/useragent.js","webpack:///./node_modules/@sentry/browser/esm/sdk.js","webpack:///./node_modules/@sentry/core/esm/sdk.js","webpack:///./node_modules/@sentry/utils/esm/string.js"],"names":["isNodeEnv","Object","prototype","toString","call","process","dynamicRequire","mod","request","require","global","PREFIX","Logger","this","_enabled","disable","enable","log","args","_i","arguments","length","console","join","warn","error","__SENTRY__","logger","States","SyncPromise","executor","_this","_state","PENDING","_handlers","_resolve","value","_setResult","RESOLVED","_reject","reason","REJECTED","state","then","_value","_executeHandlers","_attachHandler","handler","concat","cachedHandlers","slice","forEach","done","onfulfilled","onrejected","e","resolve","reject","_","all","collection","Array","isArray","counter","resolvedCollection","item","index","TypeError","result","catch","val","finally","onfinally","isRejected","getFunctionName","fn","name","isError","wat","isInstanceOf","Error","isErrorEvent","isDOMError","isDOMException","isString","isPrimitive","isPlainObject","isEvent","Event","isElement","Element","isRegExp","isThenable","Boolean","isSyntheticEvent","base","_e","Scope","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_user","_tags","_extra","_contexts","clone","scope","newScope","_level","_span","_session","_transactionName","_fingerprint","addScopeListener","callback","push","addEventProcessor","setUser","user","update","_notifyScopeListeners","getUser","setTags","tags","setTag","key","_a","setExtras","extras","setExtra","extra","setFingerprint","fingerprint","setLevel","level","setTransactionName","setTransaction","setContext","context","setSpan","span","getSpan","getTransaction","_b","_c","_d","transaction","spanRecorder","spans","setSession","session","getSession","captureContext","updatedScope","keys","contexts","clear","undefined","addBreadcrumb","breadcrumb","maxBreadcrumbs","mergedBreadcrumb","timestamp","clearBreadcrumbs","applyToEvent","event","hint","trace","getTraceContext","transactionName","_applyFingerprint","breadcrumbs","_notifyEventProcessors","getGlobalEventProcessors","processors","processor","final","setTimeout","globalEventProcessors","addGlobalEventProcessor","Severity","fromString","Debug","Info","Warning","Fatal","Critical","Log","htmlTreeAsString","elem","currentElem","out","height","len","sepLength","nextStr","_htmlElementAsString","parentNode","reverse","_oO","el","className","classes","attr","i","tagName","toLowerCase","id","split","allowedAttrs","getAttribute","callOnHub","method","hub","apply","captureException","exception","syntheticException","originalException","captureMessage","message","configureScope","withScope","Memo","_hasWeakSet","WeakSet","_inner","memoize","obj","has","add","unmemoize","delete","splice","fallbackGlobalObject","getGlobalObject","window","self","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","replace","c","r","Math","random","parseUrl","url","match","query","fragment","host","path","protocol","relative","getEventDescription","values","type","event_id","consoleSandbox","originalConsole","wrappedLevels","__sentry_original__","addExceptionTypeValue","addExceptionMechanism","mechanism","getLocationHref","document","location","href","oO","parseRetryAfterHeader","now","header","headerDelay","parseInt","isNaN","headerDate","Date","parse","fill","source","replacement","original","wrapped","defineProperties","enumerable","_Oo","urlEncode","object","map","encodeURIComponent","getWalkSource","err","stack","hasOwnProperty","event_1","target","currentTarget","CustomEvent","detail","jsonSize","encodeURI","utf8Length","JSON","stringify","normalizeToSize","depth","maxSize","serialized","normalize","normalizeValue","_events","walk","memo","Infinity","normalized","serializeValue","toJSON","acc","innerKey","input","extractExceptionKeysForMessage","maxLength","sort","includedKeys","dropUndefinedKeys","e_1","rv","next","e_1_1","return","dateTimestampSource","nowSeconds","platformPerformance","module","performance","getNodePerformance","timeOrigin","getBrowserPerformance","timestampSource","dateTimestampInSeconds","bind","timing","navigationStart","Session","errors","sid","started","duration","status","Ok","ip_address","ipAddress","did","email","username","release","environment","userAgent","close","Exited","init","toISOString","attrs","user_agent","Hub","client","_version","_stack","getStackTop","bindClient","isOlderThan","version","setupIntegrations","pushScope","getScope","getStack","getClient","popScope","pop","eventId","_lastEventId","finalHint","_invokeClient","captureEvent","lastEventId","getOptions","beforeBreadcrumb","finalBreadcrumb","min","run","oldHub","makeMain","getIntegration","integration","startSpan","_callExtensionMethod","startTransaction","customSamplingContext","traceHeaders","startSession","endSession","captureSession","carrier","getMainCarrier","sentry","extensions","registry","getHubFromCarrier","setHubOnCarrier","getCurrentHub","hasHubOnCarrier","activeDomain","domain","active","registryHubTopStack","getHubFromActiveDomain","SessionStatus","originalFunctionToString","FunctionToString","setupOnce","Function","DEFAULT_IGNORE_ERRORS","InboundFilters","_options","clientOptions","options","_mergeOptions","_shouldDropEvent","_isSentryError","_isIgnoredError","_isDeniedUrl","_getEventFilterUrl","_isAllowedUrl","ignoreInternal","ignoreErrors","_getPossibleEventMessages","some","pattern","denyUrls","allowUrls","whitelistUrls","blacklistUrls","stacktrace","frames_1","frames","filename","frames_2","setPrototypeOf","__proto__","proto","prop","_super","SentryError","_newTarget","constructor","DSN_REGEX","Dsn","from","_fromString","_fromComponents","_validate","withPassword","pass","port","projectId","str","exec","projectMatch","components","component","ERROR_MESSAGE","installedIntegrations","integrations","defaultIntegrations","userIntegrations","userIntegrationsNames_1","pickedIntegrationsNames_1","defaultIntegration","indexOf","userIntegration","integrationsNames","getIntegrationsToSetup","setupIntegration","Status","BaseClient","backendClass","_integrations","_processing","_backend","dsn","_dsn","_process","_getBackend","eventFromException","_captureEvent","promisedEvent","is","eventFromMessage","_sendSession","getDsn","flush","timeout","_isClientProcessing","ready","getTransport","transportFlushed","enabled","_isEnabled","_updateSessionFromEvent","crashed","errored","exceptions","exceptions_1","exceptions_1_1","handled","headers","Crashed","Number","sendSession","ticked","interval","setInterval","clearInterval","_prepareEvent","normalizeDepth","prepared","_applyClientOptions","_applyIntegrationsMetadata","finalScope","evt","_normalizeEvent","b","data","dist","maxValueLength","sdkInfo","sdk","integrationsArray","_sendEvent","sendEvent","_processEvent","finalEvent","beforeSend","sampleRate","isTransaction","__sentry__","beforeSendResult","processedEvent","promise","fromHttpCode","code","Success","RateLimit","Invalid","Failed","Unknown","NoopTransport","Skipped","BaseBackend","_transport","_setupTransport","_exception","_hint","_message","supportsFetch","Headers","Request","Response","isNativeFetch","func","test","supportsReferrerPolicy","referrerPolicy","gecko","winjs","geckoEval","chromeEval","reactMinifiedRegexp","computeStackTrace","ex","popSize","framesToPop","parts","opera10Regex","opera11Regex","lines","line","element","column","extractMessage","computeStackTraceFromStacktraceProp","popFrames","submatch","isNative","substr","columnNumber","computeStackTraceFromStackProp","failed","exceptionFromStacktrace","prepareFramesForEvent","eventFromStacktrace","localStack","firstFrameFunction","lastFrameFunction","frame","colno","function","in_app","lineno","eventFromUnknownInput","domException","name_1","eventFromString","rejection","__serialized__","eventFromPlainObject","synthetic","attachStacktrace","sessionToSentryRequest","api","body","sent_at","getEnvelopeEndpointWithUrlEncodedAuth","eventToSentryRequest","useEnvelope","req","getStoreEndpointWithUrlEncodedAuth","envelope","API","_dsnObject","getBaseApiEndpoint","getStoreEndpoint","_getIngestEndpoint","_encodedAuth","_getEnvelopeEndpoint","getStoreEndpointPath","getRequestHeaders","clientName","clientVersion","getReportDialogEndpoint","dialogOptions","endpoint","encodedOptions","auth","sentry_key","sentry_version","PromiseBuffer","_limit","_buffer","isReady","task","remove","drain","capturedSetTimeout","clearTimeout","BaseTransport","_rateLimits","_api","_handleResponse","requestType","response","_handleRateLimit","_disabledUntil","category","_isRateLimited","e_2","rlHeader","raHeader","trim","parameters","delay","_f","e_2_1","FetchTransport","_sendRequest","sentryRequest","originalPayload","Promise","fetchParameters","assign","fetch","get","XHRTransport","XMLHttpRequest","onreadystatechange","readyState","getResponseHeader","open","setRequestHeader","send","BrowserBackend","transportOptions","transport","ignoreOnError","shouldIgnoreOnError","ignoreNextOnError","wrap","before","__sentry_wrapped__","sentryWrapped","wrappedArguments","arg","handleEvent","property","defineProperty","getOwnPropertyDescriptor","configurable","injectReportDialog","script","createElement","async","src","onLoad","onload","head","appendChild","lastHref","handlers","instrumented","instrument","originalConsoleLevel","triggerHandlers","instrumentConsole","addEventListener","domEventHandler","keypressEventHandler","eventName","innerOriginal","instrumentDOM","requestKeys","requestValues","xhrproto","originalOpen","xhr","__sentry_xhr__","toUpperCase","__sentry_own_request__","onreadystatechangeHandler","status_code","requestPos","args_1","endTimestamp","startTimestamp","readyStateArgs","originalSend","instrumentXHR","doc","sandbox","hidden","contentWindow","removeChild","supportsNativeFetch","originalFetch","handlerData","fetchData","getFetchMethod","getFetchUrl","instrumentFetch","chrome","isChromePackagedApp","app","runtime","hasHistoryApi","history","pushState","replaceState","oldOnPopState","onpopstate","historyReplacementFunction","originalHistoryFunction","to","String","instrumentHistory","_oldOnErrorHandler","onerror","msg","_oldOnUnhandledRejectionHandler","onunhandledrejection","addInstrumentationHandler","fetchArgs","keypressTimeout","lastCapturedEvent","debounceTimer","debounce","isContentEditable","Breadcrumbs","dom","addSentryBreadcrumb","_consoleBreadcrumb","_domBreadcrumb","_xhrBreadcrumb","_fetchBreadcrumb","_historyBreadcrumb","parsedLoc","parsedFrom","parsedTo","BrowserClient","showReportDialog","platform","packages","DEFAULT_EVENT_TARGET","TryCatch","eventTarget","requestAnimationFrame","_wrapTimeFunction","_wrapRAF","_wrapXHR","_wrapEventTarget","originalCallback","originalRemoveEventListener","wrappedEventHandler","originalEventHandler","xmlHttpRequestProps","wrapOptions","GlobalHandlers","_onErrorHandlerInstalled","_onUnhandledRejectionHandlerInstalled","stackTraceLimit","_installGlobalOnErrorHandler","_installGlobalOnUnhandledRejectionHandler","currentHub","hasIntegration","isFailedOwnDelivery","_eventFromIncompleteOnError","_enhanceEventWithInitialFrame","_eventFromIncompleteRejection","groups","LinkedErrors","_key","limit","_handler","linkedErrors","_walkErrorTree","UserAgent","navigator","referrer","Referer","window_1","SENTRY_RELEASE","autoSessionTracking","clientClass","debug","initAndBind","loadResolved","fcpResolved","possiblyEndSession","resolveWindowLoaded","removeEventListener","po","PerformanceObserver","entryList","getEntries","entry","startTime","firstHiddenTime_1","disconnect","visibilityState","timeStamp","once","observe","buffered","startSessionTracking","truncate","max","snipLine","newLine","ll","start","end","safeJoin","delimiter","output","isMatchingPattern"],"mappings":"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","file":"static/scripts/sentry~cd1be390-32607cd899c78f6b2c28.js","sourcesContent":["import { isString } from './is';\nimport { normalize } from './object';\n/**\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\nexport function dynamicRequire(mod, request) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n/** Default request keys that'll be used to extract data from the request */\nvar DEFAULT_REQUEST_KEYS = ['cookies', 'data', 'headers', 'method', 'query_string', 'url'];\n/**\n * Normalizes data from the request object, accounting for framework differences.\n *\n * @param req The request object from which to extract data\n * @param keys An optional array of keys to include in the normalized data. Defaults to DEFAULT_REQUEST_KEYS if not\n * provided.\n * @returns An object containing normalized request data\n */\nexport function extractNodeRequestData(req, keys) {\n if (keys === void 0) { keys = DEFAULT_REQUEST_KEYS; }\n // make sure we can safely use dynamicRequire below\n if (!isNodeEnv()) {\n throw new Error(\"Can't get node request data outside of a node environment\");\n }\n var requestData = {};\n // headers:\n // node, express: req.headers\n // koa: req.header\n var headers = (req.headers || req.header || {});\n // method:\n // node, express, koa: req.method\n var method = req.method;\n // host:\n // express: req.hostname in > 4 and req.host in < 4\n // koa: req.host\n // node: req.headers.host\n var host = req.hostname || req.host || headers.host || '';\n // protocol:\n // node: \n // express, koa: req.protocol\n var protocol = req.protocol === 'https' || req.secure || (req.socket || {}).encrypted\n ? 'https'\n : 'http';\n // url (including path and query string):\n // node, express: req.originalUrl\n // koa: req.url\n var originalUrl = (req.originalUrl || req.url || '');\n // absolute url\n var absoluteUrl = protocol + \"://\" + host + originalUrl;\n keys.forEach(function (key) {\n switch (key) {\n case 'headers':\n requestData.headers = headers;\n break;\n case 'method':\n requestData.method = method;\n break;\n case 'url':\n requestData.url = absoluteUrl;\n break;\n case 'cookies':\n // cookies:\n // node, express, koa: req.headers.cookie\n // vercel, sails.js, express (w/ cookie middleware): req.cookies\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n requestData.cookies = req.cookies || dynamicRequire(module, 'cookie').parse(headers.cookie || '');\n break;\n case 'query_string':\n // query string:\n // node: req.url (raw)\n // express, koa: req.query\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n requestData.query_string = dynamicRequire(module, 'url').parse(originalUrl || '', false).query;\n break;\n case 'data':\n if (method === 'GET' || method === 'HEAD') {\n break;\n }\n // body data:\n // node, express, koa: req.body\n if (req.body !== undefined) {\n requestData.data = isString(req.body) ? req.body : JSON.stringify(normalize(req.body));\n }\n break;\n default:\n if ({}.hasOwnProperty.call(req, key)) {\n requestData[key] = req[key];\n }\n }\n });\n return requestData;\n}\n//# sourceMappingURL=node.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","/* 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","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","/* 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)\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","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 }\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.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 }\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 }\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._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 if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n setTimeout(function () {\n _this._scopeListeners.forEach(function (callback) {\n callback(_this);\n });\n _this._notifyingListeners = false;\n });\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","/** 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 { 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","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 * @param key String key of tag\n * @param value String 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","/* 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 { 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 { __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 * Wrap a given object method with a higher-order function\n *\n * @param source An object that contains a method to be wrapped.\n * @param name A name of method to be wrapped.\n * @param replacement A function that should be used to wrap a given method.\n * @returns void\n */\nexport function fill(source, name, replacement) {\n if (!(name in source)) {\n return;\n }\n var original = source[name];\n var wrapped = replacement(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 it's attributes\n * attached to it.\n *\n * @param value Initial source that we have to transform in order 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/** Transforms any input value into a string form, either primitive value or a type of the input */\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 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","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 * 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 var performance = getGlobalObject().performance;\n if (!performance) {\n return undefined;\n }\n if (performance.timeOrigin) {\n return performance.timeOrigin;\n }\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 return (performance.timing && performance.timing.navigationStart) || Date.now();\n})();\n//# sourceMappingURL=time.js.map","import { SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, uuid4 } from '@sentry/utils';\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 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.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: true,\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//# sourceMappingURL=session.js.map","import { __assign, __read, __spread } from \"tslib\";\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 = 3;\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.startSession = function (context) {\n // End existing session if there's one\n this.endSession();\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 scope.setSession(session);\n }\n return session;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.endSession = 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 session.close();\n if (client && client.captureSession) {\n client.captureSession(session);\n }\n scope.setSession();\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/** Returns the global shim registry. */\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 *\n * @returns The domain, or undefined if there is no active domain\n */\nexport function getActiveDomain() {\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 try {\n var activeDomain = getActiveDomain();\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 */\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","/**\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 = {}));\n//# sourceMappingURL=session.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 var options = self._mergeOptions(clientOptions);\n if (self._shouldDropEvent(event, options)) {\n return null;\n }\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","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 { __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, user = _a.user;\n return (protocol + \"://\" + user + (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], user = _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, user: user });\n };\n /** Maps Dsn components into this instance. */\n Dsn.prototype._fromComponents = function (components) {\n this.protocol = components.protocol;\n this.user = components.user;\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', 'user', '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","import { __read, __spread } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { logger } from '@sentry/utils';\nexport var installedIntegrations = [];\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 = [];\n if (Array.isArray(userIntegrations)) {\n var userIntegrationsNames_1 = userIntegrations.map(function (i) { return i.name; });\n var pickedIntegrationsNames_1 = [];\n // Leave only unique default integrations, that were not overridden with provided user integrations\n defaultIntegrations.forEach(function (defaultIntegration) {\n if (userIntegrationsNames_1.indexOf(defaultIntegration.name) === -1 &&\n pickedIntegrationsNames_1.indexOf(defaultIntegration.name) === -1) {\n integrations.push(defaultIntegration);\n pickedIntegrationsNames_1.push(defaultIntegration.name);\n }\n });\n // Don't add same user integration twice\n userIntegrations.forEach(function (userIntegration) {\n if (pickedIntegrationsNames_1.indexOf(userIntegration.name) === -1) {\n integrations.push(userIntegration);\n pickedIntegrationsNames_1.push(userIntegration.name);\n }\n });\n }\n else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(defaultIntegrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n }\n else {\n integrations = __spread(defaultIntegrations);\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, __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(\"\" + 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 (!session.release) {\n logger.warn('Discarded session because of missing release');\n }\n else {\n this._sendSession(session);\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 };\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 sdkInfo The sdkInfo of the event that will be filled with all integrations.\n */\n BaseClient.prototype._applyIntegrationsMetadata = function (event) {\n var sdkInfo = event.sdk;\n var integrationsArray = Object.keys(this._integrations);\n if (sdkInfo && integrationsArray.length > 0) {\n sdkInfo.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('This event has been sampled, will not send event.'));\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","/** 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","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 { 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 { 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\nfunction 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","/**\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))(?::(\\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 element = {\n // 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 url: parts[2] && parts[2].indexOf('address at ') === 0 ? parts[2].substr('address at '.length) : parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\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","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","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","/** Creates a SentryRequest from an event. */\nexport function sessionToSentryRequest(session, api) {\n var envelopeHeaders = JSON.stringify({\n sent_at: new Date().toISOString(),\n });\n var itemHeaders = JSON.stringify({\n type: 'session',\n });\n return {\n body: envelopeHeaders + \"\\n\" + itemHeaders + \"\\n\" + JSON.stringify(session),\n type: 'session',\n url: api.getEnvelopeEndpointWithUrlEncodedAuth(),\n };\n}\n/** Creates a SentryRequest from an event. */\nexport function eventToSentryRequest(event, api) {\n var useEnvelope = event.type === 'transaction';\n var req = {\n body: JSON.stringify(event),\n type: event.type || 'event',\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({\n event_id: event.event_id,\n // We need to add * 1000 since we divide it by 1000 by default but JS works with ms precision\n // The reason we use timestampWithMs here is that all clocks across the SDK use the same clock\n sent_at: new Date().toISOString(),\n });\n var itemHeaders = JSON.stringify({\n type: event.type,\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 { Dsn, urlEncode } from '@sentry/utils';\nvar SENTRY_API_VERSION = '7';\n/** Helper class to provide urls to different Sentry endpoints. */\nvar API = /** @class */ (function () {\n /** Create a new instance of API */\n function API(dsn) {\n this.dsn = dsn;\n this._dsnObject = new Dsn(dsn);\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 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.user);\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 === '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.user,\n sentry_version: SENTRY_API_VERSION,\n };\n return urlEncode(auth);\n };\n return API;\n}());\nexport { API };\n//# sourceMappingURL=api.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';\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(this.options.dsn);\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 till: \" + 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 (category) {\n return this._rateLimits[category] || this._rateLimits.all;\n };\n /**\n * Checks if a category is rate limited\n */\n BaseTransport.prototype._isRateLimited = function (category) {\n return this._disabledUntil(category) > 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 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 { __extends } from \"tslib\";\nimport { eventToSentryRequest, sessionToSentryRequest } from '@sentry/core';\nimport { getGlobalObject, supportsReferrerPolicy, SyncPromise } from '@sentry/utils';\nimport { BaseTransport } from './base';\nvar global = getGlobalObject();\n/** `fetch` based transport */\nvar FetchTransport = /** @class */ (function (_super) {\n __extends(FetchTransport, _super);\n function FetchTransport() {\n return _super !== null && _super.apply(this, arguments) || 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 global\n .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({ requestType: sentryRequest.type, response: response, headers: headers, resolve: resolve, reject: reject });\n })\n .catch(reject);\n }));\n };\n return FetchTransport;\n}(BaseTransport));\nexport { FetchTransport };\n//# sourceMappingURL=fetch.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 { __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 });\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 } 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 { __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 return oldOnPopState.apply(this, args);\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}\n/** JSDoc */\nfunction instrumentDOM() {\n if (!('document' in global)) {\n return;\n }\n // Capture breadcrumbs from any click that is unhandled / bubbled up all the way\n // to the document. Do this before we instrument addEventListener.\n global.document.addEventListener('click', domEventHandler('click', triggerHandlers.bind(null, 'dom')), false);\n global.document.addEventListener('keypress', keypressEventHandler(triggerHandlers.bind(null, 'dom')), false);\n // After hooking into document bubbled up click and keypresses events, we also hook into user handled click & keypresses.\n ['EventTarget', 'Node'].forEach(function (target) {\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n var proto = global[target] && global[target].prototype;\n // eslint-disable-next-line no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n fill(proto, 'addEventListener', function (original) {\n return function (eventName, fn, options) {\n if (fn && fn.handleEvent) {\n if (eventName === 'click') {\n fill(fn, 'handleEvent', function (innerOriginal) {\n return function (event) {\n domEventHandler('click', triggerHandlers.bind(null, 'dom'))(event);\n return innerOriginal.call(this, event);\n };\n });\n }\n if (eventName === 'keypress') {\n fill(fn, 'handleEvent', function (innerOriginal) {\n return function (event) {\n keypressEventHandler(triggerHandlers.bind(null, 'dom'))(event);\n return innerOriginal.call(this, event);\n };\n });\n }\n }\n else {\n if (eventName === 'click') {\n domEventHandler('click', triggerHandlers.bind(null, 'dom'), true)(this);\n }\n if (eventName === 'keypress') {\n keypressEventHandler(triggerHandlers.bind(null, 'dom'))(this);\n }\n }\n return original.call(this, eventName, fn, options);\n };\n });\n fill(proto, 'removeEventListener', function (original) {\n return function (eventName, fn, options) {\n try {\n original.call(this, eventName, fn.__sentry_wrapped__, options);\n }\n catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return original.call(this, eventName, fn, options);\n };\n });\n });\n}\nvar debounceDuration = 1000;\nvar debounceTimer = 0;\nvar keypressTimeout;\nvar lastCapturedEvent;\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param name the event name (e.g. \"click\")\n * @param handler function that will be triggered\n * @param debounce decides whether it should wait till another event loop\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction domEventHandler(name, handler, debounce) {\n if (debounce === void 0) { debounce = false; }\n return function (event) {\n // reset keypress timeout; e.g. triggering a 'click' after\n // a 'keypress' will reset the keypress debounce so that a new\n // set of keypresses can be recorded\n keypressTimeout = undefined;\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors). Ignore if we've\n // already captured the event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n lastCapturedEvent = event;\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n }\n if (debounce) {\n debounceTimer = setTimeout(function () {\n handler({ event: event, name: name });\n });\n }\n else {\n handler({ event: event, name: name });\n }\n };\n}\n/**\n * Wraps addEventListener to capture keypress UI events\n * @param handler function that will be triggered\n * @returns wrapped keypress events handler\n * @hidden\n */\nfunction keypressEventHandler(handler) {\n // TODO: if somehow user switches keypress target before\n // debounce timeout is triggered, we will only capture\n // a single breadcrumb from the FIRST target (acceptable?)\n return function (event) {\n var target;\n try {\n target = event.target;\n }\n catch (e) {\n // just accessing event properties can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/raven-js/issues/838\n return;\n }\n var tagName = target && target.tagName;\n // only consider keypress events on actual input elements\n // this will disregard keypresses targeting body (e.g. tabbing\n // through elements, hotkeys, etc)\n if (!tagName || (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable)) {\n return;\n }\n // record first keypress in a series, but ignore subsequent\n // keypresses until debounce clears\n if (!keypressTimeout) {\n domEventHandler('input', handler)(event);\n }\n clearTimeout(keypressTimeout);\n keypressTimeout = setTimeout(function () {\n keypressTimeout = undefined;\n }, debounceDuration);\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","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 });\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, __read, __spread } from \"tslib\";\nimport { BaseClient } from '@sentry/core';\nimport { getGlobalObject, logger } from '@sentry/utils';\nimport { BrowserBackend } from './backend';\nimport { injectReportDialog } from './helpers';\nimport { Breadcrumbs } from './integrations';\nimport { SDK_NAME, SDK_VERSION } from './version';\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 return _super.call(this, BrowserBackend, options) || 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 event.sdk = __assign(__assign({}, event.sdk), { name: SDK_NAME, packages: __spread(((event.sdk && event.sdk.packages) || []), [\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ]), version: SDK_VERSION });\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","export var SDK_NAME = 'sentry.javascript.browser';\nexport var SDK_VERSION = '5.27.4';\n//# sourceMappingURL=version.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 { __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._eventFromIncompleteRejection(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 * This function creates an Event from an TraceKitStackTrace that has part of it missing.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n GlobalHandlers.prototype._eventFromIncompleteRejection = function (error) {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n value: \"Non-Error promise rejection captured with value: \" + error,\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/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 { __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","import { getCurrentHub, initAndBind, Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject, 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 = false;\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 hub = getCurrentHub();\n /**\n * We should be using `Promise.all([windowLoaded, firstContentfulPaint])` here,\n * but, as always, it's not available in the IE10-11. Thanks IE.\n */\n var loadResolved = document.readyState === 'complete';\n var fcpResolved = false;\n var possiblyEndSession = function () {\n if (fcpResolved && loadResolved) {\n hub.endSession();\n }\n };\n var resolveWindowLoaded = function () {\n loadResolved = true;\n possiblyEndSession();\n window.removeEventListener('load', resolveWindowLoaded);\n };\n hub.startSession();\n if (!loadResolved) {\n // IE doesn't support `{ once: true }` for event listeners, so we have to manually\n // attach and then detach it once completed.\n window.addEventListener('load', resolveWindowLoaded);\n }\n try {\n var po = new PerformanceObserver(function (entryList, po) {\n entryList.getEntries().forEach(function (entry) {\n if (entry.name === 'first-contentful-paint' && entry.startTime < firstHiddenTime_1) {\n po.disconnect();\n fcpResolved = true;\n possiblyEndSession();\n }\n });\n });\n // There's no need to even attach this listener if `PerformanceObserver` constructor will fail,\n // so we do it below here.\n var firstHiddenTime_1 = document.visibilityState === 'hidden' ? 0 : Infinity;\n document.addEventListener('visibilitychange', function (event) {\n firstHiddenTime_1 = Math.min(firstHiddenTime_1, event.timeStamp);\n }, { once: true });\n po.observe({\n type: 'paint',\n buffered: true,\n });\n }\n catch (e) {\n fcpResolved = true;\n possiblyEndSession();\n }\n}\n//# sourceMappingURL=sdk.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 if (options.debug === true) {\n logger.enable();\n }\n var hub = getCurrentHub();\n var client = new clientClass(options);\n hub.bindClient(client);\n}\n//# sourceMappingURL=sdk.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\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"],"sourceRoot":""}