{"version":3,"sources":["webpack://_N_E/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://_N_E/./node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?7ae7","webpack://_N_E/./src/hooks/useClickOutside.ts","webpack://_N_E/./node_modules/react-is/index.js","webpack://_N_E/./node_modules/intersection-observer/intersection-observer.js","webpack://_N_E/./node_modules/@sentry/core/esm/integrations/functiontostring.js","webpack://_N_E/./node_modules/@sentry/core/esm/integrations/inboundfilters.js","webpack://_N_E/./node_modules/@sentry/utils/esm/polyfill.js","webpack://_N_E/./node_modules/@sentry/utils/esm/error.js","webpack://_N_E/./node_modules/@sentry/utils/esm/dsn.js","webpack://_N_E/./node_modules/@sentry/core/esm/integration.js","webpack://_N_E/./node_modules/@sentry/core/esm/baseclient.js","webpack://_N_E/./node_modules/@sentry/types/esm/status.js","webpack://_N_E/./node_modules/@sentry/core/esm/transports/noop.js","webpack://_N_E/./node_modules/@sentry/core/esm/basebackend.js","webpack://_N_E/./node_modules/@sentry/utils/esm/supports.js","webpack://_N_E/./node_modules/@sentry/browser/esm/tracekit.js","webpack://_N_E/./node_modules/@sentry/browser/esm/parsers.js","webpack://_N_E/./node_modules/@sentry/browser/esm/eventbuilder.js","webpack://_N_E/./node_modules/@sentry/core/esm/request.js","webpack://_N_E/./node_modules/@sentry/core/esm/api.js","webpack://_N_E/./node_modules/@sentry/utils/esm/promisebuffer.js","webpack://_N_E/./node_modules/@sentry/browser/esm/transports/base.js","webpack://_N_E/./node_modules/@sentry/browser/esm/transports/fetch.js","webpack://_N_E/./node_modules/@sentry/browser/esm/transports/xhr.js","webpack://_N_E/./node_modules/@sentry/browser/esm/backend.js","webpack://_N_E/./node_modules/@sentry/browser/esm/helpers.js","webpack://_N_E/./node_modules/@sentry/utils/esm/instrument.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js","webpack://_N_E/./node_modules/@sentry/browser/esm/version.js","webpack://_N_E/./node_modules/@sentry/browser/esm/client.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/trycatch.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/globalhandlers.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/linkederrors.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/useragent.js","webpack://_N_E/./node_modules/@sentry/browser/esm/sdk.js","webpack://_N_E/./node_modules/@sentry/react/esm/errorboundary.js","webpack://_N_E/./src/hooks/useNewLineText.tsx","webpack://_N_E/./src/components/layer/AlertLayer.tsx","webpack://_N_E/./src/components/layer/ConfirmLayer.tsx","webpack://_N_E/./src/components/layer/ListLayer.tsx","webpack://_N_E/./src/components/layer/Layer.tsx","webpack://_N_E/./src/components/AuthInfo.tsx","webpack://_N_E/./src/components/Footer.tsx","webpack://_N_E/./src/components/bridge/QRpopup.tsx","webpack://_N_E/./src/components/AppMain.tsx","webpack://_N_E/./node_modules/@sentry/core/esm/sdk.js","webpack://_N_E/./pages/_app.tsx","webpack://_N_E/./node_modules/react-is/cjs/react-is.production.min.js"],"names":["reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","type","KNOWN_STATICS","name","length","prototype","caller","callee","arguments","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","defineProperty","Object","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","module","exports","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","concat","targetStatics","sourceStatics","i","key","descriptor","e","window","__NEXT_P","push","useClickOutside","ref","handler","useEffect","listener","event","current","contains","target","document","addEventListener","removeEventListener","IntersectionObserverEntry","get","this","intersectionRatio","startDoc","doc","frame","getFrameElement","ownerDocument","registry","crossOriginUpdater","crossOriginRect","IntersectionObserver","THROTTLE_TIMEOUT","POLL_INTERVAL","USE_MUTATION_OBSERVER","_setupCrossOriginUpdater","boundingClientRect","intersectionRect","convertFromParentRect","top","bottom","left","right","width","height","forEach","observer","_checkForIntersections","_resetCrossOriginUpdater","observe","_observationTargets","some","item","element","nodeType","Error","_registerInstance","entry","_monitorIntersections","unobserve","filter","_unmonitorIntersections","_unregisterInstance","disconnect","_unmonitorAllIntersections","takeRecords","records","_queuedEntries","slice","_initThresholds","opt_threshold","threshold","Array","isArray","sort","t","a","isNaN","_parseRootMargin","opt_rootMargin","margins","split","map","margin","parts","exec","value","parseFloat","unit","win","defaultView","_monitoringDocuments","indexOf","callback","monitoringInterval","domObserver","setInterval","addEvent","MutationObserver","attributes","childList","characterData","subtree","_monitoringUnsubscribes","clearInterval","removeEvent","rootDoc","root","index","itemDoc","unsubscribe","splice","unsubscribes","rootIsInDom","_rootIsInDom","rootRect","_getRootRect","targetRect","getBoundingClientRect","rootContainsTarget","_rootContainsTarget","oldEntry","_computeTargetAndRootIntersection","rootBounds","newEntry","time","performance","now","_hasCrossedThreshold","isIntersecting","_callback","getComputedStyle","display","parent","getParentNode","atRoot","parentRect","parentComputedStyle","frameRect","frameIntersect","body","documentElement","overflow","computeRectIntersection","isDoc","html","clientWidth","clientHeight","_expandRectByRootMargin","rect","_rootMarginValues","newRect","oldRatio","newRatio","thresholds","containsDeep","frameElement","ensureDOMRect","targetArea","intersectionArea","Number","toFixed","opt_options","options","fn","timeout","timer","setTimeout","throttle","bind","rootMargin","join","node","opt_useCapture","attachEvent","detatchEvent","rect1","rect2","Math","max","min","el","err","y","x","parentBoundingRect","parentIntersectionRect","child","parentNode","assignedSlot","host","originalFunctionToString","FunctionToString","id","setupOnce","Function","toString","args","_i","context","__sentry_original__","apply","DEFAULT_IGNORE_ERRORS","InboundFilters","_options","hub","self","getIntegration","client","getClient","clientOptions","getOptions","_mergeOptions","_shouldDropEvent","_isSentryError","logger","warn","_isIgnoredError","_isDeniedUrl","_getEventFilterUrl","_isAllowedUrl","ignoreInternal","exception","values","_oO","ignoreErrors","_getPossibleEventMessages","message","pattern","denyUrls","url","allowUrls","whitelistUrls","blacklistUrls","_a","_b","_c","oO","error","stacktrace","frames_1","frames","filename","frames_2","setPrototypeOf","__proto__","obj","proto","prop","hasOwnProperty","_super","SentryError","_newTarget","constructor","_this","call","DSN_REGEX","ERROR_MESSAGE","Dsn","from","_fromString","_fromComponents","_validate","withPassword","path","pass","port","projectId","protocol","user","str","match","pop","projectMatch","components","parseInt","installedIntegrations","setupIntegrations","integrations","defaultIntegrations","userIntegrations","userIntegrationsNames_1","pickedIntegrationsNames_1","defaultIntegration","userIntegration","integrationsNames","alwaysLastToRun","getIntegrationsToSetup","integration","log","setupIntegration","Status","BaseClient","backendClass","_integrations","_processing","_backend","dsn","_dsn","captureException","hint","scope","eventId","event_id","_process","_getBackend","eventFromException","then","_captureEvent","result","captureMessage","level","promisedEvent","is","eventFromMessage","String","captureEvent","captureSession","session","release","_sendSession","getDsn","flush","_isClientProcessing","ready","getTransport","close","transportFlushed","enabled","_isEnabled","_updateSessionFromEvent","e_1","userAgent","crashed","errored","exceptions","exceptions_1","exceptions_1_1","next","done","mechanism","handled","e_1_1","return","headers","request","toLowerCase","update","status","Crashed","errors","sendSession","resolve","ticked","interval","undefined","_prepareEvent","normalizeDepth","prepared","timestamp","_applyClientOptions","_applyIntegrationsMetadata","finalScope","captureContext","clone","applyToEvent","evt","_normalizeEvent","depth","normalized","breadcrumbs","b","data","contexts","extra","trace","environment","dist","maxValueLength","sdkInfo","sdk","integrationsArray","_sendEvent","sendEvent","_processEvent","finalEvent","reason","beforeSend","sampleRate","reject","isTransaction","random","__sentry__","beforeSendResult","processedEvent","getSession","originalException","promise","fromHttpCode","code","Success","RateLimit","Invalid","Failed","Unknown","NoopTransport","_","Skipped","BaseBackend","_transport","_setupTransport","_exception","_hint","_message","_level","supportsFetch","Headers","Request","Response","isNativeFetch","func","test","supportsReferrerPolicy","referrerPolicy","UNKNOWN_FUNCTION","gecko","winjs","geckoEval","chromeEval","reactMinifiedRegexp","computeStackTrace","ex","stack","popSize","framesToPop","opera10Regex","opera11Regex","lines","line","column","extractMessage","computeStackTraceFromStacktraceProp","popFrames","submatch","isNative","substr","columnNumber","computeStackTraceFromStackProp","failed","exceptionFromStacktrace","prepareFramesForEvent","eventFromStacktrace","localStack","firstFrameFunction","lastFrameFunction","colno","function","in_app","lineno","reverse","eventFromUnknownInput","syntheticException","domException","name_1","eventFromString","tags","rejection","__serialized__","eventFromPlainObject","synthetic","input","attachStacktrace","sessionToSentryRequest","api","JSON","stringify","sent_at","Date","toISOString","getEnvelopeEndpointWithUrlEncodedAuth","eventToSentryRequest","samplingMethod","__sentry_samplingMethod","__sentry_sampleRate","otherTags","useEnvelope","req","getStoreEndpointWithUrlEncodedAuth","envelope","sample_rates","rate","API","_dsnObject","getBaseApiEndpoint","getStoreEndpoint","_getIngestEndpoint","_encodedAuth","_getEnvelopeEndpoint","getStoreEndpointPath","getRequestHeaders","clientName","clientVersion","header","getReportDialogEndpoint","dialogOptions","endpoint","encodedOptions","encodeURIComponent","email","auth","sentry_key","sentry_version","PromiseBuffer","_limit","_buffer","isReady","add","task","remove","drain","capturedSetTimeout","all","clearTimeout","BaseTransport","_rateLimits","_api","_handleResponse","requestType","response","_handleRateLimit","_disabledUntil","category","_isRateLimited","e_2","rlHeader","raHeader","trim","_d","parameters","headerDelay","delay","_e","_f","e_2_1","FetchTransport","_sendRequest","sentryRequest","originalPayload","Promise","method","fetchParameters","assign","fetch","catch","XHRTransport","XMLHttpRequest","onreadystatechange","readyState","getResponseHeader","open","setRequestHeader","send","BrowserBackend","Info","transportOptions","transport","ignoreOnError","shouldIgnoreOnError","ignoreNextOnError","wrap","before","__sentry_wrapped__","sentryWrapped","wrappedArguments","arg","handleEvent","addEventProcessor","property","enumerable","defineProperties","configurable","injectReportDialog","script","createElement","async","src","onLoad","onload","head","appendChild","lastHref","handlers","instrumented","instrument","console","originalConsoleLevel","triggerHandlers","instrumentConsole","domEventHandler","keypressEventHandler","original","eventName","innerOriginal","instrumentDOM","requestKeys","requestValues","xhrproto","originalOpen","xhr","__sentry_xhr__","toUpperCase","__sentry_own_request__","onreadystatechangeHandler","status_code","requestPos","args_1","endTimestamp","startTimestamp","readyStateArgs","originalSend","instrumentXHR","global","sandbox","hidden","contentWindow","removeChild","supportsNativeFetch","originalFetch","handlerData","fetchData","getFetchMethod","getFetchUrl","instrumentFetch","chrome","isChromePackagedApp","app","runtime","hasHistoryApi","history","pushState","replaceState","supportsHistory","oldOnPopState","onpopstate","historyReplacementFunction","originalHistoryFunction","to","location","href","instrumentHistory","_oldOnErrorHandler","onerror","msg","_oldOnUnhandledRejectionHandler","onunhandledrejection","addInstrumentationHandler","fetchArgs","keypressTimeout","lastCapturedEvent","debounceTimer","debounce","tagName","isContentEditable","Breadcrumbs","dom","sentry","addSentryBreadcrumb","addBreadcrumb","_consoleBreadcrumb","_domBreadcrumb","_xhrBreadcrumb","_fetchBreadcrumb","_historyBreadcrumb","breadcrumb","fromString","parsedLoc","parsedFrom","parsedTo","relative","SDK_VERSION","BrowserClient","showReportDialog","platform","packages","version","DEFAULT_EVENT_TARGET","TryCatch","eventTarget","requestAnimationFrame","_wrapTimeFunction","_wrapRAF","_wrapXHR","_wrapEventTarget","originalCallback","originalRemoveEventListener","wrappedEventHandler","originalEventHandler","xmlHttpRequestProps","wrapOptions","GlobalHandlers","_onErrorHandlerInstalled","_onUnhandledRejectionHandlerInstalled","stackTraceLimit","_installGlobalOnErrorHandler","_installGlobalOnUnhandledRejectionHandler","currentHub","hasIntegration","isFailedOwnDelivery","_eventFromIncompleteOnError","_enhanceEventWithInitialFrame","detail","_eventFromRejectionWithPrimitive","groups","LinkedErrors","_key","limit","_handler","linkedErrors","_walkErrorTree","UserAgent","navigator","referrer","Referer","INITIAL_STATE","componentStack","ErrorBoundary","state","resetErrorBoundary","onReset","props","setState","componentDidCatch","beforeCapture","onError","showDialog","react","lastEventId","componentDidMount","onMount","componentWillUnmount","onUnmount","fallback","resetError","children","useNewLineText","text","AlertLayer","useRecoilState","layerState","setLayer","title","desc","trimDesc","handleClickConfirmBtn","useCallback","className","onClick","data-tiara-action-name","tiaraActionName","data-tiara-action-kind","tiaraActionType","ConfirmLayer","content","ok","cancel","handleClickClose","handleClickConfirm","ListLayer","list","initialValue","useState","selectedValue","setSelectedValue","isError","setIsError","classNames","li","liDesc","onChange","checked","Layer","useRecoilValue","layerNode","useMemo","layer_cancel","AuthInfo","router","useRouter","authInfo","authInfoState","style","border","position","zIndex","padding","accountId","signup","closeWebview","Footer","isFolded","setIsFolded","scrollToBottom","preventDefault","callOpenSubscriptionWebview","process","PRIVACY_POLICY_URL","HELP_URL","on","prevIsOpen","openCounselingTalk","TIARA_ACTION_NAME","BUTTON_TALK_CONSULTING_CLICK","INQUIRY_URL","BUTTON_INQUIRY_LAUNCHING_CLICK","QRpopup","query","qrPopupState","qrType","setQRType","useRef","existWindow","origin","getValidPath","errorPageRegexps","homePageRegexps","mobileBridgePageRegexps","BrandPageRegexps","bottomButtonRegexps","tiaraCustomProps","entries","TIARA_CUSTOM_PROPS","AppMain","Component","pageProps","isFoldedFooter","setIsFoldedFooter","deviceHeight","setDeviceHeight","isShowLayer","isTagFixed","tagFixedState","rootRef","isErrorPage","matchPathname","pathname","isHomePage","isMobileBridgePage","isBrandPage","isClosePage","isClosePcPage","isBottomButtonPage","innerHeight","Router","beforePopState","go","hasOpenedLayer","querySelectorAll","scrollY","scrollTop","scrollTo","htmlTag","querySelector","scrollHeight","data-tiara-custom","minHeight","isSandbox","window_1","SENTRY_RELEASE","autoSessionTracking","clientClass","debug","enable","bindClient","initAndBind","loadResolved","fcpResolved","possiblyEndSession","endSession","resolveWindowLoaded","startSession","po","PerformanceObserver","entryList","getEntries","startTime","firstHiddenTime_1","visibilityState","Infinity","timeStamp","once","buffered","startSessionTracking","Sentry","getWindow","Kakao","init","TiaraTracker","config","svcDomain","deployment","isProd","autoClick","getInstance","App","fetcher","apiGet","revalidateOnMount","revalidateOnFocus","revalidateOnReconnect","shouldRetryOnError","loadingTimeout","Symbol","for","c","d","f","g","h","k","l","m","n","p","q","r","v","w","z","u","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf"],"mappings":"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","file":"static/chunks/pages/_app-e1284dcfe5d184364385.js","sourcesContent":["'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/_app\",\n function () {\n return require(\"private-next-pages/_app.tsx\");\n }\n ]);\n ","import React, {useEffect} from 'react';\n\nconst useClickOutside = (ref: React.RefObject, handler: (event?: React.MouseEvent) => void) => {\n useEffect(() => {\n const listener = (event: any) => {\n // Do nothing if clicking ref's element or descendent elements\n if (!ref.current || ref.current.contains(event.target)) {\n return;\n }\n handler(event);\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [ref]);\n};\n\nexport default useClickOutside;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n(function() {\n'use strict';\n\n// Exit early if we're not running in a browser.\nif (typeof window !== 'object') {\n return;\n}\n\n// Exit early if all IntersectionObserver and IntersectionObserverEntry\n// features are natively supported.\nif ('IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window &&\n 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype,\n 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n return;\n}\n\n/**\n * Returns the embedding frame element, if any.\n * @param {!Document} doc\n * @return {!Element}\n */\nfunction getFrameElement(doc) {\n try {\n return doc.defaultView && doc.defaultView.frameElement || null;\n } catch (e) {\n // Ignore the error.\n return null;\n }\n}\n\n/**\n * A local reference to the root document.\n */\nvar document = (function(startDoc) {\n var doc = startDoc;\n var frame = getFrameElement(doc);\n while (frame) {\n doc = frame.ownerDocument;\n frame = getFrameElement(doc);\n }\n return doc;\n})(window.document);\n\n/**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observing a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\nvar registry = [];\n\n/**\n * The signal updater for cross-origin intersection. When not null, it means\n * that the polyfill is configured to work in a cross-origin mode.\n * @type {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\nvar crossOriginUpdater = null;\n\n/**\n * The current cross-origin intersection. Only used in the cross-origin mode.\n * @type {DOMRect|ClientRect}\n */\nvar crossOriginRect = null;\n\n\n/**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\nfunction IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = ensureDOMRect(entry.rootBounds);\n this.boundingClientRect = ensureDOMRect(entry.boundingClientRect);\n this.intersectionRect = ensureDOMRect(entry.intersectionRect || getEmptyRect());\n this.isIntersecting = !!entry.intersectionRect;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\n if (targetArea) {\n // Round the intersection ratio to avoid floating point math issues:\n // https://github.com/w3c/IntersectionObserver/issues/324\n this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n}\n\n\n/**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\nfunction IntersectionObserver(callback, opt_options) {\n\n var options = opt_options || {};\n\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n\n if (\n options.root &&\n options.root.nodeType != 1 &&\n options.root.nodeType != 9\n ) {\n throw new Error('root must be a Document or Element');\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(\n this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function(margin) {\n return margin.value + margin.unit;\n }).join(' ');\n\n /** @private @const {!Array} */\n this._monitoringDocuments = [];\n /** @private @const {!Array} */\n this._monitoringUnsubscribes = [];\n}\n\n\n/**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\nIntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n\n/**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\nIntersectionObserver.prototype.POLL_INTERVAL = null;\n\n/**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\nIntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n\n\n/**\n * Sets up the polyfill in the cross-origin mode. The result is the\n * updater function that accepts two arguments: `boundingClientRect` and\n * `intersectionRect` - just as these fields would be available to the\n * parent via `IntersectionObserverEntry`. This function should be called\n * each time the iframe receives intersection information from the parent\n * window, e.g. via messaging.\n * @return {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\nIntersectionObserver._setupCrossOriginUpdater = function() {\n if (!crossOriginUpdater) {\n /**\n * @param {DOMRect|ClientRect} boundingClientRect\n * @param {DOMRect|ClientRect} intersectionRect\n */\n crossOriginUpdater = function(boundingClientRect, intersectionRect) {\n if (!boundingClientRect || !intersectionRect) {\n crossOriginRect = getEmptyRect();\n } else {\n crossOriginRect = convertFromParentRect(boundingClientRect, intersectionRect);\n }\n registry.forEach(function(observer) {\n observer._checkForIntersections();\n });\n };\n }\n return crossOriginUpdater;\n};\n\n\n/**\n * Resets the cross-origin mode.\n */\nIntersectionObserver._resetCrossOriginUpdater = function() {\n crossOriginUpdater = null;\n crossOriginRect = null;\n};\n\n\n/**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.observe = function(target) {\n var isTargetAlreadyObserved = this._observationTargets.some(function(item) {\n return item.element == target;\n });\n\n if (isTargetAlreadyObserved) {\n return;\n }\n\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n\n this._registerInstance();\n this._observationTargets.push({element: target, entry: null});\n this._monitorIntersections(target.ownerDocument);\n this._checkForIntersections();\n};\n\n\n/**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.unobserve = function(target) {\n this._observationTargets =\n this._observationTargets.filter(function(item) {\n return item.element != target;\n });\n this._unmonitorIntersections(target.ownerDocument);\n if (this._observationTargets.length == 0) {\n this._unregisterInstance();\n }\n};\n\n\n/**\n * Stops observing all target elements for intersection changes.\n */\nIntersectionObserver.prototype.disconnect = function() {\n this._observationTargets = [];\n this._unmonitorAllIntersections();\n this._unregisterInstance();\n};\n\n\n/**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\nIntersectionObserver.prototype.takeRecords = function() {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n};\n\n\n/**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\nIntersectionObserver.prototype._initThresholds = function(opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n\n return threshold.sort().filter(function(t, i, a) {\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n};\n\n\n/**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array} An array of margin objects with the keys\n * value and unit.\n */\nIntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {\n var marginString = opt_rootMargin || '0px';\n var margins = marginString.split(/\\s+/).map(function(margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return {value: parseFloat(parts[1]), unit: parts[2]};\n });\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n\n return margins;\n};\n\n\n/**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibility state is visible.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._monitorIntersections = function(doc) {\n var win = doc.defaultView;\n if (!win) {\n // Already destroyed.\n return;\n }\n if (this._monitoringDocuments.indexOf(doc) != -1) {\n // Already monitoring.\n return;\n }\n\n // Private state for monitoring.\n var callback = this._checkForIntersections;\n var monitoringInterval = null;\n var domObserver = null;\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n monitoringInterval = win.setInterval(callback, this.POLL_INTERVAL);\n } else {\n addEvent(win, 'resize', callback, true);\n addEvent(doc, 'scroll', callback, true);\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in win) {\n domObserver = new win.MutationObserver(callback);\n domObserver.observe(doc, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n\n this._monitoringDocuments.push(doc);\n this._monitoringUnsubscribes.push(function() {\n // Get the window object again. When a friendly iframe is destroyed, it\n // will be null.\n var win = doc.defaultView;\n\n if (win) {\n if (monitoringInterval) {\n win.clearInterval(monitoringInterval);\n }\n removeEvent(win, 'resize', callback, true);\n }\n\n removeEvent(doc, 'scroll', callback, true);\n if (domObserver) {\n domObserver.disconnect();\n }\n });\n\n // Also monitor the parent.\n var rootDoc =\n (this.root && (this.root.ownerDocument || this.root)) || document;\n if (doc != rootDoc) {\n var frame = getFrameElement(doc);\n if (frame) {\n this._monitorIntersections(frame.ownerDocument);\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._unmonitorIntersections = function(doc) {\n var index = this._monitoringDocuments.indexOf(doc);\n if (index == -1) {\n return;\n }\n\n var rootDoc =\n (this.root && (this.root.ownerDocument || this.root)) || document;\n\n // Check if any dependent targets are still remaining.\n var hasDependentTargets =\n this._observationTargets.some(function(item) {\n var itemDoc = item.element.ownerDocument;\n // Target is in this context.\n if (itemDoc == doc) {\n return true;\n }\n // Target is nested in this context.\n while (itemDoc && itemDoc != rootDoc) {\n var frame = getFrameElement(itemDoc);\n itemDoc = frame && frame.ownerDocument;\n if (itemDoc == doc) {\n return true;\n }\n }\n return false;\n });\n if (hasDependentTargets) {\n return;\n }\n\n // Unsubscribe.\n var unsubscribe = this._monitoringUnsubscribes[index];\n this._monitoringDocuments.splice(index, 1);\n this._monitoringUnsubscribes.splice(index, 1);\n unsubscribe();\n\n // Also unmonitor the parent.\n if (doc != rootDoc) {\n var frame = getFrameElement(doc);\n if (frame) {\n this._unmonitorIntersections(frame.ownerDocument);\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._unmonitorAllIntersections = function() {\n var unsubscribes = this._monitoringUnsubscribes.slice(0);\n this._monitoringDocuments.length = 0;\n this._monitoringUnsubscribes.length = 0;\n for (var i = 0; i < unsubscribes.length; i++) {\n unsubscribes[i]();\n }\n};\n\n\n/**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\nIntersectionObserver.prototype._checkForIntersections = function() {\n if (!this.root && crossOriginUpdater && !crossOriginRect) {\n // Cross origin monitoring, but no initial data available yet.\n return;\n }\n\n var rootIsInDom = this._rootIsInDom();\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n\n this._observationTargets.forEach(function(item) {\n var target = item.element;\n var targetRect = getBoundingClientRect(target);\n var rootContainsTarget = this._rootContainsTarget(target);\n var oldEntry = item.entry;\n var intersectionRect = rootIsInDom && rootContainsTarget &&\n this._computeTargetAndRootIntersection(target, targetRect, rootRect);\n\n var rootBounds = null;\n if (!this._rootContainsTarget(target)) {\n rootBounds = getEmptyRect();\n } else if (!crossOriginUpdater || this.root) {\n rootBounds = rootRect;\n }\n\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootBounds,\n intersectionRect: intersectionRect\n });\n\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n};\n\n\n/**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} targetRect The bounding rect of the target.\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\nIntersectionObserver.prototype._computeTargetAndRootIntersection =\n function(target, targetRect, rootRect) {\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n\n while (!atRoot && parent) {\n var parentRect = null;\n var parentComputedStyle = parent.nodeType == 1 ?\n window.getComputedStyle(parent) : {};\n\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display == 'none') return null;\n\n if (parent == this.root || parent.nodeType == /* DOCUMENT */ 9) {\n atRoot = true;\n if (parent == this.root || parent == document) {\n if (crossOriginUpdater && !this.root) {\n if (!crossOriginRect ||\n crossOriginRect.width == 0 && crossOriginRect.height == 0) {\n // A 0-size cross-origin intersection means no-intersection.\n parent = null;\n parentRect = null;\n intersectionRect = null;\n } else {\n parentRect = crossOriginRect;\n }\n } else {\n parentRect = rootRect;\n }\n } else {\n // Check if there's a frame that can be navigated to.\n var frame = getParentNode(parent);\n var frameRect = frame && getBoundingClientRect(frame);\n var frameIntersect =\n frame &&\n this._computeTargetAndRootIntersection(frame, frameRect, rootRect);\n if (frameRect && frameIntersect) {\n parent = frame;\n parentRect = convertFromParentRect(frameRect, frameIntersect);\n } else {\n parent = null;\n intersectionRect = null;\n }\n }\n } else {\n // If the element has a non-visible overflow, and it's not the \n // or element, update the intersection rect.\n // Note: and cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n var doc = parent.ownerDocument;\n if (parent != doc.body &&\n parent != doc.documentElement &&\n parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n }\n if (!intersectionRect) break;\n parent = parent && getParentNode(parent);\n }\n return intersectionRect;\n};\n\n\n/**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {ClientRect} The expanded root rect.\n * @private\n */\nIntersectionObserver.prototype._getRootRect = function() {\n var rootRect;\n if (this.root && !isDoc(this.root)) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use / instead of window since scroll bars affect size.\n var doc = isDoc(this.root) ? this.root : document;\n var html = doc.documentElement;\n var body = doc.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n return this._expandRectByRootMargin(rootRect);\n};\n\n\n/**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {DOMRect|ClientRect} rect The rect object to expand.\n * @return {ClientRect} The expanded rect.\n * @private\n */\nIntersectionObserver.prototype._expandRectByRootMargin = function(rect) {\n var margins = this._rootMarginValues.map(function(margin, i) {\n return margin.unit == 'px' ? margin.value :\n margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n var newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n\n return newRect;\n};\n\n\n/**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\nIntersectionObserver.prototype._hasCrossedThreshold =\n function(oldEntry, newEntry) {\n\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n var oldRatio = oldEntry && oldEntry.isIntersecting ?\n oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ?\n newEntry.intersectionRatio || 0 : -1;\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return;\n\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i];\n\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio ||\n threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n};\n\n\n/**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\nIntersectionObserver.prototype._rootIsInDom = function() {\n return !this.root || containsDeep(document, this.root);\n};\n\n\n/**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\nIntersectionObserver.prototype._rootContainsTarget = function(target) {\n var rootDoc =\n (this.root && (this.root.ownerDocument || this.root)) || document;\n return (\n containsDeep(rootDoc, target) &&\n (!this.root || rootDoc == target.ownerDocument)\n );\n};\n\n\n/**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\nIntersectionObserver.prototype._registerInstance = function() {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n};\n\n\n/**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\nIntersectionObserver.prototype._unregisterInstance = function() {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n};\n\n\n/**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\nfunction now() {\n return window.performance && performance.now && performance.now();\n}\n\n\n/**\n * Throttles a function and delays its execution, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\nfunction throttle(fn, timeout) {\n var timer = null;\n return function () {\n if (!timer) {\n timer = setTimeout(function() {\n fn();\n timer = null;\n }, timeout);\n }\n };\n}\n\n\n/**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\nfunction addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\nfunction removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object|?ClientRect} The intersection rect or undefined if no\n * intersection is found.\n */\nfunction computeRectIntersection(rect1, rect2) {\n var top = Math.max(rect1.top, rect2.top);\n var bottom = Math.min(rect1.bottom, rect2.bottom);\n var left = Math.max(rect1.left, rect2.left);\n var right = Math.min(rect1.right, rect2.right);\n var width = right - left;\n var height = bottom - top;\n\n return (width >= 0 && height >= 0) && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n } || null;\n}\n\n\n/**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {DOMRect|ClientRect} The (possibly shimmed) rect of the element.\n */\nfunction getBoundingClientRect(el) {\n var rect;\n\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect();\n\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n}\n\n\n/**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {ClientRect} The empty rect.\n */\nfunction getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n}\n\n\n/**\n * Ensure that the result has all of the necessary fields of the DOMRect.\n * Specifically this ensures that `x` and `y` fields are set.\n *\n * @param {?DOMRect|?ClientRect} rect\n * @return {?DOMRect}\n */\nfunction ensureDOMRect(rect) {\n // A `DOMRect` object has `x` and `y` fields.\n if (!rect || 'x' in rect) {\n return rect;\n }\n // A IE's `ClientRect` type does not have `x` and `y`. The same is the case\n // for internally calculated Rect objects. For the purposes of\n // `IntersectionObserver`, it's sufficient to simply mirror `left` and `top`\n // for these fields.\n return {\n top: rect.top,\n y: rect.top,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n right: rect.right,\n width: rect.width,\n height: rect.height\n };\n}\n\n\n/**\n * Inverts the intersection and bounding rect from the parent (frame) BCR to\n * the local BCR space.\n * @param {DOMRect|ClientRect} parentBoundingRect The parent's bound client rect.\n * @param {DOMRect|ClientRect} parentIntersectionRect The parent's own intersection rect.\n * @return {ClientRect} The local root bounding rect for the parent's children.\n */\nfunction convertFromParentRect(parentBoundingRect, parentIntersectionRect) {\n var top = parentIntersectionRect.top - parentBoundingRect.top;\n var left = parentIntersectionRect.left - parentBoundingRect.left;\n return {\n top: top,\n left: left,\n height: parentIntersectionRect.height,\n width: parentIntersectionRect.width,\n bottom: top + parentIntersectionRect.height,\n right: left + parentIntersectionRect.width\n };\n}\n\n\n/**\n * Checks to see if a parent element contains a child element (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\nfunction containsDeep(parent, child) {\n var node = child;\n while (node) {\n if (node == parent) return true;\n\n node = getParentNode(node);\n }\n return false;\n}\n\n\n/**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\nfunction getParentNode(node) {\n var parent = node.parentNode;\n\n if (node.nodeType == /* DOCUMENT */ 9 && node != document) {\n // If this node is a document node, look for the embedding frame.\n return getFrameElement(node);\n }\n\n // If the parent has element that is assigned through shadow root slot\n if (parent && parent.assignedSlot) {\n parent = parent.assignedSlot.parentNode\n }\n\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n\n return parent;\n}\n\n/**\n * Returns true if `node` is a Document.\n * @param {!Node} node\n * @returns {boolean}\n */\nfunction isDoc(node) {\n return node && node.nodeType === 9;\n}\n\n\n// Exposes the constructors globally.\nwindow.IntersectionObserver = IntersectionObserver;\nwindow.IntersectionObserverEntry = IntersectionObserverEntry;\n\n}());\n","var originalFunctionToString;\n/** Patch toString calls to return proper name for wrapped functions */\nvar FunctionToString = /** @class */ (function () {\n function FunctionToString() {\n /**\n * @inheritDoc\n */\n this.name = FunctionToString.id;\n }\n /**\n * @inheritDoc\n */\n FunctionToString.prototype.setupOnce = function () {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Function.prototype.toString = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var context = this.__sentry_original__ || this;\n return originalFunctionToString.apply(context, args);\n };\n };\n /**\n * @inheritDoc\n */\n FunctionToString.id = 'FunctionToString';\n return FunctionToString;\n}());\nexport { FunctionToString };\n//# sourceMappingURL=functiontostring.js.map","import { __read, __spread } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { getEventDescription, isMatchingPattern, logger } from '@sentry/utils';\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nvar DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n/** Inbound filters configurable by the user */\nvar InboundFilters = /** @class */ (function () {\n function InboundFilters(_options) {\n if (_options === void 0) { _options = {}; }\n this._options = _options;\n /**\n * @inheritDoc\n */\n this.name = InboundFilters.id;\n }\n /**\n * @inheritDoc\n */\n InboundFilters.prototype.setupOnce = function () {\n addGlobalEventProcessor(function (event) {\n var hub = getCurrentHub();\n if (!hub) {\n return event;\n }\n var self = hub.getIntegration(InboundFilters);\n if (self) {\n var client = hub.getClient();\n var clientOptions = client ? client.getOptions() : {};\n var options = self._mergeOptions(clientOptions);\n if (self._shouldDropEvent(event, options)) {\n return null;\n }\n }\n return event;\n });\n };\n /** JSDoc */\n InboundFilters.prototype._shouldDropEvent = function (event, options) {\n if (this._isSentryError(event, options)) {\n logger.warn(\"Event dropped due to being internal Sentry Error.\\nEvent: \" + getEventDescription(event));\n return true;\n }\n if (this._isIgnoredError(event, options)) {\n logger.warn(\"Event dropped due to being matched by `ignoreErrors` option.\\nEvent: \" + getEventDescription(event));\n return true;\n }\n if (this._isDeniedUrl(event, options)) {\n logger.warn(\"Event dropped due to being matched by `denyUrls` option.\\nEvent: \" + getEventDescription(event) + \".\\nUrl: \" + this._getEventFilterUrl(event));\n return true;\n }\n if (!this._isAllowedUrl(event, options)) {\n logger.warn(\"Event dropped due to not being matched by `allowUrls` option.\\nEvent: \" + getEventDescription(event) + \".\\nUrl: \" + this._getEventFilterUrl(event));\n return true;\n }\n return false;\n };\n /** JSDoc */\n InboundFilters.prototype._isSentryError = function (event, options) {\n if (!options.ignoreInternal) {\n return false;\n }\n try {\n return ((event &&\n event.exception &&\n event.exception.values &&\n event.exception.values[0] &&\n event.exception.values[0].type === 'SentryError') ||\n false);\n }\n catch (_oO) {\n return false;\n }\n };\n /** JSDoc */\n InboundFilters.prototype._isIgnoredError = function (event, options) {\n if (!options.ignoreErrors || !options.ignoreErrors.length) {\n return false;\n }\n return this._getPossibleEventMessages(event).some(function (message) {\n // Not sure why TypeScript complains here...\n return options.ignoreErrors.some(function (pattern) { return isMatchingPattern(message, pattern); });\n });\n };\n /** JSDoc */\n InboundFilters.prototype._isDeniedUrl = function (event, options) {\n // TODO: Use Glob instead?\n if (!options.denyUrls || !options.denyUrls.length) {\n return false;\n }\n var url = this._getEventFilterUrl(event);\n return !url ? false : options.denyUrls.some(function (pattern) { return isMatchingPattern(url, pattern); });\n };\n /** JSDoc */\n InboundFilters.prototype._isAllowedUrl = function (event, options) {\n // TODO: Use Glob instead?\n if (!options.allowUrls || !options.allowUrls.length) {\n return true;\n }\n var url = this._getEventFilterUrl(event);\n return !url ? true : options.allowUrls.some(function (pattern) { return isMatchingPattern(url, pattern); });\n };\n /** JSDoc */\n InboundFilters.prototype._mergeOptions = function (clientOptions) {\n if (clientOptions === void 0) { clientOptions = {}; }\n return {\n allowUrls: __spread((this._options.whitelistUrls || []), (this._options.allowUrls || []), (clientOptions.whitelistUrls || []), (clientOptions.allowUrls || [])),\n denyUrls: __spread((this._options.blacklistUrls || []), (this._options.denyUrls || []), (clientOptions.blacklistUrls || []), (clientOptions.denyUrls || [])),\n ignoreErrors: __spread((this._options.ignoreErrors || []), (clientOptions.ignoreErrors || []), DEFAULT_IGNORE_ERRORS),\n ignoreInternal: typeof this._options.ignoreInternal !== 'undefined' ? this._options.ignoreInternal : true,\n };\n };\n /** JSDoc */\n InboundFilters.prototype._getPossibleEventMessages = function (event) {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n var _a = (event.exception.values && event.exception.values[0]) || {}, _b = _a.type, type = _b === void 0 ? '' : _b, _c = _a.value, value = _c === void 0 ? '' : _c;\n return [\"\" + value, type + \": \" + value];\n }\n catch (oO) {\n logger.error(\"Cannot extract message for event \" + getEventDescription(event));\n return [];\n }\n }\n return [];\n };\n /** JSDoc */\n InboundFilters.prototype._getEventFilterUrl = function (event) {\n try {\n if (event.stacktrace) {\n var frames_1 = event.stacktrace.frames;\n return (frames_1 && frames_1[frames_1.length - 1].filename) || null;\n }\n if (event.exception) {\n var frames_2 = event.exception.values && event.exception.values[0].stacktrace && event.exception.values[0].stacktrace.frames;\n return (frames_2 && frames_2[frames_2.length - 1].filename) || null;\n }\n return null;\n }\n catch (oO) {\n logger.error(\"Cannot extract url for event \" + getEventDescription(event));\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n InboundFilters.id = 'InboundFilters';\n return InboundFilters;\n}());\nexport { InboundFilters };\n//# sourceMappingURL=inboundfilters.js.map","export var setPrototypeOf = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties);\n/**\n * setPrototypeOf polyfill using __proto__\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction setProtoOf(obj, proto) {\n // @ts-ignore __proto__ does not exist on obj\n obj.__proto__ = proto;\n return obj;\n}\n/**\n * setPrototypeOf polyfill using mixin\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction mixinProperties(obj, proto) {\n for (var prop in proto) {\n // eslint-disable-next-line no-prototype-builtins\n if (!obj.hasOwnProperty(prop)) {\n // @ts-ignore typescript complains about indexing so we remove\n obj[prop] = proto[prop];\n }\n }\n return obj;\n}\n//# sourceMappingURL=polyfill.js.map","import { __extends } from \"tslib\";\nimport { setPrototypeOf } from './polyfill';\n/** An error emitted by Sentry SDKs and related utilities. */\nvar SentryError = /** @class */ (function (_super) {\n __extends(SentryError, _super);\n function SentryError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n _this.message = message;\n _this.name = _newTarget.prototype.constructor.name;\n setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return SentryError;\n}(Error));\nexport { SentryError };\n//# sourceMappingURL=error.js.map","import { __read } from \"tslib\";\nimport { SentryError } from './error';\n/** Regular expression used to parse a Dsn. */\nvar DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n/** Error message */\nvar ERROR_MESSAGE = 'Invalid Dsn';\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nvar Dsn = /** @class */ (function () {\n /** Creates a new Dsn component */\n function Dsn(from) {\n if (typeof from === 'string') {\n this._fromString(from);\n }\n else {\n this._fromComponents(from);\n }\n this._validate();\n }\n /**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\n Dsn.prototype.toString = function (withPassword) {\n if (withPassword === void 0) { withPassword = false; }\n var _a = this, host = _a.host, path = _a.path, pass = _a.pass, port = _a.port, projectId = _a.projectId, protocol = _a.protocol, user = _a.user;\n return (protocol + \"://\" + user + (withPassword && pass ? \":\" + pass : '') +\n (\"@\" + host + (port ? \":\" + port : '') + \"/\" + (path ? path + \"/\" : path) + projectId));\n };\n /** Parses a string into this Dsn. */\n Dsn.prototype._fromString = function (str) {\n var match = DSN_REGEX.exec(str);\n if (!match) {\n throw new SentryError(ERROR_MESSAGE);\n }\n var _a = __read(match.slice(1), 6), protocol = _a[0], user = _a[1], _b = _a[2], pass = _b === void 0 ? '' : _b, host = _a[3], _c = _a[4], port = _c === void 0 ? '' : _c, lastPath = _a[5];\n var path = '';\n var projectId = lastPath;\n var split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop();\n }\n if (projectId) {\n var projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n this._fromComponents({ host: host, pass: pass, path: path, projectId: projectId, port: port, protocol: protocol, user: user });\n };\n /** Maps Dsn components into this instance. */\n Dsn.prototype._fromComponents = function (components) {\n this.protocol = components.protocol;\n this.user = components.user;\n this.pass = components.pass || '';\n this.host = components.host;\n this.port = components.port || '';\n this.path = components.path || '';\n this.projectId = components.projectId;\n };\n /** Validates this Dsn and throws on error. */\n Dsn.prototype._validate = function () {\n var _this = this;\n ['protocol', 'user', 'host', 'projectId'].forEach(function (component) {\n if (!_this[component]) {\n throw new SentryError(ERROR_MESSAGE + \": \" + component + \" missing\");\n }\n });\n if (!this.projectId.match(/^\\d+$/)) {\n throw new SentryError(ERROR_MESSAGE + \": Invalid projectId \" + this.projectId);\n }\n if (this.protocol !== 'http' && this.protocol !== 'https') {\n throw new SentryError(ERROR_MESSAGE + \": Invalid protocol \" + this.protocol);\n }\n if (this.port && isNaN(parseInt(this.port, 10))) {\n throw new SentryError(ERROR_MESSAGE + \": Invalid port \" + this.port);\n }\n };\n return Dsn;\n}());\nexport { Dsn };\n//# sourceMappingURL=dsn.js.map","import { __read, __spread } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { logger } from '@sentry/utils';\nexport var installedIntegrations = [];\n/** Gets integration to install */\nexport function getIntegrationsToSetup(options) {\n var defaultIntegrations = (options.defaultIntegrations && __spread(options.defaultIntegrations)) || [];\n var userIntegrations = options.integrations;\n var integrations = [];\n if (Array.isArray(userIntegrations)) {\n var userIntegrationsNames_1 = userIntegrations.map(function (i) { return i.name; });\n var pickedIntegrationsNames_1 = [];\n // Leave only unique default integrations, that were not overridden with provided user integrations\n defaultIntegrations.forEach(function (defaultIntegration) {\n if (userIntegrationsNames_1.indexOf(defaultIntegration.name) === -1 &&\n pickedIntegrationsNames_1.indexOf(defaultIntegration.name) === -1) {\n integrations.push(defaultIntegration);\n pickedIntegrationsNames_1.push(defaultIntegration.name);\n }\n });\n // Don't add same user integration twice\n userIntegrations.forEach(function (userIntegration) {\n if (pickedIntegrationsNames_1.indexOf(userIntegration.name) === -1) {\n integrations.push(userIntegration);\n pickedIntegrationsNames_1.push(userIntegration.name);\n }\n });\n }\n else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(defaultIntegrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n }\n else {\n integrations = __spread(defaultIntegrations);\n }\n // Make sure that if present, `Debug` integration will always run last\n var integrationsNames = integrations.map(function (i) { return i.name; });\n var alwaysLastToRun = 'Debug';\n if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n integrations.push.apply(integrations, __spread(integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1)));\n }\n return integrations;\n}\n/** Setup given integration */\nexport function setupIntegration(integration) {\n if (installedIntegrations.indexOf(integration.name) !== -1) {\n return;\n }\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n logger.log(\"Integration installed: \" + integration.name);\n}\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(options) {\n var integrations = {};\n getIntegrationsToSetup(options).forEach(function (integration) {\n integrations[integration.name] = integration;\n setupIntegration(integration);\n });\n return integrations;\n}\n//# sourceMappingURL=integration.js.map","import { __assign, __values } from \"tslib\";\n/* eslint-disable max-lines */\nimport { Scope } from '@sentry/hub';\nimport { SessionStatus, } from '@sentry/types';\nimport { dateTimestampInSeconds, Dsn, isPrimitive, isThenable, logger, normalize, SentryError, SyncPromise, truncate, uuid4, } from '@sentry/utils';\nimport { setupIntegrations } from './integration';\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding backend constructor and options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}. Also, the Backend instance is available via\n * {@link Client.getBackend}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event via the backend, it is passed through\n * {@link BaseClient.prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(NodeBackend, options);\n * }\n *\n * // ...\n * }\n */\nvar BaseClient = /** @class */ (function () {\n /**\n * Initializes this client instance.\n *\n * @param backendClass A constructor function to create the backend.\n * @param options Options for the client.\n */\n function BaseClient(backendClass, options) {\n /** Array of used integrations. */\n this._integrations = {};\n /** Number of call being processed */\n this._processing = 0;\n this._backend = new backendClass(options);\n this._options = options;\n if (options.dsn) {\n this._dsn = new Dsn(options.dsn);\n }\n }\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n BaseClient.prototype.captureException = function (exception, hint, scope) {\n var _this = this;\n var eventId = hint && hint.event_id;\n this._process(this._getBackend()\n .eventFromException(exception, hint)\n .then(function (event) { return _this._captureEvent(event, hint, scope); })\n .then(function (result) {\n eventId = result;\n }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureMessage = function (message, level, hint, scope) {\n var _this = this;\n var eventId = hint && hint.event_id;\n var promisedEvent = isPrimitive(message)\n ? this._getBackend().eventFromMessage(String(message), level, hint)\n : this._getBackend().eventFromException(message, hint);\n this._process(promisedEvent\n .then(function (event) { return _this._captureEvent(event, hint, scope); })\n .then(function (result) {\n eventId = result;\n }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureEvent = function (event, hint, scope) {\n var eventId = hint && hint.event_id;\n this._process(this._captureEvent(event, hint, scope).then(function (result) {\n eventId = result;\n }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureSession = function (session) {\n if (!session.release) {\n logger.warn('Discarded session because of missing release');\n }\n else {\n this._sendSession(session);\n }\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getDsn = function () {\n return this._dsn;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getOptions = function () {\n return this._options;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.flush = function (timeout) {\n var _this = this;\n return this._isClientProcessing(timeout).then(function (ready) {\n return _this._getBackend()\n .getTransport()\n .close(timeout)\n .then(function (transportFlushed) { return ready && transportFlushed; });\n });\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.close = function (timeout) {\n var _this = this;\n return this.flush(timeout).then(function (result) {\n _this.getOptions().enabled = false;\n return result;\n });\n };\n /**\n * Sets up the integrations\n */\n BaseClient.prototype.setupIntegrations = function () {\n if (this._isEnabled()) {\n this._integrations = setupIntegrations(this._options);\n }\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getIntegration = function (integration) {\n try {\n return this._integrations[integration.id] || null;\n }\n catch (_oO) {\n logger.warn(\"Cannot retrieve integration \" + integration.id + \" from the current Client\");\n return null;\n }\n };\n /** Updates existing session based on the provided event */\n BaseClient.prototype._updateSessionFromEvent = function (session, event) {\n var e_1, _a;\n var crashed = false;\n var errored = false;\n var userAgent;\n var exceptions = event.exception && event.exception.values;\n if (exceptions) {\n errored = true;\n try {\n for (var exceptions_1 = __values(exceptions), exceptions_1_1 = exceptions_1.next(); !exceptions_1_1.done; exceptions_1_1 = exceptions_1.next()) {\n var ex = exceptions_1_1.value;\n var mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (exceptions_1_1 && !exceptions_1_1.done && (_a = exceptions_1.return)) _a.call(exceptions_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n var user = event.user;\n if (!session.userAgent) {\n var headers = event.request ? event.request.headers : {};\n for (var key in headers) {\n if (key.toLowerCase() === 'user-agent') {\n userAgent = headers[key];\n break;\n }\n }\n }\n session.update(__assign(__assign({}, (crashed && { status: SessionStatus.Crashed })), { user: user,\n userAgent: userAgent, errors: session.errors + Number(errored || crashed) }));\n };\n /** Deliver captured session to Sentry */\n BaseClient.prototype._sendSession = function (session) {\n this._getBackend().sendSession(session);\n };\n /** Waits for the client to be done with processing. */\n BaseClient.prototype._isClientProcessing = function (timeout) {\n var _this = this;\n return new SyncPromise(function (resolve) {\n var ticked = 0;\n var tick = 1;\n var interval = setInterval(function () {\n if (_this._processing == 0) {\n clearInterval(interval);\n resolve(true);\n }\n else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n };\n /** Returns the current backend. */\n BaseClient.prototype._getBackend = function () {\n return this._backend;\n };\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n BaseClient.prototype._isEnabled = function () {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n };\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n BaseClient.prototype._prepareEvent = function (event, scope, hint) {\n var _this = this;\n var _a = this.getOptions().normalizeDepth, normalizeDepth = _a === void 0 ? 3 : _a;\n var prepared = __assign(__assign({}, event), { event_id: event.event_id || (hint && hint.event_id ? hint.event_id : uuid4()), timestamp: event.timestamp || dateTimestampInSeconds() });\n this._applyClientOptions(prepared);\n this._applyIntegrationsMetadata(prepared);\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n var finalScope = scope;\n if (hint && hint.captureContext) {\n finalScope = Scope.clone(finalScope).update(hint.captureContext);\n }\n // We prepare the result here with a resolved Event.\n var result = SyncPromise.resolve(prepared);\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (finalScope) {\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n return result.then(function (evt) {\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return _this._normalizeEvent(evt, normalizeDepth);\n }\n return evt;\n });\n };\n /**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\n BaseClient.prototype._normalizeEvent = function (event, depth) {\n if (!event) {\n return null;\n }\n var normalized = __assign(__assign(__assign(__assign(__assign({}, event), (event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(function (b) { return (__assign(__assign({}, b), (b.data && {\n data: normalize(b.data, depth),\n }))); }),\n })), (event.user && {\n user: normalize(event.user, depth),\n })), (event.contexts && {\n contexts: normalize(event.contexts, depth),\n })), (event.extra && {\n extra: normalize(event.extra, depth),\n }));\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n normalized.contexts.trace = event.contexts.trace;\n }\n return normalized;\n };\n /**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\n BaseClient.prototype._applyClientOptions = function (event) {\n var options = this.getOptions();\n var environment = options.environment, release = options.release, dist = options.dist, _a = options.maxValueLength, maxValueLength = _a === void 0 ? 250 : _a;\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : 'production';\n }\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n var exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n var request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n };\n /**\n * This function adds all used integrations to the SDK info in the event.\n * @param sdkInfo The sdkInfo of the event that will be filled with all integrations.\n */\n BaseClient.prototype._applyIntegrationsMetadata = function (event) {\n var sdkInfo = event.sdk;\n var integrationsArray = Object.keys(this._integrations);\n if (sdkInfo && integrationsArray.length > 0) {\n sdkInfo.integrations = integrationsArray;\n }\n };\n /**\n * Tells the backend to send this event\n * @param event The Sentry event to send\n */\n BaseClient.prototype._sendEvent = function (event) {\n this._getBackend().sendEvent(event);\n };\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n BaseClient.prototype._captureEvent = function (event, hint, scope) {\n return this._processEvent(event, hint, scope).then(function (finalEvent) {\n return finalEvent.event_id;\n }, function (reason) {\n logger.error(reason);\n return undefined;\n });\n };\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n BaseClient.prototype._processEvent = function (event, hint, scope) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var _a = this.getOptions(), beforeSend = _a.beforeSend, sampleRate = _a.sampleRate;\n if (!this._isEnabled()) {\n return SyncPromise.reject(new SentryError('SDK not enabled, will not send event.'));\n }\n var isTransaction = event.type === 'transaction';\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (!isTransaction && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n return SyncPromise.reject(new SentryError(\"Discarding event because it's not included in the random sample (sampling rate = \" + sampleRate + \")\"));\n }\n return this._prepareEvent(event, scope, hint)\n .then(function (prepared) {\n if (prepared === null) {\n throw new SentryError('An event processor returned null, will not send event.');\n }\n var isInternalException = hint && hint.data && hint.data.__sentry__ === true;\n if (isInternalException || isTransaction || !beforeSend) {\n return prepared;\n }\n var beforeSendResult = beforeSend(prepared, hint);\n if (typeof beforeSendResult === 'undefined') {\n throw new SentryError('`beforeSend` method has to return `null` or a valid event.');\n }\n else if (isThenable(beforeSendResult)) {\n return beforeSendResult.then(function (event) { return event; }, function (e) {\n throw new SentryError(\"beforeSend rejected with \" + e);\n });\n }\n return beforeSendResult;\n })\n .then(function (processedEvent) {\n if (processedEvent === null) {\n throw new SentryError('`beforeSend` returned `null`, will not send event.');\n }\n var session = scope && scope.getSession && scope.getSession();\n if (!isTransaction && session) {\n _this._updateSessionFromEvent(session, processedEvent);\n }\n _this._sendEvent(processedEvent);\n return processedEvent;\n })\n .then(null, function (reason) {\n if (reason instanceof SentryError) {\n throw reason;\n }\n _this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason,\n });\n throw new SentryError(\"Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: \" + reason);\n });\n };\n /**\n * Occupies the client with processing and event\n */\n BaseClient.prototype._process = function (promise) {\n var _this = this;\n this._processing += 1;\n promise.then(function (value) {\n _this._processing -= 1;\n return value;\n }, function (reason) {\n _this._processing -= 1;\n return reason;\n });\n };\n return BaseClient;\n}());\nexport { BaseClient };\n//# sourceMappingURL=baseclient.js.map","/** The status of an event. */\n// eslint-disable-next-line import/export\nexport var Status;\n(function (Status) {\n /** The status could not be determined. */\n Status[\"Unknown\"] = \"unknown\";\n /** The event was skipped due to configuration or callbacks. */\n Status[\"Skipped\"] = \"skipped\";\n /** The event was sent to Sentry successfully. */\n Status[\"Success\"] = \"success\";\n /** The client is currently rate limited and will try again later. */\n Status[\"RateLimit\"] = \"rate_limit\";\n /** The event could not be processed. */\n Status[\"Invalid\"] = \"invalid\";\n /** A server-side error ocurred during submission. */\n Status[\"Failed\"] = \"failed\";\n})(Status || (Status = {}));\n// eslint-disable-next-line @typescript-eslint/no-namespace, import/export\n(function (Status) {\n /**\n * Converts a HTTP status code into a {@link Status}.\n *\n * @param code The HTTP response status code.\n * @returns The send status or {@link Status.Unknown}.\n */\n function fromHttpCode(code) {\n if (code >= 200 && code < 300) {\n return Status.Success;\n }\n if (code === 429) {\n return Status.RateLimit;\n }\n if (code >= 400 && code < 500) {\n return Status.Invalid;\n }\n if (code >= 500) {\n return Status.Failed;\n }\n return Status.Unknown;\n }\n Status.fromHttpCode = fromHttpCode;\n})(Status || (Status = {}));\n//# sourceMappingURL=status.js.map","import { Status } from '@sentry/types';\nimport { SyncPromise } from '@sentry/utils';\n/** Noop transport */\nvar NoopTransport = /** @class */ (function () {\n function NoopTransport() {\n }\n /**\n * @inheritDoc\n */\n NoopTransport.prototype.sendEvent = function (_) {\n return SyncPromise.resolve({\n reason: \"NoopTransport: Event has been skipped because no Dsn is configured.\",\n status: Status.Skipped,\n });\n };\n /**\n * @inheritDoc\n */\n NoopTransport.prototype.close = function (_) {\n return SyncPromise.resolve(true);\n };\n return NoopTransport;\n}());\nexport { NoopTransport };\n//# sourceMappingURL=noop.js.map","import { logger, SentryError } from '@sentry/utils';\nimport { NoopTransport } from './transports/noop';\n/**\n * This is the base implemention of a Backend.\n * @hidden\n */\nvar BaseBackend = /** @class */ (function () {\n /** Creates a new backend instance. */\n function BaseBackend(options) {\n this._options = options;\n if (!this._options.dsn) {\n logger.warn('No DSN provided, backend will not do anything.');\n }\n this._transport = this._setupTransport();\n }\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n BaseBackend.prototype.eventFromException = function (_exception, _hint) {\n throw new SentryError('Backend has to implement `eventFromException` method');\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.eventFromMessage = function (_message, _level, _hint) {\n throw new SentryError('Backend has to implement `eventFromMessage` method');\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.sendEvent = function (event) {\n this._transport.sendEvent(event).then(null, function (reason) {\n logger.error(\"Error while sending event: \" + reason);\n });\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.sendSession = function (session) {\n if (!this._transport.sendSession) {\n logger.warn(\"Dropping session because custom transport doesn't implement sendSession\");\n return;\n }\n this._transport.sendSession(session).then(null, function (reason) {\n logger.error(\"Error while sending session: \" + reason);\n });\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.getTransport = function () {\n return this._transport;\n };\n /**\n * Sets up the transport so it can be used later to send requests.\n */\n BaseBackend.prototype._setupTransport = function () {\n return new NoopTransport();\n };\n return BaseBackend;\n}());\nexport { BaseBackend };\n//# sourceMappingURL=basebackend.js.map","import { logger } from './logger';\nimport { getGlobalObject } from './misc';\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent() {\n try {\n new ErrorEvent('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError() {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException() {\n try {\n new DOMException('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch() {\n if (!('fetch' in getGlobalObject())) {\n return false;\n }\n try {\n new Headers();\n new Request('');\n new Response();\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isNativeFetch(func) {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch() {\n if (!supportsFetch()) {\n return false;\n }\n var global = getGlobalObject();\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(global.fetch)) {\n return true;\n }\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n var result = false;\n var doc = global.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof doc.createElement === \"function\") {\n try {\n var sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n }\n catch (err) {\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n return result;\n}\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver() {\n return 'ReportingObserver' in getGlobalObject();\n}\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy() {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n if (!supportsFetch()) {\n return false;\n }\n try {\n new Request('_', {\n referrerPolicy: 'origin',\n });\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory() {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n var global = getGlobalObject();\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var chrome = global.chrome;\n var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n var hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n return !isChromePackagedApp && hasHistoryApi;\n}\n//# sourceMappingURL=supports.js.map","/**\n * This was originally forked from https://github.com/occ/TraceKit, but has since been\n * largely modified and is now maintained as part of Sentry JS SDK.\n */\nimport { __assign } from \"tslib\";\n// global reference to slice\nvar UNKNOWN_FUNCTION = '?';\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nvar chrome = /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nvar gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|capacitor).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nvar geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nvar chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nvar reactMinifiedRegexp = /Minified React error #\\d+;/i;\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function computeStackTrace(ex) {\n var stack = null;\n var popSize = 0;\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n popSize = ex.framesToPop;\n }\n else if (reactMinifiedRegexp.test(ex.message)) {\n popSize = 1;\n }\n }\n try {\n // This must be tried first because Opera 10 *destroys*\n // its stacktrace property if you try to access the stack\n // property first!!\n stack = computeStackTraceFromStacktraceProp(ex);\n if (stack) {\n return popFrames(stack, popSize);\n }\n }\n catch (e) {\n // no-empty\n }\n try {\n stack = computeStackTraceFromStackProp(ex);\n if (stack) {\n return popFrames(stack, popSize);\n }\n }\n catch (e) {\n // no-empty\n }\n return {\n message: extractMessage(ex),\n name: ex && ex.name,\n stack: [],\n failed: true,\n };\n}\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, complexity\nfunction computeStackTraceFromStackProp(ex) {\n if (!ex || !ex.stack) {\n return null;\n }\n var stack = [];\n var lines = ex.stack.split('\\n');\n var isEval;\n var submatch;\n var parts;\n var element;\n for (var i = 0; i < lines.length; ++i) {\n if ((parts = chrome.exec(lines[i]))) {\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n element = {\n // working with the regexp above is super painful. it is quite a hack, but just stripping the `address at `\n // prefix here seems like the quickest solution for now.\n url: parts[2] && parts[2].indexOf('address at ') === 0 ? parts[2].substr('address at '.length) : parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: isNative ? [parts[2]] : [],\n line: parts[3] ? +parts[3] : null,\n column: parts[4] ? +parts[4] : null,\n };\n }\n else if ((parts = winjs.exec(lines[i]))) {\n element = {\n url: parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: [],\n line: +parts[3],\n column: parts[4] ? +parts[4] : null,\n };\n }\n else if ((parts = gecko.exec(lines[i]))) {\n isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || \"eval\";\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = ''; // no column when eval\n }\n else if (i === 0 && !parts[5] && ex.columnNumber !== void 0) {\n // FireFox uses this awesome columnNumber property for its top frame\n // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n // so adding 1\n // NOTE: this hack doesn't work if top-most frame is eval\n stack[0].column = ex.columnNumber + 1;\n }\n element = {\n url: parts[3],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: parts[2] ? parts[2].split(',') : [],\n line: parts[4] ? +parts[4] : null,\n column: parts[5] ? +parts[5] : null,\n };\n }\n else {\n continue;\n }\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n stack.push(element);\n }\n if (!stack.length) {\n return null;\n }\n return {\n message: extractMessage(ex),\n name: ex.name,\n stack: stack,\n };\n}\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction computeStackTraceFromStacktraceProp(ex) {\n if (!ex || !ex.stacktrace) {\n return null;\n }\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n var stacktrace = ex.stacktrace;\n var opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n var opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\((.*)\\))? in (.*):\\s*$/i;\n var lines = stacktrace.split('\\n');\n var stack = [];\n var parts;\n for (var line = 0; line < lines.length; line += 2) {\n var element = null;\n if ((parts = opera10Regex.exec(lines[line]))) {\n element = {\n url: parts[2],\n func: parts[3],\n args: [],\n line: +parts[1],\n column: null,\n };\n }\n else if ((parts = opera11Regex.exec(lines[line]))) {\n element = {\n url: parts[6],\n func: parts[3] || parts[4],\n args: parts[5] ? parts[5].split(',') : [],\n line: +parts[1],\n column: +parts[2],\n };\n }\n if (element) {\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n stack.push(element);\n }\n }\n if (!stack.length) {\n return null;\n }\n return {\n message: extractMessage(ex),\n name: ex.name,\n stack: stack,\n };\n}\n/** Remove N number of frames from the stack */\nfunction popFrames(stacktrace, popSize) {\n try {\n return __assign(__assign({}, stacktrace), { stack: stacktrace.stack.slice(popSize) });\n }\n catch (e) {\n return stacktrace;\n }\n}\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extractMessage(ex) {\n var message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n//# sourceMappingURL=tracekit.js.map","import { extractExceptionKeysForMessage, isEvent, normalizeToSize } from '@sentry/utils';\nimport { computeStackTrace } from './tracekit';\nvar STACKTRACE_LIMIT = 50;\n/**\n * This function creates an exception from an TraceKitStackTrace\n * @param stacktrace TraceKitStackTrace that will be converted to an exception\n * @hidden\n */\nexport function exceptionFromStacktrace(stacktrace) {\n var frames = prepareFramesForEvent(stacktrace.stack);\n var exception = {\n type: stacktrace.name,\n value: stacktrace.message,\n };\n if (frames && frames.length) {\n exception.stacktrace = { frames: frames };\n }\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n return exception;\n}\n/**\n * @hidden\n */\nexport function eventFromPlainObject(exception, syntheticException, rejection) {\n var event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : rejection ? 'UnhandledRejection' : 'Error',\n value: \"Non-Error \" + (rejection ? 'promise rejection' : 'exception') + \" captured with keys: \" + extractExceptionKeysForMessage(exception),\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n };\n if (syntheticException) {\n var stacktrace = computeStackTrace(syntheticException);\n var frames_1 = prepareFramesForEvent(stacktrace.stack);\n event.stacktrace = {\n frames: frames_1,\n };\n }\n return event;\n}\n/**\n * @hidden\n */\nexport function eventFromStacktrace(stacktrace) {\n var exception = exceptionFromStacktrace(stacktrace);\n return {\n exception: {\n values: [exception],\n },\n };\n}\n/**\n * @hidden\n */\nexport function prepareFramesForEvent(stack) {\n if (!stack || !stack.length) {\n return [];\n }\n var localStack = stack;\n var firstFrameFunction = localStack[0].func || '';\n var lastFrameFunction = localStack[localStack.length - 1].func || '';\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n localStack = localStack.slice(1);\n }\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n localStack = localStack.slice(0, -1);\n }\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .slice(0, STACKTRACE_LIMIT)\n .map(function (frame) { return ({\n colno: frame.column === null ? undefined : frame.column,\n filename: frame.url || localStack[0].url,\n function: frame.func || '?',\n in_app: true,\n lineno: frame.line === null ? undefined : frame.line,\n }); })\n .reverse();\n}\n//# sourceMappingURL=parsers.js.map","import { __assign } from \"tslib\";\nimport { Severity } from '@sentry/types';\nimport { addExceptionMechanism, addExceptionTypeValue, isDOMError, isDOMException, isError, isErrorEvent, isEvent, isPlainObject, SyncPromise, } from '@sentry/utils';\nimport { eventFromPlainObject, eventFromStacktrace, prepareFramesForEvent } from './parsers';\nimport { computeStackTrace } from './tracekit';\n/**\n * Builds and Event from a Exception\n * @hidden\n */\nexport function eventFromException(options, exception, hint) {\n var syntheticException = (hint && hint.syntheticException) || undefined;\n var event = eventFromUnknownInput(exception, syntheticException, {\n attachStacktrace: options.attachStacktrace,\n });\n addExceptionMechanism(event, {\n handled: true,\n type: 'generic',\n });\n event.level = Severity.Error;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return SyncPromise.resolve(event);\n}\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(options, message, level, hint) {\n if (level === void 0) { level = Severity.Info; }\n var syntheticException = (hint && hint.syntheticException) || undefined;\n var event = eventFromString(message, syntheticException, {\n attachStacktrace: options.attachStacktrace,\n });\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return SyncPromise.resolve(event);\n}\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(exception, syntheticException, options) {\n if (options === void 0) { options = {}; }\n var event;\n if (isErrorEvent(exception) && exception.error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n var errorEvent = exception;\n // eslint-disable-next-line no-param-reassign\n exception = errorEvent.error;\n event = eventFromStacktrace(computeStackTrace(exception));\n return event;\n }\n if (isDOMError(exception) || isDOMException(exception)) {\n // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers)\n // then we just extract the name, code, and message, as they don't provide anything else\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n var domException = exception;\n var name_1 = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n var message = domException.message ? name_1 + \": \" + domException.message : name_1;\n event = eventFromString(message, syntheticException, options);\n addExceptionTypeValue(event, message);\n if ('code' in domException) {\n event.tags = __assign(__assign({}, event.tags), { 'DOMException.code': \"\" + domException.code });\n }\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n event = eventFromStacktrace(computeStackTrace(exception));\n return event;\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it is plain Object or Event, serialize it manually and extract options\n // This will allow us to group events based on top-level keys\n // which is much better than creating new group when any key/value change\n var objectException = exception;\n event = eventFromPlainObject(objectException, syntheticException, options.rejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(exception, syntheticException, options);\n addExceptionTypeValue(event, \"\" + exception, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n}\n/**\n * @hidden\n */\nexport function eventFromString(input, syntheticException, options) {\n if (options === void 0) { options = {}; }\n var event = {\n message: input,\n };\n if (options.attachStacktrace && syntheticException) {\n var stacktrace = computeStackTrace(syntheticException);\n var frames_1 = prepareFramesForEvent(stacktrace.stack);\n event.stacktrace = {\n frames: frames_1,\n };\n }\n return event;\n}\n//# sourceMappingURL=eventbuilder.js.map","import { __rest } from \"tslib\";\n/** Creates a SentryRequest from an event. */\nexport function sessionToSentryRequest(session, api) {\n var envelopeHeaders = JSON.stringify({\n sent_at: new Date().toISOString(),\n });\n var itemHeaders = JSON.stringify({\n type: 'session',\n });\n return {\n body: envelopeHeaders + \"\\n\" + itemHeaders + \"\\n\" + JSON.stringify(session),\n type: 'session',\n url: api.getEnvelopeEndpointWithUrlEncodedAuth(),\n };\n}\n/** Creates a SentryRequest from an event. */\nexport function eventToSentryRequest(event, api) {\n // since JS has no Object.prototype.pop()\n var _a = event.tags || {}, samplingMethod = _a.__sentry_samplingMethod, sampleRate = _a.__sentry_sampleRate, otherTags = __rest(_a, [\"__sentry_samplingMethod\", \"__sentry_sampleRate\"]);\n event.tags = otherTags;\n var useEnvelope = event.type === 'transaction';\n var req = {\n body: JSON.stringify(event),\n type: event.type || 'event',\n url: useEnvelope ? api.getEnvelopeEndpointWithUrlEncodedAuth() : api.getStoreEndpointWithUrlEncodedAuth(),\n };\n // https://develop.sentry.dev/sdk/envelopes/\n // Since we don't need to manipulate envelopes nor store them, there is no\n // exported concept of an Envelope with operations including serialization and\n // deserialization. Instead, we only implement a minimal subset of the spec to\n // serialize events inline here.\n if (useEnvelope) {\n var envelopeHeaders = JSON.stringify({\n event_id: event.event_id,\n sent_at: new Date().toISOString(),\n });\n var itemHeaders = JSON.stringify({\n type: event.type,\n // TODO: Right now, sampleRate may or may not be defined (it won't be in the cases of inheritance and\n // explicitly-set sampling decisions). Are we good with that?\n sample_rates: [{ id: samplingMethod, rate: sampleRate }],\n });\n // The trailing newline is optional. We intentionally don't send it to avoid\n // sending unnecessary bytes.\n //\n // const envelope = `${envelopeHeaders}\\n${itemHeaders}\\n${req.body}\\n`;\n var envelope = envelopeHeaders + \"\\n\" + itemHeaders + \"\\n\" + req.body;\n req.body = envelope;\n }\n return req;\n}\n//# sourceMappingURL=request.js.map","import { Dsn, urlEncode } from '@sentry/utils';\nvar SENTRY_API_VERSION = '7';\n/** Helper class to provide urls to different Sentry endpoints. */\nvar API = /** @class */ (function () {\n /** Create a new instance of API */\n function API(dsn) {\n this.dsn = dsn;\n this._dsnObject = new Dsn(dsn);\n }\n /** Returns the Dsn object. */\n API.prototype.getDsn = function () {\n return this._dsnObject;\n };\n /** Returns the prefix to construct Sentry ingestion API endpoints. */\n API.prototype.getBaseApiEndpoint = function () {\n var dsn = this._dsnObject;\n var protocol = dsn.protocol ? dsn.protocol + \":\" : '';\n var port = dsn.port ? \":\" + dsn.port : '';\n return protocol + \"//\" + dsn.host + port + (dsn.path ? \"/\" + dsn.path : '') + \"/api/\";\n };\n /** Returns the store endpoint URL. */\n API.prototype.getStoreEndpoint = function () {\n return this._getIngestEndpoint('store');\n };\n /**\n * Returns the store endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\n API.prototype.getStoreEndpointWithUrlEncodedAuth = function () {\n return this.getStoreEndpoint() + \"?\" + this._encodedAuth();\n };\n /**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\n API.prototype.getEnvelopeEndpointWithUrlEncodedAuth = function () {\n return this._getEnvelopeEndpoint() + \"?\" + this._encodedAuth();\n };\n /** Returns only the path component for the store endpoint. */\n API.prototype.getStoreEndpointPath = function () {\n var dsn = this._dsnObject;\n return (dsn.path ? \"/\" + dsn.path : '') + \"/api/\" + dsn.projectId + \"/store/\";\n };\n /**\n * Returns an object that can be used in request headers.\n * This is needed for node and the old /store endpoint in sentry\n */\n API.prototype.getRequestHeaders = function (clientName, clientVersion) {\n var dsn = this._dsnObject;\n var header = [\"Sentry sentry_version=\" + SENTRY_API_VERSION];\n header.push(\"sentry_client=\" + clientName + \"/\" + clientVersion);\n header.push(\"sentry_key=\" + dsn.user);\n if (dsn.pass) {\n header.push(\"sentry_secret=\" + dsn.pass);\n }\n return {\n 'Content-Type': 'application/json',\n 'X-Sentry-Auth': header.join(', '),\n };\n };\n /** Returns the url to the report dialog endpoint. */\n API.prototype.getReportDialogEndpoint = function (dialogOptions) {\n if (dialogOptions === void 0) { dialogOptions = {}; }\n var dsn = this._dsnObject;\n var endpoint = this.getBaseApiEndpoint() + \"embed/error-page/\";\n var encodedOptions = [];\n encodedOptions.push(\"dsn=\" + dsn.toString());\n for (var key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n if (key === 'user') {\n if (!dialogOptions.user) {\n continue;\n }\n if (dialogOptions.user.name) {\n encodedOptions.push(\"name=\" + encodeURIComponent(dialogOptions.user.name));\n }\n if (dialogOptions.user.email) {\n encodedOptions.push(\"email=\" + encodeURIComponent(dialogOptions.user.email));\n }\n }\n else {\n encodedOptions.push(encodeURIComponent(key) + \"=\" + encodeURIComponent(dialogOptions[key]));\n }\n }\n if (encodedOptions.length) {\n return endpoint + \"?\" + encodedOptions.join('&');\n }\n return endpoint;\n };\n /** Returns the envelope endpoint URL. */\n API.prototype._getEnvelopeEndpoint = function () {\n return this._getIngestEndpoint('envelope');\n };\n /** Returns the ingest API endpoint for target. */\n API.prototype._getIngestEndpoint = function (target) {\n var base = this.getBaseApiEndpoint();\n var dsn = this._dsnObject;\n return \"\" + base + dsn.projectId + \"/\" + target + \"/\";\n };\n /** Returns a URL-encoded string with auth config suitable for a query string. */\n API.prototype._encodedAuth = function () {\n var dsn = this._dsnObject;\n var auth = {\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.user,\n sentry_version: SENTRY_API_VERSION,\n };\n return urlEncode(auth);\n };\n return API;\n}());\nexport { API };\n//# sourceMappingURL=api.js.map","import { SentryError } from './error';\nimport { SyncPromise } from './syncpromise';\n/** A simple queue that holds promises. */\nvar PromiseBuffer = /** @class */ (function () {\n function PromiseBuffer(_limit) {\n this._limit = _limit;\n /** Internal set of queued Promises */\n this._buffer = [];\n }\n /**\n * Says if the buffer is ready to take more requests\n */\n PromiseBuffer.prototype.isReady = function () {\n return this._limit === undefined || this.length() < this._limit;\n };\n /**\n * Add a promise to the queue.\n *\n * @param task Can be any PromiseLike\n * @returns The original promise.\n */\n PromiseBuffer.prototype.add = function (task) {\n var _this = this;\n if (!this.isReady()) {\n return SyncPromise.reject(new SentryError('Not adding Promise due to buffer limit reached.'));\n }\n if (this._buffer.indexOf(task) === -1) {\n this._buffer.push(task);\n }\n task\n .then(function () { return _this.remove(task); })\n .then(null, function () {\n return _this.remove(task).then(null, function () {\n // We have to add this catch here otherwise we have an unhandledPromiseRejection\n // because it's a new Promise chain.\n });\n });\n return task;\n };\n /**\n * Remove a promise to the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n PromiseBuffer.prototype.remove = function (task) {\n var removedTask = this._buffer.splice(this._buffer.indexOf(task), 1)[0];\n return removedTask;\n };\n /**\n * This function returns the number of unresolved promises in the queue.\n */\n PromiseBuffer.prototype.length = function () {\n return this._buffer.length;\n };\n /**\n * This will drain the whole queue, returns true if queue is empty or drained.\n * If timeout is provided and the queue takes longer to drain, the promise still resolves but with false.\n *\n * @param timeout Number in ms to wait until it resolves with false.\n */\n PromiseBuffer.prototype.drain = function (timeout) {\n var _this = this;\n return new SyncPromise(function (resolve) {\n var capturedSetTimeout = setTimeout(function () {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n SyncPromise.all(_this._buffer)\n .then(function () {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n })\n .then(null, function () {\n resolve(true);\n });\n });\n };\n return PromiseBuffer;\n}());\nexport { PromiseBuffer };\n//# sourceMappingURL=promisebuffer.js.map","import { __values } from \"tslib\";\nimport { API } from '@sentry/core';\nimport { Status, } from '@sentry/types';\nimport { logger, parseRetryAfterHeader, PromiseBuffer, SentryError } from '@sentry/utils';\n/** Base Transport class implementation */\nvar BaseTransport = /** @class */ (function () {\n function BaseTransport(options) {\n this.options = options;\n /** A simple buffer holding all requests. */\n this._buffer = new PromiseBuffer(30);\n /** Locks transport after receiving rate limits in a response */\n this._rateLimits = {};\n this._api = new API(this.options.dsn);\n // eslint-disable-next-line deprecation/deprecation\n this.url = this._api.getStoreEndpointWithUrlEncodedAuth();\n }\n /**\n * @inheritDoc\n */\n BaseTransport.prototype.sendEvent = function (_) {\n throw new SentryError('Transport Class has to implement `sendEvent` method');\n };\n /**\n * @inheritDoc\n */\n BaseTransport.prototype.close = function (timeout) {\n return this._buffer.drain(timeout);\n };\n /**\n * Handle Sentry repsonse for promise-based transports.\n */\n BaseTransport.prototype._handleResponse = function (_a) {\n var requestType = _a.requestType, response = _a.response, headers = _a.headers, resolve = _a.resolve, reject = _a.reject;\n var status = Status.fromHttpCode(response.status);\n /**\n * \"The name is case-insensitive.\"\n * https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n */\n var limited = this._handleRateLimit(headers);\n if (limited)\n logger.warn(\"Too many requests, backing off until: \" + this._disabledUntil(requestType));\n if (status === Status.Success) {\n resolve({ status: status });\n return;\n }\n reject(response);\n };\n /**\n * Gets the time that given category is disabled until for rate limiting\n */\n BaseTransport.prototype._disabledUntil = function (category) {\n return this._rateLimits[category] || this._rateLimits.all;\n };\n /**\n * Checks if a category is rate limited\n */\n BaseTransport.prototype._isRateLimited = function (category) {\n return this._disabledUntil(category) > new Date(Date.now());\n };\n /**\n * Sets internal _rateLimits from incoming headers. Returns true if headers contains a non-empty rate limiting header.\n */\n BaseTransport.prototype._handleRateLimit = function (headers) {\n var e_1, _a, e_2, _b;\n var now = Date.now();\n var rlHeader = headers['x-sentry-rate-limits'];\n var raHeader = headers['retry-after'];\n if (rlHeader) {\n try {\n // rate limit headers are of the form\n //
,
,..\n // where each
is of the form\n // : : : \n // where\n // is a delay in ms\n // is the event type(s) (error, transaction, etc) being rate limited and is of the form\n // ;;...\n // is what's being limited (org, project, or key) - ignored by SDK\n // is an arbitrary string like \"org_quota\" - ignored by SDK\n for (var _c = __values(rlHeader.trim().split(',')), _d = _c.next(); !_d.done; _d = _c.next()) {\n var limit = _d.value;\n var parameters = limit.split(':', 2);\n var headerDelay = parseInt(parameters[0], 10);\n var delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n try {\n for (var _e = (e_2 = void 0, __values(parameters[1].split(';'))), _f = _e.next(); !_f.done; _f = _e.next()) {\n var category = _f.value;\n this._rateLimits[category || 'all'] = new Date(now + delay);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return true;\n }\n else if (raHeader) {\n this._rateLimits.all = new Date(now + parseRetryAfterHeader(now, raHeader));\n return true;\n }\n return false;\n };\n return BaseTransport;\n}());\nexport { BaseTransport };\n//# sourceMappingURL=base.js.map","import { __extends } from \"tslib\";\nimport { eventToSentryRequest, sessionToSentryRequest } from '@sentry/core';\nimport { getGlobalObject, supportsReferrerPolicy, SyncPromise } from '@sentry/utils';\nimport { BaseTransport } from './base';\nvar global = getGlobalObject();\n/** `fetch` based transport */\nvar FetchTransport = /** @class */ (function (_super) {\n __extends(FetchTransport, _super);\n function FetchTransport() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @inheritDoc\n */\n FetchTransport.prototype.sendEvent = function (event) {\n return this._sendRequest(eventToSentryRequest(event, this._api), event);\n };\n /**\n * @inheritDoc\n */\n FetchTransport.prototype.sendSession = function (session) {\n return this._sendRequest(sessionToSentryRequest(session, this._api), session);\n };\n /**\n * @param sentryRequest Prepared SentryRequest to be delivered\n * @param originalPayload Original payload used to create SentryRequest\n */\n FetchTransport.prototype._sendRequest = function (sentryRequest, originalPayload) {\n var _this = this;\n if (this._isRateLimited(sentryRequest.type)) {\n return Promise.reject({\n event: originalPayload,\n type: sentryRequest.type,\n reason: \"Transport locked till \" + this._disabledUntil(sentryRequest.type) + \" due to too many requests.\",\n status: 429,\n });\n }\n var options = {\n body: sentryRequest.body,\n method: 'POST',\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n referrerPolicy: (supportsReferrerPolicy() ? 'origin' : ''),\n };\n if (this.options.fetchParameters !== undefined) {\n Object.assign(options, this.options.fetchParameters);\n }\n if (this.options.headers !== undefined) {\n options.headers = this.options.headers;\n }\n return this._buffer.add(new SyncPromise(function (resolve, reject) {\n global\n .fetch(sentryRequest.url, options)\n .then(function (response) {\n var headers = {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n };\n _this._handleResponse({\n requestType: sentryRequest.type,\n response: response,\n headers: headers,\n resolve: resolve,\n reject: reject,\n });\n })\n .catch(reject);\n }));\n };\n return FetchTransport;\n}(BaseTransport));\nexport { FetchTransport };\n//# sourceMappingURL=fetch.js.map","import { __extends } from \"tslib\";\nimport { eventToSentryRequest, sessionToSentryRequest } from '@sentry/core';\nimport { SyncPromise } from '@sentry/utils';\nimport { BaseTransport } from './base';\n/** `XHR` based transport */\nvar XHRTransport = /** @class */ (function (_super) {\n __extends(XHRTransport, _super);\n function XHRTransport() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @inheritDoc\n */\n XHRTransport.prototype.sendEvent = function (event) {\n return this._sendRequest(eventToSentryRequest(event, this._api), event);\n };\n /**\n * @inheritDoc\n */\n XHRTransport.prototype.sendSession = function (session) {\n return this._sendRequest(sessionToSentryRequest(session, this._api), session);\n };\n /**\n * @param sentryRequest Prepared SentryRequest to be delivered\n * @param originalPayload Original payload used to create SentryRequest\n */\n XHRTransport.prototype._sendRequest = function (sentryRequest, originalPayload) {\n var _this = this;\n if (this._isRateLimited(sentryRequest.type)) {\n return Promise.reject({\n event: originalPayload,\n type: sentryRequest.type,\n reason: \"Transport locked till \" + this._disabledUntil(sentryRequest.type) + \" due to too many requests.\",\n status: 429,\n });\n }\n return this._buffer.add(new SyncPromise(function (resolve, reject) {\n var request = new XMLHttpRequest();\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n var headers = {\n 'x-sentry-rate-limits': request.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': request.getResponseHeader('Retry-After'),\n };\n _this._handleResponse({ requestType: sentryRequest.type, response: request, headers: headers, resolve: resolve, reject: reject });\n }\n };\n request.open('POST', sentryRequest.url);\n for (var header in _this.options.headers) {\n if (_this.options.headers.hasOwnProperty(header)) {\n request.setRequestHeader(header, _this.options.headers[header]);\n }\n }\n request.send(sentryRequest.body);\n }));\n };\n return XHRTransport;\n}(BaseTransport));\nexport { XHRTransport };\n//# sourceMappingURL=xhr.js.map","import { __assign, __extends } from \"tslib\";\nimport { BaseBackend } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { supportsFetch } from '@sentry/utils';\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { FetchTransport, XHRTransport } from './transports';\n/**\n * The Sentry Browser SDK Backend.\n * @hidden\n */\nvar BrowserBackend = /** @class */ (function (_super) {\n __extends(BrowserBackend, _super);\n function BrowserBackend() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @inheritDoc\n */\n BrowserBackend.prototype.eventFromException = function (exception, hint) {\n return eventFromException(this._options, exception, hint);\n };\n /**\n * @inheritDoc\n */\n BrowserBackend.prototype.eventFromMessage = function (message, level, hint) {\n if (level === void 0) { level = Severity.Info; }\n return eventFromMessage(this._options, message, level, hint);\n };\n /**\n * @inheritDoc\n */\n BrowserBackend.prototype._setupTransport = function () {\n if (!this._options.dsn) {\n // We return the noop transport here in case there is no Dsn.\n return _super.prototype._setupTransport.call(this);\n }\n var transportOptions = __assign(__assign({}, this._options.transportOptions), { dsn: this._options.dsn });\n if (this._options.transport) {\n return new this._options.transport(transportOptions);\n }\n if (supportsFetch()) {\n return new FetchTransport(transportOptions);\n }\n return new XHRTransport(transportOptions);\n };\n return BrowserBackend;\n}(BaseBackend));\nexport { BrowserBackend };\n//# sourceMappingURL=backend.js.map","import { __assign } from \"tslib\";\nimport { API, captureException, withScope } from '@sentry/core';\nimport { addExceptionMechanism, addExceptionTypeValue, logger } from '@sentry/utils';\nvar ignoreOnError = 0;\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError() {\n return ignoreOnError > 0;\n}\n/**\n * @hidden\n */\nexport function ignoreNextOnError() {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(function () {\n ignoreOnError -= 1;\n });\n}\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(fn, options, before) {\n if (options === void 0) { options = {}; }\n if (typeof fn !== 'function') {\n return fn;\n }\n try {\n // We don't wanna wrap it twice\n if (fn.__sentry__) {\n return fn;\n }\n // If this has already been wrapped in the past, return that wrapped function\n if (fn.__sentry_wrapped__) {\n return fn.__sentry_wrapped__;\n }\n }\n catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n /* eslint-disable prefer-rest-params */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var sentryWrapped = function () {\n var args = Array.prototype.slice.call(arguments);\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n var wrappedArguments = args.map(function (arg) { return wrap(arg, options); });\n if (fn.handleEvent) {\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return fn.handleEvent.apply(this, wrappedArguments);\n }\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n }\n catch (ex) {\n ignoreNextOnError();\n withScope(function (scope) {\n scope.addEventProcessor(function (event) {\n var processedEvent = __assign({}, event);\n if (options.mechanism) {\n addExceptionTypeValue(processedEvent, undefined, undefined);\n addExceptionMechanism(processedEvent, options.mechanism);\n }\n processedEvent.extra = __assign(__assign({}, processedEvent.extra), { arguments: args });\n return processedEvent;\n });\n captureException(ex);\n });\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (var property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n }\n catch (_oO) { } // eslint-disable-line no-empty\n fn.prototype = fn.prototype || {};\n sentryWrapped.prototype = fn.prototype;\n Object.defineProperty(fn, '__sentry_wrapped__', {\n enumerable: false,\n value: sentryWrapped,\n });\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n Object.defineProperties(sentryWrapped, {\n __sentry__: {\n enumerable: false,\n value: true,\n },\n __sentry_original__: {\n enumerable: false,\n value: fn,\n },\n });\n // Restore original function name (not all browsers allow that)\n try {\n var descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name');\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get: function () {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n }\n catch (_oO) { }\n return sentryWrapped;\n}\n/**\n * Injects the Report Dialog script\n * @hidden\n */\nexport function injectReportDialog(options) {\n if (options === void 0) { options = {}; }\n if (!options.eventId) {\n logger.error(\"Missing eventId option in showReportDialog call\");\n return;\n }\n if (!options.dsn) {\n logger.error(\"Missing dsn option in showReportDialog call\");\n return;\n }\n var script = document.createElement('script');\n script.async = true;\n script.src = new API(options.dsn).getReportDialogEndpoint(options);\n if (options.onLoad) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n script.onload = options.onLoad;\n }\n (document.head || document.body).appendChild(script);\n}\n//# sourceMappingURL=helpers.js.map","import { __assign, __values } from \"tslib\";\nimport { isInstanceOf, isString } from './is';\nimport { logger } from './logger';\nimport { getGlobalObject } from './misc';\nimport { fill } from './object';\nimport { getFunctionName } from './stacktrace';\nimport { supportsHistory, supportsNativeFetch } from './supports';\nvar global = getGlobalObject();\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\nvar handlers = {};\nvar instrumented = {};\n/** Instruments given API */\nfunction instrument(type) {\n if (instrumented[type]) {\n return;\n }\n instrumented[type] = true;\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n logger.warn('unknown instrumentation type:', type);\n }\n}\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addInstrumentationHandler(handler) {\n if (!handler || typeof handler.type !== 'string' || typeof handler.callback !== 'function') {\n return;\n }\n handlers[handler.type] = handlers[handler.type] || [];\n handlers[handler.type].push(handler.callback);\n instrument(handler.type);\n}\n/** JSDoc */\nfunction triggerHandlers(type, data) {\n var e_1, _a;\n if (!type || !handlers[type]) {\n return;\n }\n try {\n for (var _b = __values(handlers[type] || []), _c = _b.next(); !_c.done; _c = _b.next()) {\n var handler = _c.value;\n try {\n handler(data);\n }\n catch (e) {\n logger.error(\"Error while triggering instrumentation handler.\\nType: \" + type + \"\\nName: \" + getFunctionName(handler) + \"\\nError: \" + e);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n}\n/** JSDoc */\nfunction instrumentConsole() {\n if (!('console' in global)) {\n return;\n }\n ['debug', 'info', 'warn', 'error', 'log', 'assert'].forEach(function (level) {\n if (!(level in global.console)) {\n return;\n }\n fill(global.console, level, function (originalConsoleLevel) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n triggerHandlers('console', { args: args, level: level });\n // this fails for some browsers. :(\n if (originalConsoleLevel) {\n Function.prototype.apply.call(originalConsoleLevel, global.console, args);\n }\n };\n });\n });\n}\n/** JSDoc */\nfunction instrumentFetch() {\n if (!supportsNativeFetch()) {\n return;\n }\n fill(global, 'fetch', function (originalFetch) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var handlerData = {\n args: args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n triggerHandlers('fetch', __assign({}, handlerData));\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(global, args).then(function (response) {\n triggerHandlers('fetch', __assign(__assign({}, handlerData), { endTimestamp: Date.now(), response: response }));\n return response;\n }, function (error) {\n triggerHandlers('fetch', __assign(__assign({}, handlerData), { endTimestamp: Date.now(), error: error }));\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n });\n };\n });\n}\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs) {\n if (fetchArgs === void 0) { fetchArgs = []; }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs) {\n if (fetchArgs === void 0) { fetchArgs = []; }\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n/* eslint-enable @typescript-eslint/no-unsafe-member-access */\n/** JSDoc */\nfunction instrumentXHR() {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n // Poor man's implementation of ES6 `Map`, tracking and keeping in sync key and value separately.\n var requestKeys = [];\n var requestValues = [];\n var xhrproto = XMLHttpRequest.prototype;\n fill(xhrproto, 'open', function (originalOpen) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var xhr = this;\n var url = args[1];\n xhr.__sentry_xhr__ = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n };\n // if Sentry key appears in URL, don't capture it as a request\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isString(url) && xhr.__sentry_xhr__.method === 'POST' && url.match(/sentry_key/)) {\n xhr.__sentry_own_request__ = true;\n }\n var onreadystatechangeHandler = function () {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n if (xhr.__sentry_xhr__) {\n xhr.__sentry_xhr__.status_code = xhr.status;\n }\n }\n catch (e) {\n /* do nothing */\n }\n try {\n var requestPos = requestKeys.indexOf(xhr);\n if (requestPos !== -1) {\n // Make sure to pop both key and value to keep it in sync.\n requestKeys.splice(requestPos);\n var args_1 = requestValues.splice(requestPos)[0];\n if (xhr.__sentry_xhr__ && args_1[0] !== undefined) {\n xhr.__sentry_xhr__.body = args_1[0];\n }\n }\n }\n catch (e) {\n /* do nothing */\n }\n triggerHandlers('xhr', {\n args: args,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr: xhr,\n });\n }\n };\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n fill(xhr, 'onreadystatechange', function (original) {\n return function () {\n var readyStateArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n readyStateArgs[_i] = arguments[_i];\n }\n onreadystatechangeHandler();\n return original.apply(xhr, readyStateArgs);\n };\n });\n }\n else {\n xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n return originalOpen.apply(xhr, args);\n };\n });\n fill(xhrproto, 'send', function (originalSend) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n requestKeys.push(this);\n requestValues.push(args);\n triggerHandlers('xhr', {\n args: args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n return originalSend.apply(this, args);\n };\n });\n}\nvar lastHref;\n/** JSDoc */\nfunction instrumentHistory() {\n if (!supportsHistory()) {\n return;\n }\n var oldOnPopState = global.onpopstate;\n global.onpopstate = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var to = global.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n var from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from: from,\n to: to,\n });\n if (oldOnPopState) {\n return oldOnPopState.apply(this, args);\n }\n };\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n var from = lastHref;\n var to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from: from,\n to: to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n fill(global.history, 'pushState', historyReplacementFunction);\n fill(global.history, 'replaceState', historyReplacementFunction);\n}\n/** JSDoc */\nfunction instrumentDOM() {\n if (!('document' in global)) {\n return;\n }\n // Capture breadcrumbs from any click that is unhandled / bubbled up all the way\n // to the document. Do this before we instrument addEventListener.\n global.document.addEventListener('click', domEventHandler('click', triggerHandlers.bind(null, 'dom')), false);\n global.document.addEventListener('keypress', keypressEventHandler(triggerHandlers.bind(null, 'dom')), false);\n // After hooking into document bubbled up click and keypresses events, we also hook into user handled click & keypresses.\n ['EventTarget', 'Node'].forEach(function (target) {\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n var proto = global[target] && global[target].prototype;\n // eslint-disable-next-line no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n fill(proto, 'addEventListener', function (original) {\n return function (eventName, fn, options) {\n if (fn && fn.handleEvent) {\n if (eventName === 'click') {\n fill(fn, 'handleEvent', function (innerOriginal) {\n return function (event) {\n domEventHandler('click', triggerHandlers.bind(null, 'dom'))(event);\n return innerOriginal.call(this, event);\n };\n });\n }\n if (eventName === 'keypress') {\n fill(fn, 'handleEvent', function (innerOriginal) {\n return function (event) {\n keypressEventHandler(triggerHandlers.bind(null, 'dom'))(event);\n return innerOriginal.call(this, event);\n };\n });\n }\n }\n else {\n if (eventName === 'click') {\n domEventHandler('click', triggerHandlers.bind(null, 'dom'), true)(this);\n }\n if (eventName === 'keypress') {\n keypressEventHandler(triggerHandlers.bind(null, 'dom'))(this);\n }\n }\n return original.call(this, eventName, fn, options);\n };\n });\n fill(proto, 'removeEventListener', function (original) {\n return function (eventName, fn, options) {\n try {\n original.call(this, eventName, fn.__sentry_wrapped__, options);\n }\n catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return original.call(this, eventName, fn, options);\n };\n });\n });\n}\nvar debounceDuration = 1000;\nvar debounceTimer = 0;\nvar keypressTimeout;\nvar lastCapturedEvent;\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param name the event name (e.g. \"click\")\n * @param handler function that will be triggered\n * @param debounce decides whether it should wait till another event loop\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction domEventHandler(name, handler, debounce) {\n if (debounce === void 0) { debounce = false; }\n return function (event) {\n // reset keypress timeout; e.g. triggering a 'click' after\n // a 'keypress' will reset the keypress debounce so that a new\n // set of keypresses can be recorded\n keypressTimeout = undefined;\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors). Ignore if we've\n // already captured the event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n lastCapturedEvent = event;\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n }\n if (debounce) {\n debounceTimer = setTimeout(function () {\n handler({ event: event, name: name });\n });\n }\n else {\n handler({ event: event, name: name });\n }\n };\n}\n/**\n * Wraps addEventListener to capture keypress UI events\n * @param handler function that will be triggered\n * @returns wrapped keypress events handler\n * @hidden\n */\nfunction keypressEventHandler(handler) {\n // TODO: if somehow user switches keypress target before\n // debounce timeout is triggered, we will only capture\n // a single breadcrumb from the FIRST target (acceptable?)\n return function (event) {\n var target;\n try {\n target = event.target;\n }\n catch (e) {\n // just accessing event properties can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/raven-js/issues/838\n return;\n }\n var tagName = target && target.tagName;\n // only consider keypress events on actual input elements\n // this will disregard keypresses targeting body (e.g. tabbing\n // through elements, hotkeys, etc)\n if (!tagName || (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable)) {\n return;\n }\n // record first keypress in a series, but ignore subsequent\n // keypresses until debounce clears\n if (!keypressTimeout) {\n domEventHandler('input', handler)(event);\n }\n clearTimeout(keypressTimeout);\n keypressTimeout = setTimeout(function () {\n keypressTimeout = undefined;\n }, debounceDuration);\n };\n}\nvar _oldOnErrorHandler = null;\n/** JSDoc */\nfunction instrumentError() {\n _oldOnErrorHandler = global.onerror;\n global.onerror = function (msg, url, line, column, error) {\n triggerHandlers('error', {\n column: column,\n error: error,\n line: line,\n msg: msg,\n url: url,\n });\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n return false;\n };\n}\nvar _oldOnUnhandledRejectionHandler = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection() {\n _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n global.onunhandledrejection = function (e) {\n triggerHandlers('unhandledrejection', e);\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n return true;\n };\n}\n//# sourceMappingURL=instrument.js.map","import { __assign, __read, __spread } from \"tslib\";\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable max-lines */\nimport { getCurrentHub } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { addInstrumentationHandler, getEventDescription, getGlobalObject, htmlTreeAsString, parseUrl, safeJoin, } from '@sentry/utils';\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nvar Breadcrumbs = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function Breadcrumbs(options) {\n /**\n * @inheritDoc\n */\n this.name = Breadcrumbs.id;\n this._options = __assign({ console: true, dom: true, fetch: true, history: true, sentry: true, xhr: true }, options);\n }\n /**\n * Create a breadcrumb of `sentry` from the events themselves\n */\n Breadcrumbs.prototype.addSentryBreadcrumb = function (event) {\n if (!this._options.sentry) {\n return;\n }\n getCurrentHub().addBreadcrumb({\n category: \"sentry.\" + (event.type === 'transaction' ? 'transaction' : 'event'),\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n }, {\n event: event,\n });\n };\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n Breadcrumbs.prototype.setupOnce = function () {\n var _this = this;\n if (this._options.console) {\n addInstrumentationHandler({\n callback: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this._consoleBreadcrumb.apply(_this, __spread(args));\n },\n type: 'console',\n });\n }\n if (this._options.dom) {\n addInstrumentationHandler({\n callback: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this._domBreadcrumb.apply(_this, __spread(args));\n },\n type: 'dom',\n });\n }\n if (this._options.xhr) {\n addInstrumentationHandler({\n callback: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this._xhrBreadcrumb.apply(_this, __spread(args));\n },\n type: 'xhr',\n });\n }\n if (this._options.fetch) {\n addInstrumentationHandler({\n callback: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this._fetchBreadcrumb.apply(_this, __spread(args));\n },\n type: 'fetch',\n });\n }\n if (this._options.history) {\n addInstrumentationHandler({\n callback: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this._historyBreadcrumb.apply(_this, __spread(args));\n },\n type: 'history',\n });\n }\n };\n /**\n * Creates breadcrumbs from console API calls\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Breadcrumbs.prototype._consoleBreadcrumb = function (handlerData) {\n var breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: Severity.fromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = \"Assertion failed: \" + (safeJoin(handlerData.args.slice(1), ' ') || 'console.assert');\n breadcrumb.data.arguments = handlerData.args.slice(1);\n }\n else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n };\n /**\n * Creates breadcrumbs from DOM API calls\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Breadcrumbs.prototype._domBreadcrumb = function (handlerData) {\n var target;\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target)\n : htmlTreeAsString(handlerData.event);\n }\n catch (e) {\n target = '';\n }\n if (target.length === 0) {\n return;\n }\n getCurrentHub().addBreadcrumb({\n category: \"ui.\" + handlerData.name,\n message: target,\n }, {\n event: handlerData.event,\n name: handlerData.name,\n });\n };\n /**\n * Creates breadcrumbs from XHR API calls\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Breadcrumbs.prototype._xhrBreadcrumb = function (handlerData) {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n var _a = handlerData.xhr.__sentry_xhr__ || {}, method = _a.method, url = _a.url, status_code = _a.status_code, body = _a.body;\n getCurrentHub().addBreadcrumb({\n category: 'xhr',\n data: {\n method: method,\n url: url,\n status_code: status_code,\n },\n type: 'http',\n }, {\n xhr: handlerData.xhr,\n input: body,\n });\n return;\n }\n };\n /**\n * Creates breadcrumbs from fetch API calls\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Breadcrumbs.prototype._fetchBreadcrumb = function (handlerData) {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb({\n category: 'fetch',\n data: handlerData.fetchData,\n level: Severity.Error,\n type: 'http',\n }, {\n data: handlerData.error,\n input: handlerData.args,\n });\n }\n else {\n getCurrentHub().addBreadcrumb({\n category: 'fetch',\n data: __assign(__assign({}, handlerData.fetchData), { status_code: handlerData.response.status }),\n type: 'http',\n }, {\n input: handlerData.args,\n response: handlerData.response,\n });\n }\n };\n /**\n * Creates breadcrumbs from history API calls\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Breadcrumbs.prototype._historyBreadcrumb = function (handlerData) {\n var global = getGlobalObject();\n var from = handlerData.from;\n var to = handlerData.to;\n var parsedLoc = parseUrl(global.location.href);\n var parsedFrom = parseUrl(from);\n var parsedTo = parseUrl(to);\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from: from,\n to: to,\n },\n });\n };\n /**\n * @inheritDoc\n */\n Breadcrumbs.id = 'Breadcrumbs';\n return Breadcrumbs;\n}());\nexport { Breadcrumbs };\n//# sourceMappingURL=breadcrumbs.js.map","export var SDK_NAME = 'sentry.javascript.browser';\nexport var SDK_VERSION = '5.30.0';\n//# sourceMappingURL=version.js.map","import { __assign, __extends, __read, __spread } from \"tslib\";\nimport { BaseClient } from '@sentry/core';\nimport { getGlobalObject, logger } from '@sentry/utils';\nimport { BrowserBackend } from './backend';\nimport { injectReportDialog } from './helpers';\nimport { Breadcrumbs } from './integrations';\nimport { SDK_NAME, SDK_VERSION } from './version';\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nvar BrowserClient = /** @class */ (function (_super) {\n __extends(BrowserClient, _super);\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n function BrowserClient(options) {\n if (options === void 0) { options = {}; }\n return _super.call(this, BrowserBackend, options) || this;\n }\n /**\n * Show a report dialog to the user to send feedback to a specific event.\n *\n * @param options Set individual options for the dialog\n */\n BrowserClient.prototype.showReportDialog = function (options) {\n if (options === void 0) { options = {}; }\n // doesn't work without a document (React Native)\n var document = getGlobalObject().document;\n if (!document) {\n return;\n }\n if (!this._isEnabled()) {\n logger.error('Trying to call showReportDialog with Sentry Client disabled');\n return;\n }\n injectReportDialog(__assign(__assign({}, options), { dsn: options.dsn || this.getDsn() }));\n };\n /**\n * @inheritDoc\n */\n BrowserClient.prototype._prepareEvent = function (event, scope, hint) {\n event.platform = event.platform || 'javascript';\n event.sdk = __assign(__assign({}, event.sdk), { name: SDK_NAME, packages: __spread(((event.sdk && event.sdk.packages) || []), [\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ]), version: SDK_VERSION });\n return _super.prototype._prepareEvent.call(this, event, scope, hint);\n };\n /**\n * @inheritDoc\n */\n BrowserClient.prototype._sendEvent = function (event) {\n var integration = this.getIntegration(Breadcrumbs);\n if (integration) {\n integration.addSentryBreadcrumb(event);\n }\n _super.prototype._sendEvent.call(this, event);\n };\n return BrowserClient;\n}(BaseClient));\nexport { BrowserClient };\n//# sourceMappingURL=client.js.map","import { __assign } from \"tslib\";\nimport { fill, getFunctionName, getGlobalObject } from '@sentry/utils';\nimport { wrap } from '../helpers';\nvar DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nvar TryCatch = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function TryCatch(options) {\n /**\n * @inheritDoc\n */\n this.name = TryCatch.id;\n this._options = __assign({ XMLHttpRequest: true, eventTarget: true, requestAnimationFrame: true, setInterval: true, setTimeout: true }, options);\n }\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n TryCatch.prototype.setupOnce = function () {\n var global = getGlobalObject();\n if (this._options.setTimeout) {\n fill(global, 'setTimeout', this._wrapTimeFunction.bind(this));\n }\n if (this._options.setInterval) {\n fill(global, 'setInterval', this._wrapTimeFunction.bind(this));\n }\n if (this._options.requestAnimationFrame) {\n fill(global, 'requestAnimationFrame', this._wrapRAF.bind(this));\n }\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in global) {\n fill(XMLHttpRequest.prototype, 'send', this._wrapXHR.bind(this));\n }\n if (this._options.eventTarget) {\n var eventTarget = Array.isArray(this._options.eventTarget) ? this._options.eventTarget : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(this._wrapEventTarget.bind(this));\n }\n };\n /** JSDoc */\n TryCatch.prototype._wrapTimeFunction = function (original) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n };\n /** JSDoc */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TryCatch.prototype._wrapRAF = function (original) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (callback) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.call(this, wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }));\n };\n };\n /** JSDoc */\n TryCatch.prototype._wrapEventTarget = function (target) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var global = getGlobalObject();\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n var proto = global[target] && global[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n fill(proto, 'addEventListener', function (original) {\n return function (eventName, fn, options) {\n try {\n if (typeof fn.handleEvent === 'function') {\n fn.handleEvent = wrap(fn.handleEvent.bind(fn), {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target: target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n }\n catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n return original.call(this, eventName, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target: target,\n },\n handled: true,\n type: 'instrument',\n },\n }), options);\n };\n });\n fill(proto, 'removeEventListener', function (originalRemoveEventListener) {\n return function (eventName, fn, options) {\n var _a;\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n var wrappedEventHandler = fn;\n try {\n var originalEventHandler = (_a = wrappedEventHandler) === null || _a === void 0 ? void 0 : _a.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n }\n catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n });\n };\n /** JSDoc */\n TryCatch.prototype._wrapXHR = function (originalSend) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var xhr = this;\n var xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n xmlHttpRequestProps.forEach(function (prop) {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original) {\n var wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n // If Instrument integration has been called before TryCatch, get the name of original function\n if (original.__sentry_original__) {\n wrapOptions.mechanism.data.handler = getFunctionName(original.__sentry_original__);\n }\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n return originalSend.apply(this, args);\n };\n };\n /**\n * @inheritDoc\n */\n TryCatch.id = 'TryCatch';\n return TryCatch;\n}());\nexport { TryCatch };\n//# sourceMappingURL=trycatch.js.map","import { __assign } from \"tslib\";\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { getCurrentHub } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { addExceptionMechanism, addInstrumentationHandler, getLocationHref, isErrorEvent, isPrimitive, isString, logger, } from '@sentry/utils';\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n/** Global handlers */\nvar GlobalHandlers = /** @class */ (function () {\n /** JSDoc */\n function GlobalHandlers(options) {\n /**\n * @inheritDoc\n */\n this.name = GlobalHandlers.id;\n /** JSDoc */\n this._onErrorHandlerInstalled = false;\n /** JSDoc */\n this._onUnhandledRejectionHandlerInstalled = false;\n this._options = __assign({ onerror: true, onunhandledrejection: true }, options);\n }\n /**\n * @inheritDoc\n */\n GlobalHandlers.prototype.setupOnce = function () {\n Error.stackTraceLimit = 50;\n if (this._options.onerror) {\n logger.log('Global Handler attached: onerror');\n this._installGlobalOnErrorHandler();\n }\n if (this._options.onunhandledrejection) {\n logger.log('Global Handler attached: onunhandledrejection');\n this._installGlobalOnUnhandledRejectionHandler();\n }\n };\n /** JSDoc */\n GlobalHandlers.prototype._installGlobalOnErrorHandler = function () {\n var _this = this;\n if (this._onErrorHandlerInstalled) {\n return;\n }\n addInstrumentationHandler({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback: function (data) {\n var error = data.error;\n var currentHub = getCurrentHub();\n var hasIntegration = currentHub.getIntegration(GlobalHandlers);\n var isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return;\n }\n var client = currentHub.getClient();\n var event = isPrimitive(error)\n ? _this._eventFromIncompleteOnError(data.msg, data.url, data.line, data.column)\n : _this._enhanceEventWithInitialFrame(eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: false,\n }), data.url, data.line, data.column);\n addExceptionMechanism(event, {\n handled: false,\n type: 'onerror',\n });\n currentHub.captureEvent(event, {\n originalException: error,\n });\n },\n type: 'error',\n });\n this._onErrorHandlerInstalled = true;\n };\n /** JSDoc */\n GlobalHandlers.prototype._installGlobalOnUnhandledRejectionHandler = function () {\n var _this = this;\n if (this._onUnhandledRejectionHandlerInstalled) {\n return;\n }\n addInstrumentationHandler({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback: function (e) {\n var error = e;\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n }\n catch (_oO) {\n // no-empty\n }\n var currentHub = getCurrentHub();\n var hasIntegration = currentHub.getIntegration(GlobalHandlers);\n var isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return true;\n }\n var client = currentHub.getClient();\n var event = isPrimitive(error)\n ? _this._eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: true,\n });\n event.level = Severity.Error;\n addExceptionMechanism(event, {\n handled: false,\n type: 'onunhandledrejection',\n });\n currentHub.captureEvent(event, {\n originalException: error,\n });\n return;\n },\n type: 'unhandledrejection',\n });\n this._onUnhandledRejectionHandlerInstalled = true;\n };\n /**\n * This function creates a stack from an old, error-less onerror handler.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n GlobalHandlers.prototype._eventFromIncompleteOnError = function (msg, url, line, column) {\n var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n // If 'message' is ErrorEvent, get real message from inside\n var message = isErrorEvent(msg) ? msg.message : msg;\n var name;\n if (isString(message)) {\n var groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n }\n var event = {\n exception: {\n values: [\n {\n type: name || 'Error',\n value: message,\n },\n ],\n },\n };\n return this._enhanceEventWithInitialFrame(event, url, line, column);\n };\n /**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\n GlobalHandlers.prototype._eventFromRejectionWithPrimitive = function (reason) {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: \"Non-Error promise rejection captured with value: \" + String(reason),\n },\n ],\n },\n };\n };\n /** JSDoc */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n GlobalHandlers.prototype._enhanceEventWithInitialFrame = function (event, url, line, column) {\n event.exception = event.exception || {};\n event.exception.values = event.exception.values || [];\n event.exception.values[0] = event.exception.values[0] || {};\n event.exception.values[0].stacktrace = event.exception.values[0].stacktrace || {};\n event.exception.values[0].stacktrace.frames = event.exception.values[0].stacktrace.frames || [];\n var colno = isNaN(parseInt(column, 10)) ? undefined : column;\n var lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n var filename = isString(url) && url.length > 0 ? url : getLocationHref();\n if (event.exception.values[0].stacktrace.frames.length === 0) {\n event.exception.values[0].stacktrace.frames.push({\n colno: colno,\n filename: filename,\n function: '?',\n in_app: true,\n lineno: lineno,\n });\n }\n return event;\n };\n /**\n * @inheritDoc\n */\n GlobalHandlers.id = 'GlobalHandlers';\n return GlobalHandlers;\n}());\nexport { GlobalHandlers };\n//# sourceMappingURL=globalhandlers.js.map","import { __read, __spread } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { isInstanceOf } from '@sentry/utils';\nimport { exceptionFromStacktrace } from '../parsers';\nimport { computeStackTrace } from '../tracekit';\nvar DEFAULT_KEY = 'cause';\nvar DEFAULT_LIMIT = 5;\n/** Adds SDK info to an event. */\nvar LinkedErrors = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function LinkedErrors(options) {\n if (options === void 0) { options = {}; }\n /**\n * @inheritDoc\n */\n this.name = LinkedErrors.id;\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n /**\n * @inheritDoc\n */\n LinkedErrors.prototype.setupOnce = function () {\n addGlobalEventProcessor(function (event, hint) {\n var self = getCurrentHub().getIntegration(LinkedErrors);\n if (self) {\n return self._handler(event, hint);\n }\n return event;\n });\n };\n /**\n * @inheritDoc\n */\n LinkedErrors.prototype._handler = function (event, hint) {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n var linkedErrors = this._walkErrorTree(hint.originalException, this._key);\n event.exception.values = __spread(linkedErrors, event.exception.values);\n return event;\n };\n /**\n * @inheritDoc\n */\n LinkedErrors.prototype._walkErrorTree = function (error, key, stack) {\n if (stack === void 0) { stack = []; }\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= this._limit) {\n return stack;\n }\n var stacktrace = computeStackTrace(error[key]);\n var exception = exceptionFromStacktrace(stacktrace);\n return this._walkErrorTree(error[key], key, __spread([exception], stack));\n };\n /**\n * @inheritDoc\n */\n LinkedErrors.id = 'LinkedErrors';\n return LinkedErrors;\n}());\nexport { LinkedErrors };\n//# sourceMappingURL=linkederrors.js.map","import { __assign } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\nvar global = getGlobalObject();\n/** UserAgent */\nvar UserAgent = /** @class */ (function () {\n function UserAgent() {\n /**\n * @inheritDoc\n */\n this.name = UserAgent.id;\n }\n /**\n * @inheritDoc\n */\n UserAgent.prototype.setupOnce = function () {\n addGlobalEventProcessor(function (event) {\n var _a, _b, _c;\n if (getCurrentHub().getIntegration(UserAgent)) {\n // if none of the information we want exists, don't bother\n if (!global.navigator && !global.location && !global.document) {\n return event;\n }\n // grab as much info as exists and add it to the event\n var url = ((_a = event.request) === null || _a === void 0 ? void 0 : _a.url) || ((_b = global.location) === null || _b === void 0 ? void 0 : _b.href);\n var referrer = (global.document || {}).referrer;\n var userAgent = (global.navigator || {}).userAgent;\n var headers = __assign(__assign(__assign({}, (_c = event.request) === null || _c === void 0 ? void 0 : _c.headers), (referrer && { Referer: referrer })), (userAgent && { 'User-Agent': userAgent }));\n var request = __assign(__assign({}, (url && { url: url })), { headers: headers });\n return __assign(__assign({}, event), { request: request });\n }\n return event;\n });\n };\n /**\n * @inheritDoc\n */\n UserAgent.id = 'UserAgent';\n return UserAgent;\n}());\nexport { UserAgent };\n//# sourceMappingURL=useragent.js.map","import { getCurrentHub, initAndBind, Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject, SyncPromise } from '@sentry/utils';\nimport { BrowserClient } from './client';\nimport { wrap as internalWrap } from './helpers';\nimport { Breadcrumbs, GlobalHandlers, LinkedErrors, TryCatch, UserAgent } from './integrations';\nexport var defaultIntegrations = [\n new CoreIntegrations.InboundFilters(),\n new CoreIntegrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new UserAgent(),\n];\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options) {\n if (options === void 0) { options = {}; }\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n var window_1 = getGlobalObject();\n // This supports the variable that sentry-webpack-plugin injects\n if (window_1.SENTRY_RELEASE && window_1.SENTRY_RELEASE.id) {\n options.release = window_1.SENTRY_RELEASE.id;\n }\n }\n if (options.autoSessionTracking === undefined) {\n options.autoSessionTracking = false;\n }\n initAndBind(BrowserClient, options);\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\n}\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nexport function showReportDialog(options) {\n if (options === void 0) { options = {}; }\n if (!options.eventId) {\n options.eventId = getCurrentHub().lastEventId();\n }\n var client = getCurrentHub().getClient();\n if (client) {\n client.showReportDialog(options);\n }\n}\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId() {\n return getCurrentHub().lastEventId();\n}\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad() {\n // Noop\n}\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback) {\n callback();\n}\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function flush(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n return SyncPromise.reject(false);\n}\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function close(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n return SyncPromise.reject(false);\n}\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrap(fn) {\n return internalWrap(fn)();\n}\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking() {\n var window = getGlobalObject();\n var hub = getCurrentHub();\n /**\n * We should be using `Promise.all([windowLoaded, firstContentfulPaint])` here,\n * but, as always, it's not available in the IE10-11. Thanks IE.\n */\n var loadResolved = document.readyState === 'complete';\n var fcpResolved = false;\n var possiblyEndSession = function () {\n if (fcpResolved && loadResolved) {\n hub.endSession();\n }\n };\n var resolveWindowLoaded = function () {\n loadResolved = true;\n possiblyEndSession();\n window.removeEventListener('load', resolveWindowLoaded);\n };\n hub.startSession();\n if (!loadResolved) {\n // IE doesn't support `{ once: true }` for event listeners, so we have to manually\n // attach and then detach it once completed.\n window.addEventListener('load', resolveWindowLoaded);\n }\n try {\n var po = new PerformanceObserver(function (entryList, po) {\n entryList.getEntries().forEach(function (entry) {\n if (entry.name === 'first-contentful-paint' && entry.startTime < firstHiddenTime_1) {\n po.disconnect();\n fcpResolved = true;\n possiblyEndSession();\n }\n });\n });\n // There's no need to even attach this listener if `PerformanceObserver` constructor will fail,\n // so we do it below here.\n var firstHiddenTime_1 = document.visibilityState === 'hidden' ? 0 : Infinity;\n document.addEventListener('visibilitychange', function (event) {\n firstHiddenTime_1 = Math.min(firstHiddenTime_1, event.timeStamp);\n }, { once: true });\n po.observe({\n type: 'paint',\n buffered: true,\n });\n }\n catch (e) {\n fcpResolved = true;\n possiblyEndSession();\n }\n}\n//# sourceMappingURL=sdk.js.map","import { __assign, __extends } from \"tslib\";\nimport { captureException, showReportDialog, withScope } from '@sentry/browser';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport * as React from 'react';\nexport var UNKNOWN_COMPONENT = 'unknown';\nvar INITIAL_STATE = {\n componentStack: null,\n error: null,\n eventId: null,\n};\n/**\n * A ErrorBoundary component that logs errors to Sentry.\n * Requires React >= 16\n */\nvar ErrorBoundary = /** @class */ (function (_super) {\n __extends(ErrorBoundary, _super);\n function ErrorBoundary() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = INITIAL_STATE;\n _this.resetErrorBoundary = function () {\n var onReset = _this.props.onReset;\n var _a = _this.state, error = _a.error, componentStack = _a.componentStack, eventId = _a.eventId;\n if (onReset) {\n onReset(error, componentStack, eventId);\n }\n _this.setState(INITIAL_STATE);\n };\n return _this;\n }\n ErrorBoundary.prototype.componentDidCatch = function (error, _a) {\n var _this = this;\n var componentStack = _a.componentStack;\n var _b = this.props, beforeCapture = _b.beforeCapture, onError = _b.onError, showDialog = _b.showDialog, dialogOptions = _b.dialogOptions;\n withScope(function (scope) {\n if (beforeCapture) {\n beforeCapture(scope, error, componentStack);\n }\n var eventId = captureException(error, { contexts: { react: { componentStack: componentStack } } });\n if (onError) {\n onError(error, componentStack, eventId);\n }\n if (showDialog) {\n showReportDialog(__assign(__assign({}, dialogOptions), { eventId: eventId }));\n }\n // componentDidCatch is used over getDerivedStateFromError\n // so that componentStack is accessible through state.\n _this.setState({ error: error, componentStack: componentStack, eventId: eventId });\n });\n };\n ErrorBoundary.prototype.componentDidMount = function () {\n var onMount = this.props.onMount;\n if (onMount) {\n onMount();\n }\n };\n ErrorBoundary.prototype.componentWillUnmount = function () {\n var _a = this.state, error = _a.error, componentStack = _a.componentStack, eventId = _a.eventId;\n var onUnmount = this.props.onUnmount;\n if (onUnmount) {\n onUnmount(error, componentStack, eventId);\n }\n };\n ErrorBoundary.prototype.render = function () {\n var fallback = this.props.fallback;\n var _a = this.state, error = _a.error, componentStack = _a.componentStack, eventId = _a.eventId;\n if (error) {\n if (React.isValidElement(fallback)) {\n return fallback;\n }\n if (typeof fallback === 'function') {\n return fallback({ error: error, componentStack: componentStack, resetError: this.resetErrorBoundary, eventId: eventId });\n }\n // Fail gracefully if no fallback provided\n return null;\n }\n return this.props.children;\n };\n return ErrorBoundary;\n}(React.Component));\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction withErrorBoundary(WrappedComponent, errorBoundaryOptions) {\n var componentDisplayName = WrappedComponent.displayName || WrappedComponent.name || UNKNOWN_COMPONENT;\n var Wrapped = function (props) { return (React.createElement(ErrorBoundary, __assign({}, errorBoundaryOptions),\n React.createElement(WrappedComponent, __assign({}, props)))); };\n Wrapped.displayName = \"errorBoundary(\" + componentDisplayName + \")\";\n // Copy over static methods from Wrapped component to Profiler HOC\n // See: https://reactjs.org/docs/higher-order-components.html#static-methods-must-be-copied-over\n hoistNonReactStatics(Wrapped, WrappedComponent);\n return Wrapped;\n}\nexport { ErrorBoundary, withErrorBoundary };\n//# sourceMappingURL=errorboundary.js.map","import React, {Fragment} from 'react';\n\nconst useNewLineText = (text: string | React.ReactFragment) => {\n if (!text) {\n return '';\n }\n\n if (typeof text !== 'string') {\n return text;\n }\n\n return text.split(/\\n|\\\\n/).map((line: string, index: number) => (\n \n {index > 0 &&
} {line}\n
\n ));\n};\n\nexport default useNewLineText;\n","import {useCallback} from 'react';\nimport {layerState} from '@src/store';\nimport {useRecoilState} from 'recoil';\nimport useNewLineText from '@src/hooks/useNewLineText';\n\nfunction AlertLayer () {\n const [{data, callback}, setLayer] = useRecoilState(layerState);\n const {title, desc} = data;\n const trimDesc = useNewLineText(desc || '');\n\n const handleClickConfirmBtn = useCallback(() => {\n setLayer({open: false});\n callback && callback();\n }, [callback, setLayer]);\n\n return (\n // \n
\n
\n {title}\n
\n
\n

{trimDesc}

\n
\n
\n
\n \n 확인\n \n
\n
\n
\n );\n}\n\nexport default AlertLayer;\n","import {useCallback} from 'react';\nimport {layerState} from '@src/store';\nimport {useRecoilState} from 'recoil';\nimport useNewLineText from '@src/hooks/useNewLineText';\n\nfunction ConfirmLayer () {\n const [{data, callback}, setLayer] = useRecoilState(layerState);\n const {content, ok = '확인', cancel = '취소'} = data || {};\n const desc = useNewLineText(content);\n\n const handleClickClose = useCallback(() => {\n setLayer({open: false});\n }, [setLayer]);\n\n const handleClickConfirm = useCallback(() => {\n handleClickClose();\n callback && callback();\n }, [handleClickClose, callback]);\n\n return (\n // \n
\n
\n

{desc}

\n
\n
\n
\n \n \n {ok}\n \n
\n
\n
\n );\n}\n\nexport default ConfirmLayer;\n","import {useEffect, useState} from 'react';\nimport {useRecoilState} from 'recoil';\nimport classNames from 'classnames';\nimport useNewLineText from '@src/hooks/useNewLineText';\nimport {layerState} from '@src/store';\nimport {ListLayerData} from '@src/types/common';\n\nfunction ListLayer () {\n const [{data, callback}, setLayer] = useRecoilState(layerState);\n\n const {title, desc, list, initialValue = ''} = data as ListLayerData;\n const [selectedValue, setSelectedValue] = useState(initialValue);\n const [isError, setIsError] = useState(false);\n const trimDesc = useNewLineText(desc || '');\n\n useEffect(() => {\n if (isError && selectedValue) {\n setIsError(false);\n }\n }, [selectedValue, isError]);\n\n const handleClickClose = () => {\n setLayer({open: false});\n };\n\n const handleClickConfirm = () => {\n if (!selectedValue) {\n setIsError(true);\n return;\n }\n handleClickClose();\n callback && callback(selectedValue);\n };\n\n return (\n // \n
\n
\n {title}\n
\n
\n

{trimDesc}

\n
    \n {list.map((li, index) => {\n const {desc: liDesc, value} = li;\n return (\n
  • \n \n
  • \n );\n })}\n
\n {isError &&

항목을 선택해 주세요.

}\n
\n
\n
\n \n 확인\n \n
\n
\n
\n );\n}\n\nexport default ListLayer;\n","import {useMemo} from 'react';\nimport {useRecoilValue} from 'recoil';\nimport classNames from 'classnames';\nimport {layerState} from '@src/store';\nimport AlertLayer from './AlertLayer';\nimport ConfirmLayer from './ConfirmLayer';\nimport ListLayer from './ListLayer';\n\nfunction Layer () {\n const {open, type} = useRecoilValue(layerState);\n\n const layerNode = useMemo(() => {\n switch (type) {\n case 'ALERT':\n return ;\n case 'CONFIRM':\n return ;\n case 'LIST':\n return ;\n default:\n return null;\n }\n }, [type]);\n\n if (!open) {\n return null;\n }\n\n return (\n // eslint-disable-next-line @typescript-eslint/naming-convention\n
{layerNode}
\n );\n}\n\nexport default Layer;\n","import {useRouter} from 'next/router';\nimport {useRecoilValue} from 'recoil';\nimport {authInfoState} from '@src/store';\nimport {closeWebview} from '@src/utils/scheme';\n\nfunction AuthInfo () {\n const router = useRouter();\n const authInfo = useRecoilValue(authInfoState);\n\n const handleClickSchemeTest = () => {\n router.push('/test/scheme');\n };\n return (\n \n

카로그인: {authInfo.accountId > 0 ? 'ON' : 'OFF'}

\n

카계정 ID: {authInfo.accountId}

\n

가입 여부: {authInfo.signup ? 'Y' : 'N'}

\n \n \n \n );\n}\n\nexport default AuthInfo;\n","import React, {useEffect, MouseEvent} from 'react';\nimport classNames from 'classnames';\nimport {callOpenSubscriptionWebview} from '@src/utils/scheme';\nimport {HELP_URL, INQUIRY_URL, PRIVACY_POLICY_URL} from '@src/constants';\nimport {openCounselingTalk} from '@src/utils/route';\nimport {TIARA_ACTION_NAME} from '@src/constants/tiara';\n\nconst NOTICE_URL = process.env.NEXT_PUBLIC_NOTICE_URL || '';\nconst TERMS_URL = process.env.NEXT_PUBLIC_TERMS_URL || '';\nconst KAKAO_CORP_URL = 'https://www.kakaocorp.com';\nconst REPORT_NUMBER_URL = 'https://www.ftc.go.kr/bizCommPop.do?wrkr_no=1208147521';\n\ninterface IFooter {\n isFolded: boolean;\n setIsFolded: React.Dispatch>;\n scrollToBottom: () => void;\n}\n\nfunction Footer ({isFolded = true, setIsFolded, scrollToBottom}: IFooter) {\n const handleClickTermsOfService = (event: MouseEvent) => {\n event.preventDefault();\n callOpenSubscriptionWebview(TERMS_URL);\n };\n const handleClickNotice = (event: MouseEvent) => {\n event.preventDefault();\n callOpenSubscriptionWebview(NOTICE_URL);\n };\n const handleClickHelp = (event: MouseEvent) => {\n event.preventDefault();\n callOpenSubscriptionWebview(HELP_URL);\n };\n const handleClickPrivacyPolicy = (event: MouseEvent) => {\n event.preventDefault();\n callOpenSubscriptionWebview(PRIVACY_POLICY_URL);\n };\n const handleClickKakaoCorp = (event: MouseEvent) => {\n event.preventDefault();\n callOpenSubscriptionWebview(KAKAO_CORP_URL);\n };\n const handleClickReportNumber = (event: MouseEvent) => {\n event.preventDefault();\n callOpenSubscriptionWebview(REPORT_NUMBER_URL);\n };\n const handleClickConsulting = (event: MouseEvent) => {\n event.preventDefault();\n openCounselingTalk();\n };\n const handleClickInquiry = (event: MouseEvent) => {\n event.preventDefault();\n callOpenSubscriptionWebview(INQUIRY_URL);\n };\n\n useEffect(() => {\n if (!isFolded) {\n scrollToBottom();\n }\n }, [isFolded, scrollToBottom]);\n\n return (\n
\n
\n 서비스 이용정보\n \n \n (주)카카오는 통신판매중개시스템의 제공자로 통신판매의 당사자가 아니며 상품의 주문 배송 및 환불 등과 관련한\n 의무와 책임은 각 판매자에게 있습니다.\n \n
\n
\n \n \n © Kakao Corp.\n \n \n {/* */}\n setIsFolded(prevIsOpen => !prevIsOpen)}\n >\n {' 사업자 정보 '}\n 펼치기/접기\n \n {/* */}\n
\n {/* */}\n
대표
\n
정신아
\n
주소
\n
\n
제주특별자치도 제주시 첨단로 242 (영평동)
\n
\n
호스팅사업자
\n
(주)카카오
\n
사업자등록번호
\n
120-81-47521
\n
통신판매업신고번호
\n
\n \n 제2015-제주아라-0032호\n \n
\n
이메일
\n
\n \n subscription_cs@kakaocorp.com\n \n
\n {/* */}\n
고객센터
\n
\n {' '}\n \n 톡상담\n \n \n 문의하기\n {' '}\n
\n
\n {/* */}\n
\n
\n );\n}\n\nexport default Footer;\n","import {useRef} from 'react';\nimport QRCode from 'qrcode.react';\nimport {useRouter} from 'next/router';\nimport {existWindow} from '@src/utils/common';\nimport {getValidPath} from '@src/utils/route';\nimport {useRecoilState} from 'recoil';\nimport {qrPopupState} from '@src/store';\nimport useClickOutside from '@src/hooks/useClickOutside';\n\nfunction QRpopup () {\n const router = useRouter();\n const {url} = router.query;\n const [qrType, setQRType] = useRecoilState(qrPopupState);\n const ref = useRef(null);\n useClickOutside(ref, () => setQRType(''));\n\n if (qrType === '') {\n return <>;\n }\n\n return (\n
\n
\n
\n {' '}\n 카카오구독ON\n
\n
\n {existWindow() && }\n

\n 카카오구독ON은\n
\n 모바일에서 이용가능합니다.\n
\n 스마트폰으로 위 QR코드를\n
\n 찍어 확인해주세요.\n

\n
\n
\n
\n );\n}\n\nexport default QRpopup;\n","import {useState, useEffect, useRef, useCallback} from 'react';\nimport {AppProps} from 'next/app';\nimport Router, {useRouter} from 'next/router';\nimport {useRecoilState, useRecoilValue} from 'recoil';\nimport classNames from 'classnames';\nimport Layer from '@src/components/layer/Layer';\nimport AuthInfo from '@src/components/AuthInfo';\nimport Footer from '@src/components/Footer';\nimport {layerState, tagFixedState} from '@src/store';\nimport {isSandbox} from '@src/utils/common';\nimport {matchPathname} from '@src/utils/route';\nimport QRpopup from './bridge/QRpopup';\nimport {TIARA_CUSTOM_PROPS} from '@src/constants/tiara';\n\nconst FOLDED_FOOTER_HEIGHT = 135;\nconst UNFOLDED_FOOTER_HEIGHT = 260;\nconst ERROR_CLASSNAME = 'wrap_error';\nconst TAB_FIXED = 'tab_fixed';\nconst TAG_FIXED = 'tag_fixed';\nconst MOBILE_BRIDGE_CLASSNAME = 'wrap_empty_mo';\nconst PAGE_BOTTOM_BTN = 'page_btn';\nconst CONTAINER_CLOSE = 'container-close';\nconst AREA_CLOSE = 'area_close';\nconst errorPageRegexps = [\n /^\\/errors/, // pages/errors/** */\n '/404',\n];\nconst homePageRegexps = ['/', '/?tab=1', '/?tab=2'];\nconst mobileBridgePageRegexps = [\n '/bridge/mobile',\n '/bridge/mobile-update',\n '/bridge/redirect-permalink',\n '/planning/done',\n];\nconst BrandPageRegexps = ['/intro'];\nconst bottomButtonRegexps = [\n /^\\/landing/, // pages/landing/** */\n /^\\/event/, // pages/event/** */\n];\nconst ClosePageRegexp = '/close';\nconst ClosePcPageRegexp = '/close-pc';\n\n// data-tiara-custom=k=v&k=v&k=v\nconst tiaraCustomProps = Object.entries(TIARA_CUSTOM_PROPS)\n .map(([key, value]) => `${key}=${value}`)\n .join('&');\n\nfunction AppMain (props: AppProps) {\n const {Component, pageProps} = props;\n const [isFoldedFooter, setIsFoldedFooter] = useState(true);\n const router = useRouter();\n const [deviceHeight, setDeviceHeight] = useState('100vh');\n const [{open: isShowLayer}, setLayer] = useRecoilState(layerState);\n const isTagFixed = useRecoilValue(tagFixedState);\n\n const rootRef = useRef(null);\n\n const isErrorPage = matchPathname(errorPageRegexps, router.pathname);\n const isHomePage = matchPathname(homePageRegexps, router.pathname);\n const isMobileBridgePage = matchPathname(mobileBridgePageRegexps, router.pathname);\n const isBrandPage = matchPathname(BrandPageRegexps, router.pathname);\n const isClosePage = router.pathname === ClosePageRegexp;\n const isClosePcPage = router.pathname === ClosePcPageRegexp;\n\n const isBottomButtonPage = matchPathname(bottomButtonRegexps, router.pathname);\n\n useEffect(() => {\n // [Android] 100vh 값을 Keyboard 높이를 제외하는 현상으로 인해 다바이스 높이 값을 따로 저장\n setDeviceHeight(`${window.innerHeight}px`);\n }, []);\n\n // 레이어가 떠있을 경우, 뒤로가기 및 스크롤 차단\n useEffect(() => {\n Router.beforePopState(() => {\n if (isShowLayer) {\n setLayer({open: false});\n history.go(1);\n }\n\n return !isShowLayer;\n });\n\n const hasOpenedLayer = document.querySelectorAll('.isPopupOpen').length > 0;\n\n window.document.body.style.overflow = isShowLayer || hasOpenedLayer ? 'hidden' : '';\n }, [isShowLayer, setLayer]);\n\n useEffect(() => {\n if (router.pathname === '/planning/[id]') {\n // 상단 뒤로가기 버튼을 이용해서 해당 페이지 접근 시\n // 스크롤 위치가 변경되지만 eact-lazy-load-image-component 에서 해당 사실을 인지 못함\n // 첫 이미지가 그려지지 않는 이슈 발생\n const scrollY = document.documentElement.scrollTop || document.body.scrollTop;\n window.scrollTo(0, scrollY + 1);\n }\n\n if (router.pathname === '/intro') {\n const htmlTag = window.document.querySelector('html');\n\n if (htmlTag) {\n htmlTag.className = 'intro_product';\n }\n }\n }, [router.pathname]);\n\n const scrollToBottom = useCallback(() => {\n window.scrollTo(0, document.body.scrollHeight);\n }, []);\n\n return (\n <>\n \n
\n

카카오톡 채널 상품구독 홈

\n
\n \n \n

상품구독 메인 컨텐츠

\n \n \n \n \n {isSandbox() && }\n {isMobileBridgePage || isBrandPage || isClosePage || isClosePcPage ? (\n <>\n ) : (\n