{"version":3,"sources":["webpack:///./node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@sentry/minimal/esm/index.js","webpack:///./node_modules/@sentry/core/esm/integrations/functiontostring.js","webpack:///./node_modules/@sentry/core/esm/integrations/inboundfilters.js","webpack:///./node_modules/@sentry/core/esm/index.js","webpack:///./node_modules/@sentry/utils/esm/is.js","webpack:///./node_modules/@sentry/utils/esm/misc.js","webpack:///./node_modules/@sentry/core/esm/transports/noop.js","webpack:///./node_modules/@sentry/utils/esm/string.js","webpack:///./node_modules/@sentry/utils/esm/logger.js","webpack:///./node_modules/@sentry/core/esm/api.js","webpack:///./node_modules/@sentry/core/esm/sdk.js","webpack:///./node_modules/@sentry/core/esm/basebackend.js","webpack:///./node_modules/@sentry/core/esm/integration.js","webpack:///./node_modules/@sentry/core/esm/baseclient.js","webpack:///./node_modules/@sentry/utils/esm/promisebuffer.js","webpack:///./node_modules/@sentry/browser/esm/transports/base.js","webpack:///./node_modules/@sentry/utils/esm/polyfill.js","webpack:///./node_modules/@sentry/utils/esm/error.js","webpack:///./node_modules/@sentry/hub/esm/scope.js","webpack:///./node_modules/@sentry/utils/esm/syncpromise.js","webpack:///./node_modules/@sentry/utils/esm/object.js","webpack:///./node_modules/@sentry/utils/esm/memo.js","webpack:///./node_modules/@sentry/utils/esm/supports.js","webpack:///./node_modules/@sentry/hub/esm/hub.js","webpack:///./node_modules/@sentry/utils/esm/dsn.js","webpack:///./node_modules/@sentry/browser/esm/transports/fetch.js","webpack:///./node_modules/@sentry/types/esm/status.js","webpack:///./node_modules/@sentry/browser/esm/transports/xhr.js","webpack:///./node_modules/@sentry/types/esm/severity.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/browser/esm/backend.js","webpack:///./node_modules/@sentry/browser/esm/client.js","webpack:///./node_modules/@sentry/browser/esm/version.js","webpack:///./node_modules/@sentry/browser/esm/helpers.js","webpack:///./node_modules/@sentry/browser/esm/integrations/trycatch.js","webpack:///./node_modules/@sentry/utils/esm/instrument.js","webpack:///./node_modules/@sentry/browser/esm/integrations/breadcrumbs.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/browser/esm/index.js","webpack:///./src/scripts/libs/sentry.ts","webpack:///./node_modules/@sentry/integrations/esm/captureconsole.js","webpack:///./node_modules/@sentry/integrations/esm/dedupe.js","webpack:///./node_modules/@sentry/integrations/esm/vue.js","webpack:///./src/scripts/components/footer.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__values","o","m","Symbol","iterator","next","value","done","__read","r","e","ar","push","error","__spread","concat","callOnHub","method","args","_i","hub","Error","captureException","exception","syntheticException","originalException","captureMessage","message","level","addBreadcrumb","breadcrumb","withScope","callback","originalFunctionToString","FunctionToString","name","id","setupOnce","Function","toString","context","__sentry_original__","DEFAULT_IGNORE_ERRORS","InboundFilters","_options","event","self","getIntegration","client","getClient","clientOptions","getOptions","options","_mergeOptions","_shouldDropEvent","_isSentryError","logger","warn","_isIgnoredError","_isBlacklistedUrl","_getEventFilterUrl","_isWhitelistedUrl","ignoreInternal","values","type","_oO","ignoreErrors","_getPossibleEventMessages","some","pattern","blacklistUrls","url","whitelistUrls","_a","_b","_c","oO","stacktrace","frames_1","frames","filename","frames_2","isError","wat","isInstanceOf","isErrorEvent","isDOMError","isDOMException","isString","isPrimitive","isPlainObject","isEvent","Event","isElement","Element","isRegExp","isThenable","Boolean","then","isSyntheticEvent","base","_e","dynamicRequire","mod","request","require","isNodeEnv","process","fallbackGlobalObject","getGlobalObject","global","window","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","replace","c","Math","random","parseUrl","match","query","fragment","host","path","protocol","relative","getEventDescription","event_id","consoleSandbox","originalConsole","console","wrappedLevels","forEach","result","keys","addExceptionTypeValue","addExceptionMechanism","mechanism","key","getLocationHref","document","location","href","htmlTreeAsString","elem","currentElem","out","height","len","sepLength","nextStr","_htmlElementAsString","parentNode","reverse","join","el","className","classes","attr","tagName","toLowerCase","split","attrWhitelist","getAttribute","timestampWithMs","Date","getTime","defaultRetryAfter","parseRetryAfterHeader","now","header","headerDelay","parseInt","isNaN","headerDate","parse","defaultFunctionName","getFunctionName","fn","NoopTransport","sendEvent","_","resolve","reason","status","Skipped","close","truncate","str","max","substr","snipLine","line","colno","newLine","ll","start","end","min","slice","safeJoin","input","delimiter","isArray","output","String","isMatchingPattern","test","indexOf","PREFIX","Logger","_enabled","disable","enable","log","__SENTRY__","API","dsn","_dsnObject","getDsn","getStoreEndpoint","_getBaseUrl","getStoreEndpointPath","getStoreEndpointWithUrlEncodedAuth","auth","sentry_key","user","sentry_version","port","projectId","getRequestHeaders","clientName","clientVersion","pass","getReportDialogEndpoint","dialogOptions","endpoint","encodedOptions","encodeURIComponent","email","initAndBind","clientClass","debug","bindClient","BaseBackend","_transport","_setupTransport","eventFromException","_exception","_hint","eventFromMessage","_message","_level","getTransport","installedIntegrations","setupIntegrations","integrations","defaultIntegrations","userIntegrations","userIntegrationsNames_1","map","pickedIntegrationsNames_1","defaultIntegration","userIntegration","integrationsNames","splice","getIntegrationsToSetup","integration","setupIntegration","BaseClient","backendClass","_integrations","_processing","_backend","_dsn","_isEnabled","hint","scope","_this","eventId","_getBackend","_processEvent","finalEvent","is","captureEvent","flush","timeout","_isClientProcessing","clearInterval","interval","transportFlushed","ready","enabled","getIntegrations","ticked","setInterval","undefined","_prepareEvent","environment","release","dist","maxValueLength","normalizeDepth","prepared","_addIntegrations","sdk","applyToEvent","evt","_normalizeEvent","depth","breadcrumbs","data","contexts","extra","sdkInfo","integrationsArray","beforeSend","sampleRate","reject","__sentry__","beforeSendResult","_handleAsyncBeforeSend","processedEvent","PromiseBuffer","_limit","_buffer","isReady","add","task","remove","drain","capturedSetTimeout","setTimeout","all","clearTimeout","BaseTransport","obj","proto","prop","_super","SentryError","_newTarget","Scope","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_user","_tags","_extra","_context","addScopeListener","addEventProcessor","_notifyScopeListeners","_notifyEventProcessors","processors","index","processor","final","setUser","setTags","tags","setTag","setExtras","extras","setExtra","setFingerprint","fingerprint","_fingerprint","setLevel","setTransaction","transaction","_transaction","_span","setContext","setSpan","span","getSpan","clone","newScope","clear","maxBreadcrumbs","mergedBreadcrumb","timestamp","clearBreadcrumbs","_applyFingerprint","getGlobalEventProcessors","globalEventProcessors","addGlobalEventProcessor","States","SyncPromise","executor","_state","PENDING","_handlers","_resolve","_setResult","RESOLVED","_reject","REJECTED","state","_value","_executeHandlers","_attachHandler","handler","onrejected","onfulfilled","collection","counter","resolvedCollection","item","TypeError","catch","val","finally","onfinally","isRejected","fill","source","replacement","original","wrapped","defineProperties","enumerable","_Oo","urlEncode","object","getWalkSource","err","stack","event_1","target","currentTarget","CustomEvent","detail","jsonSize","encodeURI","utf8Length","JSON","stringify","normalizeToSize","maxSize","serialized","normalize","normalizeValue","_events","walk","memo","Infinity","normalized","serializeValue","toJSON","acc","memoize","innerKey","unmemoize","extractExceptionKeysForMessage","maxLength","sort","includedKeys","Memo","_hasWeakSet","WeakSet","_inner","has","delete","supportsFetch","Headers","Request","Response","isNativeFetch","func","supportsNativeFetch","fetch","doc","sandbox","createElement","hidden","head","appendChild","contentWindow","removeChild","supportsReferrerPolicy","referrerPolicy","supportsHistory","chrome","isChromePackagedApp","app","runtime","hasHistoryApi","history","pushState","replaceState","API_VERSION","Hub","_version","_stack","_invokeClient","top","getStackTop","isOlderThan","version","pushScope","getStack","parentScope","popScope","pop","getScope","_lastEventId","finalHint","lastEventId","beforeBreadcrumb","finalBreadcrumb","configureScope","run","oldHub","makeMain","startSpan","spanOrSpanContext","forceNoChild","_callExtensionMethod","traceHeaders","carrier","getMainCarrier","sentry","extensions","registry","getHubFromCarrier","setHubOnCarrier","getCurrentHub","hasHubOnCarrier","activeDomain","module","active","registryHubTopStack","getHubFromActiveDomain","DSN_REGEX","Dsn","from","_fromString","_fromComponents","_validate","withPassword","exec","components","component","FetchTransport","_disabledUntil","Promise","defaultOptions","body","headers","response","fromHttpCode","Success","RateLimit","get","Status","code","Invalid","Failed","Unknown","XHRTransport","XMLHttpRequest","onreadystatechange","readyState","getResponseHeader","open","setRequestHeader","send","Severity","fromString","Debug","Info","Warning","Fatal","Critical","Log","UNKNOWN_FUNCTION","gecko","winjs","geckoEval","chromeEval","computeStackTrace","ex","popSize","framesToPop","parts","opera10Regex","opera11Regex","lines","element","column","extractMessage","computeStackTraceFromStacktraceProp","popFrames","submatch","isNative","columnNumber","computeStackTraceFromStackProp","failed","STACKTRACE_LIMIT","exceptionFromStacktrace","prepareFramesForEvent","eventFromStacktrace","localStack","firstFrameFunction","lastFrameFunction","frame","function","in_app","lineno","eventFromUnknownInput","domException","name_1","eventFromString","rejection","__serialized__","eventFromPlainObject","synthetic","attachStacktrace","BrowserBackend","transportOptions","transport","supports","handled","BrowserClient","platform","packages","showReportDialog","script","async","src","onLoad","onload","ignoreOnError","shouldIgnoreOnError","ignoreNextOnError","wrap","before","__sentry_wrapped__","sentryWrapped","wrappedArguments","arg","handleEvent","property","defineProperty","getOwnPropertyDescriptor","configurable","lastHref","TryCatch","_ignoreOnError","_wrapTimeFunction","originalCallback","_wrapRAF","_wrapEventTarget","eventName","bind","_wrapXHR","originalSend","xhr","xmlHttpRequestProps","wrapOptions","handlers","instrumented","instrument","originalConsoleLevel","triggerHandlers","instrumentConsole","addEventListener","domEventHandler","keypressEventHandler","innerOriginal","instrumentDOM","xhrproto","originalOpen","__sentry_xhr__","toUpperCase","__sentry_own_request__","commonHandlerData","startTimestamp","onreadystatechangeHandler","status_code","endTimestamp","readyStateArgs","instrumentXHR","originalFetch","fetchData","getFetchMethod","getFetchUrl","instrumentFetch","oldOnPopState","onpopstate","historyReplacementFunction","originalHistoryFunction","to","instrumentHistory","addInstrumentationHandler","e_1","e_1_1","return","fetchArgs","keypressTimeout","lastCapturedEvent","debounceDuration","debounceTimer","debounce","isContentEditable","Breadcrumbs","dom","_consoleBreadcrumb","handlerData","category","_domBreadcrumb","_xhrBreadcrumb","addSentryBreadcrumb","_fetchBreadcrumb","filterUrl","_historyBreadcrumb","parsedLoc","parsedFrom","parsedTo","serializedData","GlobalHandlers","_global","_oldOnErrorHandler","_oldOnUnhandledRejectionHandler","_onErrorHandlerInstalled","_onUnhandledRejectionHandlerInstalled","onerror","onunhandledrejection","stackTraceLimit","_installGlobalOnErrorHandler","_installGlobalOnUnhandledRejectionHandler","msg","currentHub","hasIntegration","isFailedOwnDelivery","_eventFromIncompleteOnError","_enhanceEventWithInitialFrame","_eventFromIncompleteRejection","groups","DEFAULT_KEY","DEFAULT_LIMIT","LinkedErrors","_key","limit","_handler","linkedErrors","_walkErrorTree","UserAgent","navigator","userAgent","windowIntegrations","_window","Sentry","Integrations","INTEGRATIONS","CaptureConsole","_levels","levels","Dedupe","currentEvent","_previousEvent","previousEvent","_isSameMessageEvent","_isSameExceptionEvent","currentMessage","previousMessage","_isSameFingerprint","_isSameStacktrace","_getFramesFromEvent","currentFrames","previousFrames","frameA","frameB","_getExceptionFromEvent","previousException","currentException","currentFingerprint","previousFingerprint","Vue","_attachProps","_logErrors","_Vue","logErrors","attachProps","_formatComponentName","vm","$root","_isVue","$options","_componentTag","__file","config","oldOnError","errorHandler","info","metadata","componentName","propsData","lifecycleHook","util","failedImages","handleImgError","srcElement","currentSrc","dataset","bindFooterTabs","tabButtons","querySelectorAll","window_1","SENTRY_RELEASE","imgElems","addImageEvents"],"mappings":"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","file":"scripts/2.b86db60b6fa81fefb8bc.component.js","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import * as tslib_1 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 */\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 // tslint:disable-next-line:no-unsafe-any\n return hub[method].apply(hub, tslib_1.__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 */\nexport function captureException(exception) {\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 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, level) {\n var syntheticException;\n try {\n throw new Error(message);\n }\n catch (exception) {\n syntheticException = exception;\n }\n return callOnHub('captureMessage', message, level, {\n originalException: message,\n syntheticException: syntheticException,\n });\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 normailzed.\n */\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 normailzed.\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 */\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, tslib_1.__spread(['_invokeClient', method], args));\n}\n//# sourceMappingURL=index.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 originalFunctionToString = Function.prototype.toString;\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 // tslint:disable-next-line:no-unsafe-any\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 * as tslib_1 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._isBlacklistedUrl(event, options)) {\n logger.warn(\"Event dropped due to being matched by `blacklistUrls` option.\\nEvent: \" + getEventDescription(event) + \".\\nUrl: \" + this._getEventFilterUrl(event));\n return true;\n }\n if (!this._isWhitelistedUrl(event, options)) {\n logger.warn(\"Event dropped due to not being matched by `whitelistUrls` 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 === void 0) { 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 === void 0) { 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._isBlacklistedUrl = function (event, options) {\n if (options === void 0) { options = {}; }\n // TODO: Use Glob instead?\n if (!options.blacklistUrls || !options.blacklistUrls.length) {\n return false;\n }\n var url = this._getEventFilterUrl(event);\n return !url ? false : options.blacklistUrls.some(function (pattern) { return isMatchingPattern(url, pattern); });\n };\n /** JSDoc */\n InboundFilters.prototype._isWhitelistedUrl = function (event, options) {\n if (options === void 0) { options = {}; }\n // TODO: Use Glob instead?\n if (!options.whitelistUrls || !options.whitelistUrls.length) {\n return true;\n }\n var url = this._getEventFilterUrl(event);\n return !url ? true : options.whitelistUrls.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 blacklistUrls: tslib_1.__spread((this._options.blacklistUrls || []), (clientOptions.blacklistUrls || [])),\n ignoreErrors: tslib_1.__spread((this._options.ignoreErrors || []), (clientOptions.ignoreErrors || []), DEFAULT_IGNORE_ERRORS),\n ignoreInternal: typeof this._options.ignoreInternal !== 'undefined' ? this._options.ignoreInternal : true,\n whitelistUrls: tslib_1.__spread((this._options.whitelistUrls || []), (clientOptions.whitelistUrls || [])),\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 { addBreadcrumb, captureException, captureEvent, captureMessage, configureScope, setContext, setExtra, setExtras, setTag, setTags, setUser, withScope, } from '@sentry/minimal';\nexport { addGlobalEventProcessor, getCurrentHub, getHubFromCarrier, Hub, Scope } from '@sentry/hub';\nexport { API } from './api';\nexport { BaseClient } from './baseclient';\nexport { BaseBackend } from './basebackend';\nexport { initAndBind } from './sdk';\nexport { NoopTransport } from './transports/noop';\nimport * as Integrations from './integrations';\nexport { Integrations };\n//# sourceMappingURL=index.js.map","/**\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 // tslint:disable-next-line:strict-type-predicates\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 // tslint:disable-next-line:strict-type-predicates\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 // tslint:disable:no-unsafe-any\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n // tslint:enable:no-unsafe-any\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 // tslint:disable-next-line:no-unsafe-any\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 // tslint:disable-next-line:no-unsafe-any\n return wat instanceof base;\n }\n catch (_e) {\n return false;\n }\n}\n//# sourceMappingURL=is.js.map","import { isString } from './is';\nimport { snipLine } from './string';\n/**\n * Requires a module which is protected _against bundler minification.\n *\n * @param request The module path to resolve\n */\nexport function dynamicRequire(mod, request) {\n // tslint:disable-next-line: no-unsafe-any\n return mod.require(request);\n}\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 // tslint:disable:strict-type-predicates\n return Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n}\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 // tslint:disable-next-line:no-bitwise\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n // tslint: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 // tslint:disable-next-line:no-bitwise\n var r = (Math.random() * 16) | 0;\n // tslint: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 var originalConsole = global.console;\n var wrappedLevels = {};\n // Restore all wrapped console methods\n levels.forEach(function (level) {\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\n // tslint:disable: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\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/**\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 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 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 attrWhitelist = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < attrWhitelist.length; i++) {\n key = attrWhitelist[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(\"[\" + key + \"=\\\"\" + attr + \"\\\"]\");\n }\n }\n return out.join('');\n}\n/**\n * Returns a timestamp in seconds with milliseconds precision.\n */\nexport function timestampWithMs() {\n return new Date().getTime() / 1000;\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}\nvar 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/**\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//# sourceMappingURL=misc.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 { isRegExp } 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 // tslint:disable-next-line:strict-type-predicates\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 colno = ll; // tslint:disable-line:no-parameter-reassignment\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 */\nexport function safeJoin(input, delimiter) {\n if (!Array.isArray(input)) {\n return '';\n }\n var output = [];\n // tslint:disable-next-line: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 (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","import { 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(' ')); // tslint:disable-line:no-console\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(' ')); // tslint:disable-line:no-console\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(' ')); // tslint:disable-line:no-console\n });\n };\n return Logger;\n}());\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nglobal.__SENTRY__ = global.__SENTRY__ || {};\nvar logger = global.__SENTRY__.logger || (global.__SENTRY__.logger = new Logger());\nexport { logger };\n//# sourceMappingURL=logger.js.map","import { Dsn, timestampWithMs, 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 a string with auth headers in the url to the store endpoint. */\n API.prototype.getStoreEndpoint = function () {\n return \"\" + this._getBaseUrl() + this.getStoreEndpointPath();\n };\n /** Returns the store endpoint with auth added in url encoded. */\n API.prototype.getStoreEndpointWithUrlEncodedAuth = function () {\n var dsn = this._dsnObject;\n var auth = {\n sentry_key: dsn.user,\n sentry_version: SENTRY_API_VERSION,\n };\n // Auth is intentionally sent as part of query string (NOT as custom HTTP header)\n // to avoid preflight CORS requests\n return this.getStoreEndpoint() + \"?\" + urlEncode(auth);\n };\n /** Returns the base path of the url including the port. */\n API.prototype._getBaseUrl = 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;\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 /** Returns an object that can be used in request headers. */\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_timestamp=\" + timestampWithMs()); // TODO: This can be removed\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._getBaseUrl() + (dsn.path ? \"/\" + dsn.path : '') + \"/api/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 return API;\n}());\nexport { API };\n//# sourceMappingURL=api.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 instanciate.\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 getCurrentHub().bindClient(new clientClass(options));\n}\n//# sourceMappingURL=sdk.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 * 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 /**\n * @inheritDoc\n */\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.getTransport = function () {\n return this._transport;\n };\n return BaseBackend;\n}());\nexport { BaseBackend };\n//# sourceMappingURL=basebackend.js.map","import * as tslib_1 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 && tslib_1.__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 = tslib_1.__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, tslib_1.__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 * as tslib_1 from \"tslib\";\nimport { Dsn, isPrimitive, isThenable, logger, normalize, 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 /** Is the client still processing a call? */\n this._processing = false;\n this._backend = new backendClass(options);\n this._options = options;\n if (options.dsn) {\n this._dsn = new Dsn(options.dsn);\n }\n if (this._isEnabled()) {\n this._integrations = setupIntegrations(this._options);\n }\n }\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureException = function (exception, hint, scope) {\n var _this = this;\n var eventId = hint && hint.event_id;\n this._processing = true;\n this._getBackend()\n .eventFromException(exception, hint)\n .then(function (event) { return _this._processEvent(event, hint, scope); })\n .then(function (finalEvent) {\n // We need to check for finalEvent in case beforeSend returned null\n eventId = finalEvent && finalEvent.event_id;\n _this._processing = false;\n })\n .then(null, function (reason) {\n logger.error(reason);\n _this._processing = false;\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 this._processing = true;\n var promisedEvent = isPrimitive(message)\n ? this._getBackend().eventFromMessage(\"\" + message, level, hint)\n : this._getBackend().eventFromException(message, hint);\n promisedEvent\n .then(function (event) { return _this._processEvent(event, hint, scope); })\n .then(function (finalEvent) {\n // We need to check for finalEvent in case beforeSend returned null\n eventId = finalEvent && finalEvent.event_id;\n _this._processing = false;\n })\n .then(null, function (reason) {\n logger.error(reason);\n _this._processing = false;\n });\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureEvent = function (event, hint, scope) {\n var _this = this;\n var eventId = hint && hint.event_id;\n this._processing = true;\n this._processEvent(event, hint, scope)\n .then(function (finalEvent) {\n // We need to check for finalEvent in case beforeSend returned null\n eventId = finalEvent && finalEvent.event_id;\n _this._processing = false;\n })\n .then(null, function (reason) {\n logger.error(reason);\n _this._processing = false;\n });\n return eventId;\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 (status) {\n clearInterval(status.interval);\n return _this._getBackend()\n .getTransport()\n .close(timeout)\n .then(function (transportFlushed) { return status.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 * @inheritDoc\n */\n BaseClient.prototype.getIntegrations = function () {\n return this._integrations || {};\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 /** 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 = 0;\n clearInterval(interval);\n interval = setInterval(function () {\n if (!_this._processing) {\n resolve({\n interval: interval,\n ready: true,\n });\n }\n else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n resolve({\n interval: interval,\n ready: false,\n });\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 informartion 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(), environment = _a.environment, release = _a.release, dist = _a.dist, _b = _a.maxValueLength, maxValueLength = _b === void 0 ? 250 : _b, _c = _a.normalizeDepth, normalizeDepth = _c === void 0 ? 3 : _c;\n var prepared = tslib_1.__assign({}, event);\n if (prepared.environment === undefined && environment !== undefined) {\n prepared.environment = environment;\n }\n if (prepared.release === undefined && release !== undefined) {\n prepared.release = release;\n }\n if (prepared.dist === undefined && dist !== undefined) {\n prepared.dist = dist;\n }\n if (prepared.message) {\n prepared.message = truncate(prepared.message, maxValueLength);\n }\n var exception = prepared.exception && prepared.exception.values && prepared.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n var request = prepared.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n if (prepared.event_id === undefined) {\n prepared.event_id = hint && hint.event_id ? hint.event_id : uuid4();\n }\n this._addIntegrations(prepared.sdk);\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 (scope) {\n // In case we have a hub we reassign it.\n result = scope.applyToEvent(prepared, hint);\n }\n return result.then(function (evt) {\n // tslint:disable-next-line:strict-type-predicates\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 // tslint:disable:no-unsafe-any\n return tslib_1.__assign({}, event, (event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(function (b) { return (tslib_1.__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 };\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._addIntegrations = function (sdkInfo) {\n var integrationsArray = Object.keys(this._integrations);\n if (sdkInfo && integrationsArray.length > 0) {\n sdkInfo.integrations = integrationsArray;\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 informartion 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 var _a = this.getOptions(), beforeSend = _a.beforeSend, sampleRate = _a.sampleRate;\n if (!this._isEnabled()) {\n return SyncPromise.reject('SDK not enabled, will not send event.');\n }\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n if (typeof sampleRate === 'number' && Math.random() > sampleRate) {\n return SyncPromise.reject('This event has been sampled, will not send event.');\n }\n return new SyncPromise(function (resolve, reject) {\n _this._prepareEvent(event, scope, hint)\n .then(function (prepared) {\n if (prepared === null) {\n reject('An event processor returned null, will not send event.');\n return;\n }\n var finalEvent = prepared;\n try {\n var isInternalException = hint && hint.data && hint.data.__sentry__ === true;\n if (isInternalException || !beforeSend) {\n _this._getBackend().sendEvent(finalEvent);\n resolve(finalEvent);\n return;\n }\n var beforeSendResult = beforeSend(prepared, hint);\n // tslint:disable-next-line:strict-type-predicates\n if (typeof beforeSendResult === 'undefined') {\n logger.error('`beforeSend` method has to return `null` or a valid event.');\n }\n else if (isThenable(beforeSendResult)) {\n _this._handleAsyncBeforeSend(beforeSendResult, resolve, reject);\n }\n else {\n finalEvent = beforeSendResult;\n if (finalEvent === null) {\n logger.log('`beforeSend` returned `null`, will not send event.');\n resolve(null);\n return;\n }\n // From here on we are really async\n _this._getBackend().sendEvent(finalEvent);\n resolve(finalEvent);\n }\n }\n catch (exception) {\n _this.captureException(exception, {\n data: {\n __sentry__: true,\n },\n originalException: exception,\n });\n reject('`beforeSend` threw an error, will not send event.');\n }\n })\n .then(null, function () {\n reject('`beforeSend` threw an error, will not send event.');\n });\n });\n };\n /**\n * Resolves before send Promise and calls resolve/reject on parent SyncPromise.\n */\n BaseClient.prototype._handleAsyncBeforeSend = function (beforeSend, resolve, reject) {\n var _this = this;\n beforeSend\n .then(function (processedEvent) {\n if (processedEvent === null) {\n reject('`beforeSend` returned `null`, will not send event.');\n return;\n }\n // From here on we are really async\n _this._getBackend().sendEvent(processedEvent);\n resolve(processedEvent);\n })\n .then(null, function (e) {\n reject(\"beforeSend rejected with \" + e);\n });\n };\n return BaseClient;\n}());\nexport { BaseClient };\n//# sourceMappingURL=baseclient.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 { API } from '@sentry/core';\nimport { 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 this.url = new API(this.options.dsn).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 return BaseTransport;\n}());\nexport { BaseTransport };\n//# sourceMappingURL=base.js.map","export var setPrototypeOf = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties); // tslint:disable-line:no-unbound-method\n/**\n * setPrototypeOf polyfill using __proto__\n */\nfunction setProtoOf(obj, proto) {\n // @ts-ignore\n obj.__proto__ = proto;\n return obj;\n}\n/**\n * setPrototypeOf polyfill using mixin\n */\nfunction mixinProperties(obj, proto) {\n for (var prop in proto) {\n if (!obj.hasOwnProperty(prop)) {\n // @ts-ignore\n obj[prop] = proto[prop];\n }\n }\n return obj;\n}\n//# sourceMappingURL=polyfill.js.map","import * as tslib_1 from \"tslib\";\nimport { setPrototypeOf } from './polyfill';\n/** An error emitted by Sentry SDKs and related utilities. */\nvar SentryError = /** @class */ (function (_super) {\n tslib_1.__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 // tslint:disable:no-unsafe-any\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 * as tslib_1 from \"tslib\";\nimport { getGlobalObject, isThenable, SyncPromise, timestampWithMs } 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._context = {};\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 * 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 * 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 // tslint:disable-next-line:strict-type-predicates\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n }\n else {\n var result = processor(tslib_1.__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 * @inheritDoc\n */\n Scope.prototype.setUser = function (user) {\n this._user = user || {};\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setTags = function (tags) {\n this._tags = tslib_1.__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 = tslib_1.__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 = tslib_1.__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 = tslib_1.__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.setTransaction = function (transaction) {\n this._transaction = transaction;\n if (this._span) {\n this._span.transaction = transaction;\n }\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setContext = function (key, context) {\n var _a;\n this._context = tslib_1.__assign({}, this._context, (_a = {}, _a[key] = context, _a));\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 * Internal getter for Span, used in Hub.\n * @hidden\n */\n Scope.prototype.getSpan = function () {\n return this._span;\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 = tslib_1.__spread(scope._breadcrumbs);\n newScope._tags = tslib_1.__assign({}, scope._tags);\n newScope._extra = tslib_1.__assign({}, scope._extra);\n newScope._context = tslib_1.__assign({}, scope._context);\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._transaction = scope._transaction;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = tslib_1.__spread(scope._eventProcessors);\n }\n return newScope;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.clear = function () {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._context = {};\n this._level = undefined;\n this._transaction = undefined;\n this._fingerprint = undefined;\n this._span = undefined;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.addBreadcrumb = function (breadcrumb, maxBreadcrumbs) {\n var mergedBreadcrumb = tslib_1.__assign({ timestamp: timestampWithMs() }, breadcrumb);\n this._breadcrumbs =\n maxBreadcrumbs !== undefined && maxBreadcrumbs >= 0\n ? tslib_1.__spread(this._breadcrumbs, [mergedBreadcrumb]).slice(-maxBreadcrumbs)\n : tslib_1.__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 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 /**\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 if (this._extra && Object.keys(this._extra).length) {\n event.extra = tslib_1.__assign({}, this._extra, event.extra);\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = tslib_1.__assign({}, this._tags, event.tags);\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = tslib_1.__assign({}, this._user, event.user);\n }\n if (this._context && Object.keys(this._context).length) {\n event.contexts = tslib_1.__assign({}, this._context, event.contexts);\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transaction) {\n event.transaction = this._transaction;\n }\n this._applyFingerprint(event);\n event.breadcrumbs = tslib_1.__spread((event.breadcrumbs || []), this._breadcrumbs);\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n return this._notifyEventProcessors(tslib_1.__spread(getGlobalEventProcessors(), this._eventProcessors), event, hint);\n };\n return Scope;\n}());\nexport { Scope };\n/**\n * Retruns the global event processors.\n */\nfunction getGlobalEventProcessors() {\n var global = getGlobalObject();\n global.__SENTRY__ = global.__SENTRY__ || {};\n global.__SENTRY__.globalEventProcessors = global.__SENTRY__.globalEventProcessors || [];\n return global.__SENTRY__.globalEventProcessors;\n}\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback) {\n getGlobalEventProcessors().push(callback);\n}\n//# sourceMappingURL=scope.js.map","import { 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 if (_this._state === States.REJECTED) {\n _this._handlers.forEach(function (handler) {\n if (handler.onrejected) {\n handler.onrejected(_this._value);\n }\n });\n }\n else {\n _this._handlers.forEach(function (handler) {\n if (handler.onfulfilled) {\n // tslint:disable-next-line:no-unsafe-any\n handler.onfulfilled(_this._value);\n }\n });\n }\n _this._handlers = [];\n };\n try {\n executor(this._resolve, this._reject);\n }\n catch (e) {\n this._reject(e);\n }\n }\n /** JSDoc */\n SyncPromise.prototype.toString = function () {\n return '[object SyncPromise]';\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 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 // tslint:disable-next-line:no-unsafe-any\n resolve(val);\n });\n });\n };\n return SyncPromise;\n}());\nexport { SyncPromise };\n//# sourceMappingURL=syncpromise.js.map","import { isElement, isError, isEvent, isInstanceOf, isPrimitive, isSyntheticEvent } from './is';\nimport { Memo } from './memo';\nimport { getFunctionName, htmlTreeAsString } from './misc';\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 // tslint:disable-next-line:strict-type-predicates\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(\n // tslint:disable-next-line:no-unsafe-any\n 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 // tslint:disable-next-line:strict-type-predicates\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 // tslint: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 */\n// tslint:disable-next-line:cyclomatic-complexity\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 // tslint:disable-next-line:no-tautology-expression\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 */\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 // If value implements `toJSON` method, call it and return early\n // tslint:disable:no-unsafe-any\n if (value !== null && value !== undefined && typeof value.toJSON === 'function') {\n return value.toJSON();\n }\n // tslint:enable:no-unsafe-any\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 */\nexport function normalize(input, depth) {\n try {\n // tslint:disable-next-line:no-unsafe-any\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 */\nexport function extractExceptionKeysForMessage(exception, maxLength) {\n if (maxLength === void 0) { maxLength = 40; }\n // tslint:disable:strict-type-predicates\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//# sourceMappingURL=object.js.map","// tslint:disable:no-unsafe-any\n/**\n * Memo class used for decycle json objects. Uses WeakSet if available otherwise array.\n */\nvar Memo = /** @class */ (function () {\n function Memo() {\n // tslint:disable-next-line\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 // tslint:disable-next-line: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 { 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 // tslint:disable:no-unused-expression\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 // It really needs 1 argument, not 0.\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore\n // tslint:disable:no-unused-expression\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 // tslint:disable:no-unused-expression\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 // tslint:disable-next-line:no-unused-expression\n new Headers();\n // tslint:disable-next-line:no-unused-expression\n new Request('');\n // tslint:disable-next-line:no-unused-expression\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 */\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 // tslint:disable-next-line:no-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 if (doc) {\n var sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n try {\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // tslint:disable-next-line:no-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 // tslint:disable-next-line: no-unsafe-any\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 // tslint:disable:no-unused-expression\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 var chrome = global.chrome;\n // tslint:disable-next-line:no-unsafe-any\n var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n var hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n return !isChromePackagedApp && hasHistoryApi;\n}\n//# sourceMappingURL=supports.js.map","import * as tslib_1 from \"tslib\";\nimport { consoleSandbox, dynamicRequire, getGlobalObject, isNodeEnv, logger, timestampWithMs, uuid4, } from '@sentry/utils';\nimport { Scope } from './scope';\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be incresed when the global interface\n * changes a 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._stack.push({ client: client, scope: scope });\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 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 top = this.getStackTop();\n if (top && top.client && top.client[method]) {\n (_a = top.client)[method].apply(_a, tslib_1.__spread(args, [top.scope]));\n }\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 };\n /**\n * @inheritDoc\n */\n Hub.prototype.pushScope = function () {\n // We want to clone the content of prev scope\n var stack = this.getStack();\n var parentScope = stack.length > 0 ? stack[stack.length - 1].scope : undefined;\n var scope = Scope.clone(parentScope);\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 return this.getStack().pop() !== undefined;\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 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, tslib_1.__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, tslib_1.__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, tslib_1.__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 top = this.getStackTop();\n if (!top.scope || !top.client) {\n return;\n }\n var _a = (top.client.getOptions && top.client.getOptions()) || {}, _b = _a.beforeBreadcrumb, beforeBreadcrumb = _b === void 0 ? null : _b, _c = _a.maxBreadcrumbs, maxBreadcrumbs = _c === void 0 ? DEFAULT_BREADCRUMBS : _c;\n if (maxBreadcrumbs <= 0) {\n return;\n }\n var timestamp = timestampWithMs();\n var mergedBreadcrumb = tslib_1.__assign({ timestamp: timestamp }, breadcrumb);\n var finalBreadcrumb = beforeBreadcrumb\n ? consoleSandbox(function () { return beforeBreadcrumb(mergedBreadcrumb, hint); })\n : mergedBreadcrumb;\n if (finalBreadcrumb === null) {\n return;\n }\n top.scope.addBreadcrumb(finalBreadcrumb, Math.min(maxBreadcrumbs, MAX_BREADCRUMBS));\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setUser = function (user) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setUser(user);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setTags = function (tags) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setTags(tags);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setExtras = function (extras) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setExtras(extras);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setTag = function (key, value) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setTag(key, value);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setExtra = function (key, extra) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setExtra(key, extra);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setContext = function (name, context) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setContext(name, context);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.configureScope = function (callback) {\n var top = this.getStackTop();\n if (top.scope && top.client) {\n callback(top.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 }\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 (spanOrSpanContext, forceNoChild) {\n if (forceNoChild === void 0) { forceNoChild = false; }\n return this._callExtensionMethod('startSpan', spanOrSpanContext, forceNoChild);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.traceHeaders = function () {\n return this._callExtensionMethod('traceHeaders');\n };\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore\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 // tslint:disable-next-line: strict-type-predicates\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 * Try to read the hub from an active domain, fallback to the registry if one doesnt exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry) {\n try {\n // We need to use `dynamicRequire` because `require` on it's own will be optimized by webpack.\n // We do not want this to happen, we need to try to `require` the domain node module and fail if we are in browser\n // for example so we do not have to shim it and use `getCurrentHub` universally.\n var domain = dynamicRequire(module, 'domain');\n var activeDomain = domain.active;\n // If there 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 its 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 if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) {\n return true;\n }\n return false;\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 }\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 }\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = hub;\n return true;\n}\n//# sourceMappingURL=hub.js.map","import * as tslib_1 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 // tslint:disable-next-line:no-this-assignment\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 = tslib_1.__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 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);\n }\n });\n if (this.protocol !== 'http' && this.protocol !== 'https') {\n throw new SentryError(ERROR_MESSAGE);\n }\n if (this.port && isNaN(parseInt(this.port, 10))) {\n throw new SentryError(ERROR_MESSAGE);\n }\n };\n return Dsn;\n}());\nexport { Dsn };\n//# sourceMappingURL=dsn.js.map","import * as tslib_1 from \"tslib\";\nimport { Status } from '@sentry/types';\nimport { getGlobalObject, logger, parseRetryAfterHeader, supportsReferrerPolicy, SyncPromise } from '@sentry/utils';\nimport { BaseTransport } from './base';\nvar global = getGlobalObject();\n/** `fetch` based transport */\nvar FetchTransport = /** @class */ (function (_super) {\n tslib_1.__extends(FetchTransport, _super);\n function FetchTransport() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** Locks transport after receiving 429 response */\n _this._disabledUntil = new Date(Date.now());\n return _this;\n }\n /**\n * @inheritDoc\n */\n FetchTransport.prototype.sendEvent = function (event) {\n var _this = this;\n if (new Date(Date.now()) < this._disabledUntil) {\n return Promise.reject({\n event: event,\n reason: \"Transport locked till \" + this._disabledUntil + \" due to too many requests.\",\n status: 429,\n });\n }\n var defaultOptions = {\n body: JSON.stringify(event),\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.headers !== undefined) {\n defaultOptions.headers = this.options.headers;\n }\n return this._buffer.add(new SyncPromise(function (resolve, reject) {\n global\n .fetch(_this.url, defaultOptions)\n .then(function (response) {\n var status = Status.fromHttpCode(response.status);\n if (status === Status.Success) {\n resolve({ status: status });\n return;\n }\n if (status === Status.RateLimit) {\n var now = Date.now();\n _this._disabledUntil = new Date(now + parseRetryAfterHeader(now, response.headers.get('Retry-After')));\n logger.warn(\"Too many requests, backing off till: \" + _this._disabledUntil);\n }\n reject(response);\n })\n .catch(reject);\n }));\n };\n return FetchTransport;\n}(BaseTransport));\nexport { FetchTransport };\n//# sourceMappingURL=fetch.js.map","/** The status of an event. */\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// tslint:disable:completed-docs\n// tslint:disable:no-unnecessary-qualifier no-namespace\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 * as tslib_1 from \"tslib\";\nimport { Status } from '@sentry/types';\nimport { logger, parseRetryAfterHeader, SyncPromise } from '@sentry/utils';\nimport { BaseTransport } from './base';\n/** `XHR` based transport */\nvar XHRTransport = /** @class */ (function (_super) {\n tslib_1.__extends(XHRTransport, _super);\n function XHRTransport() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** Locks transport after receiving 429 response */\n _this._disabledUntil = new Date(Date.now());\n return _this;\n }\n /**\n * @inheritDoc\n */\n XHRTransport.prototype.sendEvent = function (event) {\n var _this = this;\n if (new Date(Date.now()) < this._disabledUntil) {\n return Promise.reject({\n event: event,\n reason: \"Transport locked till \" + this._disabledUntil + \" 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 return;\n }\n var status = Status.fromHttpCode(request.status);\n if (status === Status.Success) {\n resolve({ status: status });\n return;\n }\n if (status === Status.RateLimit) {\n var now = Date.now();\n _this._disabledUntil = new Date(now + parseRetryAfterHeader(now, request.getResponseHeader('Retry-After')));\n logger.warn(\"Too many requests, backing off till: \" + _this._disabledUntil);\n }\n reject(request);\n };\n request.open('POST', _this.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(JSON.stringify(event));\n }));\n };\n return XHRTransport;\n}(BaseTransport));\nexport { XHRTransport };\n//# sourceMappingURL=xhr.js.map","/** JSDoc */\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// tslint:disable:completed-docs\n// tslint:disable:no-unnecessary-qualifier no-namespace\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","// tslint:disable:object-literal-sort-keys\nimport * as tslib_1 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).*?:\\/.*?|\\[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/** JSDoc */\nexport function computeStackTrace(ex) {\n // tslint:disable:no-unsafe-any\n var stack = null;\n var popSize = ex && ex.framesToPop;\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// tslint:disable-next-line:cyclomatic-complexity\nfunction computeStackTraceFromStackProp(ex) {\n // tslint:disable:no-conditional-assignment\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 */\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 // tslint:disable:no-conditional-assignment\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 tslib_1.__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 */\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 // tslint:disable-next-line:strict-type-predicates\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 .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 .slice(0, STACKTRACE_LIMIT)\n .reverse();\n}\n//# sourceMappingURL=parsers.js.map","import { addExceptionMechanism, addExceptionTypeValue, isDOMError, isDOMException, isError, isErrorEvent, isEvent, isPlainObject, } from '@sentry/utils';\nimport { eventFromPlainObject, eventFromStacktrace, prepareFramesForEvent } from './parsers';\nimport { computeStackTrace } from './tracekit';\n/** JSDoc */\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 exception = errorEvent.error; // tslint:disable-line:no-parameter-reassignment\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 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 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// this._options.attachStacktrace\n/** JSDoc */\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","import * as tslib_1 from \"tslib\";\nimport { BaseBackend } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { addExceptionMechanism, supportsFetch, SyncPromise } from '@sentry/utils';\nimport { eventFromString, eventFromUnknownInput } from './eventbuilder';\nimport { FetchTransport, XHRTransport } from './transports';\n/**\n * The Sentry Browser SDK Backend.\n * @hidden\n */\nvar BrowserBackend = /** @class */ (function (_super) {\n tslib_1.__extends(BrowserBackend, _super);\n function BrowserBackend() {\n return _super !== null && _super.apply(this, arguments) || this;\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 = tslib_1.__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 /**\n * @inheritDoc\n */\n BrowserBackend.prototype.eventFromException = function (exception, hint) {\n var syntheticException = (hint && hint.syntheticException) || undefined;\n var event = eventFromUnknownInput(exception, syntheticException, {\n attachStacktrace: this._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 * @inheritDoc\n */\n BrowserBackend.prototype.eventFromMessage = function (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: this._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 return BrowserBackend;\n}(BaseBackend));\nexport { BrowserBackend };\n//# sourceMappingURL=backend.js.map","import * as tslib_1 from \"tslib\";\nimport { API, BaseClient } from '@sentry/core';\nimport { getGlobalObject, logger } from '@sentry/utils';\nimport { BrowserBackend } from './backend';\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 tslib_1.__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 * @inheritDoc\n */\n BrowserClient.prototype._prepareEvent = function (event, scope, hint) {\n event.platform = event.platform || 'javascript';\n event.sdk = tslib_1.__assign({}, event.sdk, { name: SDK_NAME, packages: tslib_1.__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 * 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 is disabled');\n return;\n }\n var dsn = options.dsn || this.getDsn();\n if (!options.eventId) {\n logger.error('Missing `eventId` option in showReportDialog call');\n return;\n }\n if (!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(dsn).getReportDialogEndpoint(options);\n if (options.onLoad) {\n script.onload = options.onLoad;\n }\n (document.head || document.body).appendChild(script);\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.12.1';\n//# sourceMappingURL=version.js.map","import * as tslib_1 from \"tslib\";\nimport { captureException, withScope } from '@sentry/core';\nimport { addExceptionMechanism, addExceptionTypeValue } 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 // tslint:disable-next-line:strict-type-predicates\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 var sentryWrapped = function () {\n var args = Array.prototype.slice.call(arguments);\n // tslint:disable:no-unsafe-any\n try {\n // tslint:disable-next-line:strict-type-predicates\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\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 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 // tslint:enable:no-unsafe-any\n }\n catch (ex) {\n ignoreNextOnError();\n withScope(function (scope) {\n scope.addEventProcessor(function (event) {\n var processedEvent = tslib_1.__assign({}, event);\n if (options.mechanism) {\n addExceptionTypeValue(processedEvent, undefined, undefined);\n addExceptionMechanism(processedEvent, options.mechanism);\n }\n processedEvent.extra = tslib_1.__assign({}, processedEvent.extra, { arguments: args });\n return processedEvent;\n });\n captureException(ex);\n });\n throw ex;\n }\n };\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) { } // tslint: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 }\n catch (_oO) {\n /*no-empty*/\n }\n return sentryWrapped;\n}\n//# sourceMappingURL=helpers.js.map","import { fill, getFunctionName, getGlobalObject } from '@sentry/utils';\nimport { wrap } from '../helpers';\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nvar TryCatch = /** @class */ (function () {\n function TryCatch() {\n /** JSDoc */\n this._ignoreOnError = 0;\n /**\n * @inheritDoc\n */\n this.name = TryCatch.id;\n }\n /** JSDoc */\n TryCatch.prototype._wrapTimeFunction = function (original) {\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 TryCatch.prototype._wrapRAF = function (original) {\n return function (callback) {\n return original(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 var global = getGlobalObject();\n var proto = global[target] && global[target].prototype;\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 // tslint:disable-next-line:no-unbound-method strict-type-predicates\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, 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 (original) {\n return function (eventName, fn, options) {\n var callback = fn;\n try {\n callback = callback && (callback.__sentry_wrapped__ || callback);\n }\n catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return original.call(this, eventName, callback, options);\n };\n });\n };\n /** JSDoc */\n TryCatch.prototype._wrapXHR = function (originalSend) {\n return function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var xhr = this; // tslint:disable-line:no-this-assignment\n var xmlHttpRequestProps = ['onload', 'onerror', 'onprogress'];\n xmlHttpRequestProps.forEach(function (prop) {\n if (prop in _this && typeof _this[prop] === 'function') {\n fill(_this, prop, function (original) {\n return wrap(original, {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n });\n });\n }\n });\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n fill(xhr, 'onreadystatechange', function (original) {\n var wrapOptions = {\n mechanism: {\n data: {\n function: 'onreadystatechange',\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 return originalSend.apply(this, args);\n };\n };\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n TryCatch.prototype.setupOnce = function () {\n this._ignoreOnError = this._ignoreOnError;\n var global = getGlobalObject();\n fill(global, 'setTimeout', this._wrapTimeFunction.bind(this));\n fill(global, 'setInterval', this._wrapTimeFunction.bind(this));\n fill(global, 'requestAnimationFrame', this._wrapRAF.bind(this));\n if ('XMLHttpRequest' in global) {\n fill(XMLHttpRequest.prototype, 'send', this._wrapXHR.bind(this));\n }\n [\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 ].forEach(this._wrapEventTarget.bind(this));\n };\n /**\n * @inheritDoc\n */\n TryCatch.id = 'TryCatch';\n return TryCatch;\n}());\nexport { TryCatch };\n//# sourceMappingURL=trycatch.js.map","/* tslint:disable:only-arrow-functions no-unsafe-any */\nimport * as tslib_1 from \"tslib\";\nimport { isInstanceOf, isString } from './is';\nimport { logger } from './logger';\nimport { getFunctionName, getGlobalObject } from './misc';\nimport { fill } from './object';\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 */\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 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 // tslint:disable-next-line:strict-type-predicates\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 = tslib_1.__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 commonHandlerData = {\n args: args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n triggerHandlers('fetch', tslib_1.__assign({}, commonHandlerData));\n return originalFetch.apply(global, args).then(function (response) {\n triggerHandlers('fetch', tslib_1.__assign({}, commonHandlerData, { endTimestamp: Date.now(), response: response }));\n return response;\n }, function (error) {\n triggerHandlers('fetch', tslib_1.__assign({}, commonHandlerData, { endTimestamp: Date.now(), error: error }));\n throw error;\n });\n };\n });\n}\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/** JSDoc */\nfunction instrumentXHR() {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\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 var url = args[1];\n this.__sentry_xhr__ = {\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 if (isString(url) && this.__sentry_xhr__.method === 'POST' && url.match(/sentry_key/)) {\n this.__sentry_own_request__ = true;\n }\n return originalOpen.apply(this, 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 var xhr = this; // tslint:disable-line:no-this-assignment\n var commonHandlerData = {\n args: args,\n startTimestamp: Date.now(),\n xhr: xhr,\n };\n triggerHandlers('xhr', tslib_1.__assign({}, commonHandlerData));\n /**\n * @hidden\n */\n function onreadystatechangeHandler() {\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 triggerHandlers('xhr', tslib_1.__assign({}, commonHandlerData, { endTimestamp: Date.now() }));\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 // if onreadystatechange wasn't actually set by the page on this xhr, we\n // are free to set our own and capture the breadcrumb\n xhr.onreadystatechange = onreadystatechangeHandler;\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 var proto = global[target] && global[target].prototype;\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\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 var callback = fn;\n try {\n callback = callback && (callback.__sentry_wrapped__ || callback);\n }\n catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return original.call(this, eventName, callback, 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}\n//# sourceMappingURL=instrument.js.map","import * as tslib_1 from \"tslib\";\nimport { API, getCurrentHub } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { addInstrumentationHandler, getEventDescription, getGlobalObject, htmlTreeAsString, logger, 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 = tslib_1.__assign({ console: true, dom: true, fetch: true, history: true, sentry: true, xhr: true }, options);\n }\n /**\n * Creates breadcrumbs from console API calls\n */\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 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: event,\n name: handlerData.name,\n });\n };\n /**\n * Creates breadcrumbs from XHR API calls\n */\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 getCurrentHub().addBreadcrumb({\n category: 'xhr',\n data: handlerData.xhr.__sentry_xhr__,\n type: 'http',\n }, {\n xhr: handlerData.xhr,\n });\n return;\n }\n // We only capture issued sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n addSentryBreadcrumb(handlerData.args[0]);\n }\n };\n /**\n * Creates breadcrumbs from fetch API calls\n */\n Breadcrumbs.prototype._fetchBreadcrumb = function (handlerData) {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n var client = getCurrentHub().getClient();\n var dsn = client && client.getDsn();\n if (dsn) {\n var filterUrl = new API(dsn).getStoreEndpoint();\n // if Sentry key appears in URL, don't capture it as a request\n // but rather as our own 'sentry' type breadcrumb\n if (filterUrl &&\n handlerData.fetchData.url.indexOf(filterUrl) !== -1 &&\n handlerData.fetchData.method === 'POST' &&\n handlerData.args[1] &&\n handlerData.args[1].body) {\n addSentryBreadcrumb(handlerData.args[1].body);\n return;\n }\n }\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb({\n category: 'fetch',\n data: tslib_1.__assign({}, handlerData.fetchData, { status_code: handlerData.response.status }),\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: tslib_1.__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 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 // tslint:disable-next-line:no-parameter-reassignment\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n // tslint:disable-next-line:no-parameter-reassignment\n from = parsedFrom.relative;\n }\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from: from,\n to: to,\n },\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, tslib_1.__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, tslib_1.__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, tslib_1.__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, tslib_1.__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, tslib_1.__spread(args));\n },\n type: 'history',\n });\n }\n };\n /**\n * @inheritDoc\n */\n Breadcrumbs.id = 'Breadcrumbs';\n return Breadcrumbs;\n}());\nexport { Breadcrumbs };\n/**\n * Create a breadcrumb of `sentry` from the events themselves\n */\nfunction addSentryBreadcrumb(serializedData) {\n // There's always something that can go wrong with deserialization...\n try {\n var event_1 = JSON.parse(serializedData);\n getCurrentHub().addBreadcrumb({\n category: 'sentry',\n event_id: event_1.event_id,\n level: event_1.level || Severity.fromString('error'),\n message: getEventDescription(event_1),\n }, {\n event: event_1,\n });\n }\n catch (_oO) {\n logger.error('Error while adding sentry type breadcrumb');\n }\n}\n//# sourceMappingURL=breadcrumbs.js.map","import * as tslib_1 from \"tslib\";\nimport { getCurrentHub } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { addExceptionMechanism, getGlobalObject, 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._global = getGlobalObject();\n /** JSDoc */\n this._oldOnErrorHandler = null;\n /** JSDoc */\n this._oldOnUnhandledRejectionHandler = null;\n /** JSDoc */\n this._onErrorHandlerInstalled = false;\n /** JSDoc */\n this._onUnhandledRejectionHandlerInstalled = false;\n this._options = tslib_1.__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 if (this._onErrorHandlerInstalled) {\n return;\n }\n var self = this; // tslint:disable-line:no-this-assignment\n this._oldOnErrorHandler = this._global.onerror;\n this._global.onerror = function (msg, url, line, column, 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 if (self._oldOnErrorHandler) {\n return self._oldOnErrorHandler.apply(this, arguments);\n }\n return false;\n }\n var client = currentHub.getClient();\n var event = isPrimitive(error)\n ? self._eventFromIncompleteOnError(msg, url, line, column)\n : self._enhanceEventWithInitialFrame(eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: false,\n }), url, line, column);\n addExceptionMechanism(event, {\n handled: false,\n type: 'onerror',\n });\n currentHub.captureEvent(event, {\n originalException: error,\n });\n if (self._oldOnErrorHandler) {\n return self._oldOnErrorHandler.apply(this, arguments);\n }\n return false;\n };\n this._onErrorHandlerInstalled = true;\n };\n /** JSDoc */\n GlobalHandlers.prototype._installGlobalOnUnhandledRejectionHandler = function () {\n if (this._onUnhandledRejectionHandlerInstalled) {\n return;\n }\n var self = this; // tslint:disable-line:no-this-assignment\n this._oldOnUnhandledRejectionHandler = this._global.onunhandledrejection;\n this._global.onunhandledrejection = function (e) {\n var error = e;\n try {\n error = e && 'reason' in e ? e.reason : e;\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 if (self._oldOnUnhandledRejectionHandler) {\n return self._oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n return true;\n }\n var client = currentHub.getClient();\n var event = isPrimitive(error)\n ? self._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 if (self._oldOnUnhandledRejectionHandler) {\n return self._oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n return true;\n };\n this._onUnhandledRejectionHandlerInstalled = true;\n };\n /**\n * This function creates a stack from an old, error-less onerror handler.\n */\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 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 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 * as tslib_1 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 = tslib_1.__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, tslib_1.__spread([exception], stack));\n };\n /**\n * @inheritDoc\n */\n LinkedErrors.id = 'LinkedErrors';\n return LinkedErrors;\n}());\nexport { LinkedErrors };\n//# sourceMappingURL=linkederrors.js.map","import * as tslib_1 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 if (getCurrentHub().getIntegration(UserAgent)) {\n if (!global.navigator || !global.location) {\n return event;\n }\n // Request Interface: https://docs.sentry.io/development/sdk-dev/event-payloads/request/\n var request = event.request || {};\n request.url = request.url || global.location.href;\n request.headers = request.headers || {};\n request.headers['User-Agent'] = global.navigator.userAgent;\n return tslib_1.__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 initAndBind(BrowserClient, options);\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 */\nexport function wrap(fn) {\n return internalWrap(fn)(); // tslint:disable-line:no-unsafe-any\n}\n//# sourceMappingURL=sdk.js.map","import * as tslib_1 from \"tslib\";\nexport * from './exports';\nimport { Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\nimport * as BrowserIntegrations from './integrations';\nimport * as Transports from './transports';\nvar windowIntegrations = {};\n// This block is needed to add compatibility with the integrations packages when used with a CDN\n// tslint:disable: no-unsafe-any\nvar _window = getGlobalObject();\nif (_window.Sentry && _window.Sentry.Integrations) {\n windowIntegrations = _window.Sentry.Integrations;\n}\n// tslint:enable: no-unsafe-any\nvar INTEGRATIONS = tslib_1.__assign({}, windowIntegrations, CoreIntegrations, BrowserIntegrations);\nexport { INTEGRATIONS as Integrations, Transports };\n//# sourceMappingURL=index.js.map","/* Sentry integration */\r\nimport Vue from \"vue\";\r\nimport * as Sentry from \"@sentry/browser\";\r\nimport * as Integrations from \"@sentry/integrations\";\r\n\r\nlet failedImages = [];\r\n\r\nexport default function initSentry(debug = false) {\r\n // console.log(\"TODO: init if prod\");\r\n // don't run on development mode\r\n if (process.env.NODE_ENV === \"production\") {\r\n Sentry.init({\r\n dsn: \"https://8e3e1ad00a594bc2bee540e732cd972f@log.arabam.com/3\",\r\n integrations: [\r\n // ...Sentry.defaultIntegrations,\r\n new Sentry.Integrations.GlobalHandlers({\r\n onerror: true,\r\n onunhandledrejection: true\r\n }),\r\n new Sentry.Integrations.UserAgent(),\r\n new Sentry.Integrations.FunctionToString(),\r\n new Sentry.Integrations.TryCatch(),\r\n new Sentry.Integrations.LinkedErrors({\r\n limit: 3\r\n }),\r\n new Sentry.Integrations.Breadcrumbs({\r\n // beacon: false, // Log HTTP requests done with the Beacon API\r\n console: false, // Log calls to `console.log`, `console.debug`, etc\r\n dom: false, // Log all click and keypress events\r\n fetch: false, // Log HTTP requests done with the Fetch API\r\n history: true, // Log calls to `history.pushState` and friends\r\n sentry: false, // Log whenever we send an event to the server\r\n xhr: false // Log HTTP requests done with the XHR API\r\n }),\r\n new Integrations.CaptureConsole({ levels: [\"error\"] }),\r\n new Integrations.Dedupe(),\r\n new Integrations.Vue({\r\n Vue,\r\n attachProps: true\r\n })\r\n ]\r\n });\r\n addImageEvents();\r\n }\r\n}\r\n\r\nfunction addImageEvents() {\r\n const imgElems = document.querySelectorAll(\"img\");\r\n const len = imgElems.length;\r\n if (len > 0) {\r\n for (let i = 0; i < len; i++) {\r\n imgElems[i].addEventListener(\"error\", handleImgError, false);\r\n }\r\n }\r\n}\r\n\r\nfunction handleImgError(event: ErrorEvent) {\r\n let target = event.srcElement as HTMLImageElement;\r\n failedImages.push(target.currentSrc);\r\n\r\n Sentry.addBreadcrumb({\r\n category: \"404\",\r\n message: target.currentSrc || target.dataset.src,\r\n level: Sentry.Severity.Critical,\r\n type: \"error\"\r\n });\r\n}\r\n\r\nsetTimeout(() => {\r\n if (failedImages.length > 0) {\r\n Sentry.captureMessage(\"404 Images\", Sentry.Severity.Error);\r\n }\r\n}, 8000);\r\n","import { Severity } from '@sentry/types';\nimport { fill, getGlobalObject, safeJoin } from '@sentry/utils';\nvar global = getGlobalObject();\n/** Send Console API calls as Sentry Events */\nvar CaptureConsole = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function CaptureConsole(options) {\n if (options === void 0) { options = {}; }\n /**\n * @inheritDoc\n */\n this.name = CaptureConsole.id;\n /**\n * @inheritDoc\n */\n this._levels = ['log', 'info', 'warn', 'error', 'debug', 'assert'];\n if (options.levels) {\n this._levels = options.levels;\n }\n }\n /**\n * @inheritDoc\n */\n CaptureConsole.prototype.setupOnce = function (_, getCurrentHub) {\n if (!('console' in global)) {\n return;\n }\n this._levels.forEach(function (level) {\n if (!(level in global.console)) {\n return;\n }\n fill(global.console, level, function (originalConsoleLevel) { return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var hub = getCurrentHub();\n if (hub.getIntegration(CaptureConsole)) {\n hub.withScope(function (scope) {\n scope.setLevel(Severity.fromString(level));\n scope.setExtra('arguments', args);\n scope.addEventProcessor(function (event) {\n event.logger = 'console';\n return event;\n });\n var message = safeJoin(args, ' ');\n if (level === 'assert') {\n if (args[0] === false) {\n message = \"Assertion failed: \" + (safeJoin(args.slice(1), ' ') || 'console.assert');\n scope.setExtra('arguments', args.slice(1));\n hub.captureMessage(message);\n }\n }\n else {\n hub.captureMessage(message);\n }\n });\n }\n // this fails for some browsers. :(\n if (originalConsoleLevel) {\n Function.prototype.apply.call(originalConsoleLevel, global.console, args);\n }\n }; });\n });\n };\n /**\n * @inheritDoc\n */\n CaptureConsole.id = 'CaptureConsole';\n return CaptureConsole;\n}());\nexport { CaptureConsole };\n//# sourceMappingURL=captureconsole.js.map","/** Deduplication filter */\nvar Dedupe = /** @class */ (function () {\n function Dedupe() {\n /**\n * @inheritDoc\n */\n this.name = Dedupe.id;\n }\n /**\n * @inheritDoc\n */\n Dedupe.prototype.setupOnce = function (addGlobalEventProcessor, getCurrentHub) {\n addGlobalEventProcessor(function (currentEvent) {\n var self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (self._shouldDropEvent(currentEvent, self._previousEvent)) {\n return null;\n }\n }\n catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n });\n };\n /** JSDoc */\n Dedupe.prototype._shouldDropEvent = function (currentEvent, previousEvent) {\n if (!previousEvent) {\n return false;\n }\n if (this._isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n if (this._isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n return false;\n };\n /** JSDoc */\n Dedupe.prototype._isSameMessageEvent = function (currentEvent, previousEvent) {\n var currentMessage = currentEvent.message;\n var previousMessage = previousEvent.message;\n // If no event has a message, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n if (currentMessage !== previousMessage) {\n return false;\n }\n if (!this._isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n if (!this._isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n return true;\n };\n /** JSDoc */\n Dedupe.prototype._getFramesFromEvent = function (event) {\n var exception = event.exception;\n if (exception) {\n try {\n // @ts-ignore\n return exception.values[0].stacktrace.frames;\n }\n catch (_oO) {\n return undefined;\n }\n }\n else if (event.stacktrace) {\n return event.stacktrace.frames;\n }\n return undefined;\n };\n /** JSDoc */\n Dedupe.prototype._isSameStacktrace = function (currentEvent, previousEvent) {\n var currentFrames = this._getFramesFromEvent(currentEvent);\n var previousFrames = this._getFramesFromEvent(previousEvent);\n // If no event has a fingerprint, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n currentFrames = currentFrames;\n previousFrames = previousFrames;\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n // Otherwise, compare the two\n for (var i = 0; i < previousFrames.length; i++) {\n var frameA = previousFrames[i];\n var frameB = currentFrames[i];\n if (frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function) {\n return false;\n }\n }\n return true;\n };\n /** JSDoc */\n Dedupe.prototype._getExceptionFromEvent = function (event) {\n return event.exception && event.exception.values && event.exception.values[0];\n };\n /** JSDoc */\n Dedupe.prototype._isSameExceptionEvent = function (currentEvent, previousEvent) {\n var previousException = this._getExceptionFromEvent(previousEvent);\n var currentException = this._getExceptionFromEvent(currentEvent);\n if (!previousException || !currentException) {\n return false;\n }\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n if (!this._isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n if (!this._isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n return true;\n };\n /** JSDoc */\n Dedupe.prototype._isSameFingerprint = function (currentEvent, previousEvent) {\n var currentFingerprint = currentEvent.fingerprint;\n var previousFingerprint = previousEvent.fingerprint;\n // If no event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n currentFingerprint = currentFingerprint;\n previousFingerprint = previousFingerprint;\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n }\n catch (_oO) {\n return false;\n }\n };\n /**\n * @inheritDoc\n */\n Dedupe.id = 'Dedupe';\n return Dedupe;\n}());\nexport { Dedupe };\n//# sourceMappingURL=dedupe.js.map","import { getGlobalObject, isPlainObject, logger } from '@sentry/utils';\n/** JSDoc */\nvar Vue = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function Vue(options) {\n if (options === void 0) { options = {}; }\n /**\n * @inheritDoc\n */\n this.name = Vue.id;\n /**\n * When set to false, Sentry will suppress reporting all props data\n * from your Vue components for privacy concerns.\n */\n this._attachProps = true;\n /**\n * When set to true, original Vue's `logError` will be called as well.\n * https://github.com/vuejs/vue/blob/c2b1cfe9ccd08835f2d99f6ce60f67b4de55187f/src/core/util/error.js#L38-L48\n */\n this._logErrors = false;\n // tslint:disable-next-line: no-unsafe-any\n this._Vue = options.Vue || getGlobalObject().Vue;\n if (options.logErrors !== undefined) {\n this._logErrors = options.logErrors;\n }\n if (options.attachProps === false) {\n this._attachProps = false;\n }\n }\n /** JSDoc */\n Vue.prototype._formatComponentName = function (vm) {\n // tslint:disable:no-unsafe-any\n if (vm.$root === vm) {\n return 'root instance';\n }\n var name = vm._isVue ? vm.$options.name || vm.$options._componentTag : vm.name;\n return ((name ? \"component <\" + name + \">\" : 'anonymous component') +\n (vm._isVue && vm.$options.__file ? \" at \" + vm.$options.__file : ''));\n };\n /**\n * @inheritDoc\n */\n Vue.prototype.setupOnce = function (_, getCurrentHub) {\n // tslint:disable:no-unsafe-any\n var _this = this;\n if (!this._Vue || !this._Vue.config) {\n logger.error('VueIntegration is missing a Vue instance');\n return;\n }\n var oldOnError = this._Vue.config.errorHandler;\n this._Vue.config.errorHandler = function (error, vm, info) {\n var metadata = {};\n if (isPlainObject(vm)) {\n metadata.componentName = _this._formatComponentName(vm);\n if (_this._attachProps) {\n metadata.propsData = vm.$options.propsData;\n }\n }\n if (info !== void 0) {\n metadata.lifecycleHook = info;\n }\n if (getCurrentHub().getIntegration(Vue)) {\n // This timeout makes sure that any breadcrumbs are recorded before sending it off the sentry\n setTimeout(function () {\n getCurrentHub().withScope(function (scope) {\n scope.setContext('vue', metadata);\n getCurrentHub().captureException(error);\n });\n });\n }\n if (typeof oldOnError === 'function') {\n oldOnError.call(_this._Vue, error, vm, info);\n }\n if (_this._logErrors) {\n _this._Vue.util.warn(\"Error in \" + info + \": \\\"\" + error.toString() + \"\\\"\", vm);\n // tslint:disable-next-line:no-console\n console.error(error);\n }\n };\n };\n /**\n * @inheritDoc\n */\n Vue.id = 'Vue';\n return Vue;\n}());\nexport { Vue };\n//# sourceMappingURL=vue.js.map","import { showElement, hideElement, addClassToAllElements, removeClassFromAllElements } from \"@libs/utils\";\r\nimport initSentry from \"@libs/sentry\";\r\n\r\ninitSentry();\r\n\r\nexport function bindFooterTabs() {\r\n const tabButtons = document.querySelectorAll(\"#js-hook-footer-detail-scroll .tab-button\");\r\n for (let i = 0; i < tabButtons.length; i++) {\r\n const element = tabButtons.item(i);\r\n element.addEventListener(\"click\", function() {\r\n showSelectedTab(element, i);\r\n });\r\n }\r\n}\r\n\r\nfunction showSelectedTab(elementToShow: any, index: number) {\r\n hideElement(\"#js-hook-footer-detail-scroll div.tab-content\");\r\n showElement(`#js-hook-footer-detail-scroll div.tab-content:nth-child(${index + 1})`);\r\n removeClassFromAllElements(\"#js-hook-footer-detail-scroll div.tab-button\", \"active\");\r\n addClassToAllElements(`#js-hook-footer-detail-scroll div.tab-button:nth-child(${index + 1})`, \"active\");\r\n}\r\n"],"sourceRoot":""}