{ "version": 3, "sources": ["../../node_modules/react/cjs/react.production.min.js", "../../node_modules/react/index.js", "../../node_modules/scheduler/cjs/scheduler.production.min.js", "../../node_modules/scheduler/index.js", "../../node_modules/react-dom/cjs/react-dom.production.min.js", "../../node_modules/react-dom/index.js", "../../node_modules/react-dom/client.js", "../../node_modules/react-is/cjs/react-is.production.min.js", "../../node_modules/react-is/index.js", "../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js", "../../src/client/index.tsx", "../../node_modules/@sentry/src/env.ts", "../../node_modules/@sentry/src/node.ts", "../../node_modules/@sentry/src/global.ts", "../../node_modules/@sentry/src/is.ts", "../../node_modules/@sentry/src/browser.ts", "../../node_modules/@sentry/src/error.ts", "../../node_modules/@sentry/src/dsn.ts", "../../node_modules/@sentry/src/logger.ts", "../../node_modules/@sentry/src/string.ts", "../../node_modules/@sentry/src/object.ts", "../../node_modules/@sentry/src/buildPolyfills/_nullishCoalesce.ts", "../../node_modules/@sentry/src/stacktrace.ts", "../../node_modules/@sentry/src/supports.ts", "../../node_modules/@sentry/src/instrument.ts", "../../node_modules/@sentry/src/memo.ts", "../../node_modules/@sentry/src/misc.ts", "../../node_modules/@sentry/src/normalize.ts", "../../node_modules/@sentry/src/syncpromise.ts", "../../node_modules/@sentry/src/promisebuffer.ts", "../../node_modules/@sentry/src/severity.ts", "../../node_modules/@sentry/src/time.ts", "../../node_modules/@sentry/src/tracing.ts", "../../node_modules/@sentry/src/envelope.ts", "../../node_modules/@sentry/src/clientreport.ts", "../../node_modules/@sentry/src/ratelimit.ts", "../../node_modules/@sentry/src/baggage.ts", "../../node_modules/@sentry/src/session.ts", "../../node_modules/@sentry/src/scope.ts", "../../node_modules/@sentry/src/hub.ts", "../../node_modules/@sentry/src/exports.ts", "../../node_modules/@sentry/src/api.ts", "../../node_modules/@sentry/src/envelope.ts", "../../node_modules/@sentry/src/integration.ts", "../../node_modules/@sentry/src/baseclient.ts", "../../node_modules/@sentry/src/sdk.ts", "../../node_modules/@sentry/src/transports/base.ts", "../../node_modules/@sentry/core/esm/version.js", "../../node_modules/@sentry/core/esm/integrations/index.js", "../../node_modules/@sentry/src/integrations/functiontostring.ts", "../../node_modules/@sentry/src/integrations/inboundfilters.ts", "../../node_modules/src/eventbuilder.ts", "../../node_modules/src/integrations/breadcrumbs.ts", "../../node_modules/src/transports/utils.ts", "../../node_modules/src/client.ts", "../../node_modules/src/transports/fetch.ts", "../../node_modules/src/transports/xhr.ts", "../../node_modules/src/stack-parsers.ts", "../../node_modules/src/helpers.ts", "../../node_modules/@sentry/browser/esm/integrations/index.js", "../../node_modules/src/integrations/globalhandlers.ts", "../../node_modules/src/integrations/trycatch.ts", "../../node_modules/src/integrations/linkederrors.ts", "../../node_modules/src/integrations/httpcontext.ts", "../../node_modules/src/integrations/dedupe.ts", "../../node_modules/src/sdk.ts", "../../node_modules/src/index.ts", "../../node_modules/@sentry/src/sdk.ts", "../../node_modules/@sentry/src/profiler.tsx", "../../node_modules/@sentry/src/errorboundary.tsx", "../../src/shared/config.ts", "../../node_modules/src/utils.ts", "../../node_modules/src/errors.ts", "../../node_modules/src/span.ts", "../../node_modules/src/transaction.ts", "../../node_modules/src/idletransaction.ts", "../../node_modules/src/hubextensions.ts", "../../node_modules/src/browser/backgroundtab.ts", "../../node_modules/src/browser/web-vitals/lib/bindReporter.ts", "../../node_modules/src/browser/web-vitals/lib/generateUniqueID.ts", "../../node_modules/src/browser/web-vitals/lib/observe.ts", "../../node_modules/src/browser/web-vitals/lib/onHidden.ts", "../../node_modules/src/browser/web-vitals/getCLS.ts", "../../node_modules/src/browser/web-vitals/lib/getVisibilityWatcher.ts", "../../node_modules/src/browser/web-vitals/getFID.ts", "../../node_modules/src/browser/web-vitals/getLCP.ts", "../../node_modules/src/browser/metrics/utils.ts", "../../node_modules/src/browser/metrics/index.ts", "../../node_modules/src/browser/request.ts", "../../node_modules/src/browser/router.ts", "../../node_modules/src/browser/browsertracing.ts", "../../node_modules/src/index.ts", "../../src/client/sentry.ts", "../../src/client/App.tsx", "../../src/client/store/Store.tsx", "../../src/client/store/storeReducer.ts", "../../src/client/components/MovieView.tsx", "../../src/client/api.ts", "../../src/client/components/Movie.tsx", "../../src/client/components/ErrorMessage.tsx"], "sourcesContent": ["/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n", "/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3);\n", "/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These fags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n", "/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\nimport { isBrowserBundle } from './env';\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nexport function dynamicRequire(mod: any, request: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nexport function loadModule(moduleName: string): T | undefined {\n let mod: T | undefined;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) as T;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n", "/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { Integration } from '@sentry/types';\n\nimport { isNodeEnv } from './node';\n\n/** Internal */\ninterface SentryGlobal {\n Sentry?: {\n Integrations?: Integration[];\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n __SENTRY__: {\n globalEventProcessors: any;\n hub: any;\n logger: any;\n };\n}\n\nconst fallbackGlobalObject = {};\n\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nexport function getGlobalObject(): T & SentryGlobal {\n return (\n isNodeEnv()\n ? global\n : typeof window !== 'undefined' // eslint-disable-line no-restricted-globals\n ? window // eslint-disable-line no-restricted-globals\n : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject\n ) as T & SentryGlobal;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `getGlobalObject`'s return value\n * @returns the singleton\n */\nexport function getGlobalSingleton(name: keyof SentryGlobal['__SENTRY__'], creator: () => T, obj?: unknown): T {\n const global = (obj || getGlobalObject()) as SentryGlobal;\n const __SENTRY__ = (global.__SENTRY__ = global.__SENTRY__ || {});\n const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport { PolymorphicEvent, Primitive } from '@sentry/types';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: unknown): wat is Error {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n\nfunction isBuiltin(wat: unknown, ty: string): boolean {\n return objectToString.call(wat) === `[object ${ty}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: unknown): boolean {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: unknown): wat is string {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: unknown): wat is PolymorphicEvent {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: unknown): boolean {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: unknown): wat is RegExp {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): wat is PromiseLike {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: unknown): boolean {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isNaN(wat: unknown): boolean {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n", "import { getGlobalObject } from './global';\nimport { isString } from './is';\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(elem: unknown, keyAttrs?: string[]): string {\n type SimpleNode = {\n parentNode: SimpleNode;\n } | null;\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n const MAX_OUTPUT_LEN = 80;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n\n // eslint-disable-next-line no-plusplus\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el: unknown, keyAttrs?: string[]): string {\n const elem = el as {\n tagName?: string;\n id?: string;\n className?: string;\n getAttribute(key: string): string;\n };\n\n const out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n const keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n // eslint-disable-next-line prefer-const\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n }\n const allowedAttrs = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n const global = getGlobalObject();\n try {\n return global.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n", "/** An error emitted by Sentry SDKs and related utilities. */\nexport class SentryError extends Error {\n /** Display name of this error instance. */\n public name: string;\n\n public constructor(public message: string) {\n super(message);\n\n this.name = new.target.prototype.constructor.name;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n", "import { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types';\n\nimport { SentryError } from './error';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol?: string): protocol is DsnProtocol {\n return protocol === 'http' || protocol === 'https';\n}\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 */\nexport function dsnToString(dsn: DsnComponents, withPassword: boolean = false): string {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return (\n `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents\n */\nfunction dsnFromString(str: string): DsnComponents {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n throw new SentryError(`Invalid Sentry Dsn: ${str}`);\n }\n\n const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() as string;\n }\n\n if (projectId) {\n const projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol as DsnProtocol, publicKey });\n}\n\nfunction dsnFromComponents(components: DsnComponents): DsnComponents {\n return {\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\n\nfunction validateDsn(dsn: DsnComponents): boolean | void {\n if (!__DEBUG_BUILD__) {\n return;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents: ReadonlyArray = ['protocol', 'publicKey', 'host', 'projectId'];\n requiredComponents.forEach(component => {\n if (!dsn[component]) {\n throw new SentryError(`Invalid Sentry Dsn: ${component} missing`);\n }\n });\n\n if (!projectId.match(/^\\d+$/)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n }\n\n if (!isValidProtocol(protocol)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid port ${port}`);\n }\n\n return true;\n}\n\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nexport function makeDsn(from: DsnLike): DsnComponents {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n validateDsn(components);\n return components;\n}\n\n/**\n * Changes a Dsn to point to the `relay` server running in the Lambda Extension.\n *\n * This is only used by the serverless integration for AWS Lambda.\n *\n * @param originalDsn The original Dsn of the customer.\n * @returns Dsn pointing to Lambda extension.\n */\nexport function extensionRelayDSN(originalDsn: string | undefined): string | undefined {\n if (originalDsn === undefined) {\n return undefined;\n }\n\n const dsn = dsnFromString(originalDsn);\n dsn.host = 'localhost';\n dsn.port = '3000';\n dsn.protocol = 'http';\n\n return dsnToString(dsn);\n}\n", "import { WrappedFunction } from '@sentry/types';\n\nimport { getGlobalObject, getGlobalSingleton } from './global';\n\n// TODO: Implement different loggers for different environments\nconst global = getGlobalObject();\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nexport const CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert', 'trace'] as const;\n\ntype LoggerMethod = (...args: unknown[]) => void;\ntype LoggerConsoleMethods = Record;\n\n/** JSDoc */\ninterface Logger extends LoggerConsoleMethods {\n disable(): void;\n enable(): void;\n}\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nexport function consoleSandbox(callback: () => T): T {\n const global = getGlobalObject();\n\n if (!('console' in global)) {\n return callback();\n }\n\n const originalConsole = global.console as Console & Record;\n const wrappedLevels: Partial = {};\n\n // Restore all wrapped console methods\n CONSOLE_LEVELS.forEach(level => {\n // TODO(v7): Remove this check as it's only needed for Node 6\n const originalWrappedFunc =\n originalConsole[level] && (originalConsole[level] as WrappedFunction).__sentry_original__;\n if (level in global.console && originalWrappedFunc) {\n wrappedLevels[level] = originalConsole[level] as LoggerConsoleMethods[typeof level];\n originalConsole[level] = originalWrappedFunc as Console[typeof level];\n }\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level as typeof CONSOLE_LEVELS[number]];\n });\n }\n}\n\nfunction makeLogger(): Logger {\n let enabled = false;\n const logger: Partial = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n };\n\n if (__DEBUG_BUILD__) {\n CONSOLE_LEVELS.forEach(name => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger[name] = (...args: any[]) => {\n if (enabled) {\n consoleSandbox(() => {\n global.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger as Logger;\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nlet logger: Logger;\nif (__DEBUG_BUILD__) {\n logger = getGlobalSingleton('logger', makeLogger);\n} else {\n logger = makeLogger();\n}\n\nexport { logger };\n", "import { isRegExp, isString } from './is';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.substr(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line: string, colno: number): string {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input: any[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nexport function isMatchingPattern(value: string, pattern: RegExp | string): boolean {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n\n/**\n * Given a string, escape characters which have meaning in the regex grammar, such that the result is safe to feed to\n * `new RegExp()`.\n *\n * Based on https://github.com/sindresorhus/escape-string-regexp. Vendored to a) reduce the size by skipping the runtime\n * type-checking, and b) ensure it gets down-compiled for old versions of Node (the published package only supports Node\n * 12+).\n *\n * @param regexString The string to escape\n * @returns An version of the string with all special regex characters escaped\n */\nexport function escapeStringForRegex(regexString: string): string {\n // escape the hyphen separately so we can also replace it with a unicode literal hyphen, to avoid the problems\n // discussed in https://github.com/sindresorhus/escape-string-regexp/issues/20.\n return regexString.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\n", "/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { WrappedFunction } from '@sentry/types';\n\nimport { htmlTreeAsString } from './browser';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive } from './is';\nimport { truncate } from './string';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] as () => any;\n const wrapped = replacementFactory(original) as WrappedFunction;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n markFunctionWrapped(wrapped, original);\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nexport function addNonEnumerableProperty(obj: { [key: string]: unknown }, name: string, value: unknown): void {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nexport function getOriginalFunction(func: WrappedFunction): WrappedFunction | undefined {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nexport function convertToPlainObject(\n value: V,\n):\n | {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n }\n | {\n [ownProps: string]: unknown;\n message: string;\n name: string;\n stack?: string;\n }\n | V {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n const newObj: {\n [ownProps: string]: unknown;\n type: string;\n target: string;\n currentTarget: string;\n detail?: unknown;\n } = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target: unknown): string {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj: unknown): { [key: string]: unknown } {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps: { [key: string]: unknown } = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj as Record)[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nexport function extractExceptionKeysForMessage(exception: Record, maxLength: number = 40): string {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nexport function dropUndefinedKeys(inputValue: T): T {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n const memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue: T, memoizationMap: Map): T {\n if (isPlainObject(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: { [key: string]: any } = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (const key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue as T;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal as T;\n }\n\n const returnValue: unknown[] = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item: unknown) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue as unknown as T;\n }\n\n return inputValue;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nexport function objectify(wat: unknown): typeof Object {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat as any).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n", "/**\n * Polyfill for the nullish coalescing operator (`??`).\n *\n * Note that the RHS is wrapped in a function so that if it's a computed value, that evaluation won't happen unless the\n * LHS evaluates to a nullish value, to mimic the operator's short-circuiting behavior.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n *\n * @param lhs The value of the expression to the left of the `??`\n * @param rhsFn A function returning the value of the expression to the right of the `??`\n * @returns The LHS value, unless it's `null` or `undefined`, in which case, the RHS value\n */\nexport function _nullishCoalesce(lhs: unknown, rhsFn: () => unknown): unknown {\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n return lhs != null ? lhs : rhsFn();\n}\n\n// Sucrase version:\n// function _nullishCoalesce(lhs, rhsFn) {\n// if (lhs != null) {\n// return lhs;\n// } else {\n// return rhsFn();\n// }\n// }\n", "import { StackFrame, StackLineParser, StackLineParserFn, StackParser } from '@sentry/types';\n\nconst STACKTRACE_LIMIT = 50;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack: string, skipFirst: number = 0): StackFrame[] => {\n const frames: StackFrame[] = [];\n\n for (const line of stack.split('\\n').slice(skipFirst)) {\n for (const parser of sortedParsers) {\n const frame = parser(line);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nexport function stackParserFromStackParserOptions(stackParser: StackParser | StackLineParser[]): StackParser {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack: StackFrame[]): StackFrame[] {\n if (!stack.length) {\n return [];\n }\n\n let localStack = stack;\n\n const firstFrameFunction = localStack[0].function || '';\n const lastFrameFunction = localStack[localStack.length - 1].function || '';\n\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\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\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(frame => ({\n ...frame,\n filename: frame.filename || localStack[0].filename,\n function: frame.function || '?',\n }))\n .reverse();\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\ntype GetModuleFn = (filename: string | undefined) => string | undefined;\n\n// eslint-disable-next-line complexity\nfunction node(getModule?: GetModuleFn): StackLineParserFn {\n const FILENAME_MATCH = /^\\s*[-]{4,}$/;\n const FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+?):(\\d+)(?::(\\d+))?|([^)]+))\\)?/;\n\n // eslint-disable-next-line complexity\n return (line: string) => {\n if (line.match(FILENAME_MATCH)) {\n return {\n filename: line,\n };\n }\n\n const lineMatch = line.match(FULL_MATCH);\n if (!lineMatch) {\n return undefined;\n }\n\n let object: string | undefined;\n let method: string | undefined;\n let functionName: string | undefined;\n let typeName: string | undefined;\n let methodName: string | undefined;\n\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n\n let methodStart = functionName.lastIndexOf('.');\n if (functionName[methodStart - 1] === '.') {\n // eslint-disable-next-line no-plusplus\n methodStart--;\n }\n\n if (methodStart > 0) {\n object = functionName.substr(0, methodStart);\n method = functionName.substr(methodStart + 1);\n const objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.substr(objectEnd + 1);\n object = object.substr(0, objectEnd);\n }\n }\n typeName = undefined;\n }\n\n if (method) {\n typeName = object;\n methodName = method;\n }\n\n if (method === '') {\n methodName = undefined;\n functionName = undefined;\n }\n\n if (functionName === undefined) {\n methodName = methodName || '';\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n\n const filename = lineMatch[2]?.startsWith('file://') ? lineMatch[2].substr(7) : lineMatch[2];\n const isNative = lineMatch[5] === 'native';\n const isInternal =\n isNative || (filename && !filename.startsWith('/') && !filename.startsWith('.') && filename.indexOf(':\\\\') !== 1);\n\n // in_app is all that's not an internal Node function or a module within node_modules\n // note that isNative appears to return true even for node core libraries\n // see https://github.com/getsentry/raven-node/issues/176\n const in_app = !isInternal && filename !== undefined && !filename.includes('node_modules/');\n\n return {\n filename,\n module: getModule?.(filename),\n function: functionName,\n lineno: parseInt(lineMatch[3], 10) || undefined,\n colno: parseInt(lineMatch[4], 10) || undefined,\n in_app,\n };\n };\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nexport function nodeStackLineParser(getModule?: GetModuleFn): StackLineParser {\n return [90, node(getModule)];\n}\n", "import { getGlobalObject } from './global';\nimport { logger } from './logger';\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\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(): boolean {\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 } catch (e) {\n return false;\n }\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(): boolean {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\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(): boolean {\n if (!('fetch' in getGlobalObject())) {\n return false;\n }\n\n try {\n new Headers();\n new Request('');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFetch(func: Function): boolean {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\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(): boolean {\n if (!supportsFetch()) {\n return false;\n }\n\n const global = getGlobalObject();\n\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\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 let result = false;\n const doc = global.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement as unknown) === 'function') {\n try {\n const 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 } catch (err) {\n __DEBUG_BUILD__ &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\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(): boolean {\n return 'ReportingObserver' in getGlobalObject();\n}\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(): boolean {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' as ReferrerPolicy,\n });\n return true;\n } catch (e) {\n return false;\n }\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(): boolean {\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 const global = getGlobalObject();\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chrome = (global as any).chrome;\n const isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n const hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n", "/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { WrappedFunction } from '@sentry/types';\n\nimport { getGlobalObject } from './global';\nimport { isInstanceOf, isString } from './is';\nimport { CONSOLE_LEVELS, logger } from './logger';\nimport { fill } from './object';\nimport { getFunctionName } from './stacktrace';\nimport { supportsHistory, supportsNativeFetch } from './supports';\n\nconst global = getGlobalObject();\n\nexport type InstrumentHandlerType =\n | 'console'\n | 'dom'\n | 'fetch'\n | 'history'\n | 'sentry'\n | 'xhr'\n | 'error'\n | 'unhandledrejection';\nexport type InstrumentHandlerCallback = (data: any) => void;\n\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 */\n\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Instruments given API */\nfunction instrument(type: InstrumentHandlerType): void {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\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 __DEBUG_BUILD__ && logger.warn('unknown instrumentation type:', type);\n return;\n }\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(type: InstrumentHandlerType, callback: InstrumentHandlerCallback): void {\n handlers[type] = handlers[type] || [];\n (handlers[type] as InstrumentHandlerCallback[]).push(callback);\n instrument(type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type: InstrumentHandlerType, data: any): void {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (const handler of handlers[type] || []) {\n try {\n handler(data);\n } catch (e) {\n __DEBUG_BUILD__ &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\n/** JSDoc */\nfunction instrumentConsole(): void {\n if (!('console' in global)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level: string): void {\n if (!(level in global.console)) {\n return;\n }\n\n fill(global.console, level, function (originalConsoleMethod: () => any): Function {\n return function (...args: any[]): void {\n triggerHandlers('console', { args, level });\n\n // this fails for some browsers. :(\n if (originalConsoleMethod) {\n originalConsoleMethod.apply(global.console, args);\n }\n };\n });\n });\n}\n\n/** JSDoc */\nfunction instrumentFetch(): void {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(global, 'fetch', function (originalFetch: () => void): () => void {\n return function (...args: any[]): void {\n const handlerData = {\n args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...handlerData,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(global, args).then(\n (response: Response) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error: Error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n error,\n });\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}\n\ntype XHRSendInput = null | Blob | BufferSource | FormData | URLSearchParams | string;\n\n/** JSDoc */\ninterface SentryWrappedXMLHttpRequest extends XMLHttpRequest {\n [key: string]: any;\n __sentry_xhr__?: {\n method?: string;\n url?: string;\n status_code?: number;\n body?: XHRSendInput;\n };\n}\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs: any[] = []): string {\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\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs: any[] = []): string {\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\n/** JSDoc */\nfunction instrumentXHR(): void {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n\n const xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function (originalOpen: () => void): () => void {\n return function (this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const url = args[1];\n const xhrInfo: SentryWrappedXMLHttpRequest['__sentry_xhr__'] = (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\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) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n xhr.__sentry_own_request__ = true;\n }\n\n const onreadystatechangeHandler = function (): void {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = xhr.status;\n } catch (e) {\n /* do nothing */\n }\n\n triggerHandlers('xhr', {\n args,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr,\n });\n }\n };\n\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n fill(xhr, 'onreadystatechange', function (original: WrappedFunction): Function {\n return function (...readyStateArgs: any[]): void {\n onreadystatechangeHandler();\n return original.apply(xhr, readyStateArgs);\n };\n });\n } else {\n xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n return originalOpen.apply(xhr, args);\n };\n });\n\n fill(xhrproto, 'send', function (originalSend: () => void): () => void {\n return function (this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n if (this.__sentry_xhr__ && args[0] !== undefined) {\n this.__sentry_xhr__.body = args[0];\n }\n\n triggerHandlers('xhr', {\n args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref: string;\n\n/** JSDoc */\nfunction instrumentHistory(): void {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = global.onpopstate;\n global.onpopstate = function (this: WindowEventHandlers, ...args: any[]): any {\n const to = global.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction: () => void): () => void {\n return function (this: History, ...args: any[]): void {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const 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,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(global.history, 'pushState', historyReplacementFunction);\n fill(global.history, 'replaceState', historyReplacementFunction);\n}\n\nconst debounceDuration = 1000;\nlet debounceTimerID: number | undefined;\nlet lastCapturedEvent: Event | undefined;\n\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous: Event | undefined, current: Event): boolean {\n // If there was no previous event, it should always be swapped for the new one.\n if (!previous) {\n return true;\n }\n\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (previous.type !== current.type) {\n return true;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (previous.target !== current.target) {\n return true;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return false;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event: Event): boolean {\n // We are only interested in filtering `keypress` events for now.\n if (event.type !== 'keypress') {\n return false;\n }\n\n try {\n const target = event.target as HTMLElement;\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler: Function, globalListener: boolean = false): (event: Event) => void {\n return (event: Event): void => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event)) {\n return;\n }\n\n const name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n if (debounceTimerID === undefined) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = global.setTimeout(() => {\n debounceTimerID = undefined;\n }, debounceDuration);\n };\n}\n\ntype AddEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n) => void;\ntype RemoveEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n) => void;\n\ntype InstrumentedElement = Element & {\n __sentry_instrumentation_handlers__?: {\n [key in 'click' | 'keypress']?: {\n handler?: Function;\n /** The number of custom listeners attached to this element */\n refCount: number;\n };\n };\n};\n\n/** JSDoc */\nfunction instrumentDOM(): void {\n if (!('document' in global)) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n global.document.addEventListener('click', globalDOMEventHandler, false);\n global.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target: string) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = (global as any)[target] && (global as any)[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (originalAddEventListener: AddEventListener): AddEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): AddEventListener {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n const handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount += 1;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener: RemoveEventListener): RemoveEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = el.__sentry_instrumentation_handlers__ || {};\n const handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount -= 1;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\nlet _oldOnErrorHandler: OnErrorEventHandler = null;\n/** JSDoc */\nfunction instrumentError(): void {\n _oldOnErrorHandler = global.onerror;\n\n global.onerror = function (msg: any, url: any, line: any, column: any, error: any): boolean {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n}\n\nlet _oldOnUnhandledRejectionHandler: ((e: any) => void) | null = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection(): void {\n _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n\n global.onunhandledrejection = function (e: any): boolean {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n}\n", "/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type MemoFunc = [\n // memoize\n (obj: any) => boolean,\n // unmemoize\n (obj: any) => void,\n];\n\n/**\n * Helper to decycle json objects\n */\nexport function memoBuilder(): MemoFunc {\n const hasWeakSet = typeof WeakSet === 'function';\n const inner: any = hasWeakSet ? new WeakSet() : [];\n function memoize(obj: any): boolean {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inner.length; i++) {\n const value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj: any): void {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Event, Exception, Mechanism, StackFrame } from '@sentry/types';\n\nimport { getGlobalObject } from './global';\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\n\n/**\n * Extended Window interface that allows for Crypto API usage in IE browsers\n */\ninterface MsCryptoWindow extends Window {\n msCrypto?: Crypto;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n const global = getGlobalObject() as MsCryptoWindow;\n const crypto = global.crypto || global.msCrypto;\n\n if (!(crypto === void 0) && crypto.getRandomValues) {\n // Use window.crypto API if available\n const arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n\n // set 4 in byte 7\n // eslint-disable-next-line no-bitwise\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n // eslint-disable-next-line no-bitwise\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n\n const pad = (num: number): string => {\n let v = num.toString(16);\n while (v.length < 4) {\n v = `0${v}`;\n }\n return v;\n };\n\n return (\n pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7])\n );\n }\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, c => {\n // eslint-disable-next-line no-bitwise\n const r = (Math.random() * 16) | 0;\n // eslint-disable-next-line no-bitwise\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url: string): {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n} {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial): void {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n const lineno = frame.lineno || 0;\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => snipLine(line, 0));\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n // eslint-disable-next-line no-useless-escape\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && (exception as any).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception as { [key: string]: unknown }, '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n", "import { Primitive } from '@sentry/types';\n\nimport { isNaN, isSyntheticEvent } from './is';\nimport { memoBuilder, MemoFunc } from './memo';\nimport { convertToPlainObject } from './object';\nimport { getFunctionName } from './stacktrace';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n// This is a hack to placate TS, relying on the fact that technically, arrays are objects with integer keys. Normally we\n// think of those keys as actual numbers, but `arr['0']` turns out to work just as well as `arr[0]`, and doing it this\n// way lets us use a single type in the places where behave as if we are only dealing with objects, even if some of them\n// might be arrays.\ntype ObjOrArray = { [key: string]: T };\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output..\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function normalize(input: unknown, depth: number = +Infinity, maxProperties: number = +Infinity): any {\n try {\n // since we're at the outermost level, we don't provide a key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nexport function normalizeToSize(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n object: { [key: string]: any },\n // Default Node.js REPL depth\n depth: number = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize: number = 100 * 1024,\n): T {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized as T;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key: string,\n value: unknown,\n depth: number = +Infinity,\n maxProperties: number = +Infinity,\n memo: MemoFunc = memoBuilder(),\n): Primitive | ObjOrArray {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (value === null || (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))) {\n return value as Primitive;\n }\n\n const stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // From here on, we can assert that `value` is either an object or an array.\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n if ((value as ObjOrArray)['__sentry_skip_normalization__']) {\n return value as ObjOrArray;\n }\n\n // We're also done if we've reached the max depth\n if (depth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // If the value has a `toJSON` method, we call it to extract more information\n const valueWithToJSON = value as unknown & { toJSON?: () => unknown };\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n const jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, depth - 1, maxProperties, memo);\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n const normalized = (Array.isArray(value) ? [] : {}) as ObjOrArray;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n const visitable = convertToPlainObject(value as ObjOrArray);\n\n for (const visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, depth - 1, maxProperties, memo);\n\n numAdded += 1;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n// TODO remove this in v7 (this means the method will no longer be exported, under any name)\nexport { visit as walk };\n\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key: unknown,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value: Exclude,\n): string {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value as { _events: unknown })._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n // this catches `undefined` (but not `null`, which is a primitive and can be serialized on its own)\n if (value === void 0) {\n return '[undefined]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n return `[object ${(Object.getPrototypeOf(value) as Prototype).constructor.name}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction jsonSize(value: any): number {\n return utf8Length(JSON.stringify(value));\n}\n", "/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst enum States {\n /** Pending */\n PENDING = 0,\n /** Resolved / OK */\n RESOLVED = 1,\n /** Rejected / Error */\n REJECTED = 2,\n}\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\nexport function resolvedSyncPromise(): PromiseLike;\nexport function resolvedSyncPromise(value: T | PromiseLike): PromiseLike;\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nexport function resolvedSyncPromise(value?: T | PromiseLike): PromiseLike {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nexport function rejectedSyncPromise(reason?: any): PromiseLike {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise implements PromiseLike {\n private _state: States = States.PENDING;\n private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]> = [];\n private _value: any;\n\n public constructor(\n executor: (resolve: (value?: T | PromiseLike | null) => void, reject: (reason?: any) => void) => void,\n ) {\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n public then(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: \u00AF\\_(\u30C4)_/\u00AF\n // TODO: FIXME\n resolve(result as any);\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n public catch(\n onrejected?: ((reason: any) => TResult | PromiseLike) | null,\n ): PromiseLike {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n public finally(onfinally?: (() => void) | null): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val as unknown as any);\n });\n });\n }\n\n /** JSDoc */\n private readonly _resolve = (value?: T | PromiseLike | null) => {\n this._setResult(States.RESOLVED, value);\n };\n\n /** JSDoc */\n private readonly _reject = (reason?: any) => {\n this._setResult(States.REJECTED, reason);\n };\n\n /** JSDoc */\n private readonly _setResult = (state: States, value?: T | PromiseLike | any) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value as PromiseLike).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n /** JSDoc */\n private readonly _executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler[1](this._value as unknown as any);\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };\n}\n\nexport { SyncPromise };\n", "import { SentryError } from './error';\nimport { rejectedSyncPromise, resolvedSyncPromise, SyncPromise } from './syncpromise';\n\nexport interface PromiseBuffer {\n // exposes the internal array so tests can assert on the state of it.\n // XXX: this really should not be public api.\n $: Array>;\n add(taskProducer: () => PromiseLike): PromiseLike;\n drain(timeout?: number): PromiseLike;\n}\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nexport function makePromiseBuffer(limit?: number): PromiseBuffer {\n const buffer: Array> = [];\n\n function isReady(): boolean {\n return limit === undefined || buffer.length < limit;\n }\n\n /**\n * Remove a promise from the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n function remove(task: PromiseLike): PromiseLike {\n return buffer.splice(buffer.indexOf(task), 1)[0];\n }\n\n /**\n * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n *\n * @param taskProducer A function producing any PromiseLike; In previous versions this used to be `task:\n * PromiseLike`, but under that model, Promises were instantly created on the call-site and their executor\n * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n * limit check.\n * @returns The original promise.\n */\n function add(taskProducer: () => PromiseLike): PromiseLike {\n if (!isReady()) {\n return rejectedSyncPromise(new SentryError('Not adding Promise due to buffer limit reached.'));\n }\n\n // start the task and add its promise to the queue\n const task = taskProducer();\n if (buffer.indexOf(task) === -1) {\n buffer.push(task);\n }\n void task\n .then(() => remove(task))\n // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n // have promises, so TS has to polyfill when down-compiling.)\n .then(null, () =>\n remove(task).then(null, () => {\n // We have to add another catch here because `remove()` starts a new promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n * `false` otherwise\n */\n function drain(timeout?: number): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let counter = buffer.length;\n\n if (!counter) {\n return resolve(true);\n }\n\n // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n const capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n\n // if all promises resolve in time, cancel the timer and resolve to `true`\n buffer.forEach(item => {\n void resolvedSyncPromise(item).then(() => {\n // eslint-disable-next-line no-plusplus\n if (!--counter) {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n }\n }, reject);\n });\n });\n }\n\n return {\n $: buffer,\n add,\n drain,\n };\n}\n", "/* eslint-disable deprecation/deprecation */\nimport { Severity, SeverityLevel } from '@sentry/types';\n\n// Note: Ideally the `SeverityLevel` type would be derived from `validSeverityLevels`, but that would mean either\n//\n// a) moving `validSeverityLevels` to `@sentry/types`,\n// b) moving the`SeverityLevel` type here, or\n// c) importing `validSeverityLevels` from here into `@sentry/types`.\n//\n// Option A would make `@sentry/types` a runtime dependency of `@sentry/utils` (not good), and options B and C would\n// create a circular dependency between `@sentry/types` and `@sentry/utils` (also not good). So a TODO accompanying the\n// type, reminding anyone who changes it to change this list also, will have to do.\n\nexport const validSeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'];\n\n/**\n * Converts a string-based level into a member of the deprecated {@link Severity} enum.\n *\n * @deprecated `severityFromString` is deprecated. Please use `severityLevelFromString` instead.\n *\n * @param level String representation of Severity\n * @returns Severity\n */\nexport function severityFromString(level: Severity | SeverityLevel | string): Severity {\n return severityLevelFromString(level) as Severity;\n}\n\n/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nexport function severityLevelFromString(level: SeverityLevel | string): SeverityLevel {\n return (level === 'warn' ? 'warning' : validSeverityLevels.includes(level) ? level : 'log') as SeverityLevel;\n}\n", "import { getGlobalObject } from './global';\nimport { dynamicRequire, isNodeEnv } from './node';\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\n */\ninterface TimestampSource {\n nowSeconds(): number;\n}\n\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nconst dateTimestampSource: TimestampSource = {\n nowSeconds: () => Date.now() / 1000,\n};\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\ninterface Performance {\n /**\n * The millisecond timestamp at which measurement began, measured in Unix time.\n */\n timeOrigin: number;\n /**\n * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n */\n now(): number;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance(): Performance | undefined {\n const { performance } = getGlobalObject();\n if (!performance || !performance.now) {\n return undefined;\n }\n\n // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n //\n // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n // performance.now() gives a date arbitrarily in the past.\n //\n // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n // undefined.\n //\n // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n // interact with data coming out of performance entries.\n //\n // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n // observed skews that can be as long as days, weeks or months.\n //\n // See https://github.com/getsentry/sentry-javascript/issues/2590.\n //\n // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n // transactions of long-lived web pages.\n const timeOrigin = Date.now() - performance.now();\n\n return {\n now: () => performance.now(),\n timeOrigin,\n };\n}\n\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance(): Performance | undefined {\n try {\n const perfHooks = dynamicRequire(module, 'perf_hooks') as { performance: Performance };\n return perfHooks.performance;\n } catch (_) {\n return undefined;\n }\n}\n\n/**\n * The Performance API implementation for the current platform, if available.\n */\nconst platformPerformance: Performance | undefined = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\n\nconst timestampSource: TimestampSource =\n platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1000,\n };\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nexport const dateTimestampInSeconds: () => number = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nexport const timestampInSeconds: () => number = timestampSource.nowSeconds.bind(timestampSource);\n\n// Re-exported with an old name for backwards-compatibility.\nexport const timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nexport const usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nexport let _browserPerformanceTimeOriginMode: string;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nexport const browserPerformanceTimeOrigin = ((): number | undefined => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = getGlobalObject();\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n const threshold = 3600 * 1000;\n const performanceNow = performance.now();\n const dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n const timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n const timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing && performance.timing.navigationStart;\n const hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n const navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n", "import { TraceparentData } from '@sentry/types';\n\nexport const TRACEPARENT_REGEXP = new RegExp(\n '^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nexport function extractTraceparentData(traceparent: string): TraceparentData | undefined {\n const matches = traceparent.match(TRACEPARENT_REGEXP);\n if (matches) {\n let parentSampled: boolean | undefined;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n }\n return undefined;\n}\n", "import {\n Attachment,\n AttachmentItem,\n DataCategory,\n Envelope,\n EnvelopeItem,\n EnvelopeItemType,\n TextEncoderInternal,\n} from '@sentry/types';\n\nimport { dropUndefinedKeys } from './object';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function createEnvelope(headers: E[0], items: E[1] = []): E {\n return [headers, items] as E;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function addItemToEnvelope(envelope: E, newItem: E[1][number]): E {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] as E;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n */\nexport function forEachEnvelopeItem(\n envelope: Envelope,\n callback: (envelopeItem: E[1][number], envelopeItemType: E[1][number][0]['type']) => void,\n): void {\n const envelopeItems = envelope[1];\n envelopeItems.forEach((envelopeItem: EnvelopeItem) => {\n const envelopeItemType = envelopeItem[0].type;\n callback(envelopeItem, envelopeItemType);\n });\n}\n\nfunction encodeUTF8(input: string, textEncoder?: TextEncoderInternal): Uint8Array {\n const utf8 = textEncoder || new TextEncoder();\n return utf8.encode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nexport function serializeEnvelope(envelope: Envelope, textEncoder?: TextEncoderInternal): string | Uint8Array {\n const [envHeaders, items] = envelope;\n\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts: string | Uint8Array[] = JSON.stringify(envHeaders);\n\n function append(next: string | Uint8Array): void {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts, textEncoder), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next, textEncoder) : next);\n }\n }\n\n for (const item of items) {\n const [itemHeaders, payload] = item as typeof items[number];\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n append(typeof payload === 'string' || payload instanceof Uint8Array ? payload : JSON.stringify(payload));\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers: Uint8Array[]): Uint8Array {\n const totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n const merged = new Uint8Array(totalLength);\n let offset = 0;\n for (const buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\n/**\n * Creates attachment envelope items\n */\nexport function createAttachmentEnvelopeItem(\n attachment: Attachment,\n textEncoder?: TextEncoderInternal,\n): AttachmentItem {\n const buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data, textEncoder) : attachment.data;\n\n return [\n dropUndefinedKeys({\n type: 'attachment',\n length: buffer.length,\n filename: attachment.filename,\n content_type: attachment.contentType,\n attachment_type: attachment.attachmentType,\n }),\n buffer,\n ];\n}\n\nconst ITEM_TYPE_TO_DATA_CATEGORY_MAP: Record = {\n session: 'session',\n sessions: 'session',\n attachment: 'attachment',\n transaction: 'transaction',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nexport function envelopeItemTypeToDataCategory(type: EnvelopeItemType): DataCategory {\n return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n", "import { ClientReport, ClientReportEnvelope, ClientReportItem } from '@sentry/types';\n\nimport { createEnvelope } from './envelope';\nimport { dateTimestampInSeconds } from './time';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nexport function createClientReportEnvelope(\n discarded_events: ClientReport['discarded_events'],\n dsn?: string,\n timestamp?: number,\n): ClientReportEnvelope {\n const clientReportItem: ClientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n", "import { TransportMakeRequestResponse } from '@sentry/types';\n\n// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\nexport type RateLimits = Record;\n\nexport const DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nexport function parseRetryAfterHeader(header: string, now: number = Date.now()): number {\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that given category is disabled until for rate limiting\n */\nexport function disabledUntil(limits: RateLimits, category: string): number {\n return limits[category] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nexport function isRateLimited(limits: RateLimits, category: string, now: number = Date.now()): boolean {\n return disabledUntil(limits, category) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n * Returns true if headers contains a non-empty rate limiting header.\n */\nexport function updateRateLimits(\n limits: RateLimits,\n { statusCode, headers }: TransportMakeRequestResponse,\n now: number = Date.now(),\n): RateLimits {\n const updatedRateLimits: RateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n const rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n const retryAfterHeader = headers && headers['retry-after'];\n\n if (rateLimitHeader) {\n /**\n * rate limit headers are of the form\n *
,
,..\n * where each
is of the form\n * : : : \n * where\n * is a delay in seconds\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 */\n for (const limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories] = limit.split(':', 2);\n const headerDelay = parseInt(retryAfter, 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (const category of categories.split(';')) {\n updatedRateLimits[category] = now + delay;\n }\n }\n }\n } else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n } else if (statusCode === 429) {\n updatedRateLimits.all = now + 60 * 1000;\n }\n\n return updatedRateLimits;\n}\n", "import { Baggage, BaggageObj, HttpHeaderValue, TraceparentData } from '@sentry/types';\n\nimport { isString } from './is';\nimport { logger } from './logger';\n\nexport const BAGGAGE_HEADER_NAME = 'baggage';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nexport const MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/** Create an instance of Baggage */\nexport function createBaggage(initItems: BaggageObj, baggageString: string = '', mutable: boolean = true): Baggage {\n return [{ ...initItems }, baggageString, mutable];\n}\n\n/** Get a value from baggage */\nexport function getBaggageValue(baggage: Baggage, key: keyof BaggageObj): BaggageObj[keyof BaggageObj] {\n return baggage[0][key];\n}\n\n/** Add a value to baggage */\nexport function setBaggageValue(baggage: Baggage, key: keyof BaggageObj, value: BaggageObj[keyof BaggageObj]): void {\n if (isBaggageMutable(baggage)) {\n baggage[0][key] = value;\n }\n}\n\n/** Check if the Sentry part of the passed baggage (i.e. the first element in the tuple) is empty */\nexport function isSentryBaggageEmpty(baggage: Baggage): boolean {\n return Object.keys(baggage[0]).length === 0;\n}\n\n/** Returns Sentry specific baggage values */\nexport function getSentryBaggageItems(baggage: Baggage): BaggageObj {\n return baggage[0];\n}\n\n/**\n * Returns 3rd party baggage string of @param baggage\n * @param baggage\n */\nexport function getThirdPartyBaggage(baggage: Baggage): string {\n return baggage[1];\n}\n\n/**\n * Checks if baggage is mutable\n * @param baggage\n * @returns true if baggage is mutable, else false\n */\nexport function isBaggageMutable(baggage: Baggage): boolean {\n return baggage[2];\n}\n\n/**\n * Sets the passed baggage immutable\n * @param baggage\n */\nexport function setBaggageImmutable(baggage: Baggage): void {\n baggage[2] = false;\n}\n\n/** Serialize a baggage object */\nexport function serializeBaggage(baggage: Baggage): string {\n return Object.keys(baggage[0]).reduce((prev, key: keyof BaggageObj) => {\n const val = baggage[0][key] as string;\n const baggageEntry = `${SENTRY_BAGGAGE_KEY_PREFIX}${encodeURIComponent(key)}=${encodeURIComponent(val)}`;\n const newVal = prev === '' ? baggageEntry : `${prev},${baggageEntry}`;\n if (newVal.length > MAX_BAGGAGE_STRING_LENGTH) {\n __DEBUG_BUILD__ &&\n logger.warn(`Not adding key: ${key} with val: ${val} to baggage due to exceeding baggage size limits.`);\n return prev;\n } else {\n return newVal;\n }\n }, baggage[1]);\n}\n\n/**\n * Parse a baggage header from a string or a string array and return a Baggage object\n *\n * If @param includeThirdPartyEntries is set to true, third party baggage entries are added to the Baggage object\n * (This is necessary for merging potentially pre-existing baggage headers in outgoing requests with\n * our `sentry-` values)\n */\nexport function parseBaggageHeader(\n inputBaggageValue: HttpHeaderValue,\n includeThirdPartyEntries: boolean = false,\n): Baggage {\n // Adding this check here because we got reports of this function failing due to the input value\n // not being a string. This debug log might help us determine what's going on here.\n if ((!Array.isArray(inputBaggageValue) && !isString(inputBaggageValue)) || typeof inputBaggageValue === 'number') {\n __DEBUG_BUILD__ &&\n logger.warn(\n '[parseBaggageHeader] Received input value of incompatible type: ',\n typeof inputBaggageValue,\n inputBaggageValue,\n );\n\n // Gonna early-return an empty baggage object so that we don't fail later on\n return createBaggage({}, '');\n }\n\n const baggageEntries = (isString(inputBaggageValue) ? inputBaggageValue : inputBaggageValue.join(','))\n .split(',')\n .map(entry => entry.trim())\n .filter(entry => entry !== '' && (includeThirdPartyEntries || SENTRY_BAGGAGE_KEY_PREFIX_REGEX.test(entry)));\n\n return baggageEntries.reduce(\n ([baggageObj, baggageString], curr) => {\n const [key, val] = curr.split('=');\n if (SENTRY_BAGGAGE_KEY_PREFIX_REGEX.test(key)) {\n const baggageKey = decodeURIComponent(key.split('-')[1]);\n return [\n {\n ...baggageObj,\n [baggageKey]: decodeURIComponent(val),\n },\n baggageString,\n true,\n ];\n } else {\n return [baggageObj, baggageString === '' ? curr : `${baggageString},${curr}`, true];\n }\n },\n [{}, '', true],\n );\n}\n\n/**\n * Merges the baggage header we saved from the incoming request (or meta tag) with\n * a possibly created or modified baggage header by a third party that's been added\n * to the outgoing request header.\n *\n * In case @param headerBaggageString exists, we can safely add the the 3rd party part of @param headerBaggage\n * with our @param incomingBaggage. This is possible because if we modified anything beforehand,\n * it would only affect parts of the sentry baggage (@see Baggage interface).\n *\n * @param incomingBaggage the baggage header of the incoming request that might contain sentry entries\n * @param thirdPartyBaggageHeader possibly existing baggage header string or string[] added from a third\n * party to the request headers\n *\n * @return a merged and serialized baggage string to be propagated with the outgoing request\n */\nexport function mergeAndSerializeBaggage(incomingBaggage?: Baggage, thirdPartyBaggageHeader?: HttpHeaderValue): string {\n if (!incomingBaggage && !thirdPartyBaggageHeader) {\n return '';\n }\n\n const headerBaggage = (thirdPartyBaggageHeader && parseBaggageHeader(thirdPartyBaggageHeader, true)) || undefined;\n const thirdPartyHeaderBaggage = headerBaggage && getThirdPartyBaggage(headerBaggage);\n\n const finalBaggage = createBaggage((incomingBaggage && incomingBaggage[0]) || {}, thirdPartyHeaderBaggage || '');\n return serializeBaggage(finalBaggage);\n}\n\n/**\n * Helper function that takes a raw baggage string (if available) and the processed sentry-trace header\n * data (if available), parses the baggage string and creates a Baggage object\n * If there is no baggage string, it will create an empty Baggage object.\n * In a second step, this functions determines if the created Baggage object should be set immutable\n * to prevent mutation of the Sentry data.\n *\n * Extracted this logic to a function because it's duplicated in a lot of places.\n *\n * @param rawBaggageValue\n * @param sentryTraceHeader\n */\nexport function parseBaggageSetMutability(\n rawBaggageValue: HttpHeaderValue | false | undefined,\n sentryTraceHeader: TraceparentData | string | false | undefined | null,\n): Baggage {\n const baggage = parseBaggageHeader(rawBaggageValue || '');\n\n // Because we are always creating a Baggage object by calling `parseBaggageHeader` above\n // (either a filled one or an empty one, even if we didn't get a `baggage` header),\n // we only need to check if we have a sentry-trace header or not. As soon as we have it,\n // we set baggage immutable. In case we don't get a sentry-trace header, we can assume that\n // this SDK is the head of the trace and thus we still permit mutation at this time.\n // There is one exception though, which is that we get a baggage-header with `sentry-`\n // items but NO sentry-trace header. In this case we also set the baggage immutable for now\n // but if smoething like this would ever happen, we should revisit this and determine\n // what this would actually mean for the trace (i.e. is this SDK the head?, what happened\n // before that we don't have a sentry-trace header?, etc)\n (sentryTraceHeader || !isSentryBaggageEmpty(baggage)) && setBaggageImmutable(baggage);\n\n return baggage;\n}\n", "import { SerializedSession, Session, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils';\n\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nexport function makeSession(context?: Omit): Session {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session: Session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nexport function updateSession(session: Session, context: SessionContext = {}): void {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || timestampInSeconds();\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. \u2014 Kamil\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n const duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nexport function closeSession(session: Session, status?: Exclude): void {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session: Session): SerializedSession {\n return dropUndefinedKeys({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n", "/* eslint-disable max-lines */\nimport {\n Attachment,\n Breadcrumb,\n CaptureContext,\n Context,\n Contexts,\n Event,\n EventHint,\n EventProcessor,\n Extra,\n Extras,\n Primitive,\n RequestSession,\n Scope as ScopeInterface,\n ScopeContext,\n Session,\n Severity,\n SeverityLevel,\n Span,\n Transaction,\n User,\n} from '@sentry/types';\nimport {\n dateTimestampInSeconds,\n getGlobalSingleton,\n isPlainObject,\n isThenable,\n logger,\n SyncPromise,\n} from '@sentry/utils';\n\nimport { updateSession } from './session';\n\n/**\n * Absolute maximum number of breadcrumbs added to an event.\n * The `maxBreadcrumbs` option cannot be higher than this value.\n */\nconst MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void>;\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[];\n\n /** User */\n protected _user: User;\n\n /** Tags */\n protected _tags: { [key: string]: Primitive };\n\n /** Extra */\n protected _extra: Extras;\n\n /** Contexts */\n protected _contexts: Contexts;\n\n /** Attachments */\n protected _attachments: Attachment[];\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n protected _sdkProcessingMetadata: { [key: string]: unknown };\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n // eslint-disable-next-line deprecation/deprecation\n protected _level?: Severity | SeverityLevel;\n\n /** Transaction Name */\n protected _transactionName?: string;\n\n /** Span */\n protected _span?: Span;\n\n /** Session */\n protected _session?: Session;\n\n /** Request Mode Session Status */\n protected _requestSession?: RequestSession;\n\n public constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n }\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n public static clone(scope?: Scope): Scope {\n const newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n newScope._requestSession = scope._requestSession;\n newScope._attachments = [...scope._attachments];\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n this._user = user || {};\n if (this._session) {\n updateSession(this._session, { user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n public getRequestSession(): RequestSession | undefined {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n public setRequestSession(requestSession?: RequestSession): this {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel,\n ): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts = { ...this._contexts, [key]: context };\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n public getTransaction(): Transaction | undefined {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n const span = this.getSpan();\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n public setSession(session?: Session): this {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n const updatedScope = (captureContext as (scope: T) => T)(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n if (captureContext._requestSession) {\n this._requestSession = captureContext._requestSession;\n }\n } else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext as ScopeContext;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n if (captureContext.requestSession) {\n this._requestSession = captureContext.requestSession;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n this._attachments = [];\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? Math.min(maxBreadcrumbs, MAX_BREADCRUMBS) : MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs);\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addAttachment(attachment: Attachment): this {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getAttachments(): Attachment[] {\n return this._attachments;\n }\n\n /**\n * @inheritDoc\n */\n public clearAttachments(): this {\n this._attachments = [];\n return this;\n }\n\n /**\n * Applies the current context and fingerprint to the event.\n * Note that breadcrumbs will be added by the client.\n * Also if the event has already breadcrumbs on it, we do not merge them.\n * @param event Event\n * @param hint May contain additional information about the original exception.\n * @hidden\n */\n public applyToEvent(event: Event, hint: EventHint = {}): PromiseLike {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n const transactionName = this._span.transaction && this._span.transaction.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n event.sdkProcessingMetadata = { ...event.sdkProcessingMetadata, ...this._sdkProcessingMetadata };\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n public setSDKProcessingMetadata(newData: { [key: string]: unknown }): this {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n protected _notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint: EventHint,\n index: number = 0,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) as Event | null;\n\n __DEBUG_BUILD__ &&\n processor.id &&\n result === null &&\n logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n if (isThenable(result)) {\n void result\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n private _applyFingerprint(event: Event): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n}\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors(): EventProcessor[] {\n return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n getGlobalEventProcessors().push(callback);\n}\n", "/* eslint-disable max-lines */\nimport {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Hub as HubInterface,\n Integration,\n IntegrationClass,\n Primitive,\n Session,\n SessionContext,\n Severity,\n SeverityLevel,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport {\n consoleSandbox,\n dateTimestampInSeconds,\n getGlobalObject,\n getGlobalSingleton,\n isNodeEnv,\n logger,\n uuid4,\n} from '@sentry/utils';\n\nimport { Scope } from './scope';\nimport { closeSession, makeSession, updateSession } from './session';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = 4;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * A layer in the process stack.\n * @hidden\n */\nexport interface Layer {\n client?: Client;\n scope?: Scope;\n}\n\n/**\n * An object that contains a hub and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n __SENTRY__?: {\n hub?: Hub;\n /**\n * Extra Hub properties injected by various SDKs\n */\n integrations?: Integration[];\n extensions?: {\n /** Hack to prevent bundlers from breaking our usage of the domain package in the cross-platform Hub package */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n domain?: { [key: string]: any };\n } & {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n}\n\n/**\n * @inheritDoc\n */\nexport class Hub implements HubInterface {\n /** Is a {@link Layer}[] containing the client and scope */\n private readonly _stack: Layer[] = [{}];\n\n /** Contains the last event id of a captured event. */\n private _lastEventId?: string;\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n public constructor(client?: Client, scope: Scope = new Scope(), private readonly _version: number = API_VERSION) {\n this.getStackTop().scope = scope;\n if (client) {\n this.bindClient(client);\n }\n }\n\n /**\n * @inheritDoc\n */\n public isOlderThan(version: number): boolean {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n public bindClient(client?: Client): void {\n const top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n public pushScope(): Scope {\n // We want to clone the content of prev scope\n const scope = Scope.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n public popScope(): boolean {\n if (this.getStack().length <= 1) return false;\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n */\n public withScope(callback: (scope: Scope) => void): void {\n const scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n public getClient(): C | undefined {\n return this.getStackTop().client as C;\n }\n\n /** Returns the scope of the top stack. */\n public getScope(): Scope | undefined {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n public getStack(): Layer[] {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error('Sentry syntheticException');\n this._withClient((client, scope) => {\n client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level?: Severity | SeverityLevel,\n hint?: EventHint,\n ): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error(message);\n this._withClient((client, scope) => {\n client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (event.type !== 'transaction') {\n this._lastEventId = eventId;\n }\n\n this._withClient((client, scope) => {\n client.captureEvent(event, { ...hint, event_id: eventId }, scope);\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n const { scope, client } = this.getStackTop();\n\n if (!scope || !client) return;\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): void {\n const scope = this.getScope();\n if (scope) scope.setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): void {\n const scope = this.getScope();\n if (scope) scope.setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): void {\n const scope = this.getScope();\n if (scope) scope.setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): void {\n const scope = this.getScope();\n if (scope) scope.setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): void {\n const scope = this.getScope();\n if (scope) scope.setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setContext(name: string, context: { [key: string]: any } | null): void {\n const scope = this.getScope();\n if (scope) scope.setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n public configureScope(callback: (scope: Scope) => void): void {\n const { scope, client } = this.getStackTop();\n if (scope && client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n public run(callback: (hub: Hub) => void): void {\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n const client = this.getClient();\n if (!client) return null;\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n __DEBUG_BUILD__ && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public startTransaction(context: TransactionContext, customSamplingContext?: CustomSamplingContext): Transaction {\n return this._callExtensionMethod('startTransaction', context, customSamplingContext);\n }\n\n /**\n * @inheritDoc\n */\n public traceHeaders(): { [key: string]: string } {\n return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(endSession: boolean = false): void {\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n */\n public endSession(): void {\n const layer = this.getStackTop();\n const scope = layer && layer.scope;\n const session = scope && scope.getSession();\n if (session) {\n closeSession(session);\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n if (scope) {\n scope.setSession();\n }\n }\n\n /**\n * @inheritDoc\n */\n public startSession(context?: SessionContext): Session {\n const { scope, client } = this.getStackTop();\n const { release, environment } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const global = getGlobalObject<{ navigator?: { userAgent?: string } }>();\n const { userAgent } = global.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n ...(scope && { user: scope.getUser() }),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n if (scope) {\n // End existing session if there's one\n const currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n }\n\n return session;\n }\n\n /**\n * Sends the current Session on the scope\n */\n private _sendSessionUpdate(): void {\n const { scope, client } = this.getStackTop();\n if (!scope) return;\n\n const session = scope.getSession();\n if (session) {\n if (client && client.captureSession) {\n client.captureSession(session);\n }\n }\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n private _withClient(callback: (client: Client, scope: Scope | undefined) => void): void {\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(client, scope);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _callExtensionMethod(method: string, ...args: any[]): T {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n __DEBUG_BUILD__ && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier(): Carrier {\n const carrier = getGlobalObject();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub: Hub): Hub {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub(): Hub {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry: Carrier): Hub {\n try {\n const sentry = getMainCarrier().__SENTRY__;\n const activeDomain = sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n\n // If there's no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n const registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n } catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n return getGlobalSingleton('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n if (!carrier) return false;\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n", "import {\n Breadcrumb,\n CaptureContext,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Primitive,\n Severity,\n SeverityLevel,\n TransactionContext,\n User,\n} from '@sentry/types';\n\nimport { getCurrentHub, Hub } from './hub';\nimport { Scope } from './scope';\n\n// Note: All functions in this file are typed with a return value of `ReturnType`,\n// where HUB_FUNCTION is some method on the Hub class.\n//\n// This is done to make sure the top level SDK methods stay in sync with the hub methods.\n// Although every method here has an explicit return type, some of them (that map to void returns) do not\n// contain `return` keywords. This is done to save on bundle size, as `return` is not minifiable.\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @param captureContext Additional scope data to apply to exception event.\n * @returns The generated eventId.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function captureException(exception: any, captureContext?: CaptureContext): ReturnType {\n return getCurrentHub().captureException(exception, { captureContext });\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param Severity Define the level of the message.\n * @returns The generated eventId.\n */\nexport function captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n captureContext?: CaptureContext | Severity | SeverityLevel,\n): ReturnType {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nexport function captureEvent(event: Event, hint?: EventHint): ReturnType {\n return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nexport function configureScope(callback: (scope: Scope) => void): ReturnType {\n getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nexport function addBreadcrumb(breadcrumb: Breadcrumb): ReturnType {\n getCurrentHub().addBreadcrumb(breadcrumb);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function setContext(name: string, context: { [key: string]: any } | null): ReturnType {\n getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nexport function setExtras(extras: Extras): ReturnType {\n getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nexport function setExtra(key: string, extra: Extra): ReturnType {\n getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nexport function setTags(tags: { [key: string]: Primitive }): ReturnType {\n getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nexport function setTag(key: string, value: Primitive): ReturnType {\n getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nexport function setUser(user: User | null): ReturnType {\n getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nexport function withScope(callback: (scope: Scope) => void): ReturnType {\n getCurrentHub().withScope(callback);\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.finish()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n */\nexport function startTransaction(\n context: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): ReturnType {\n return getCurrentHub().startTransaction({ ...context }, customSamplingContext);\n}\n", "import { DsnComponents, DsnLike } from '@sentry/types';\nimport { dsnToString, makeDsn, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn: DsnComponents): string {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn: DsnComponents): string {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n });\n}\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 */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(dsn: DsnComponents, tunnel?: string): string {\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(\n dsnLike: DsnLike,\n dialogOptions: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n user?: { name?: string; email?: string };\n },\n): string {\n const dsn = makeDsn(dsnLike);\n const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (const key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'user') {\n const user = dialogOptions.user;\n if (!user) {\n continue;\n }\n if (user.name) {\n encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n }\n if (user.email) {\n encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] as string)}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n", "import {\n Baggage,\n DsnComponents,\n DynamicSamplingContext,\n Event,\n EventEnvelope,\n EventEnvelopeHeaders,\n EventItem,\n SdkInfo,\n SdkMetadata,\n Session,\n SessionAggregates,\n SessionEnvelope,\n SessionItem,\n} from '@sentry/types';\nimport { createEnvelope, dropUndefinedKeys, dsnToString, getSentryBaggageItems } from '@sentry/utils';\n\n/** Extract sdk info from from the API metadata */\nfunction getSdkMetadataForEnvelopeHeader(metadata?: SdkMetadata): SdkInfo | undefined {\n if (!metadata || !metadata.sdk) {\n return;\n }\n const { name, version } = metadata.sdk;\n return { name, version };\n}\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event: Event, sdkInfo?: SdkInfo): Event {\n if (!sdkInfo) {\n return event;\n }\n event.sdk = event.sdk || {};\n event.sdk.name = event.sdk.name || sdkInfo.name;\n event.sdk.version = event.sdk.version || sdkInfo.version;\n event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];\n event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];\n return event;\n}\n\n/** Creates an envelope from a Session */\nexport function createSessionEnvelope(\n session: Session | SessionAggregates,\n dsn: DsnComponents,\n metadata?: SdkMetadata,\n tunnel?: string,\n): SessionEnvelope {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n const envelopeHeaders = {\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && { dsn: dsnToString(dsn) }),\n };\n\n const envelopeItem: SessionItem =\n 'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session];\n\n return createEnvelope(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nexport function createEventEnvelope(\n event: Event,\n dsn: DsnComponents,\n metadata?: SdkMetadata,\n tunnel?: string,\n): EventEnvelope {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n const eventType = event.type || 'event';\n\n const { transactionSampling } = event.sdkProcessingMetadata || {};\n const { method: samplingMethod, rate: sampleRate } = transactionSampling || {};\n\n enhanceEventWithSdkInfo(event, metadata && metadata.sdk);\n\n const envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);\n\n // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n delete event.sdkProcessingMetadata;\n\n const eventItem: EventItem = [\n {\n type: eventType,\n sample_rates: [{ id: samplingMethod, rate: sampleRate }],\n },\n event,\n ];\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\nfunction createEventEnvelopeHeaders(\n event: Event,\n sdkInfo: SdkInfo | undefined,\n tunnel: string | undefined,\n dsn: DsnComponents,\n): EventEnvelopeHeaders {\n const baggage: Baggage | undefined = event.sdkProcessingMetadata && event.sdkProcessingMetadata.baggage;\n const dynamicSamplingContext = baggage && getSentryBaggageItems(baggage);\n\n return {\n event_id: event.event_id as string,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && { dsn: dsnToString(dsn) }),\n ...(event.type === 'transaction' &&\n dynamicSamplingContext && {\n trace: dropUndefinedKeys({ ...dynamicSamplingContext }) as DynamicSamplingContext,\n }),\n };\n}\n", "import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { Integration, Options } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport type IntegrationIndex = {\n [key: string]: Integration;\n};\n\n/**\n * @private\n */\nfunction filterDuplicates(integrations: Integration[]): Integration[] {\n return integrations.reduce((acc, integrations) => {\n if (acc.every(accIntegration => integrations.name !== accIntegration.name)) {\n acc.push(integrations);\n }\n return acc;\n }, [] as Integration[]);\n}\n\n/** Gets integration to install */\nexport function getIntegrationsToSetup(options: Options): Integration[] {\n const defaultIntegrations = (options.defaultIntegrations && [...options.defaultIntegrations]) || [];\n const userIntegrations = options.integrations;\n\n let integrations: Integration[] = [...filterDuplicates(defaultIntegrations)];\n\n if (Array.isArray(userIntegrations)) {\n // Filter out integrations that are also included in user options\n integrations = [\n ...integrations.filter(integrations =>\n userIntegrations.every(userIntegration => userIntegration.name !== integrations.name),\n ),\n // And filter out duplicated user options integrations\n ...filterDuplicates(userIntegrations),\n ];\n } else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(integrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n }\n\n // Make sure that if present, `Debug` integration will always run last\n const integrationsNames = integrations.map(i => i.name);\n const alwaysLastToRun = 'Debug';\n if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n integrations.push(...integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1));\n }\n\n return integrations;\n}\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(integrations: Integration[]): IntegrationIndex {\n const integrationIndex: IntegrationIndex = {};\n\n integrations.forEach(integration => {\n integrationIndex[integration.name] = integration;\n\n if (installedIntegrations.indexOf(integration.name) === -1) {\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n __DEBUG_BUILD__ && logger.log(`Integration installed: ${integration.name}`);\n }\n });\n\n return integrationIndex;\n}\n", "/* eslint-disable max-lines */\nimport { Scope, updateSession } from '@sentry/hub';\nimport {\n Client,\n ClientOptions,\n DataCategory,\n DsnComponents,\n Envelope,\n Event,\n EventDropReason,\n EventHint,\n Integration,\n IntegrationClass,\n Outcome,\n Session,\n SessionAggregates,\n Severity,\n SeverityLevel,\n Transport,\n} from '@sentry/types';\nimport {\n addItemToEnvelope,\n checkOrSetAlreadyCaught,\n createAttachmentEnvelopeItem,\n dateTimestampInSeconds,\n isPlainObject,\n isPrimitive,\n isThenable,\n logger,\n makeDsn,\n normalize,\n rejectedSyncPromise,\n resolvedSyncPromise,\n SentryError,\n SyncPromise,\n truncate,\n uuid4,\n} from '@sentry/utils';\n\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope';\nimport { IntegrationIndex, setupIntegrations } from './integration';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\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, 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(options);\n * }\n *\n * // ...\n * }\n */\nexport abstract class BaseClient implements Client {\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n protected readonly _dsn?: DsnComponents;\n\n protected readonly _transport?: Transport;\n\n /** Array of set up integrations. */\n protected _integrations: IntegrationIndex = {};\n\n /** Indicates whether this client's integrations have been set up. */\n protected _integrationsInitialized: boolean = false;\n\n /** Number of calls being processed */\n protected _numProcessing: number = 0;\n\n /** Holds flushable */\n private _outcomes: { [key: string]: number } = {};\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n protected constructor(options: O) {\n this._options = options;\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options.tunnel);\n this._transport = options.transport({\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n } else {\n __DEBUG_BUILD__ && logger.warn('No DSN provided, client will not do anything.');\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n __DEBUG_BUILD__ && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this.eventFromException(exception, hint)\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level?: Severity | SeverityLevel,\n hint?: EventHint,\n scope?: Scope,\n ): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n\n const promisedEvent = isPrimitive(message)\n ? this.eventFromMessage(String(message), level, hint)\n : this.eventFromException(message, hint);\n\n this._process(\n promisedEvent\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n __DEBUG_BUILD__ && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this._captureEvent(event, hint, scope).then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(session: Session): void {\n if (!this._isEnabled()) {\n __DEBUG_BUILD__ && logger.warn('SDK not enabled, will not capture session.');\n return;\n }\n\n if (!(typeof session.release === 'string')) {\n __DEBUG_BUILD__ && logger.warn('Discarded session because of missing or non-string release');\n } else {\n this.sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n updateSession(session, { init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n public getDsn(): DsnComponents | undefined {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n public getOptions(): O {\n return this._options;\n }\n\n /**\n * @inheritDoc\n */\n public getTransport(): Transport | undefined {\n return this._transport;\n }\n\n /**\n * @inheritDoc\n */\n public flush(timeout?: number): PromiseLike {\n const transport = this._transport;\n if (transport) {\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n });\n } else {\n return resolvedSyncPromise(true);\n }\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n return result;\n });\n }\n\n /**\n * Sets up the integrations\n */\n public setupIntegrations(): void {\n if (this._isEnabled() && !this._integrationsInitialized) {\n this._integrations = setupIntegrations(this._options.integrations);\n this._integrationsInitialized = true;\n }\n }\n\n /**\n * Gets an installed integration by its `id`.\n *\n * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n */\n public getIntegrationById(integrationId: string): Integration | undefined {\n return this._integrations[integrationId];\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n try {\n return (this._integrations[integration.id] as T) || null;\n } catch (_oO) {\n __DEBUG_BUILD__ && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event, hint: EventHint = {}): void {\n if (this._dsn) {\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (const attachment of hint.attachments || []) {\n env = addItemToEnvelope(\n env,\n createAttachmentEnvelopeItem(\n attachment,\n this._options.transportOptions && this._options.transportOptions.textEncoder,\n ),\n );\n }\n\n this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendSession(session: Session | SessionAggregates): void {\n if (this._dsn) {\n const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n public recordDroppedEvent(reason: EventDropReason, category: DataCategory): void {\n if (this._options.sendClientReports) {\n // We want to track each category (error, transaction, session) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n // With typescript 4.1 we could even use template literal types\n const key = `${reason}:${category}`;\n __DEBUG_BUILD__ && logger.log(`Adding outcome: \"${key}\"`);\n\n // The following works because undefined + 1 === NaN and NaN is falsy\n this._outcomes[key] = this._outcomes[key] + 1 || 1;\n }\n }\n\n /** Updates existing session based on the provided event */\n protected _updateSessionFromEvent(session: Session, event: Event): void {\n let crashed = false;\n let errored = false;\n const exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (const ex of exceptions) {\n const mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n const sessionNonTerminal = session.status === 'ok';\n const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n updateSession(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n protected _isClientDoneProcessing(timeout?: number): PromiseLike {\n return new SyncPromise(resolve => {\n let ticked: number = 0;\n const tick: number = 1;\n\n const interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n protected _isEnabled(): boolean {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n }\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 protected _prepareEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = this.getOptions();\n const prepared: Event = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n\n this._applyClientOptions(prepared);\n this._applyIntegrationsMetadata(prepared);\n\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 let finalScope = scope;\n if (hint.captureContext) {\n finalScope = Scope.clone(finalScope).update(hint.captureContext);\n }\n\n // We prepare the result here with a resolved Event.\n let result = resolvedSyncPromise(prepared);\n\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 // Collect attachments from the hint and scope\n const attachments = [...(hint.attachments || []), ...finalScope.getAttachments()];\n\n if (attachments.length) {\n hint.attachments = attachments;\n }\n\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n\n return result.then(evt => {\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return this._normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\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 protected _normalizeEvent(event: Event | null, depth: number, maxBreadth: number): Event | null {\n if (!event) {\n return null;\n }\n\n const normalized: Event = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }),\n };\n\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 && normalized.contexts) {\n normalized.contexts.trace = event.contexts.trace;\n\n // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n if (event.contexts.trace.data) {\n normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n }\n }\n\n // event.spans[].data may contain circular/dangerous data so we need to normalize it\n if (event.spans) {\n normalized.spans = event.spans.map(span => {\n // We cannot use the spread operator here because `toJSON` on `span` is non-enumerable\n if (span.data) {\n span.data = normalize(span.data, depth, maxBreadth);\n }\n return span;\n });\n }\n\n return normalized;\n }\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 protected _applyClientOptions(event: Event): void {\n const options = this.getOptions();\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : 'production';\n }\n\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n\n const exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n const request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n }\n\n /**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\n protected _applyIntegrationsMetadata(event: Event): void {\n const integrationsArray = Object.keys(this._integrations);\n if (integrationsArray.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationsArray];\n }\n }\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 protected _captureEvent(event: Event, hint: EventHint = {}, scope?: Scope): PromiseLike {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n __DEBUG_BUILD__ && logger.warn(reason);\n return undefined;\n },\n );\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 protected _processEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\n const { beforeSend, sampleRate } = this.getOptions();\n\n if (!this._isEnabled()) {\n return rejectedSyncPromise(new SentryError('SDK not enabled, will not capture event.'));\n }\n\n const 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 this.recordDroppedEvent('sample_rate', 'error');\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n ),\n );\n }\n\n return this._prepareEvent(event, hint, scope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', event.type || 'error');\n throw new SentryError('An event processor returned null, will not send event.');\n }\n\n const isInternalException = hint.data && (hint.data as { __sentry__: boolean }).__sentry__ === true;\n if (isInternalException || isTransaction || !beforeSend) {\n return prepared;\n }\n\n const beforeSendResult = beforeSend(prepared, hint);\n return _ensureBeforeSendRv(beforeSendResult);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', event.type || 'error');\n throw new SentryError('`beforeSend` returned `null`, will not send event.');\n }\n\n const session = scope && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason as Error,\n });\n throw new SentryError(\n `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\n /**\n * Occupies the client with processing and event\n */\n protected _process(promise: PromiseLike): void {\n this._numProcessing += 1;\n void promise.then(\n value => {\n this._numProcessing -= 1;\n return value;\n },\n reason => {\n this._numProcessing -= 1;\n return reason;\n },\n );\n }\n\n /**\n * @inheritdoc\n */\n protected _sendEnvelope(envelope: Envelope): void {\n if (this._transport && this._dsn) {\n this._transport.send(envelope).then(null, reason => {\n __DEBUG_BUILD__ && logger.error('Error while sending event:', reason);\n });\n } else {\n __DEBUG_BUILD__ && logger.error('Transport disabled');\n }\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n protected _clearOutcomes(): Outcome[] {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.keys(outcomes).map(key => {\n const [reason, category] = key.split(':') as [EventDropReason, DataCategory];\n return {\n reason,\n category,\n quantity: outcomes[key],\n };\n });\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public abstract eventFromException(_exception: any, _hint?: EventHint): PromiseLike;\n\n /**\n * @inheritDoc\n */\n public abstract eventFromMessage(\n _message: string,\n // eslint-disable-next-line deprecation/deprecation\n _level?: Severity | SeverityLevel,\n _hint?: EventHint,\n ): PromiseLike;\n}\n\n/**\n * Verifies that return value of configured `beforeSend` is of expected type.\n */\nfunction _ensureBeforeSendRv(rv: PromiseLike | Event | null): PromiseLike | Event | null {\n const nullErr = '`beforeSend` method has to return `null` or a valid event.';\n if (isThenable(rv)) {\n return rv.then(\n event => {\n if (!(isPlainObject(event) || event === null)) {\n throw new SentryError(nullErr);\n }\n return event;\n },\n e => {\n throw new SentryError(`beforeSend rejected with ${e}`);\n },\n );\n } else if (!(isPlainObject(rv) || rv === null)) {\n throw new SentryError(nullErr);\n }\n return rv;\n}\n", "import { getCurrentHub } from '@sentry/hub';\nimport { Client, ClientOptions } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\n/** A class object that can instantiate Client objects. */\nexport type ClientClass = new (options: O) => F;\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind(\n clientClass: ClientClass,\n options: O,\n): void {\n if (options.debug === true) {\n if (__DEBUG_BUILD__) {\n logger.enable();\n } else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n }\n }\n const hub = getCurrentHub();\n const scope = hub.getScope();\n if (scope) {\n scope.update(options.initialScope);\n }\n\n const client = new clientClass(options);\n hub.bindClient(client);\n}\n", "import {\n Envelope,\n EnvelopeItem,\n EventDropReason,\n InternalBaseTransportOptions,\n Transport,\n TransportRequestExecutor,\n} from '@sentry/types';\nimport {\n createEnvelope,\n envelopeItemTypeToDataCategory,\n forEachEnvelopeItem,\n isRateLimited,\n logger,\n makePromiseBuffer,\n PromiseBuffer,\n RateLimits,\n resolvedSyncPromise,\n SentryError,\n serializeEnvelope,\n updateRateLimits,\n} from '@sentry/utils';\n\nexport const DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(\n options: InternalBaseTransportOptions,\n makeRequest: TransportRequestExecutor,\n buffer: PromiseBuffer = makePromiseBuffer(options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE),\n): Transport {\n let rateLimits: RateLimits = {};\n\n const flush = (timeout?: number): PromiseLike => buffer.drain(timeout);\n\n function send(envelope: Envelope): PromiseLike {\n const filteredEnvelopeItems: EnvelopeItem[] = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n const envelopeItemDataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, envelopeItemDataCategory)) {\n options.recordDroppedEvent('ratelimit_backoff', envelopeItemDataCategory);\n } else {\n filteredEnvelopeItems.push(item);\n }\n });\n\n // Skip sending if envelope is empty after filtering out rate limited events\n if (filteredEnvelopeItems.length === 0) {\n return resolvedSyncPromise();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const filteredEnvelope: Envelope = createEnvelope(envelope[0], filteredEnvelopeItems as any);\n\n // Creates client report for each item in an envelope\n const recordEnvelopeLoss = (reason: EventDropReason): void => {\n forEachEnvelopeItem(filteredEnvelope, (_, type) => {\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type));\n });\n };\n\n const requestTask = (): PromiseLike =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then(\n response => {\n // We don't want to throw on NOK responses, but we want to at least log them\n if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n __DEBUG_BUILD__ && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n },\n error => {\n __DEBUG_BUILD__ && logger.error('Failed while sending event:', error);\n recordEnvelopeLoss('network_error');\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error instanceof SentryError) {\n __DEBUG_BUILD__ && logger.error('Skipped sending event due to full buffer');\n recordEnvelopeLoss('queue_overflow');\n return resolvedSyncPromise();\n } else {\n throw error;\n }\n },\n );\n }\n\n return {\n send,\n flush,\n };\n}\n", "var SDK_VERSION = '7.4.1';\n\nexport { SDK_VERSION };\n//# sourceMappingURL=version.js.map\n", "export { FunctionToString } from './functiontostring.js';\nexport { InboundFilters } from './inboundfilters.js';\n//# sourceMappingURL=index.js.map\n", "import { Integration, WrappedFunction } from '@sentry/types';\nimport { getOriginalFunction } from '@sentry/utils';\n\nlet originalFunctionToString: () => void;\n\n/** Patch toString calls to return proper name for wrapped functions */\nexport class FunctionToString implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'FunctionToString';\n\n /**\n * @inheritDoc\n */\n public name: string = FunctionToString.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Function.prototype.toString = function (this: WrappedFunction, ...args: any[]): string {\n const context = getOriginalFunction(this) || this;\n return originalFunctionToString.apply(context, args);\n };\n }\n}\n", "import { Event, EventProcessor, Hub, Integration, StackFrame } from '@sentry/types';\nimport { getEventDescription, isMatchingPattern, logger } from '@sentry/utils';\n\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.\nconst DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\n/** Options for the InboundFilters integration */\nexport interface InboundFiltersOptions {\n allowUrls: Array;\n denyUrls: Array;\n ignoreErrors: Array;\n ignoreInternal: boolean;\n}\n\n/** Inbound filters configurable by the user */\nexport class InboundFilters implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'InboundFilters';\n\n /**\n * @inheritDoc\n */\n public name: string = InboundFilters.id;\n\n public constructor(private readonly _options: Partial = {}) {}\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (processor: EventProcessor) => void, getCurrentHub: () => Hub): void {\n const eventProcess: EventProcessor = (event: Event) => {\n const hub = getCurrentHub();\n if (hub) {\n const self = hub.getIntegration(InboundFilters);\n if (self) {\n const client = hub.getClient();\n const clientOptions = client ? client.getOptions() : {};\n const options = _mergeOptions(self._options, clientOptions);\n return _shouldDropEvent(event, options) ? null : event;\n }\n }\n return event;\n };\n\n eventProcess.id = this.name;\n addGlobalEventProcessor(eventProcess);\n }\n}\n\n/** JSDoc */\nexport function _mergeOptions(\n internalOptions: Partial = {},\n clientOptions: Partial = {},\n): Partial {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...DEFAULT_IGNORE_ERRORS,\n ],\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n\n/** JSDoc */\nexport function _shouldDropEvent(event: Event, options: Partial): boolean {\n if (options.ignoreInternal && _isSentryError(event)) {\n __DEBUG_BUILD__ &&\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n}\n\nfunction _isIgnoredError(event: Event, ignoreErrors?: Array): boolean {\n if (!ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message =>\n ignoreErrors.some(pattern => isMatchingPattern(message, pattern)),\n );\n}\n\nfunction _isDeniedUrl(event: Event, denyUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!denyUrls || !denyUrls.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : denyUrls.some(pattern => isMatchingPattern(url, pattern));\n}\n\nfunction _isAllowedUrl(event: Event, allowUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!allowUrls || !allowUrls.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : allowUrls.some(pattern => isMatchingPattern(url, pattern));\n}\n\nfunction _getPossibleEventMessages(event: Event): string[] {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n const { type = '', value = '' } = (event.exception.values && event.exception.values[0]) || {};\n return [`${value}`, `${type}: ${value}`];\n } catch (oO) {\n __DEBUG_BUILD__ && logger.error(`Cannot extract message for event ${getEventDescription(event)}`);\n return [];\n }\n }\n return [];\n}\n\nfunction _isSentryError(event: Event): boolean {\n try {\n // @ts-ignore can't be a sentry error if undefined\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return event.exception.values[0].type === 'SentryError';\n } catch (e) {\n // ignore\n }\n return false;\n}\n\nfunction _getLastValidUrl(frames: StackFrame[] = []): string | null {\n for (let i = frames.length - 1; i >= 0; i--) {\n const frame = frames[i];\n\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event: Event): string | null {\n try {\n let frames;\n try {\n // @ts-ignore we only care about frames if the whole thing here is defined\n frames = event.exception.values[0].stacktrace.frames;\n } catch (e) {\n // ignore\n }\n return frames ? _getLastValidUrl(frames) : null;\n } catch (oO) {\n __DEBUG_BUILD__ && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n", "import { Event, EventHint, Exception, Severity, SeverityLevel, StackFrame, StackParser } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n extractExceptionKeysForMessage,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isPlainObject,\n normalizeToSize,\n resolvedSyncPromise,\n} from '@sentry/utils';\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nexport function exceptionFromError(stackParser: StackParser, ex: Error): Exception {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(stackParser, ex);\n\n const exception: Exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nexport function eventFromPlainObject(\n stackParser: StackParser,\n exception: Record,\n syntheticException?: Error,\n isUnhandledRejection?: boolean,\n): Event {\n const event: Event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: `Non-Error ${\n isUnhandledRejection ? 'promise rejection' : 'exception'\n } captured with keys: ${extractExceptionKeysForMessage(exception)}`,\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n };\n\n if (syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n (event.exception as { values: Exception[] }).values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromError(stackParser: StackParser, ex: Error): Event {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nexport function parseStackFrames(\n stackParser: StackParser,\n ex: Error & { framesToPop?: number; stacktrace?: string },\n): StackFrame[] {\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 const stacktrace = ex.stacktrace || ex.stack || '';\n\n const popSize = getPopSize(ex);\n\n try {\n return stackParser(stacktrace, popSize);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex: Error & { framesToPop?: number }): number {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n\n return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex: Error & { message: { error?: Error } }): string {\n const 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\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(\n stackParser: StackParser,\n exception: unknown,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n stackParser: StackParser,\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(\n stackParser: StackParser,\n exception: unknown,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n isUnhandledRejection?: boolean,\n): Event {\n let event: Event;\n\n if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception as ErrorEvent;\n return eventFromError(stackParser, errorEvent.error as Error);\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception as DOMError) || isDOMException(exception as DOMException)) {\n const domException = exception as DOMException;\n\n if ('stack' in (exception as Error)) {\n event = eventFromError(stackParser, exception as Error);\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception as Record;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\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(stackParser, exception as string, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromString(\n stackParser: StackParser,\n input: string,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n): Event {\n const event: Event = {\n message: input,\n };\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: input, stacktrace: { frames } }],\n };\n }\n }\n\n return event;\n}\n", "/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable max-lines */\nimport { getCurrentHub } from '@sentry/core';\nimport { Integration } from '@sentry/types';\nimport {\n addInstrumentationHandler,\n getGlobalObject,\n htmlTreeAsString,\n parseUrl,\n safeJoin,\n severityLevelFromString,\n} from '@sentry/utils';\n\n/** JSDoc */\ninterface BreadcrumbsOptions {\n console: boolean;\n dom: boolean | { serializeAttribute: string | string[] };\n fetch: boolean;\n history: boolean;\n sentry: boolean;\n xhr: boolean;\n}\n\nexport const BREADCRUMB_INTEGRATION_ID = 'Breadcrumbs';\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nexport class Breadcrumbs implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = BREADCRUMB_INTEGRATION_ID;\n\n /**\n * @inheritDoc\n */\n public name: string = Breadcrumbs.id;\n\n /**\n * Options of the breadcrumbs integration.\n */\n // This field is public, because we use it in the browser client to check if the `sentry` option is enabled.\n public readonly options: Readonly;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial) {\n this.options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n }\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n public setupOnce(): void {\n if (this.options.console) {\n addInstrumentationHandler('console', _consoleBreadcrumb);\n }\n if (this.options.dom) {\n addInstrumentationHandler('dom', _domBreadcrumb(this.options.dom));\n }\n if (this.options.xhr) {\n addInstrumentationHandler('xhr', _xhrBreadcrumb);\n }\n if (this.options.fetch) {\n addInstrumentationHandler('fetch', _fetchBreadcrumb);\n }\n if (this.options.history) {\n addInstrumentationHandler('history', _historyBreadcrumb);\n }\n }\n}\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _domBreadcrumb(dom: BreadcrumbsOptions['dom']): (handlerData: { [key: string]: any }) => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _innerDomBreadcrumb(handlerData: { [key: string]: any }): void {\n let target;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target as Node, keyAttrs)\n : htmlTreeAsString(handlerData.event as unknown as Node, keyAttrs);\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: `ui.${handlerData.name}`,\n message: target,\n },\n {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n },\n );\n }\n\n return _innerDomBreadcrumb;\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _consoleBreadcrumb(handlerData: { [key: string]: any }): void {\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityLevelFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\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 } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _xhrBreadcrumb(handlerData: { [key: string]: any }): void {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n\n const { method, url, status_code, body } = handlerData.xhr.__sentry_xhr__ || {};\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'xhr',\n data: {\n method,\n url,\n status_code,\n },\n type: 'http',\n },\n {\n xhr: handlerData.xhr,\n input: body,\n },\n );\n\n return;\n }\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _fetchBreadcrumb(handlerData: { [key: string]: any }): void {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\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\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: handlerData.fetchData,\n level: 'error',\n type: 'http',\n },\n {\n data: handlerData.error,\n input: handlerData.args,\n },\n );\n } else {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: {\n ...handlerData.fetchData,\n status_code: handlerData.response.status,\n },\n type: 'http',\n },\n {\n input: handlerData.args,\n response: handlerData.response,\n },\n );\n }\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _historyBreadcrumb(handlerData: { [key: string]: any }): void {\n const global = getGlobalObject();\n let from = handlerData.from;\n let to = handlerData.to;\n const parsedLoc = parseUrl(global.location.href);\n let parsedFrom = parseUrl(from);\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\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\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n}\n", "import { getGlobalObject, isNativeFetch, logger, supportsFetch } from '@sentry/utils';\n\nconst global = getGlobalObject();\nlet cachedFetchImpl: FetchImpl;\n\nexport type FetchImpl = typeof fetch;\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n * const p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nexport function getNativeFetchImplementation(): FetchImpl {\n if (cachedFetchImpl) {\n return cachedFetchImpl;\n }\n\n /* eslint-disable @typescript-eslint/unbound-method */\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(global.fetch)) {\n return (cachedFetchImpl = global.fetch.bind(global));\n }\n\n const document = global.document;\n let fetchImpl = global.fetch;\n // eslint-disable-next-line deprecation/deprecation\n if (document && typeof document.createElement === 'function') {\n try {\n const sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n const contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow.fetch) {\n fetchImpl = contentWindow.fetch;\n }\n document.head.removeChild(sandbox);\n } catch (e) {\n __DEBUG_BUILD__ &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n\n return (cachedFetchImpl = fetchImpl.bind(global));\n /* eslint-enable @typescript-eslint/unbound-method */\n}\n\n/**\n * Sends sdk client report using sendBeacon or fetch as a fallback if available\n *\n * @param url report endpoint\n * @param body report payload\n */\nexport function sendReport(url: string, body: string | Uint8Array): void {\n const isRealNavigator = Object.prototype.toString.call(global && global.navigator) === '[object Navigator]';\n const hasSendBeacon = isRealNavigator && typeof global.navigator.sendBeacon === 'function';\n\n if (hasSendBeacon) {\n // Prevent illegal invocations - https://xgwang.me/posts/you-may-not-know-beacon/#it-may-throw-error%2C-be-sure-to-catch\n const sendBeacon = global.navigator.sendBeacon.bind(global.navigator);\n sendBeacon(url, body);\n } else if (supportsFetch()) {\n const fetch = getNativeFetchImplementation();\n fetch(url, {\n body,\n method: 'POST',\n credentials: 'omit',\n keepalive: true,\n }).then(null, error => {\n __DEBUG_BUILD__ && logger.error(error);\n });\n }\n}\n", "import { BaseClient, getCurrentHub, getEnvelopeEndpointWithUrlEncodedAuth, Scope, SDK_VERSION } from '@sentry/core';\nimport { ClientOptions, Event, EventHint, Options, Severity, SeverityLevel } from '@sentry/types';\nimport {\n createClientReportEnvelope,\n dsnToString,\n getEventDescription,\n getGlobalObject,\n logger,\n serializeEnvelope,\n} from '@sentry/utils';\n\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { Breadcrumbs } from './integrations';\nimport { BREADCRUMB_INTEGRATION_ID } from './integrations/breadcrumbs';\nimport { BrowserTransportOptions } from './transports/types';\nimport { sendReport } from './transports/utils';\n\nconst globalObject = getGlobalObject();\n\nexport interface BaseBrowserOptions {\n /**\n * A pattern for error URLs which should exclusively be sent to Sentry.\n * This is the opposite of {@link Options.denyUrls}.\n * By default, all errors will be sent.\n */\n allowUrls?: Array;\n\n /**\n * A pattern for error URLs which should not be sent to Sentry.\n * To allow certain errors instead, use {@link Options.allowUrls}.\n * By default, all errors will be sent.\n */\n denyUrls?: Array;\n}\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/types Options for more information.\n */\nexport interface BrowserOptions extends Options, BaseBrowserOptions {}\n\n/**\n * Configuration options for the Sentry Browser SDK Client class\n * @see BrowserClient for more information.\n */\nexport interface BrowserClientOptions extends ClientOptions, BaseBrowserOptions {}\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n public constructor(options: BrowserClientOptions) {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.browser',\n packages: [\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n\n super(options);\n\n if (options.sendClientReports && globalObject.document) {\n globalObject.document.addEventListener('visibilitychange', () => {\n if (globalObject.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(exception: unknown, hint?: EventHint): PromiseLike {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(\n message: string,\n // eslint-disable-next-line deprecation/deprecation\n level: Severity | SeverityLevel = 'info',\n hint?: EventHint,\n ): PromiseLike {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event, hint?: EventHint): void {\n // We only want to add the sentry event breadcrumb when the user has the breadcrumb integration installed and\n // activated its `sentry` option.\n // We also do not want to use the `Breadcrumbs` class here directly, because we do not want it to be included in\n // bundles, if it is not used by the SDK.\n // This all sadly is a bit ugly, but we currently don't have a \"pre-send\" hook on the integrations so we do it this\n // way for now.\n const breadcrumbIntegration = this.getIntegrationById(BREADCRUMB_INTEGRATION_ID) as Breadcrumbs | null;\n if (\n breadcrumbIntegration &&\n // We check for definedness of `options`, even though it is not strictly necessary, because that access to\n // `.sentry` below does not throw, in case users provided their own integration with id \"Breadcrumbs\" that does\n // not have an`options` field\n breadcrumbIntegration.options &&\n breadcrumbIntegration.options.sentry\n ) {\n getCurrentHub().addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n }\n\n super.sendEvent(event, hint);\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(event: Event, hint: EventHint, scope?: Scope): PromiseLike {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, hint, scope);\n }\n\n /**\n * Sends client reports as an envelope.\n */\n private _flushOutcomes(): void {\n const outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n __DEBUG_BUILD__ && logger.log('No outcomes to send');\n return;\n }\n\n if (!this._dsn) {\n __DEBUG_BUILD__ && logger.log('No dsn provided, will not send outcomes');\n return;\n }\n\n __DEBUG_BUILD__ && logger.log('Sending outcomes:', outcomes);\n\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, this._options.tunnel);\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n try {\n sendReport(url, serializeEnvelope(envelope));\n } catch (e) {\n __DEBUG_BUILD__ && logger.error(e);\n }\n }\n}\n", "import { createTransport } from '@sentry/core';\nimport { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\n\nimport { BrowserTransportOptions } from './types';\nimport { FetchImpl, getNativeFetchImplementation } from './utils';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nexport function makeFetchTransport(\n options: BrowserTransportOptions,\n nativeFetch: FetchImpl = getNativeFetchImplementation(),\n): Transport {\n function makeRequest(request: TransportRequest): PromiseLike {\n const requestOptions: RequestInit = {\n body: request.body,\n method: 'POST',\n referrerPolicy: 'origin',\n headers: options.headers,\n ...options.fetchOptions,\n };\n\n return nativeFetch(options.url, requestOptions).then(response => ({\n statusCode: response.status,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n }));\n }\n\n return createTransport(options, makeRequest);\n}\n", "import { createTransport } from '@sentry/core';\nimport { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types';\nimport { SyncPromise } from '@sentry/utils';\n\nimport { BrowserTransportOptions } from './types';\n\n/**\n * The DONE ready state for XmlHttpRequest\n *\n * Defining it here as a constant b/c XMLHttpRequest.DONE is not always defined\n * (e.g. during testing, it is `undefined`)\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState}\n */\nconst XHR_READYSTATE_DONE = 4;\n\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nexport function makeXHRTransport(options: BrowserTransportOptions): Transport {\n function makeRequest(request: TransportRequest): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onerror = reject;\n\n xhr.onreadystatechange = (): void => {\n if (xhr.readyState === XHR_READYSTATE_DONE) {\n resolve({\n statusCode: xhr.status,\n headers: {\n 'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': xhr.getResponseHeader('Retry-After'),\n },\n });\n }\n };\n\n xhr.open('POST', options.url);\n\n for (const header in options.headers) {\n if (Object.prototype.hasOwnProperty.call(options.headers, header)) {\n xhr.setRequestHeader(header, options.headers[header]);\n }\n }\n\n xhr.send(request.body);\n });\n }\n\n return createTransport(options, makeRequest);\n}\n", "import { StackFrame, StackLineParser, StackLineParserFn } from '@sentry/types';\nimport { createStackParser } from '@sentry/utils';\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame {\n const frame: StackFrame = {\n filename,\n function: func,\n // All browser frames are considered in_app\n in_app: true,\n };\n\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n frame.colno = colno;\n }\n\n return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chromeRegex =\n /^\\s*at (?:(.*?) ?\\((?:address at )?)?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nconst chrome: StackLineParserFn = line => {\n const parts = chromeRegex.exec(line);\n\n if (parts) {\n const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]);\n\n if (subMatch) {\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 }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n }\n\n return;\n};\n\nexport const chromeStackLineParser: StackLineParser = [CHROME_PRIORITY, chrome];\n\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.\nconst geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|capacitor).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko: StackLineParserFn = line => {\n const parts = geckoREgex.exec(line);\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]);\n\n if (subMatch) {\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 }\n\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n\n return;\n};\n\nexport const geckoStackLineParser: StackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs: StackLineParserFn = line => {\n const parts = winjsRegex.exec(line);\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nexport const winjsStackLineParser: StackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10: StackLineParserFn = line => {\n const parts = opera10Regex.exec(line);\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nexport const opera10StackLineParser: StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11: StackLineParserFn = line => {\n const parts = opera11Regex.exec(line);\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nexport const opera11StackLineParser: StackLineParser = [OPERA11_PRIORITY, opera11];\n\nexport const defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser];\n\nexport const defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func: string, filename: string): [string, string] => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1;\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n", "import { captureException, withScope } from '@sentry/core';\nimport { DsnLike, Event as SentryEvent, Mechanism, Scope, WrappedFunction } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n addNonEnumerableProperty,\n getOriginalFunction,\n markFunctionWrapped,\n} from '@sentry/utils';\n\nlet ignoreOnError: number = 0;\n\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError(): boolean {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nexport function ignoreNextOnError(): void {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(() => {\n ignoreOnError -= 1;\n });\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. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(\n fn: WrappedFunction,\n options: {\n mechanism?: Mechanism;\n } = {},\n before?: WrappedFunction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n const wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n return wrapper;\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\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\n /* eslint-disable prefer-rest-params */\n // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n const sentryWrapped: WrappedFunction = function (this: unknown): void {\n const args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n const wrappedArguments = args.map((arg: any) => wrap(arg, options));\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 } catch (ex) {\n ignoreNextOnError();\n\n withScope((scope: Scope) => {\n scope.addEventProcessor((event: SentryEvent) => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} // eslint-disable-line no-empty\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 markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') as PropertyDescriptor;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get(): string {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n */\nexport interface ReportDialogOptions {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n eventId?: string;\n dsn?: DsnLike;\n user?: {\n email?: string;\n name?: string;\n };\n lang?: string;\n title?: string;\n subtitle?: string;\n subtitle2?: string;\n labelName?: string;\n labelEmail?: string;\n labelComments?: string;\n labelClose?: string;\n labelSubmit?: string;\n errorGeneric?: string;\n errorFormEntry?: string;\n successMessage?: string;\n /** Callback after reportDialog showed up */\n onLoad?(): void;\n}\n", "export { GlobalHandlers } from './globalhandlers.js';\nexport { TryCatch } from './trycatch.js';\nexport { Breadcrumbs } from './breadcrumbs.js';\nexport { LinkedErrors } from './linkederrors.js';\nexport { HttpContext } from './httpcontext.js';\nexport { Dedupe } from './dedupe.js';\n//# sourceMappingURL=index.js.map\n", "/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Hub, Integration, Primitive, StackParser } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addInstrumentationHandler,\n getLocationHref,\n isErrorEvent,\n isPrimitive,\n isString,\n logger,\n} from '@sentry/utils';\n\nimport { BrowserClient } from '../client';\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n\ntype GlobalHandlersIntegrationsOptionKeys = 'onerror' | 'onunhandledrejection';\n\n/** JSDoc */\ntype GlobalHandlersIntegrations = Record;\n\n/** Global handlers */\nexport class GlobalHandlers implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'GlobalHandlers';\n\n /**\n * @inheritDoc\n */\n public name: string = GlobalHandlers.id;\n\n /** JSDoc */\n private readonly _options: GlobalHandlersIntegrations;\n\n /**\n * Stores references functions to installing handlers. Will set to undefined\n * after they have been run so that they are not used twice.\n */\n private _installFunc: Record void) | undefined> = {\n onerror: _installGlobalOnErrorHandler,\n onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,\n };\n\n /** JSDoc */\n public constructor(options?: GlobalHandlersIntegrations) {\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n Error.stackTraceLimit = 50;\n const options = this._options;\n\n // We can disable guard-for-in as we construct the options object above + do checks against\n // `this._installFunc` for the property.\n // eslint-disable-next-line guard-for-in\n for (const key in options) {\n const installFunc = this._installFunc[key as GlobalHandlersIntegrationsOptionKeys];\n if (installFunc && options[key as GlobalHandlersIntegrationsOptionKeys]) {\n globalHandlerLog(key);\n installFunc();\n this._installFunc[key as GlobalHandlersIntegrationsOptionKeys] = undefined;\n }\n }\n }\n}\n\n/** JSDoc */\nfunction _installGlobalOnErrorHandler(): void {\n addInstrumentationHandler(\n 'error',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (data: { msg: any; url: any; line: any; column: any; error: any }) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n const { msg, url, line, column, error } = data;\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return;\n }\n\n const event =\n error === undefined && isString(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(\n eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onerror');\n },\n );\n}\n\n/** JSDoc */\nfunction _installGlobalOnUnhandledRejectionHandler(): void {\n addInstrumentationHandler(\n 'unhandledrejection',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (e: any) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n let error = e;\n\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 } catch (_oO) {\n // no-empty\n }\n\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return true;\n }\n\n const event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onunhandledrejection');\n return;\n },\n );\n}\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 */\nfunction _eventFromRejectionWithPrimitive(reason: Primitive): Event {\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\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\nfunction _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n const ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name = 'Error';\n\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n // event.exception\n const e = (event.exception = event.exception || {});\n // event.exception.values\n const ev = (e.values = e.values || []);\n // event.exception.values[0]\n const ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type: string): void {\n __DEBUG_BUILD__ && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction addMechanismAndCapture(hub: Hub, error: EventHint['originalException'], event: Event, type: string): void {\n addExceptionMechanism(event, {\n handled: false,\n type,\n });\n hub.captureEvent(event, {\n originalException: error,\n });\n}\n\nfunction getHubAndOptions(): [Hub, StackParser, boolean | undefined] {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const options = (client && client.getOptions()) || {\n stackParser: () => [],\n attachStacktrace: false,\n };\n return [hub, options.stackParser, options.attachStacktrace];\n}\n", "import { Integration, WrappedFunction } from '@sentry/types';\nimport { fill, getFunctionName, getGlobalObject, getOriginalFunction } from '@sentry/utils';\n\nimport { wrap } from '../helpers';\n\nconst 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\ntype XMLHttpRequestProp = 'onload' | 'onerror' | 'onprogress' | 'onreadystatechange';\n\n/** JSDoc */\ninterface TryCatchOptions {\n setTimeout: boolean;\n setInterval: boolean;\n requestAnimationFrame: boolean;\n XMLHttpRequest: boolean;\n eventTarget: boolean | string[];\n}\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nexport class TryCatch implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'TryCatch';\n\n /**\n * @inheritDoc\n */\n public name: string = TryCatch.id;\n\n /** JSDoc */\n private readonly _options: TryCatchOptions;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial) {\n this._options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n }\n\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n public setupOnce(): void {\n const global = getGlobalObject();\n\n if (this._options.setTimeout) {\n fill(global, 'setTimeout', _wrapTimeFunction);\n }\n\n if (this._options.setInterval) {\n fill(global, 'setInterval', _wrapTimeFunction);\n }\n\n if (this._options.requestAnimationFrame) {\n fill(global, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in global) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n const eventTargetOption = this._options.eventTarget;\n if (eventTargetOption) {\n const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n }\n}\n\n/** JSDoc */\nfunction _wrapTimeFunction(original: () => void): () => number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, ...args: any[]): number {\n const 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\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original: any): (callback: () => void) => any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, callback: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.apply(this, [\n 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}\n\n/** JSDoc */\nfunction _wrapXHR(originalSend: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: XMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const xmlHttpRequestProps: XMLHttpRequestProp[] = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(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: WrappedFunction): () => any {\n const wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n const originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapEventTarget(target: string): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const global = getGlobalObject() as { [key: string]: any };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = global[target] && global[target].prototype;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original: () => void): (\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): (eventName: string, fn: EventListenerObject, capture?: boolean, secure?: boolean) => void {\n try {\n if (typeof fn.handleEvent === 'function') {\n // ESlint disable explanation:\n // First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n // introduce a bug here, because bind returns a new function that doesn't have our\n // flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n // Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n fn.handleEvent = wrap(fn.handleEvent, {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.apply(this, [\n eventName,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn as any as WrappedFunction, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (\n originalRemoveEventListener: () => void,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): (this: any, eventName: string, fn: EventListenerObject, options?: boolean | EventListenerOptions) => () => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\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 const wrappedEventHandler = fn as unknown as WrappedFunction;\n try {\n const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\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}\n", "import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Exception, ExtendedError, Integration, StackParser } from '@sentry/types';\nimport { isInstanceOf } from '@sentry/utils';\n\nimport { BrowserClient } from '../client';\nimport { exceptionFromError } from '../eventbuilder';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\ninterface LinkedErrorsOptions {\n key: string;\n limit: number;\n}\n\n/** Adds SDK info to an event. */\nexport class LinkedErrors implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'LinkedErrors';\n\n /**\n * @inheritDoc\n */\n public readonly name: string = LinkedErrors.id;\n\n /**\n * @inheritDoc\n */\n private readonly _key: LinkedErrorsOptions['key'];\n\n /**\n * @inheritDoc\n */\n private readonly _limit: LinkedErrorsOptions['limit'];\n\n /**\n * @inheritDoc\n */\n public constructor(options: Partial = {}) {\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n const client = getCurrentHub().getClient();\n if (!client) {\n return;\n }\n addGlobalEventProcessor((event: Event, hint?: EventHint) => {\n const self = getCurrentHub().getIntegration(LinkedErrors);\n return self ? _handler(client.getOptions().stackParser, self._key, self._limit, event, hint) : event;\n });\n }\n}\n\n/**\n * @inheritDoc\n */\nexport function _handler(\n parser: StackParser,\n key: string,\n limit: number,\n event: Event,\n hint?: EventHint,\n): Event | null {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n const linkedErrors = _walkErrorTree(parser, limit, hint.originalException as ExtendedError, key);\n event.exception.values = [...linkedErrors, ...event.exception.values];\n return event;\n}\n\n/**\n * JSDOC\n */\nexport function _walkErrorTree(\n parser: StackParser,\n limit: number,\n error: ExtendedError,\n key: string,\n stack: Exception[] = [],\n): Exception[] {\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= limit) {\n return stack;\n }\n const exception = exceptionFromError(parser, error[key]);\n return _walkErrorTree(parser, limit, error[key], key, [exception, ...stack]);\n}\n", "import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, Integration } from '@sentry/types';\nimport { getGlobalObject } from '@sentry/utils';\n\nconst global = getGlobalObject();\n\n/** HttpContext integration collects information about HTTP request headers */\nexport class HttpContext implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'HttpContext';\n\n /**\n * @inheritDoc\n */\n public name: string = HttpContext.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event) => {\n if (getCurrentHub().getIntegration(HttpContext)) {\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\n // grab as much info as exists and add it to the event\n const url = (event.request && event.request.url) || (global.location && global.location.href);\n const { referrer } = global.document || {};\n const { userAgent } = global.navigator || {};\n\n const headers = {\n ...(event.request && event.request.headers),\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n const request = { ...(url && { url }), headers };\n\n return { ...event, request };\n }\n return event;\n });\n }\n}\n", "import { Event, EventProcessor, Exception, Hub, Integration, StackFrame } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\n/** Deduplication filter */\nexport class Dedupe implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Dedupe';\n\n /**\n * @inheritDoc\n */\n public name: string = Dedupe.id;\n\n /**\n * @inheritDoc\n */\n private _previousEvent?: Event;\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n const eventProcessor: EventProcessor = currentEvent => {\n const self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, self._previousEvent)) {\n __DEBUG_BUILD__ && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n };\n\n eventProcessor.id = this.name;\n addGlobalEventProcessor(eventProcessor);\n }\n}\n\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n const frameA = previousFrames[i];\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\n/** JSDoc */\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n }\n return undefined;\n}\n", "import {\n getCurrentHub,\n getIntegrationsToSetup,\n getReportDialogEndpoint,\n Hub,\n initAndBind,\n Integrations as CoreIntegrations,\n} from '@sentry/core';\nimport {\n addInstrumentationHandler,\n getGlobalObject,\n logger,\n resolvedSyncPromise,\n stackParserFromStackParserOptions,\n supportsFetch,\n} from '@sentry/utils';\n\nimport { BrowserClient, BrowserClientOptions, BrowserOptions } from './client';\nimport { ReportDialogOptions, wrap as internalWrap } from './helpers';\nimport { Breadcrumbs, Dedupe, GlobalHandlers, HttpContext, LinkedErrors, TryCatch } from './integrations';\nimport { defaultStackParser } from './stack-parsers';\nimport { makeFetchTransport, makeXHRTransport } from './transports';\n\nexport const defaultIntegrations = [\n new CoreIntegrations.InboundFilters(),\n new CoreIntegrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new Dedupe(),\n new HttpContext(),\n];\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: BrowserOptions = {}): void {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n const window = getGlobalObject();\n // This supports the variable that sentry-webpack-plugin injects\n if (window.SENTRY_RELEASE && window.SENTRY_RELEASE.id) {\n options.release = window.SENTRY_RELEASE.id;\n }\n }\n if (options.autoSessionTracking === undefined) {\n options.autoSessionTracking = true;\n }\n if (options.sendClientReports === undefined) {\n options.sendClientReports = true;\n }\n\n const clientOptions: BrowserClientOptions = {\n ...options,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n integrations: getIntegrationsToSetup(options),\n transport: options.transport || (supportsFetch() ? makeFetchTransport : makeXHRTransport),\n };\n\n initAndBind(BrowserClient, clientOptions);\n\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\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: ReportDialogOptions = {}, hub: Hub = getCurrentHub()): void {\n // doesn't work without a document (React Native)\n const global = getGlobalObject();\n if (!global.document) {\n __DEBUG_BUILD__ && logger.error('Global document not defined in showReportDialog call');\n return;\n }\n\n const { client, scope } = hub.getStackTop();\n const dsn = options.dsn || (client && client.getDsn());\n if (!dsn) {\n __DEBUG_BUILD__ && logger.error('DSN not configured for showReportDialog call');\n return;\n }\n\n if (scope) {\n options.user = {\n ...scope.getUser(),\n ...options.user,\n };\n }\n\n if (!options.eventId) {\n options.eventId = hub.lastEventId();\n }\n\n const script = global.document.createElement('script');\n script.async = true;\n script.src = getReportDialogEndpoint(dsn, options);\n\n if (options.onLoad) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n script.onload = options.onLoad;\n }\n\n const injectionPoint = global.document.head || global.document.body;\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n } else {\n __DEBUG_BUILD__ && logger.error('Not injecting report dialog. No injection point found in HTML');\n }\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(): string | undefined {\n return getCurrentHub().lastEventId();\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad(): void {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback: () => void): void {\n callback();\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport function flush(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n __DEBUG_BUILD__ && logger.warn('Cannot flush events. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport function close(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n __DEBUG_BUILD__ && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return resolvedSyncPromise(false);\n}\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: (...args: any) => any): any {\n return internalWrap(fn)();\n}\n\nfunction startSessionOnHub(hub: Hub): void {\n hub.startSession({ ignoreDuration: true });\n hub.captureSession();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking(): void {\n const window = getGlobalObject();\n const document = window.document;\n\n if (typeof document === 'undefined') {\n __DEBUG_BUILD__ &&\n logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n return;\n }\n\n const hub = getCurrentHub();\n\n // The only way for this to be false is for there to be a version mismatch between @sentry/browser (>= 6.0.0) and\n // @sentry/hub (< 5.27.0). In the simple case, there won't ever be such a mismatch, because the two packages are\n // pinned at the same version in package.json, but there are edge cases where it's possible. See\n // https://github.com/getsentry/sentry-javascript/issues/3207 and\n // https://github.com/getsentry/sentry-javascript/issues/3234 and\n // https://github.com/getsentry/sentry-javascript/issues/3278.\n if (!hub.captureSession) {\n return;\n }\n\n // The session duration for browser sessions does not track a meaningful\n // concept that can be used as a metric.\n // Automatically captured sessions are akin to page views, and thus we\n // discard their duration.\n startSessionOnHub(hub);\n\n // We want to create a session for every navigation as well\n addInstrumentationHandler('history', ({ from, to }) => {\n // Don't create an additional session for the initial route or if the location did not change\n if (!(from === undefined || from === to)) {\n startSessionOnHub(getCurrentHub());\n }\n });\n}\n", "export * from './exports';\n\nimport { Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\n\nimport * as BrowserIntegrations from './integrations';\n\nlet windowIntegrations = {};\n\n// This block is needed to add compatibility with the integrations packages when used with a CDN\nconst _window = getGlobalObject();\nif (_window.Sentry && _window.Sentry.Integrations) {\n windowIntegrations = _window.Sentry.Integrations;\n}\n\nconst INTEGRATIONS = {\n ...windowIntegrations,\n ...CoreIntegrations,\n ...BrowserIntegrations,\n};\n\nexport { INTEGRATIONS as Integrations };\n", "import { BrowserOptions, init as browserInit, SDK_VERSION } from '@sentry/browser';\n\n/**\n * Inits the React SDK\n */\nexport function init(options: BrowserOptions): void {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.react',\n packages: [\n {\n name: 'npm:@sentry/react',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n browserInit(options);\n}\n", "/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { getCurrentHub, Hub } from '@sentry/browser';\nimport { Span, Transaction } from '@sentry/types';\nimport { timestampWithMs } from '@sentry/utils';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport * as React from 'react';\n\nimport { REACT_MOUNT_OP, REACT_RENDER_OP, REACT_UPDATE_OP } from './constants';\n\nexport const UNKNOWN_COMPONENT = 'unknown';\n\nexport type ProfilerProps = {\n // The name of the component being profiled.\n name: string;\n // If the Profiler is disabled. False by default. This is useful if you want to disable profilers\n // in certain environments.\n disabled?: boolean;\n // If time component is on page should be displayed as spans. True by default.\n includeRender?: boolean;\n // If component updates should be displayed as spans. True by default.\n includeUpdates?: boolean;\n // props given to component being profiled.\n updateProps: { [key: string]: unknown };\n};\n\n/**\n * The Profiler component leverages Sentry's Tracing integration to generate\n * spans based on component lifecycles.\n */\nclass Profiler extends React.Component {\n /**\n * The span of the mount activity\n * Made protected for the React Native SDK to access\n */\n protected _mountSpan: Span | undefined = undefined;\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n public static defaultProps: Partial = {\n disabled: false,\n includeRender: true,\n includeUpdates: true,\n };\n\n public constructor(props: ProfilerProps) {\n super(props);\n const { name, disabled = false } = this.props;\n\n if (disabled) {\n return;\n }\n\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n this._mountSpan = activeTransaction.startChild({\n description: `<${name}>`,\n op: REACT_MOUNT_OP,\n });\n }\n }\n\n // If a component mounted, we can finish the mount activity.\n public componentDidMount(): void {\n if (this._mountSpan) {\n this._mountSpan.finish();\n }\n }\n\n public componentDidUpdate({ updateProps, includeUpdates = true }: ProfilerProps): void {\n // Only generate an update span if hasUpdateSpan is true, if there is a valid mountSpan,\n // and if the updateProps have changed. It is ok to not do a deep equality check here as it is expensive.\n // We are just trying to give baseline clues for further investigation.\n if (includeUpdates && this._mountSpan && updateProps !== this.props.updateProps) {\n // See what props haved changed between the previous props, and the current props. This is\n // set as data on the span. We just store the prop keys as the values could be potenially very large.\n const changedProps = Object.keys(updateProps).filter(k => updateProps[k] !== this.props.updateProps[k]);\n if (changedProps.length > 0) {\n // The update span is a point in time span with 0 duration, just signifying that the component\n // has been updated.\n const now = timestampWithMs();\n this._mountSpan.startChild({\n data: {\n changedProps,\n },\n description: `<${this.props.name}>`,\n endTimestamp: now,\n op: REACT_UPDATE_OP,\n startTimestamp: now,\n });\n }\n }\n }\n\n // If a component is unmounted, we can say it is no longer on the screen.\n // This means we can finish the span representing the component render.\n public componentWillUnmount(): void {\n const { name, includeRender = true } = this.props;\n\n if (this._mountSpan && includeRender) {\n // If we were able to obtain the spanId of the mount activity, we should set the\n // next activity as a child to the component mount activity.\n this._mountSpan.startChild({\n description: `<${name}>`,\n endTimestamp: timestampWithMs(),\n op: REACT_RENDER_OP,\n startTimestamp: this._mountSpan.endTimestamp,\n });\n }\n }\n\n public render(): React.ReactNode {\n return this.props.children;\n }\n}\n\n/**\n * withProfiler is a higher order component that wraps a\n * component in a {@link Profiler} component. It is recommended that\n * the higher order component be used over the regular {@link Profiler} component.\n *\n * @param WrappedComponent component that is wrapped by Profiler\n * @param options the {@link ProfilerProps} you can pass into the Profiler\n */\nfunction withProfiler

>(\n WrappedComponent: React.ComponentType

,\n // We do not want to have `updateProps` given in options, it is instead filled through the HOC.\n options?: Pick, Exclude>,\n): React.FC

{\n const componentDisplayName =\n (options && options.name) || WrappedComponent.displayName || WrappedComponent.name || UNKNOWN_COMPONENT;\n\n const Wrapped: React.FC

= (props: P) => (\n \n \n \n );\n\n Wrapped.displayName = `profiler(${componentDisplayName})`;\n\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}\n\n/**\n *\n * `useProfiler` is a React hook that profiles a React component.\n *\n * Requires React 16.8 or above.\n * @param name displayName of component being profiled\n */\nfunction useProfiler(\n name: string,\n options: { disabled?: boolean; hasRenderSpan?: boolean } = {\n disabled: false,\n hasRenderSpan: true,\n },\n): void {\n const [mountSpan] = React.useState(() => {\n if (options && options.disabled) {\n return undefined;\n }\n\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n return activeTransaction.startChild({\n description: `<${name}>`,\n op: REACT_MOUNT_OP,\n });\n }\n\n return undefined;\n });\n\n React.useEffect(() => {\n if (mountSpan) {\n mountSpan.finish();\n }\n\n return (): void => {\n if (mountSpan && options.hasRenderSpan) {\n mountSpan.startChild({\n description: `<${name}>`,\n endTimestamp: timestampWithMs(),\n op: REACT_RENDER_OP,\n startTimestamp: mountSpan.endTimestamp,\n });\n }\n };\n // We only want this to run once.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n}\n\nexport { withProfiler, Profiler, useProfiler };\n\n/** Grabs active transaction off scope */\nexport function getActiveTransaction(hub: Hub = getCurrentHub()): T | undefined {\n if (hub) {\n const scope = hub.getScope();\n if (scope) {\n return scope.getTransaction() as T | undefined;\n }\n }\n\n return undefined;\n}\n", "import { captureException, ReportDialogOptions, Scope, showReportDialog, withScope } from '@sentry/browser';\nimport { logger } from '@sentry/utils';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport * as React from 'react';\n\nexport function isAtLeastReact17(version: string): boolean {\n const major = version.match(/^([^.]+)/);\n return major !== null && parseInt(major[0]) >= 17;\n}\n\nexport const UNKNOWN_COMPONENT = 'unknown';\n\nexport type FallbackRender = (errorData: {\n error: Error;\n componentStack: string | null;\n eventId: string | null;\n resetError(): void;\n}) => React.ReactElement;\n\nexport type ErrorBoundaryProps = {\n children?: React.ReactNode | (() => React.ReactNode);\n /** If a Sentry report dialog should be rendered on error */\n showDialog?: boolean;\n /**\n * Options to be passed into the Sentry report dialog.\n * No-op if {@link showDialog} is false.\n */\n dialogOptions?: ReportDialogOptions;\n /**\n * A fallback component that gets rendered when the error boundary encounters an error.\n *\n * Can either provide a React Component, or a function that returns React Component as\n * a valid fallback prop. If a function is provided, the function will be called with\n * the error, the component stack, and an function that resets the error boundary on error.\n *\n */\n fallback?: React.ReactElement | FallbackRender;\n /** Called when the error boundary encounters an error */\n onError?(error: Error, componentStack: string, eventId: string): void;\n /** Called on componentDidMount() */\n onMount?(): void;\n /** Called if resetError() is called from the fallback render props function */\n onReset?(error: Error | null, componentStack: string | null, eventId: string | null): void;\n /** Called on componentWillUnmount() */\n onUnmount?(error: Error | null, componentStack: string | null, eventId: string | null): void;\n /** Called before the error is captured by Sentry, allows for you to add tags or context using the scope */\n beforeCapture?(scope: Scope, error: Error | null, componentStack: string | null): void;\n};\n\ntype ErrorBoundaryState = {\n componentStack: React.ErrorInfo['componentStack'] | null;\n error: Error | null;\n eventId: string | null;\n};\n\nconst INITIAL_STATE = {\n componentStack: null,\n error: null,\n eventId: null,\n};\n\n/**\n * A ErrorBoundary component that logs errors to Sentry. Requires React >= 16.\n * NOTE: If you are a Sentry user, and you are seeing this stack frame, it means the\n * Sentry React SDK ErrorBoundary caught an error invoking your application code. This\n * is expected behavior and NOT indicative of a bug with the Sentry React SDK.\n */\nclass ErrorBoundary extends React.Component {\n public state: ErrorBoundaryState = INITIAL_STATE;\n\n public componentDidCatch(error: Error & { cause?: Error }, { componentStack }: React.ErrorInfo): void {\n const { beforeCapture, onError, showDialog, dialogOptions } = this.props;\n\n withScope(scope => {\n // If on React version >= 17, create stack trace from componentStack param and links\n // to to the original error using `error.cause` otherwise relies on error param for stacktrace.\n // Linking errors requires the `LinkedErrors` integration be enabled.\n if (isAtLeastReact17(React.version)) {\n const errorBoundaryError = new Error(error.message);\n errorBoundaryError.name = `React ErrorBoundary ${errorBoundaryError.name}`;\n errorBoundaryError.stack = componentStack;\n\n // Using the `LinkedErrors` integration to link the errors together.\n error.cause = errorBoundaryError;\n }\n\n if (beforeCapture) {\n beforeCapture(scope, error, componentStack);\n }\n const eventId = captureException(error, { contexts: { react: { componentStack } } });\n if (onError) {\n onError(error, componentStack, eventId);\n }\n if (showDialog) {\n showReportDialog({ ...dialogOptions, eventId });\n }\n\n // componentDidCatch is used over getDerivedStateFromError\n // so that componentStack is accessible through state.\n this.setState({ error, componentStack, eventId });\n });\n }\n\n public componentDidMount(): void {\n const { onMount } = this.props;\n if (onMount) {\n onMount();\n }\n }\n\n public componentWillUnmount(): void {\n const { error, componentStack, eventId } = this.state;\n const { onUnmount } = this.props;\n if (onUnmount) {\n onUnmount(error, componentStack, eventId);\n }\n }\n\n public resetErrorBoundary: () => void = () => {\n const { onReset } = this.props;\n const { error, componentStack, eventId } = this.state;\n if (onReset) {\n onReset(error, componentStack, eventId);\n }\n this.setState(INITIAL_STATE);\n };\n\n public render(): React.ReactNode {\n const { fallback, children } = this.props;\n const { error, componentStack, eventId } = this.state;\n\n if (error) {\n let element: React.ReactElement | undefined = undefined;\n if (typeof fallback === 'function') {\n element = fallback({ error, componentStack, resetError: this.resetErrorBoundary, eventId });\n } else {\n element = fallback;\n }\n\n if (React.isValidElement(element)) {\n return element;\n }\n\n if (fallback) {\n __DEBUG_BUILD__ && logger.warn('fallback did not produce a valid ReactElement');\n }\n\n // Fail gracefully if no fallback provided or is not valid\n return null;\n }\n\n if (typeof children === 'function') {\n return (children as () => React.ReactNode)();\n }\n return children;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction withErrorBoundary

>(\n WrappedComponent: React.ComponentType

,\n errorBoundaryOptions: ErrorBoundaryProps,\n): React.FC

{\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const componentDisplayName = WrappedComponent.displayName || WrappedComponent.name || UNKNOWN_COMPONENT;\n\n const Wrapped: React.FC

= (props: P) => (\n \n \n \n );\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n Wrapped.displayName = `errorBoundary(${componentDisplayName})`;\n\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}\n\nexport { ErrorBoundary, withErrorBoundary };\n", "declare const process: {\n env: {\n // Based off of constants provided in build.js\n NODE_ENV: Environment;\n SENTRY_DSN?: string;\n TMDB_API_KEY?: string;\n CLOUDFLARE_API_KEY?: string;\n VERSION: string;\n };\n};\ntype Environment = 'development' | 'production' | 'test';\nexport const ENVIRONMENT = process.env.NODE_ENV;\n\nexport const SENTRY_DSN = process.env.SENTRY_DSN;\nexport const VERSION = process.env.VERSION;\n\n// Scoring algorithm parameters\nexport const INITIAL_SAMPLE_SIZE = 100;\nexport const SUGGESTED_ACTION_COUNT = 3;\n\n// Scraper params\nexport const MOVIE_DATASET_SIZE = ENVIRONMENT === 'production' ? 900 : 10;\nexport const TMDB_API_KEY = process.env.TMDB_API_KEY;\n\n// Scraper/Cloudflare KV params\nexport const CF_ACCOUNT_ID = '58371b47d4ca0f32a2aabf9c50836c44';\nexport const CF_KV_BINDING = 'storage';\nexport const CF_KV_NAMESPACE =\n ENVIRONMENT === 'production'\n ? 'eff3591587a14a5eaf64699b2297e407'\n : '9f8139775fc044dda406db9c3b86a9b2';\nexport const CLOUDFLARE_API_KEY = process.env.CLOUDFLARE_API_KEY;\n", "import { getCurrentHub, Hub } from '@sentry/hub';\nimport { Options, Transaction } from '@sentry/types';\n\n/**\n * The `extractTraceparentData` function and `TRACEPARENT_REGEXP` constant used\n * to be declared in this file. It was later moved into `@sentry/utils` as part of a\n * move to remove `@sentry/tracing` dependencies from `@sentry/node` (`extractTraceparentData`\n * is the only tracing function used by `@sentry/node`).\n *\n * These exports are kept here for backwards compatability's sake.\n *\n * TODO(v7): Reorganize these exports\n *\n * See https://github.com/getsentry/sentry-javascript/issues/4642 for more details.\n */\nexport { TRACEPARENT_REGEXP, extractTraceparentData } from '@sentry/utils';\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nexport function hasTracingEnabled(\n maybeOptions?: Pick | undefined,\n): boolean {\n const client = getCurrentHub().getClient();\n const options = maybeOptions || (client && client.getOptions());\n return !!options && ('tracesSampleRate' in options || 'tracesSampler' in options);\n}\n\n/** Grabs active transaction off scope, if any */\nexport function getActiveTransaction(maybeHub?: Hub): T | undefined {\n const hub = maybeHub || getCurrentHub();\n const scope = hub.getScope();\n return scope && (scope.getTransaction() as T | undefined);\n}\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nexport function msToSec(time: number): number {\n return time / 1000;\n}\n\n/**\n * Converts from seconds to milliseconds\n * @param time time in seconds\n */\nexport function secToMs(time: number): number {\n return time * 1000;\n}\n\n// so it can be used in manual instrumentation without necessitating a hard dependency on @sentry/utils\nexport { stripUrlQueryAndFragment } from '@sentry/utils';\n", "import { addInstrumentationHandler, logger } from '@sentry/utils';\n\nimport { SpanStatusType } from './span';\nimport { getActiveTransaction } from './utils';\n\n/**\n * Configures global error listeners\n */\nexport function registerErrorInstrumentation(): void {\n addInstrumentationHandler('error', errorCallback);\n addInstrumentationHandler('unhandledrejection', errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback(): void {\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const status: SpanStatusType = 'internal_error';\n __DEBUG_BUILD__ && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n activeTransaction.setStatus(status);\n }\n}\n", "/* eslint-disable max-lines */\nimport { Primitive, Span as SpanInterface, SpanContext, Transaction } from '@sentry/types';\nimport { dropUndefinedKeys, timestampWithMs, uuid4 } from '@sentry/utils';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nexport class SpanRecorder {\n public spans: Span[] = [];\n\n private readonly _maxlen: number;\n\n public constructor(maxlen: number = 1000) {\n this._maxlen = maxlen;\n }\n\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n public add(span: Span): void {\n if (this.spans.length > this._maxlen) {\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n }\n}\n\n/**\n * Span contains all data about a span\n */\nexport class Span implements SpanInterface {\n /**\n * @inheritDoc\n */\n public traceId: string = uuid4();\n\n /**\n * @inheritDoc\n */\n public spanId: string = uuid4().substring(16);\n\n /**\n * @inheritDoc\n */\n public parentSpanId?: string;\n\n /**\n * Internal keeper of the status\n */\n public status?: SpanStatusType | string;\n\n /**\n * @inheritDoc\n */\n public sampled?: boolean;\n\n /**\n * Timestamp in seconds when the span was created.\n */\n public startTimestamp: number = timestampWithMs();\n\n /**\n * Timestamp in seconds when the span ended.\n */\n public endTimestamp?: number;\n\n /**\n * @inheritDoc\n */\n public op?: string;\n\n /**\n * @inheritDoc\n */\n public description?: string;\n\n /**\n * @inheritDoc\n */\n public tags: { [key: string]: Primitive } = {};\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public data: { [key: string]: any } = {};\n\n /**\n * List of spans that were finalized\n */\n public spanRecorder?: SpanRecorder;\n\n /**\n * @inheritDoc\n */\n public transaction?: Transaction;\n\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n public constructor(spanContext?: SpanContext) {\n if (!spanContext) {\n return this;\n }\n if (spanContext.traceId) {\n this.traceId = spanContext.traceId;\n }\n if (spanContext.spanId) {\n this.spanId = spanContext.spanId;\n }\n if (spanContext.parentSpanId) {\n this.parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this.sampled = spanContext.sampled;\n }\n if (spanContext.op) {\n this.op = spanContext.op;\n }\n if (spanContext.description) {\n this.description = spanContext.description;\n }\n if (spanContext.data) {\n this.data = spanContext.data;\n }\n if (spanContext.tags) {\n this.tags = spanContext.tags;\n }\n if (spanContext.status) {\n this.status = spanContext.status;\n }\n if (spanContext.startTimestamp) {\n this.startTimestamp = spanContext.startTimestamp;\n }\n if (spanContext.endTimestamp) {\n this.endTimestamp = spanContext.endTimestamp;\n }\n }\n\n /**\n * @inheritDoc\n */\n public startChild(\n spanContext?: Pick>,\n ): Span {\n const childSpan = new Span({\n ...spanContext,\n parentSpanId: this.spanId,\n sampled: this.sampled,\n traceId: this.traceId,\n });\n\n childSpan.spanRecorder = this.spanRecorder;\n if (childSpan.spanRecorder) {\n childSpan.spanRecorder.add(childSpan);\n }\n\n childSpan.transaction = this.transaction;\n\n return childSpan;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public setData(key: string, value: any): this {\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setStatus(value: SpanStatusType): this {\n this.status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setHttpStatus(httpStatus: number): this {\n this.setTag('http.status_code', String(httpStatus));\n const spanStatus = spanStatusfromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n this.setStatus(spanStatus);\n }\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public isSuccess(): boolean {\n return this.status === 'ok';\n }\n\n /**\n * @inheritDoc\n */\n public finish(endTimestamp?: number): void {\n this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n }\n\n /**\n * @inheritDoc\n */\n public toTraceparent(): string {\n let sampledString = '';\n if (this.sampled !== undefined) {\n sampledString = this.sampled ? '-1' : '-0';\n }\n return `${this.traceId}-${this.spanId}${sampledString}`;\n }\n\n /**\n * @inheritDoc\n */\n public toContext(): SpanContext {\n return dropUndefinedKeys({\n data: this.data,\n description: this.description,\n endTimestamp: this.endTimestamp,\n op: this.op,\n parentSpanId: this.parentSpanId,\n sampled: this.sampled,\n spanId: this.spanId,\n startTimestamp: this.startTimestamp,\n status: this.status,\n tags: this.tags,\n traceId: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n public updateWithContext(spanContext: SpanContext): this {\n this.data = spanContext.data ?? {};\n this.description = spanContext.description;\n this.endTimestamp = spanContext.endTimestamp;\n this.op = spanContext.op;\n this.parentSpanId = spanContext.parentSpanId;\n this.sampled = spanContext.sampled;\n this.spanId = spanContext.spanId ?? this.spanId;\n this.startTimestamp = spanContext.startTimestamp ?? this.startTimestamp;\n this.status = spanContext.status;\n this.tags = spanContext.tags ?? {};\n this.traceId = spanContext.traceId ?? this.traceId;\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getTraceContext(): {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: { [key: string]: any };\n description?: string;\n op?: string;\n parent_span_id?: string;\n span_id: string;\n status?: string;\n tags?: { [key: string]: Primitive };\n trace_id: string;\n } {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n trace_id: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n public toJSON(): {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: { [key: string]: any };\n description?: string;\n op?: string;\n parent_span_id?: string;\n span_id: string;\n start_timestamp: number;\n status?: string;\n tags?: { [key: string]: Primitive };\n timestamp?: number;\n trace_id: string;\n } {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n start_timestamp: this.startTimestamp,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this.endTimestamp,\n trace_id: this.traceId,\n });\n }\n}\n\nexport type SpanStatusType =\n /** The operation completed successfully. */\n | 'ok'\n /** Deadline expired before operation could complete. */\n | 'deadline_exceeded'\n /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n | 'unauthenticated'\n /** 403 Forbidden */\n | 'permission_denied'\n /** 404 Not Found. Some requested entity (file or directory) was not found. */\n | 'not_found'\n /** 429 Too Many Requests */\n | 'resource_exhausted'\n /** Client specified an invalid argument. 4xx. */\n | 'invalid_argument'\n /** 501 Not Implemented */\n | 'unimplemented'\n /** 503 Service Unavailable */\n | 'unavailable'\n /** Other/generic 5xx. */\n | 'internal_error'\n /** Unknown. Any non-standard HTTP status code. */\n | 'unknown_error'\n /** The operation was cancelled (typically by the user). */\n | 'cancelled'\n /** Already exists (409) */\n | 'already_exists'\n /** Operation was rejected because the system is not in a state required for the operation's */\n | 'failed_precondition'\n /** The operation was aborted, typically due to a concurrency issue. */\n | 'aborted'\n /** Operation was attempted past the valid range. */\n | 'out_of_range'\n /** Unrecoverable data loss or corruption */\n | 'data_loss';\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nexport function spanStatusfromHttpCode(httpStatus: number): SpanStatusType {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n\n return 'unknown_error';\n}\n", "import { getCurrentHub, Hub } from '@sentry/hub';\nimport {\n Baggage,\n BaggageObj,\n Event,\n Measurements,\n MeasurementUnit,\n Transaction as TransactionInterface,\n TransactionContext,\n TransactionMetadata,\n} from '@sentry/types';\nimport { createBaggage, dropUndefinedKeys, getSentryBaggageItems, isBaggageMutable, logger } from '@sentry/utils';\n\nimport { Span as SpanClass, SpanRecorder } from './span';\n\n/** JSDoc */\nexport class Transaction extends SpanClass implements TransactionInterface {\n public name: string;\n\n public metadata: TransactionMetadata;\n\n /**\n * The reference to the current hub.\n */\n public readonly _hub: Hub;\n\n private _measurements: Measurements = {};\n\n private _trimEnd?: boolean;\n\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n */\n public constructor(transactionContext: TransactionContext, hub?: Hub) {\n super(transactionContext);\n\n this._hub = hub || getCurrentHub();\n\n this.name = transactionContext.name || '';\n\n this.metadata = transactionContext.metadata || {};\n this._trimEnd = transactionContext.trimEnd;\n\n // this is because transactions are also spans, and spans have a transaction pointer\n this.transaction = this;\n }\n\n /**\n * JSDoc\n */\n public setName(name: string): void {\n this.name = name;\n }\n\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n public initSpanRecorder(maxlen: number = 1000): void {\n if (!this.spanRecorder) {\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * @inheritDoc\n */\n public setMeasurement(name: string, value: number, unit: MeasurementUnit = ''): void {\n this._measurements[name] = { value, unit };\n }\n\n /**\n * Set metadata for this transaction.\n * @hidden\n */\n public setMetadata(newMetadata: TransactionMetadata): void {\n this.metadata = { ...this.metadata, ...newMetadata };\n }\n\n /**\n * @inheritDoc\n */\n public finish(endTimestamp?: number): string | undefined {\n // This transaction is already finished, so we should not flush it again.\n if (this.endTimestamp !== undefined) {\n return undefined;\n }\n\n if (!this.name) {\n __DEBUG_BUILD__ && logger.warn('Transaction has no name, falling back to ``.');\n this.name = '';\n }\n\n // just sets the end timestamp\n super.finish(endTimestamp);\n\n if (this.sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n __DEBUG_BUILD__ && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n const client = this._hub.getClient();\n if (client) {\n client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return undefined;\n }\n\n const finishedSpans = this.spanRecorder ? this.spanRecorder.spans.filter(s => s !== this && s.endTimestamp) : [];\n\n if (this._trimEnd && finishedSpans.length > 0) {\n this.endTimestamp = finishedSpans.reduce((prev: SpanClass, current: SpanClass) => {\n if (prev.endTimestamp && current.endTimestamp) {\n return prev.endTimestamp > current.endTimestamp ? prev : current;\n }\n return prev;\n }).endTimestamp;\n }\n\n const transaction: Event = {\n contexts: {\n trace: this.getTraceContext(),\n },\n spans: finishedSpans,\n start_timestamp: this.startTimestamp,\n tags: this.tags,\n timestamp: this.endTimestamp,\n transaction: this.name,\n type: 'transaction',\n sdkProcessingMetadata: {\n ...this.metadata,\n baggage: this.getBaggage(),\n },\n };\n\n const hasMeasurements = Object.keys(this._measurements).length > 0;\n\n if (hasMeasurements) {\n __DEBUG_BUILD__ &&\n logger.log(\n '[Measurements] Adding measurements to transaction',\n JSON.stringify(this._measurements, undefined, 2),\n );\n transaction.measurements = this._measurements;\n }\n\n __DEBUG_BUILD__ && logger.log(`[Tracing] Finishing ${this.op} transaction: ${this.name}.`);\n\n return this._hub.captureEvent(transaction);\n }\n\n /**\n * @inheritDoc\n */\n public toContext(): TransactionContext {\n const spanContext = super.toContext();\n\n return dropUndefinedKeys({\n ...spanContext,\n name: this.name,\n trimEnd: this._trimEnd,\n });\n }\n\n /**\n * @inheritDoc\n */\n public updateWithContext(transactionContext: TransactionContext): this {\n super.updateWithContext(transactionContext);\n\n this.name = transactionContext.name ?? '';\n\n this._trimEnd = transactionContext.trimEnd;\n\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @experimental\n */\n public getBaggage(): Baggage {\n const existingBaggage = this.metadata.baggage;\n\n // Only add Sentry baggage items to baggage, if baggage does not exist yet or it is still\n // empty and mutable\n const finalBaggage =\n !existingBaggage || isBaggageMutable(existingBaggage)\n ? this._populateBaggageWithSentryValues(existingBaggage)\n : existingBaggage;\n\n // Update the baggage stored on the transaction.\n this.metadata.baggage = finalBaggage;\n\n return finalBaggage;\n }\n\n /**\n * Collects and adds data to the passed baggage object.\n *\n * Note: This function does not explicitly check if the passed baggage object is allowed\n * to be modified. Implicitly, `setBaggageValue` will not make modification to the object\n * if it was already set immutable.\n *\n * After adding the data, the baggage object is set immutable to prevent further modifications.\n *\n * @param baggage\n *\n * @returns modified and immutable baggage object\n */\n private _populateBaggageWithSentryValues(baggage: Baggage = createBaggage({})): Baggage {\n const hub: Hub = this._hub || getCurrentHub();\n const client = hub && hub.getClient();\n\n if (!client) return baggage;\n\n const { environment, release } = client.getOptions() || {};\n const { publicKey: public_key } = client.getDsn() || {};\n\n const rate = this.metadata && this.metadata.transactionSampling && this.metadata.transactionSampling.rate;\n const sample_rate =\n rate !== undefined\n ? rate.toLocaleString('fullwide', { useGrouping: false, maximumFractionDigits: 16 })\n : undefined;\n\n const scope = hub.getScope();\n const { id: user_id, segment: user_segment } = (scope && scope.getUser()) || {};\n\n return createBaggage(\n dropUndefinedKeys({\n environment,\n release,\n transaction: this.name,\n user_id,\n user_segment,\n public_key,\n trace_id: this.traceId,\n sample_rate,\n ...getSentryBaggageItems(baggage), // keep user-added values\n } as BaggageObj),\n '',\n false, // set baggage immutable\n );\n }\n}\n", "/* eslint-disable max-lines */\nimport { Hub } from '@sentry/hub';\nimport { TransactionContext } from '@sentry/types';\nimport { logger, timestampWithMs } from '@sentry/utils';\n\nimport { Span, SpanRecorder } from './span';\nimport { Transaction } from './transaction';\n\nexport const DEFAULT_IDLE_TIMEOUT = 1000;\nexport const DEFAULT_FINAL_TIMEOUT = 30000;\nexport const HEARTBEAT_INTERVAL = 5000;\n\n/**\n * @inheritDoc\n */\nexport class IdleTransactionSpanRecorder extends SpanRecorder {\n public constructor(\n private readonly _pushActivity: (id: string) => void,\n private readonly _popActivity: (id: string) => void,\n public transactionSpanId: string,\n maxlen?: number,\n ) {\n super(maxlen);\n }\n\n /**\n * @inheritDoc\n */\n public add(span: Span): void {\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanId !== this.transactionSpanId) {\n // We patch span.finish() to pop an activity after setting an endTimestamp.\n span.finish = (endTimestamp?: number) => {\n span.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n this._popActivity(span.spanId);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (span.endTimestamp === undefined) {\n this._pushActivity(span.spanId);\n }\n }\n\n super.add(span);\n }\n}\n\nexport type BeforeFinishCallback = (transactionSpan: IdleTransaction, endTimestamp: number) => void;\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nexport class IdleTransaction extends Transaction {\n // Activities store a list of active spans\n public activities: Record = {};\n\n // Track state of activities in previous heartbeat\n private _prevHeartbeatString: string | undefined;\n\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n private _heartbeatCounter: number = 0;\n\n // We should not use heartbeat if we finished a transaction\n private _finished: boolean = false;\n\n private readonly _beforeFinishCallbacks: BeforeFinishCallback[] = [];\n\n /**\n * Timer that tracks Transaction idleTimeout\n */\n private _idleTimeoutID: ReturnType | undefined;\n\n public constructor(\n transactionContext: TransactionContext,\n private readonly _idleHub: Hub,\n /**\n * The time to wait in ms until the idle transaction will be finished. This timer is started each time\n * there are no active spans on this transaction.\n */\n private readonly _idleTimeout: number = DEFAULT_IDLE_TIMEOUT,\n /**\n * The final value in ms that a transaction cannot exceed\n */\n private readonly _finalTimeout: number = DEFAULT_FINAL_TIMEOUT,\n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n private readonly _onScope: boolean = false,\n ) {\n super(transactionContext, _idleHub);\n\n if (_onScope) {\n // There should only be one active transaction on the scope\n clearActiveTransaction(_idleHub);\n\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n __DEBUG_BUILD__ && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanId}`);\n _idleHub.configureScope(scope => scope.setSpan(this));\n }\n\n this._startIdleTimeout();\n setTimeout(() => {\n if (!this._finished) {\n this.setStatus('deadline_exceeded');\n this.finish();\n }\n }, this._finalTimeout);\n }\n\n /** {@inheritDoc} */\n public finish(endTimestamp: number = timestampWithMs()): string | undefined {\n this._finished = true;\n this.activities = {};\n\n if (this.spanRecorder) {\n __DEBUG_BUILD__ &&\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString(), this.op);\n\n for (const callback of this._beforeFinishCallbacks) {\n callback(this, endTimestamp);\n }\n\n this.spanRecorder.spans = this.spanRecorder.spans.filter((span: Span) => {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanId === this.spanId) {\n return true;\n }\n\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!span.endTimestamp) {\n span.endTimestamp = endTimestamp;\n span.setStatus('cancelled');\n __DEBUG_BUILD__ &&\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n const keepSpan = span.startTimestamp < endTimestamp;\n if (!keepSpan) {\n __DEBUG_BUILD__ &&\n logger.log(\n '[Tracing] discarding Span since it happened after Transaction was finished',\n JSON.stringify(span, undefined, 2),\n );\n }\n return keepSpan;\n });\n\n __DEBUG_BUILD__ && logger.log('[Tracing] flushing IdleTransaction');\n } else {\n __DEBUG_BUILD__ && logger.log('[Tracing] No active IdleTransaction');\n }\n\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n clearActiveTransaction(this._idleHub);\n }\n\n return super.finish(endTimestamp);\n }\n\n /**\n * Register a callback function that gets excecuted before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n public registerBeforeFinishCallback(callback: BeforeFinishCallback): void {\n this._beforeFinishCallbacks.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public initSpanRecorder(maxlen?: number): void {\n if (!this.spanRecorder) {\n const pushActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._pushActivity(id);\n };\n const popActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._popActivity(id);\n };\n\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n __DEBUG_BUILD__ && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * Cancels the existing idletimeout, if there is one\n */\n private _cancelIdleTimeout(): void {\n if (this._idleTimeoutID) {\n clearTimeout(this._idleTimeoutID);\n this._idleTimeoutID = undefined;\n }\n }\n\n /**\n * Creates an idletimeout\n */\n private _startIdleTimeout(endTimestamp?: Parameters[0]): void {\n this._cancelIdleTimeout();\n this._idleTimeoutID = setTimeout(() => {\n if (!this._finished && Object.keys(this.activities).length === 0) {\n this.finish(endTimestamp);\n }\n }, this._idleTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n private _pushActivity(spanId: string): void {\n this._cancelIdleTimeout();\n __DEBUG_BUILD__ && logger.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n __DEBUG_BUILD__ && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n private _popActivity(spanId: string): void {\n if (this.activities[spanId]) {\n __DEBUG_BUILD__ && logger.log(`[Tracing] popActivity ${spanId}`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.activities[spanId];\n __DEBUG_BUILD__ && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampWithMs is in seconds, timeout is in ms\n const endTimestamp = timestampWithMs() + this._idleTimeout / 1000;\n this._startIdleTimeout(endTimestamp);\n }\n }\n\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n private _beat(): void {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n\n const heartbeatString = Object.keys(this.activities).join('');\n\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter += 1;\n } else {\n this._heartbeatCounter = 1;\n }\n\n this._prevHeartbeatString = heartbeatString;\n\n if (this._heartbeatCounter >= 3) {\n __DEBUG_BUILD__ && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this.finish();\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n private _pingHeartbeat(): void {\n __DEBUG_BUILD__ && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n setTimeout(() => {\n this._beat();\n }, HEARTBEAT_INTERVAL);\n }\n}\n\n/**\n * Reset transaction on scope to `undefined`\n */\nfunction clearActiveTransaction(hub: Hub): void {\n const scope = hub.getScope();\n if (scope) {\n const transaction = scope.getTransaction();\n if (transaction) {\n scope.setSpan(undefined);\n }\n }\n}\n", "import { getMainCarrier, Hub } from '@sentry/hub';\nimport {\n ClientOptions,\n CustomSamplingContext,\n Integration,\n IntegrationClass,\n Options,\n SamplingContext,\n TransactionContext,\n} from '@sentry/types';\nimport { dynamicRequire, isNaN, isNodeEnv, loadModule, logger } from '@sentry/utils';\n\nimport { registerErrorInstrumentation } from './errors';\nimport { IdleTransaction } from './idletransaction';\nimport { Transaction } from './transaction';\nimport { hasTracingEnabled } from './utils';\n\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders(this: Hub): { [key: string]: string } {\n const scope = this.getScope();\n if (scope) {\n const span = scope.getSpan();\n if (span) {\n return {\n 'sentry-trace': span.toTraceparent(),\n };\n }\n }\n return {};\n}\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * @param transaction: The transaction needing a sampling decision\n * @param options: The current client's options, so we can access `tracesSampleRate` and/or `tracesSampler`\n * @param samplingContext: Default and user-provided data which may be used to help make the decision\n *\n * @returns The given transaction with its `sampled` value set\n */\nfunction sample(\n transaction: T,\n options: Pick,\n samplingContext: SamplingContext,\n): T {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n if (transaction.sampled !== undefined) {\n transaction.setMetadata({\n transactionSampling: { method: 'explicitly_set' },\n });\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setMetadata({\n transactionSampling: {\n method: 'client_sampler',\n // cast to number in case it's a boolean\n rate: Number(sampleRate),\n },\n });\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n transaction.setMetadata({\n transactionSampling: { method: 'inheritance' },\n });\n } else {\n sampleRate = options.tracesSampleRate;\n transaction.setMetadata({\n transactionSampling: {\n method: 'client_rate',\n // cast to number in case it's a boolean\n rate: Number(sampleRate),\n },\n });\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n __DEBUG_BUILD__ && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n __DEBUG_BUILD__ &&\n logger.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n transaction.sampled = Math.random() < (sampleRate as number | boolean);\n\n // if we're not going to keep it, we're done\n if (!transaction.sampled) {\n __DEBUG_BUILD__ &&\n logger.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n __DEBUG_BUILD__ && logger.log(`[Tracing] starting ${transaction.op} transaction - ${transaction.name}`);\n return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate: unknown): boolean {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n __DEBUG_BUILD__ &&\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n __DEBUG_BUILD__ &&\n logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n this: Hub,\n transactionContext: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): Transaction {\n const client = this.getClient();\n const options: Partial = (client && client.getOptions()) || {};\n\n let transaction = new Transaction(transactionContext, this);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nexport function startIdleTransaction(\n hub: Hub,\n transactionContext: TransactionContext,\n idleTimeout: number,\n finalTimeout: number,\n onScope?: boolean,\n customSamplingContext?: CustomSamplingContext,\n): IdleTransaction {\n const client = hub.getClient();\n const options: Partial = (client && client.getOptions()) || {};\n\n let transaction = new IdleTransaction(transactionContext, hub, idleTimeout, finalTimeout, onScope);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n return transaction;\n}\n\n/**\n * @private\n */\nexport function _addTracingExtensions(): void {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n}\n\n/**\n * @private\n */\nfunction _autoloadDatabaseIntegrations(): void {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n\n const packageToIntegrationMapping: Record Integration> = {\n mongodb() {\n const integration = dynamicRequire(module, './integrations/node/mongo') as {\n Mongo: IntegrationClass;\n };\n return new integration.Mongo();\n },\n mongoose() {\n const integration = dynamicRequire(module, './integrations/node/mongo') as {\n Mongo: IntegrationClass;\n };\n return new integration.Mongo({ mongoose: true });\n },\n mysql() {\n const integration = dynamicRequire(module, './integrations/node/mysql') as {\n Mysql: IntegrationClass;\n };\n return new integration.Mysql();\n },\n pg() {\n const integration = dynamicRequire(module, './integrations/node/postgres') as {\n Postgres: IntegrationClass;\n };\n return new integration.Postgres();\n },\n };\n\n const mappedPackages = Object.keys(packageToIntegrationMapping)\n .filter(moduleName => !!loadModule(moduleName))\n .map(pkg => {\n try {\n return packageToIntegrationMapping[pkg]();\n } catch (e) {\n return undefined;\n }\n })\n .filter(p => p) as Integration[];\n\n if (mappedPackages.length > 0) {\n carrier.__SENTRY__.integrations = [...(carrier.__SENTRY__.integrations || []), ...mappedPackages];\n }\n}\n\n/**\n * This patches the global object and injects the Tracing extensions methods\n */\nexport function addExtensionMethods(): void {\n _addTracingExtensions();\n\n // Detect and automatically load specified integrations.\n if (isNodeEnv()) {\n _autoloadDatabaseIntegrations();\n }\n\n // If an error happens globally, we should make sure transaction status is set to error.\n registerErrorInstrumentation();\n}\n", "import { getGlobalObject, logger } from '@sentry/utils';\n\nimport { IdleTransaction } from '../idletransaction';\nimport { SpanStatusType } from '../span';\nimport { getActiveTransaction } from '../utils';\n\nconst global = getGlobalObject();\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nexport function registerBackgroundTabDetection(): void {\n if (global && global.document) {\n global.document.addEventListener('visibilitychange', () => {\n const activeTransaction = getActiveTransaction() as IdleTransaction;\n if (global.document.hidden && activeTransaction) {\n const statusType: SpanStatusType = 'cancelled';\n\n __DEBUG_BUILD__ &&\n logger.log(\n `[Tracing] Transaction: ${statusType} -> since tab moved to the background, op: ${activeTransaction.op}`,\n );\n // We should not set status if it is already set, this prevent important statuses like\n // error or data loss from being overwritten on transaction.\n if (!activeTransaction.status) {\n activeTransaction.setStatus(statusType);\n }\n activeTransaction.setTag('visibilitychange', 'document.hidden');\n activeTransaction.finish();\n }\n });\n } else {\n __DEBUG_BUILD__ &&\n logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n }\n}\n", "/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Metric, ReportHandler } from '../types';\n\nexport const bindReporter = (\n callback: ReportHandler,\n metric: Metric,\n reportAllChanges?: boolean,\n): ((forceReport?: boolean) => void) => {\n let prevValue: number;\n return (forceReport?: boolean) => {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n metric.delta = metric.value - (prevValue || 0);\n\n // Report the metric if there's a non-zero delta or if no previous\n // value exists (which can happen in the case of the document becoming\n // hidden when the metric value is 0).\n // See: https://github.com/GoogleChrome/web-vitals/issues/14\n if (metric.delta || prevValue === undefined) {\n prevValue = metric.value;\n callback(metric);\n }\n }\n }\n };\n};\n", "/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nexport const generateUniqueID = (): string => {\n return `v2-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n", "/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface PerformanceEntryHandler {\n (entry: PerformanceEntry): void;\n}\n\n/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nexport const observe = (type: string, callback: PerformanceEntryHandler): PerformanceObserver | undefined => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n // More extensive feature detect needed for Firefox due to:\n // https://github.com/GoogleChrome/web-vitals/issues/142\n if (type === 'first-input' && !('PerformanceEventTiming' in self)) {\n return;\n }\n\n const po: PerformanceObserver = new PerformanceObserver(l => l.getEntries().map(callback));\n\n po.observe({ type, buffered: true });\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\n};\n", "/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getGlobalObject } from '@sentry/utils';\n\nexport interface OnHiddenCallback {\n (event: Event): void;\n}\n\nexport const onHidden = (cb: OnHiddenCallback, once?: boolean): void => {\n const onHiddenOrPageHide = (event: Event): void => {\n if (event.type === 'pagehide' || getGlobalObject().document.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n};\n", "/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { initMetric } from './lib/initMetric';\nimport { observe, PerformanceEntryHandler } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport { ReportHandler } from './types';\n\n// https://wicg.github.io/layout-instability/#sec-layout-shift\nexport interface LayoutShift extends PerformanceEntry {\n value: number;\n hadRecentInput: boolean;\n sources: Array;\n toJSON(): Record;\n}\n\nexport interface LayoutShiftAttribution {\n node?: Node;\n previousRect: DOMRectReadOnly;\n currentRect: DOMRectReadOnly;\n}\n\nexport const getCLS = (onReport: ReportHandler, reportAllChanges?: boolean): void => {\n const metric = initMetric('CLS', 0);\n let report: ReturnType;\n\n let sessionValue = 0;\n let sessionEntries: PerformanceEntry[] = [];\n\n const entryHandler = (entry: LayoutShift): void => {\n // Only count layout shifts without recent user input.\n // TODO: Figure out why entry can be undefined\n if (entry && !entry.hadRecentInput) {\n const firstSessionEntry = sessionEntries[0];\n const lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n\n // If the entry occurred less than 1 second after the previous entry and\n // less than 5 seconds after the first entry in the session, include the\n // entry in the current session. Otherwise, start a new session.\n if (\n sessionValue &&\n sessionEntries.length !== 0 &&\n entry.startTime - lastSessionEntry.startTime < 1000 &&\n entry.startTime - firstSessionEntry.startTime < 5000\n ) {\n sessionValue += entry.value;\n sessionEntries.push(entry);\n } else {\n sessionValue = entry.value;\n sessionEntries = [entry];\n }\n\n // If the current session value is larger than the current CLS value,\n // update CLS and the entries contributing to it.\n if (sessionValue > metric.value) {\n metric.value = sessionValue;\n metric.entries = sessionEntries;\n if (report) {\n report();\n }\n }\n }\n };\n\n const po = observe('layout-shift', entryHandler as PerformanceEntryHandler);\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n\n onHidden(() => {\n po.takeRecords().map(entryHandler as PerformanceEntryHandler);\n report(true);\n });\n }\n};\n", "/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getGlobalObject } from '@sentry/utils';\n\nimport { onHidden } from './onHidden';\n\nlet firstHiddenTime = -1;\n\nconst initHiddenTime = (): number => {\n return getGlobalObject().document.visibilityState === 'hidden' ? 0 : Infinity;\n};\n\nconst trackChanges = (): void => {\n // Update the time if/when the document becomes hidden.\n onHidden(({ timeStamp }) => {\n firstHiddenTime = timeStamp;\n }, true);\n};\n\nexport const getVisibilityWatcher = (): {\n readonly firstHiddenTime: number;\n} => {\n if (firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n firstHiddenTime = initHiddenTime();\n trackChanges();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n };\n};\n", "/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe, PerformanceEntryHandler } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport { PerformanceEventTiming, ReportHandler } from './types';\n\nexport const getFID = (onReport: ReportHandler, reportAllChanges?: boolean): void => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('FID');\n let report: ReturnType;\n\n const entryHandler = (entry: PerformanceEventTiming): void => {\n // Only report if the page wasn't hidden prior to the first input.\n if (report && entry.startTime < visibilityWatcher.firstHiddenTime) {\n metric.value = entry.processingStart - entry.startTime;\n metric.entries.push(entry);\n report(true);\n }\n };\n\n const po = observe('first-input', entryHandler as PerformanceEntryHandler);\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n onHidden(() => {\n po.takeRecords().map(entryHandler as PerformanceEntryHandler);\n po.disconnect();\n }, true);\n }\n};\n", "/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe, PerformanceEntryHandler } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport { ReportHandler } from './types';\n\n// https://wicg.github.io/largest-contentful-paint/#sec-largest-contentful-paint-interface\nexport interface LargestContentfulPaint extends PerformanceEntry {\n renderTime: DOMHighResTimeStamp;\n loadTime: DOMHighResTimeStamp;\n size: number;\n id: string;\n url: string;\n element?: Element;\n toJSON(): Record;\n}\n\nconst reportedMetricIDs: Record = {};\n\nexport const getLCP = (onReport: ReportHandler, reportAllChanges?: boolean): void => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('LCP');\n let report: ReturnType;\n\n const entryHandler = (entry: PerformanceEntry): void => {\n // The startTime attribute returns the value of the renderTime if it is not 0,\n // and the value of the loadTime otherwise.\n const value = entry.startTime;\n\n // If the page was hidden prior to paint time of the entry,\n // ignore it and mark the metric as final, otherwise add the entry.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries.push(entry);\n }\n\n if (report) {\n report();\n }\n };\n\n const po = observe('largest-contentful-paint', entryHandler);\n\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n\n const stopListening = (): void => {\n if (!reportedMetricIDs[metric.id]) {\n po.takeRecords().map(entryHandler as PerformanceEntryHandler);\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(type => {\n addEventListener(type, stopListening, { once: true, capture: true });\n });\n\n onHidden(stopListening, true);\n }\n};\n", "import { Span, SpanContext } from '@sentry/types';\n\nimport { Transaction } from '../../transaction';\n\n/**\n * Checks if a given value is a valid measurement value.\n */\nexport function isMeasurementValue(value: unknown): value is number {\n return typeof value === 'number' && isFinite(value);\n}\n\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n */\nexport function _startChild(transaction: Transaction, { startTimestamp, ...ctx }: SpanContext): Span {\n if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n transaction.startTimestamp = startTimestamp;\n }\n\n return transaction.startChild({\n startTimestamp,\n ...ctx,\n });\n}\n", "/* eslint-disable max-lines */\nimport { Measurements } from '@sentry/types';\nimport { browserPerformanceTimeOrigin, getGlobalObject, htmlTreeAsString, logger } from '@sentry/utils';\n\nimport { Transaction } from '../../transaction';\nimport { msToSec } from '../../utils';\nimport { getCLS, LayoutShift } from '../web-vitals/getCLS';\nimport { getFID } from '../web-vitals/getFID';\nimport { getLCP, LargestContentfulPaint } from '../web-vitals/getLCP';\nimport { getVisibilityWatcher } from '../web-vitals/lib/getVisibilityWatcher';\nimport { NavigatorDeviceMemory, NavigatorNetworkInformation } from '../web-vitals/types';\nimport { _startChild, isMeasurementValue } from './utils';\n\nconst global = getGlobalObject();\n\nfunction getBrowserPerformanceAPI(): Performance | undefined {\n return global && global.addEventListener && global.performance;\n}\n\nlet _performanceCursor: number = 0;\n\nlet _measurements: Measurements = {};\nlet _lcpEntry: LargestContentfulPaint | undefined;\nlet _clsEntry: LayoutShift | undefined;\n\n/**\n * Start tracking web vitals\n */\nexport function startTrackingWebVitals(reportAllChanges: boolean = false): void {\n const performance = getBrowserPerformanceAPI();\n if (performance && browserPerformanceTimeOrigin) {\n if (performance.mark) {\n global.performance.mark('sentry-tracing-init');\n }\n _trackCLS();\n _trackLCP(reportAllChanges);\n _trackFID();\n }\n}\n\n/** Starts tracking the Cumulative Layout Shift on the current page. */\nfunction _trackCLS(): void {\n // See:\n // https://web.dev/evolving-cls/\n // https://web.dev/cls-web-tooling/\n getCLS(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding CLS');\n _measurements['cls'] = { value: metric.value, unit: '' };\n _clsEntry = entry as LayoutShift;\n });\n}\n\n/** Starts tracking the Largest Contentful Paint on the current page. */\nfunction _trackLCP(reportAllChanges: boolean): void {\n getLCP(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n const timeOrigin = msToSec(browserPerformanceTimeOrigin as number);\n const startTime = msToSec(entry.startTime);\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding LCP');\n _measurements['lcp'] = { value: metric.value, unit: 'millisecond' };\n _measurements['mark.lcp'] = { value: timeOrigin + startTime, unit: 'second' };\n _lcpEntry = entry as LargestContentfulPaint;\n }, reportAllChanges);\n}\n\n/** Starts tracking the First Input Delay on the current page. */\nfunction _trackFID(): void {\n getFID(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n const timeOrigin = msToSec(browserPerformanceTimeOrigin as number);\n const startTime = msToSec(entry.startTime);\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding FID');\n _measurements['fid'] = { value: metric.value, unit: 'millisecond' };\n _measurements['mark.fid'] = { value: timeOrigin + startTime, unit: 'second' };\n });\n}\n\n/** Add performance related spans to a transaction */\nexport function addPerformanceEntries(transaction: Transaction): void {\n const performance = getBrowserPerformanceAPI();\n if (!performance || !global.performance.getEntries || !browserPerformanceTimeOrigin) {\n // Gatekeeper if performance API not available\n return;\n }\n\n __DEBUG_BUILD__ && logger.log('[Tracing] Adding & adjusting spans using Performance API');\n const timeOrigin = msToSec(browserPerformanceTimeOrigin);\n\n const performanceEntries = performance.getEntries();\n\n let responseStartTimestamp: number | undefined;\n let requestStartTimestamp: number | undefined;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n performanceEntries.slice(_performanceCursor).forEach((entry: Record) => {\n const startTime = msToSec(entry.startTime);\n const duration = msToSec(entry.duration);\n\n if (transaction.op === 'navigation' && timeOrigin + startTime < transaction.startTimestamp) {\n return;\n }\n\n switch (entry.entryType) {\n case 'navigation': {\n _addNavigationSpans(transaction, entry, timeOrigin);\n responseStartTimestamp = timeOrigin + msToSec(entry.responseStart);\n requestStartTimestamp = timeOrigin + msToSec(entry.requestStart);\n break;\n }\n case 'mark':\n case 'paint':\n case 'measure': {\n const startTimestamp = _addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\n\n // capture web vitals\n const firstHidden = getVisibilityWatcher();\n // Only report if the page wasn't hidden prior to the web vital.\n const shouldRecord = entry.startTime < firstHidden.firstHiddenTime;\n\n if (entry.name === 'first-paint' && shouldRecord) {\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding FP');\n _measurements['fp'] = { value: entry.startTime, unit: 'millisecond' };\n _measurements['mark.fp'] = { value: startTimestamp, unit: 'second' };\n }\n if (entry.name === 'first-contentful-paint' && shouldRecord) {\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding FCP');\n _measurements['fcp'] = { value: entry.startTime, unit: 'millisecond' };\n _measurements['mark.fcp'] = { value: startTimestamp, unit: 'second' };\n }\n break;\n }\n case 'resource': {\n const resourceName = (entry.name as string).replace(global.location.origin, '');\n _addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin);\n break;\n }\n default:\n // Ignore other entry types.\n }\n });\n\n _performanceCursor = Math.max(performanceEntries.length - 1, 0);\n\n _trackNavigator(transaction);\n\n // Measurements are only available for pageload transactions\n if (transaction.op === 'pageload') {\n // Generate TTFB (Time to First Byte), which measured as the time between the beginning of the transaction and the\n // start of the response in milliseconds\n if (typeof responseStartTimestamp === 'number') {\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding TTFB');\n _measurements['ttfb'] = {\n value: (responseStartTimestamp - transaction.startTimestamp) * 1000,\n unit: 'millisecond',\n };\n\n if (typeof requestStartTimestamp === 'number' && requestStartTimestamp <= responseStartTimestamp) {\n // Capture the time spent making the request and receiving the first byte of the response.\n // This is the time between the start of the request and the start of the response in milliseconds.\n _measurements['ttfb.requestTime'] = {\n value: (responseStartTimestamp - requestStartTimestamp) * 1000,\n unit: 'millisecond',\n };\n }\n }\n\n ['fcp', 'fp', 'lcp'].forEach(name => {\n if (!_measurements[name] || timeOrigin >= transaction.startTimestamp) {\n return;\n }\n // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.\n // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need\n // to be adjusted to be relative to transaction.startTimestamp.\n const oldValue = _measurements[name].value;\n const measurementTimestamp = timeOrigin + msToSec(oldValue);\n\n // normalizedValue should be in milliseconds\n const normalizedValue = Math.abs((measurementTimestamp - transaction.startTimestamp) * 1000);\n const delta = normalizedValue - oldValue;\n\n __DEBUG_BUILD__ &&\n logger.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`);\n _measurements[name].value = normalizedValue;\n });\n\n if (_measurements['mark.fid'] && _measurements['fid']) {\n // create span for FID\n _startChild(transaction, {\n description: 'first input delay',\n endTimestamp: _measurements['mark.fid'].value + msToSec(_measurements['fid'].value),\n op: 'web.vitals',\n startTimestamp: _measurements['mark.fid'].value,\n });\n }\n\n // If FCP is not recorded we should not record the cls value\n // according to the new definition of CLS.\n if (!('fcp' in _measurements)) {\n delete _measurements.cls;\n }\n\n Object.keys(_measurements).forEach(measurementName => {\n transaction.setMeasurement(\n measurementName,\n _measurements[measurementName].value,\n _measurements[measurementName].unit,\n );\n });\n\n _tagMetricInfo(transaction);\n }\n\n _lcpEntry = undefined;\n _clsEntry = undefined;\n _measurements = {};\n}\n\n/** Create measure related spans */\nexport function _addMeasureSpans(\n transaction: Transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry: Record,\n startTime: number,\n duration: number,\n timeOrigin: number,\n): number {\n const measureStartTimestamp = timeOrigin + startTime;\n const measureEndTimestamp = measureStartTimestamp + duration;\n\n _startChild(transaction, {\n description: entry.name as string,\n endTimestamp: measureEndTimestamp,\n op: entry.entryType as string,\n startTimestamp: measureStartTimestamp,\n });\n\n return measureStartTimestamp;\n}\n\n/** Instrument navigation entries */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addNavigationSpans(transaction: Transaction, entry: Record, timeOrigin: number): void {\n ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(event => {\n _addPerformanceNavigationTiming(transaction, entry, event, timeOrigin);\n });\n _addPerformanceNavigationTiming(transaction, entry, 'secureConnection', timeOrigin, 'TLS/SSL', 'connectEnd');\n _addPerformanceNavigationTiming(transaction, entry, 'fetch', timeOrigin, 'cache', 'domainLookupStart');\n _addPerformanceNavigationTiming(transaction, entry, 'domainLookup', timeOrigin, 'DNS');\n _addRequest(transaction, entry, timeOrigin);\n}\n\n/** Create performance navigation related spans */\nfunction _addPerformanceNavigationTiming(\n transaction: Transaction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n entry: Record,\n event: string,\n timeOrigin: number,\n description?: string,\n eventEnd?: string,\n): void {\n const end = eventEnd ? (entry[eventEnd] as number | undefined) : (entry[`${event}End`] as number | undefined);\n const start = entry[`${event}Start`] as number | undefined;\n if (!start || !end) {\n return;\n }\n _startChild(transaction, {\n op: 'browser',\n description: description ?? event,\n startTimestamp: timeOrigin + msToSec(start),\n endTimestamp: timeOrigin + msToSec(end),\n });\n}\n\n/** Create request and response related spans */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _addRequest(transaction: Transaction, entry: Record, timeOrigin: number): void {\n _startChild(transaction, {\n op: 'browser',\n description: 'request',\n startTimestamp: timeOrigin + msToSec(entry.requestStart as number),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd as number),\n });\n\n _startChild(transaction, {\n op: 'browser',\n description: 'response',\n startTimestamp: timeOrigin + msToSec(entry.responseStart as number),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd as number),\n });\n}\n\nexport interface ResourceEntry extends Record {\n initiatorType?: string;\n transferSize?: number;\n encodedBodySize?: number;\n decodedBodySize?: number;\n}\n\n/** Create resource-related spans */\nexport function _addResourceSpans(\n transaction: Transaction,\n entry: ResourceEntry,\n resourceName: string,\n startTime: number,\n duration: number,\n timeOrigin: number,\n): void {\n // we already instrument based on fetch and xhr, so we don't need to\n // duplicate spans here.\n if (entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data: Record = {};\n if ('transferSize' in entry) {\n data['Transfer Size'] = entry.transferSize;\n }\n if ('encodedBodySize' in entry) {\n data['Encoded Body Size'] = entry.encodedBodySize;\n }\n if ('decodedBodySize' in entry) {\n data['Decoded Body Size'] = entry.decodedBodySize;\n }\n\n const startTimestamp = timeOrigin + startTime;\n const endTimestamp = startTimestamp + duration;\n\n _startChild(transaction, {\n description: resourceName,\n endTimestamp,\n op: entry.initiatorType ? `resource.${entry.initiatorType}` : 'resource',\n startTimestamp,\n data,\n });\n}\n\n/**\n * Capture the information of the user agent.\n */\nfunction _trackNavigator(transaction: Transaction): void {\n const navigator = global.navigator as null | (Navigator & NavigatorNetworkInformation & NavigatorDeviceMemory);\n if (!navigator) {\n return;\n }\n\n // track network connectivity\n const connection = navigator.connection;\n if (connection) {\n if (connection.effectiveType) {\n transaction.setTag('effectiveConnectionType', connection.effectiveType);\n }\n\n if (connection.type) {\n transaction.setTag('connectionType', connection.type);\n }\n\n if (isMeasurementValue(connection.rtt)) {\n _measurements['connection.rtt'] = { value: connection.rtt, unit: 'millisecond' };\n }\n\n if (isMeasurementValue(connection.downlink)) {\n _measurements['connection.downlink'] = { value: connection.downlink, unit: '' }; // unit is empty string for now, while relay doesn't support download speed units\n }\n }\n\n if (isMeasurementValue(navigator.deviceMemory)) {\n transaction.setTag('deviceMemory', `${navigator.deviceMemory} GB`);\n }\n\n if (isMeasurementValue(navigator.hardwareConcurrency)) {\n transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n }\n}\n\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction _tagMetricInfo(transaction: Transaction): void {\n if (_lcpEntry) {\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding LCP Data');\n\n // Capture Properties of the LCP element that contributes to the LCP.\n\n if (_lcpEntry.element) {\n transaction.setTag('lcp.element', htmlTreeAsString(_lcpEntry.element));\n }\n\n if (_lcpEntry.id) {\n transaction.setTag('lcp.id', _lcpEntry.id);\n }\n\n if (_lcpEntry.url) {\n // Trim URL to the first 200 characters.\n transaction.setTag('lcp.url', _lcpEntry.url.trim().slice(0, 200));\n }\n\n transaction.setTag('lcp.size', _lcpEntry.size);\n }\n\n // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n if (_clsEntry && _clsEntry.sources) {\n __DEBUG_BUILD__ && logger.log('[Measurements] Adding CLS Data');\n _clsEntry.sources.forEach((source, index) =>\n transaction.setTag(`cls.source.${index + 1}`, htmlTreeAsString(source.node)),\n );\n }\n}\n", "/* eslint-disable max-lines */\nimport type { Baggage, Span } from '@sentry/types';\nimport {\n addInstrumentationHandler,\n BAGGAGE_HEADER_NAME,\n isInstanceOf,\n isMatchingPattern,\n mergeAndSerializeBaggage,\n} from '@sentry/utils';\n\nimport { getActiveTransaction, hasTracingEnabled } from '../utils';\n\nexport const DEFAULT_TRACING_ORIGINS = ['localhost', /^\\//];\n\n/** Options for Request Instrumentation */\nexport interface RequestInstrumentationOptions {\n /**\n * List of strings / regex where the integration should create Spans out of. Additionally this will be used\n * to define which outgoing requests the `sentry-trace` header will be attached to.\n *\n * Default: ['localhost', /^\\//] {@see DEFAULT_TRACING_ORIGINS}\n */\n tracingOrigins: Array;\n\n /**\n * Flag to disable patching all together for fetch requests.\n *\n * Default: true\n */\n traceFetch: boolean;\n\n /**\n * Flag to disable patching all together for xhr requests.\n *\n * Default: true\n */\n traceXHR: boolean;\n\n /**\n * This function will be called before creating a span for a request with the given url.\n * Return false if you don't want a span for the given url.\n *\n * By default it uses the `tracingOrigins` options as a url match.\n */\n shouldCreateSpanForRequest?(url: string): boolean;\n}\n\n/** Data returned from fetch callback */\nexport interface FetchData {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args: any[]; // the arguments passed to the fetch call itself\n fetchData?: {\n method: string;\n url: string;\n // span_id\n __span?: string;\n };\n\n // TODO Should this be unknown instead? If we vendor types, make it a Response\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response?: any;\n error?: unknown;\n\n startTimestamp: number;\n endTimestamp?: number;\n}\n\n/** Data returned from XHR request */\nexport interface XHRData {\n xhr?: {\n __sentry_xhr__?: {\n method: string;\n url: string;\n status_code: number;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: Record;\n };\n __sentry_xhr_span_id__?: string;\n setRequestHeader?: (key: string, val: string) => void;\n getRequestHeader?: (key: string) => string;\n __sentry_own_request__?: boolean;\n };\n startTimestamp: number;\n endTimestamp?: number;\n}\n\ntype PolymorphicRequestHeaders =\n | Record\n | Array<[string, string]>\n // the below is not preicsely the Header type used in Request, but it'll pass duck-typing\n | {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n append: (key: string, value: string) => void;\n get: (key: string) => string;\n };\n\nexport const defaultRequestInstrumentationOptions: RequestInstrumentationOptions = {\n traceFetch: true,\n traceXHR: true,\n tracingOrigins: DEFAULT_TRACING_ORIGINS,\n};\n\n/** Registers span creators for xhr and fetch requests */\nexport function instrumentOutgoingRequests(_options?: Partial): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { traceFetch, traceXHR, tracingOrigins, shouldCreateSpanForRequest } = {\n ...defaultRequestInstrumentationOptions,\n ..._options,\n };\n\n // We should cache url -> decision so that we don't have to compute\n // regexp everytime we create a request.\n const urlMap: Record = {};\n\n const defaultShouldCreateSpan = (url: string): boolean => {\n if (urlMap[url]) {\n return urlMap[url];\n }\n const origins = tracingOrigins;\n urlMap[url] =\n origins.some((origin: string | RegExp) => isMatchingPattern(url, origin)) &&\n !isMatchingPattern(url, 'sentry_key');\n return urlMap[url];\n };\n\n // We want that our users don't have to re-implement shouldCreateSpanForRequest themselves\n // That's why we filter out already unwanted Spans from tracingOrigins\n let shouldCreateSpan = defaultShouldCreateSpan;\n if (typeof shouldCreateSpanForRequest === 'function') {\n shouldCreateSpan = (url: string) => {\n return defaultShouldCreateSpan(url) && shouldCreateSpanForRequest(url);\n };\n }\n\n const spans: Record = {};\n\n if (traceFetch) {\n addInstrumentationHandler('fetch', (handlerData: FetchData) => {\n fetchCallback(handlerData, shouldCreateSpan, spans);\n });\n }\n\n if (traceXHR) {\n addInstrumentationHandler('xhr', (handlerData: XHRData) => {\n xhrCallback(handlerData, shouldCreateSpan, spans);\n });\n }\n}\n\n/**\n * Create and track fetch request spans\n */\nexport function fetchCallback(\n handlerData: FetchData,\n shouldCreateSpan: (url: string) => boolean,\n spans: Record,\n): void {\n if (!hasTracingEnabled() || !(handlerData.fetchData && shouldCreateSpan(handlerData.fetchData.url))) {\n return;\n }\n\n if (handlerData.endTimestamp) {\n const spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n if (handlerData.response) {\n // TODO (kmclb) remove this once types PR goes through\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n span.setHttpStatus(handlerData.response.status);\n } else if (handlerData.error) {\n span.setStatus('internal_error');\n }\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return;\n }\n\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const span = activeTransaction.startChild({\n data: {\n ...handlerData.fetchData,\n type: 'fetch',\n },\n description: `${handlerData.fetchData.method} ${handlerData.fetchData.url}`,\n op: 'http.client',\n });\n\n handlerData.fetchData.__span = span.spanId;\n spans[span.spanId] = span;\n\n const request = (handlerData.args[0] = handlerData.args[0] as string | Request);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const options = (handlerData.args[1] = (handlerData.args[1] as { [key: string]: any }) || {});\n options.headers = addTracingHeaders(request, activeTransaction.getBaggage(), span, options);\n }\n}\n\nfunction addTracingHeaders(\n request: string | Request,\n incomingBaggage: Baggage | undefined,\n span: Span,\n options: { [key: string]: any },\n): PolymorphicRequestHeaders {\n let headers = options.headers;\n\n if (isInstanceOf(request, Request)) {\n headers = (request as Request).headers;\n }\n\n if (headers) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (typeof headers.append === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n headers.append('sentry-trace', span.toTraceparent());\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n headers.append(BAGGAGE_HEADER_NAME, mergeAndSerializeBaggage(incomingBaggage, headers.get(BAGGAGE_HEADER_NAME)));\n } else if (Array.isArray(headers)) {\n const [, headerBaggageString] = headers.find(([key, _]) => key === BAGGAGE_HEADER_NAME);\n headers = [\n ...headers,\n ['sentry-trace', span.toTraceparent()],\n [BAGGAGE_HEADER_NAME, mergeAndSerializeBaggage(incomingBaggage, headerBaggageString)],\n ];\n } else {\n headers = {\n ...headers,\n 'sentry-trace': span.toTraceparent(),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n baggage: mergeAndSerializeBaggage(incomingBaggage, headers.baggage),\n };\n }\n } else {\n headers = { 'sentry-trace': span.toTraceparent(), baggage: mergeAndSerializeBaggage(incomingBaggage) };\n }\n return headers;\n}\n\n/**\n * Create and track xhr request spans\n */\nexport function xhrCallback(\n handlerData: XHRData,\n shouldCreateSpan: (url: string) => boolean,\n spans: Record,\n): void {\n if (\n !hasTracingEnabled() ||\n (handlerData.xhr && handlerData.xhr.__sentry_own_request__) ||\n !(handlerData.xhr && handlerData.xhr.__sentry_xhr__ && shouldCreateSpan(handlerData.xhr.__sentry_xhr__.url))\n ) {\n return;\n }\n\n const xhr = handlerData.xhr.__sentry_xhr__;\n\n // check first if the request has finished and is tracked by an existing span which should now end\n if (handlerData.endTimestamp) {\n const spanId = handlerData.xhr.__sentry_xhr_span_id__;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n span.setHttpStatus(xhr.status_code);\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return;\n }\n\n // if not, create a new span to track it\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const span = activeTransaction.startChild({\n data: {\n ...xhr.data,\n type: 'xhr',\n method: xhr.method,\n url: xhr.url,\n },\n description: `${xhr.method} ${xhr.url}`,\n op: 'http.client',\n });\n\n handlerData.xhr.__sentry_xhr_span_id__ = span.spanId;\n spans[handlerData.xhr.__sentry_xhr_span_id__] = span;\n\n if (handlerData.xhr.setRequestHeader) {\n try {\n handlerData.xhr.setRequestHeader('sentry-trace', span.toTraceparent());\n\n const headerBaggageString =\n handlerData.xhr.getRequestHeader && handlerData.xhr.getRequestHeader(BAGGAGE_HEADER_NAME);\n\n handlerData.xhr.setRequestHeader(\n BAGGAGE_HEADER_NAME,\n mergeAndSerializeBaggage(activeTransaction.getBaggage(), headerBaggageString),\n );\n } catch (_) {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n }\n }\n}\n", "import { Transaction, TransactionContext } from '@sentry/types';\nimport { addInstrumentationHandler, getGlobalObject, logger } from '@sentry/utils';\n\nconst global = getGlobalObject();\n\n/**\n * Default function implementing pageload and navigation transactions\n */\nexport function instrumentRoutingWithDefaults(\n customStartTransaction: (context: TransactionContext) => T | undefined,\n startTransactionOnPageLoad: boolean = true,\n startTransactionOnLocationChange: boolean = true,\n): void {\n if (!global || !global.location) {\n __DEBUG_BUILD__ && logger.warn('Could not initialize routing instrumentation due to invalid location');\n return;\n }\n\n let startingUrl: string | undefined = global.location.href;\n\n let activeTransaction: T | undefined;\n if (startTransactionOnPageLoad) {\n activeTransaction = customStartTransaction({ name: global.location.pathname, op: 'pageload' });\n }\n\n if (startTransactionOnLocationChange) {\n addInstrumentationHandler('history', ({ to, from }: { to: string; from?: string }) => {\n /**\n * This early return is there to account for some cases where a navigation transaction starts right after\n * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n * create an uneccessary navigation transaction.\n *\n * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n * only be caused in certain development environments where the usage of a hot module reloader is causing\n * errors.\n */\n if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n startingUrl = undefined;\n return;\n }\n\n if (from !== to) {\n startingUrl = undefined;\n if (activeTransaction) {\n __DEBUG_BUILD__ && logger.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`);\n // If there's an open transaction on the scope, we need to finish it before creating an new one.\n activeTransaction.finish();\n }\n activeTransaction = customStartTransaction({ name: global.location.pathname, op: 'navigation' });\n }\n });\n }\n}\n", "import { Hub } from '@sentry/hub';\nimport { EventProcessor, Integration, Transaction, TransactionContext } from '@sentry/types';\nimport { getGlobalObject, logger, parseBaggageSetMutability } from '@sentry/utils';\n\nimport { startIdleTransaction } from '../hubextensions';\nimport { DEFAULT_FINAL_TIMEOUT, DEFAULT_IDLE_TIMEOUT } from '../idletransaction';\nimport { extractTraceparentData } from '../utils';\nimport { registerBackgroundTabDetection } from './backgroundtab';\nimport { addPerformanceEntries, startTrackingWebVitals } from './metrics';\nimport {\n defaultRequestInstrumentationOptions,\n instrumentOutgoingRequests,\n RequestInstrumentationOptions,\n} from './request';\nimport { instrumentRoutingWithDefaults } from './router';\n\nexport const BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing';\n\n/** Options for Browser Tracing integration */\nexport interface BrowserTracingOptions extends RequestInstrumentationOptions {\n /**\n * The time to wait in ms until the transaction will be finished during an idle state. An idle state is defined\n * by a moment where there are no in-progress spans.\n *\n * The transaction will use the end timestamp of the last finished span as the endtime for the transaction.\n * If there are still active spans when this the `idleTimeout` is set, the `idleTimeout` will get reset.\n * Time is in ms.\n *\n * Default: 1000\n */\n idleTimeout: number;\n\n /**\n * The max duration for a transaction. If a transaction duration hits the `finalTimeout` value, it\n * will be finished.\n * Time is in ms.\n *\n * Default: 30000\n */\n finalTimeout: number;\n\n /**\n * Flag to enable/disable creation of `navigation` transaction on history changes.\n *\n * Default: true\n */\n startTransactionOnLocationChange: boolean;\n\n /**\n * Flag to enable/disable creation of `pageload` transaction on first pageload.\n *\n * Default: true\n */\n startTransactionOnPageLoad: boolean;\n\n /**\n * Flag Transactions where tabs moved to background with \"cancelled\". Browser background tab timing is\n * not suited towards doing precise measurements of operations. By default, we recommend that this option\n * be enabled as background transactions can mess up your statistics in nondeterministic ways.\n *\n * Default: true\n */\n markBackgroundTransactions: boolean;\n\n /**\n * _metricOptions allows the user to send options to change how metrics are collected.\n *\n * _metricOptions is currently experimental.\n *\n * Default: undefined\n */\n _metricOptions?: Partial<{ _reportAllChanges: boolean }>;\n\n /**\n * beforeNavigate is called before a pageload/navigation transaction is created and allows users to modify transaction\n * context data, or drop the transaction entirely (by setting `sampled = false` in the context).\n *\n * Note: For legacy reasons, transactions can also be dropped by returning `undefined`.\n *\n * @param context: The context data which will be passed to `startTransaction` by default\n *\n * @returns A (potentially) modified context object, with `sampled = false` if the transaction should be dropped.\n */\n beforeNavigate?(context: TransactionContext): TransactionContext | undefined;\n\n /**\n * Instrumentation that creates routing change transactions. By default creates\n * pageload and navigation transactions.\n */\n routingInstrumentation(\n customStartTransaction: (context: TransactionContext) => T | undefined,\n startTransactionOnPageLoad?: boolean,\n startTransactionOnLocationChange?: boolean,\n ): void;\n}\n\nconst DEFAULT_BROWSER_TRACING_OPTIONS = {\n idleTimeout: DEFAULT_IDLE_TIMEOUT,\n finalTimeout: DEFAULT_FINAL_TIMEOUT,\n markBackgroundTransactions: true,\n routingInstrumentation: instrumentRoutingWithDefaults,\n startTransactionOnLocationChange: true,\n startTransactionOnPageLoad: true,\n ...defaultRequestInstrumentationOptions,\n};\n\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n */\nexport class BrowserTracing implements Integration {\n // This class currently doesn't have a static `id` field like the other integration classes, because it prevented\n // @sentry/tracing from being treeshaken. Tree shakers do not like static fields, because they behave like side effects.\n // TODO: Come up with a better plan, than using static fields on integration classes, and use that plan on all\n // integrations.\n\n /** Browser Tracing integration options */\n public options: BrowserTracingOptions;\n\n /**\n * @inheritDoc\n */\n public name: string = BROWSER_TRACING_INTEGRATION_ID;\n\n private _getCurrentHub?: () => Hub;\n\n private readonly _emitOptionsWarning?: boolean;\n\n public constructor(_options?: Partial) {\n let tracingOrigins = defaultRequestInstrumentationOptions.tracingOrigins;\n // NOTE: Logger doesn't work in constructors, as it's initialized after integrations instances\n if (_options) {\n if (_options.tracingOrigins && Array.isArray(_options.tracingOrigins) && _options.tracingOrigins.length !== 0) {\n tracingOrigins = _options.tracingOrigins;\n } else {\n __DEBUG_BUILD__ && (this._emitOptionsWarning = true);\n }\n }\n\n this.options = {\n ...DEFAULT_BROWSER_TRACING_OPTIONS,\n ..._options,\n tracingOrigins,\n };\n\n const { _metricOptions } = this.options;\n startTrackingWebVitals(_metricOptions && _metricOptions._reportAllChanges);\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n this._getCurrentHub = getCurrentHub;\n\n if (this._emitOptionsWarning) {\n __DEBUG_BUILD__ &&\n logger.warn(\n '[Tracing] You need to define `tracingOrigins` in the options. Set an array of urls or patterns to trace.',\n );\n __DEBUG_BUILD__ &&\n logger.warn(\n `[Tracing] We added a reasonable default for you: ${defaultRequestInstrumentationOptions.tracingOrigins}`,\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const {\n routingInstrumentation: instrumentRouting,\n startTransactionOnLocationChange,\n startTransactionOnPageLoad,\n markBackgroundTransactions,\n traceFetch,\n traceXHR,\n tracingOrigins,\n shouldCreateSpanForRequest,\n } = this.options;\n\n instrumentRouting(\n (context: TransactionContext) => this._createRouteTransaction(context),\n startTransactionOnPageLoad,\n startTransactionOnLocationChange,\n );\n\n if (markBackgroundTransactions) {\n registerBackgroundTabDetection();\n }\n\n instrumentOutgoingRequests({ traceFetch, traceXHR, tracingOrigins, shouldCreateSpanForRequest });\n }\n\n /** Create routing idle transaction. */\n private _createRouteTransaction(context: TransactionContext): Transaction | undefined {\n if (!this._getCurrentHub) {\n __DEBUG_BUILD__ &&\n logger.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { beforeNavigate, idleTimeout, finalTimeout } = this.options;\n\n const parentContextFromHeader = context.op === 'pageload' ? extractTraceDataFromMetaTags() : undefined;\n\n const expandedContext = {\n ...context,\n ...parentContextFromHeader,\n trimEnd: true,\n };\n const modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\n\n // For backwards compatibility reasons, beforeNavigate can return undefined to \"drop\" the transaction (prevent it\n // from being sent to Sentry).\n const finalContext = modifiedContext === undefined ? { ...expandedContext, sampled: false } : modifiedContext;\n\n if (finalContext.sampled === false) {\n __DEBUG_BUILD__ &&\n logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`);\n }\n\n __DEBUG_BUILD__ && logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);\n\n const hub = this._getCurrentHub();\n const { location } = getGlobalObject() as WindowOrWorkerGlobalScope & { location: Location };\n\n const idleTransaction = startIdleTransaction(\n hub,\n finalContext,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n );\n idleTransaction.registerBeforeFinishCallback(transaction => {\n addPerformanceEntries(transaction);\n transaction.setTag(\n 'sentry_reportAllChanges',\n Boolean(this.options._metricOptions && this.options._metricOptions._reportAllChanges),\n );\n });\n\n return idleTransaction as Transaction;\n }\n}\n\n/**\n * Gets transaction context data from `sentry-trace` and `baggage` tags.\n * @returns Transaction context data or undefined neither tag exists or has valid data\n */\nexport function extractTraceDataFromMetaTags(): Partial | undefined {\n const sentrytraceValue = getMetaContent('sentry-trace');\n const baggageValue = getMetaContent('baggage');\n\n const sentrytraceData = sentrytraceValue ? extractTraceparentData(sentrytraceValue) : undefined;\n const baggage = parseBaggageSetMutability(baggageValue, sentrytraceValue);\n\n // TODO more extensive checks for baggage validity/emptyness?\n if (sentrytraceData || baggage) {\n return {\n ...(sentrytraceData && sentrytraceData),\n ...(baggage && { metadata: { baggage } }),\n };\n }\n\n return undefined;\n}\n\n/** Returns the value of a meta tag */\nexport function getMetaContent(metaName: string): string | null {\n const globalObject = getGlobalObject();\n\n // DOM/querySelector is not available in all environments\n if (globalObject.document && globalObject.document.querySelector) {\n const el = globalObject.document.querySelector(`meta[name=${metaName}]`);\n return el ? el.getAttribute('content') : null;\n } else {\n return null;\n }\n}\n", "import { addExtensionMethods } from './hubextensions';\nimport * as Integrations from './integrations';\n\nexport type { RequestInstrumentationOptions } from './browser';\nexport type { SpanStatusType } from './span';\n\nexport { Integrations };\n\n// This is already exported as part of `Integrations` above (and for the moment will remain so for\n// backwards compatibility), but that interferes with treeshaking, so we also export it separately\n// here.\n//\n// Previously we expected users to import tracing integrations like\n//\n// import { Integrations } from '@sentry/tracing';\n// const instance = new Integrations.BrowserTracing();\n//\n// This makes the integrations unable to be treeshaken though. To address this, we now have\n// this individual export. We now expect users to consume BrowserTracing like so:\n//\n// import { BrowserTracing } from '@sentry/tracing';\n// const instance = new BrowserTracing();\n//\n// For an example of of the new usage of BrowserTracing, see @sentry/nextjs index.client.ts\nexport { BrowserTracing, BROWSER_TRACING_INTEGRATION_ID } from './browser';\n\nexport { Span, spanStatusfromHttpCode } from './span';\n// eslint-disable-next-line deprecation/deprecation\nexport { SpanStatus } from './spanstatus';\nexport { Transaction } from './transaction';\nexport { instrumentOutgoingRequests, defaultRequestInstrumentationOptions } from './browser';\nexport { IdleTransaction } from './idletransaction';\nexport { startIdleTransaction } from './hubextensions';\n\n// Treeshakable guard to remove all code related to tracing\ndeclare const __SENTRY_TRACING__: boolean;\n\n// Guard for tree\nif (typeof __SENTRY_TRACING__ === 'undefined' || __SENTRY_TRACING__) {\n // We are patching the global object with our hub extension methods\n addExtensionMethods();\n}\n\nexport { addExtensionMethods };\n\nexport {\n extractTraceparentData,\n getActiveTransaction,\n hasTracingEnabled,\n stripUrlQueryAndFragment,\n TRACEPARENT_REGEXP,\n} from './utils';\n", "import {init} from '@sentry/react';\nimport {ENVIRONMENT, SENTRY_DSN, VERSION} from '../shared/config';\nimport {BrowserTracing} from '@sentry/tracing';\n\ninit({\n dsn: SENTRY_DSN,\n integrations: [new BrowserTracing()],\n tracesSampleRate: 1.0,\n environment: ENVIRONMENT,\n release: VERSION,\n});\n", "import React, {useState, StrictMode} from 'react';\nimport {ErrorBoundary, withProfiler} from '@sentry/react';\nimport {Store} from './store/Store';\nimport MovieView from './components/MovieView';\nimport './App.css';\n\nconst TITLES = [\n 'What should I fucking watch?!',\n 'What the fuck should I watch?',\n 'Fuck, what do I watch?!',\n 'Try this fucking movie',\n 'Fuck you, watch a movie.',\n];\n\nconst App = () => {\n const [title] = useState(\n () => TITLES[Math.floor(Math.random() * TITLES.length)]\n );\n return (\n \n \n

\n

{title}

\n
\n Well shit, we really fucked up.

}>\n \n
\n
\n
\n
\n \n \n );\n};\n\nexport default withProfiler(App);\n", "import React, {useContext, useReducer} from 'react';\nimport {State, stateReducer, StoreDispatch} from './storeReducer';\n\nexport const initialState: State = {\n loading: true,\n movieResp: null,\n preferences: null,\n};\n\ntype StoreContextValue = [State, StoreDispatch];\nconst StoreContext = React.createContext([\n initialState,\n () => {},\n]);\n\nexport const Store = ({children}: React.PropsWithChildren<{}>) => {\n const [state, dispatch] = useReducer(stateReducer, initialState);\n return (\n \n {children}\n \n );\n};\n\nexport const useStore = () => useContext(StoreContext)[0];\nexport const useDispatch = () => useContext(StoreContext)[1];\n", "import type {Dispatch, Reducer} from 'react';\nimport type {\n ErrorResponse,\n ScoredMovieResponse,\n} from '../../shared/clientapi/Response';\nimport type {ScoringPreference} from '../../shared/clientapi/Scoring';\nimport {assertNever} from '../../shared/util';\nimport {ENVIRONMENT} from '../../shared/config';\n\nconst PREFERENCES_STORAGE_KEY = 'wtfsiw_preferences';\n\nexport interface State {\n loading: boolean;\n movieResp: ScoredMovieResponse | ErrorResponse | null;\n preferences: ScoringPreference[] | null;\n}\n\ninterface AddPreferenceAction {\n type: 'add_preference';\n payload: ScoringPreference;\n}\ninterface StartLoadingAction {\n type: 'start_loading';\n}\ninterface MovieLoadedAction {\n type: 'movie_loaded';\n payload: ScoredMovieResponse | ErrorResponse;\n}\ninterface LoadPreferencesAction {\n type: 'load_preferences';\n}\n\nexport type Action =\n | AddPreferenceAction\n | StartLoadingAction\n | MovieLoadedAction\n | LoadPreferencesAction;\nexport type StoreDispatch = Dispatch;\n\nexport const stateReducer: Reducer = (\n state: State,\n action: Action | Record = {}\n) => {\n if (ENVIRONMENT === 'development') console.log('[STORE]', state, action);\n switch (action.type) {\n case 'load_preferences':\n try {\n const prefs = localStorage.getItem(PREFERENCES_STORAGE_KEY);\n if (prefs) {\n return {\n ...state,\n preferences: JSON.parse(prefs),\n };\n }\n } catch (e) {\n // Failed to parse or something, remove it\n localStorage.removeItem(PREFERENCES_STORAGE_KEY);\n // TODO sentry report\n }\n return {...state, preferences: []};\n case 'add_preference': {\n const newPrefs = [\n ...(state.preferences || []).filter((p: ScoringPreference) => {\n // Remove preferences for the same person\n if (p.type === 'person') {\n return (\n action.payload.type !== 'person' ||\n p.personId !== action.payload.personId\n );\n }\n return (\n action.payload.type !== 'genre' ||\n p.genreId !== action.payload.genreId\n );\n }),\n {\n type: action.payload.type,\n weight: action.payload.weight,\n personId: (action.payload as any).personId,\n genreId: (action.payload as any).genreId,\n },\n ];\n\n try {\n localStorage.setItem(PREFERENCES_STORAGE_KEY, JSON.stringify(newPrefs));\n } catch (e) {\n // TODO sentry report\n }\n\n return {\n ...state,\n preferences: newPrefs,\n };\n }\n case 'start_loading': {\n return {\n ...state,\n loading: true,\n };\n }\n case 'movie_loaded': {\n return {\n ...state,\n loading: false,\n movieResp: action.payload,\n };\n }\n default:\n assertNever(action);\n }\n\n return state;\n};\n", "import React, {useEffect} from 'react';\nimport {useDispatch, useStore} from '../store/Store';\nimport {getMovie} from '../api';\nimport './MovieView.css';\nimport Movie from './Movie';\nimport ErrorMessage from './ErrorMessage';\n\nconst MovieView = () => {\n const dispatch = useDispatch();\n const store = useStore();\n const {loading, movieResp, preferences} = store;\n const cls = ['MovieView-content', loading && 'MovieView-content--loading']\n .filter((i) => !!i)\n .join(' ');\n\n function reloadMovie() {\n // IDK how async reducers are supposed to work. This'll do for now :shrug:\n dispatch({type: 'start_loading'});\n getMovie(preferences ?? []).then((r) =>\n dispatch({type: 'movie_loaded', payload: r})\n );\n }\n\n useEffect(() => {\n dispatch({type: 'load_preferences'});\n }, []);\n\n useEffect(() => {\n if (preferences) reloadMovie();\n }, [preferences]);\n\n if (!movieResp) {\n return (\n
\n

Finding something good...

\n
\n );\n }\n\n return (\n
\n {'error' in movieResp ? (\n \n ) : (\n \n )}\n
\n );\n};\n\nexport default MovieView;\n", "import type {\n ErrorResponse,\n ScoredMovieResponse,\n} from '../shared/clientapi/Response';\nimport type {ScoringPreference} from '../shared/clientapi/Scoring';\nimport type {ScoredMovieRequest} from '../shared/clientapi/Request';\n\nexport async function getMovie(\n prefs: ScoringPreference[] = []\n): Promise {\n // TODO sentry perf tracking\n const resp = await fetch('/api/movie', {\n method: 'POST',\n body: JSON.stringify({preferences: prefs} as ScoredMovieRequest),\n });\n\n return resp.json();\n}\n", "import React from 'react';\nimport type {ClientMovie, ScoringAction} from '../../shared/clientapi/Response';\nimport {useDispatch, useStore} from '../store/Store';\nimport {getMovie} from '../api';\n\nconst SOURCE_PAGE_BASE = 'https://www.themoviedb.org/movie/';\n\nconst Movie = ({\n movie,\n actions,\n}: {\n movie: ClientMovie;\n actions: ScoringAction[];\n}) => {\n const {preferences} = useStore();\n const dispatch = useDispatch();\n\n function reloadMovie() {\n // IDK how async reducers are supposed to work. This'll do for now :shrug:\n dispatch({type: 'start_loading'});\n getMovie(preferences ?? []).then((r) =>\n dispatch({type: 'movie_loaded', payload: r})\n );\n }\n\n return (\n <>\n

{movie.title}

\n

\n {movie.overview} - \n View on TMDb\n

\n
    \n {actions.map((action, i) => (\n
  • \n \n dispatch({type: 'add_preference', payload: action})\n }\n >\n {action.label}\n \n
  • \n ))}\n
  • \n \n
  • \n
\n \n );\n};\n\nexport default Movie;\n", "import React from 'react';\nimport {useDispatch, useStore} from '../store/Store';\nimport {getMovie} from '../api';\nimport type {ErrorResponse} from '../../shared/clientapi/Response';\n\nconst ErrorMessage = ({resp}: {resp: ErrorResponse}) => {\n const {preferences} = useStore();\n const dispatch = useDispatch();\n\n function reloadMovie() {\n // IDK how async reducers are supposed to work. This'll do for now :shrug:\n dispatch({type: 'start_loading'});\n getMovie(preferences ?? []).then((r) =>\n dispatch({type: 'movie_loaded', payload: r})\n );\n }\n\n return (\n <>\n

Fuck. Something went wrong.

\n \n {resp && (\n

\n {resp.message} ({resp.error})\n

\n )}\n \n );\n};\n\nexport default ErrorMessage;\n"], "mappings": "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", "names": [] }