@sentry/replay 7.82.0 → 7.84.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/index.js +64 -51
- package/cjs/index.js.map +1 -1
- package/esm/index.js +65 -52
- package/esm/index.js.map +1 -1
- package/package.json +6 -6
- package/types/coreHandlers/handleGlobalEvent.d.ts.map +1 -1
- package/types/coreHandlers/handleNetworkBreadcrumbs.d.ts.map +1 -1
- package/types/coreHandlers/util/domUtils.d.ts +1 -2
- package/types/coreHandlers/util/domUtils.d.ts.map +1 -1
- package/types/coreHandlers/util/fetchUtils.d.ts.map +1 -1
- package/types/coreHandlers/util/networkUtils.d.ts.map +1 -1
- package/types/coreHandlers/util/xhrUtils.d.ts.map +1 -1
- package/types/debug-build.d.ts +7 -0
- package/types/debug-build.d.ts.map +1 -0
- package/types/eventBuffer/EventBufferProxy.d.ts.map +1 -1
- package/types/eventBuffer/WorkerHandler.d.ts.map +1 -1
- package/types/replay.d.ts.map +1 -1
- package/types/util/addEvent.d.ts.map +1 -1
- package/types/util/getPrivacyOptions.d.ts.map +1 -1
- package/types/util/handleRecordingEmit.d.ts.map +1 -1
- package/types/util/log.d.ts.map +1 -1
- package/types/util/sendReplay.d.ts.map +1 -1
- package/types/util/shouldFilterRequest.d.ts.map +1 -1
- package/types-ts3.8/coreHandlers/util/domUtils.d.ts +1 -2
- package/types-ts3.8/debug-build.d.ts +7 -0
package/esm/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getCurrentHub, getClient, isSentryRequestUrl, addGlobalEventProcessor, prepareEvent, setContext, captureException } from '@sentry/core';
|
|
2
|
-
import { GLOBAL_OBJ, normalize, fill, htmlTreeAsString, browserPerformanceTimeOrigin, logger, uuid4, SENTRY_XHR_DATA_KEY, dropUndefinedKeys, stringMatchesSomePattern, addFetchInstrumentationHandler, addXhrInstrumentationHandler, addClickKeypressInstrumentationHandler, addHistoryInstrumentationHandler, createEnvelope, createEventEnvelopeHeaders, getSdkMetadataForEnvelopeHeader, updateRateLimits, isRateLimited, isBrowser } from '@sentry/utils';
|
|
2
|
+
import { GLOBAL_OBJ, normalize, fill, htmlTreeAsString, browserPerformanceTimeOrigin, logger, uuid4, SENTRY_XHR_DATA_KEY, dropUndefinedKeys, stringMatchesSomePattern, addFetchInstrumentationHandler, addXhrInstrumentationHandler, addClickKeypressInstrumentationHandler, addHistoryInstrumentationHandler, createEnvelope, createEventEnvelopeHeaders, getSdkMetadataForEnvelopeHeader, updateRateLimits, isRateLimited, consoleSandbox, isBrowser } from '@sentry/utils';
|
|
3
3
|
import { addPerformanceInstrumentationHandler, addLcpInstrumentationHandler } from '@sentry-internal/tracing';
|
|
4
4
|
|
|
5
5
|
// exporting a separate copy of `WINDOW` rather than exporting the one from `@sentry/browser`
|
|
@@ -4354,7 +4354,7 @@ const handleDomListener = (
|
|
|
4354
4354
|
handleClick(
|
|
4355
4355
|
replay.clickDetector,
|
|
4356
4356
|
result ,
|
|
4357
|
-
getClickTargetNode(handlerData.event) ,
|
|
4357
|
+
getClickTargetNode(handlerData.event ) ,
|
|
4358
4358
|
);
|
|
4359
4359
|
}
|
|
4360
4360
|
|
|
@@ -4410,7 +4410,7 @@ function getDomTarget(handlerData) {
|
|
|
4410
4410
|
|
|
4411
4411
|
// Accessing event.target can throw (see getsentry/raven-js#838, #768)
|
|
4412
4412
|
try {
|
|
4413
|
-
target = isClick ? getClickTargetNode(handlerData.event) : getTargetNode(handlerData.event);
|
|
4413
|
+
target = isClick ? getClickTargetNode(handlerData.event ) : getTargetNode(handlerData.event );
|
|
4414
4414
|
message = htmlTreeAsString(target, { maxStringLength: 200 }) || '<unknown>';
|
|
4415
4415
|
} catch (e) {
|
|
4416
4416
|
message = '<unknown>';
|
|
@@ -4672,6 +4672,13 @@ function setupPerformanceObserver(replay) {
|
|
|
4672
4672
|
};
|
|
4673
4673
|
}
|
|
4674
4674
|
|
|
4675
|
+
/**
|
|
4676
|
+
* This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.
|
|
4677
|
+
*
|
|
4678
|
+
* ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.
|
|
4679
|
+
*/
|
|
4680
|
+
const DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);
|
|
4681
|
+
|
|
4675
4682
|
const r = `var t=Uint8Array,n=Uint16Array,r=Int32Array,e=new t([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),i=new t([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),a=new t([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=function(t,e){for(var i=new n(31),a=0;a<31;++a)i[a]=e+=1<<t[a-1];var s=new r(i[30]);for(a=1;a<30;++a)for(var o=i[a];o<i[a+1];++o)s[o]=o-i[a]<<5|a;return{b:i,r:s}},o=s(e,2),f=o.b,h=o.r;f[28]=258,h[258]=28;for(var l=s(i,0).r,u=new n(32768),c=0;c<32768;++c){var v=(43690&c)>>1|(21845&c)<<1;v=(61680&(v=(52428&v)>>2|(13107&v)<<2))>>4|(3855&v)<<4,u[c]=((65280&v)>>8|(255&v)<<8)>>1}var d=function(t,r,e){for(var i=t.length,a=0,s=new n(r);a<i;++a)t[a]&&++s[t[a]-1];var o,f=new n(r);for(a=1;a<r;++a)f[a]=f[a-1]+s[a-1]<<1;if(e){o=new n(1<<r);var h=15-r;for(a=0;a<i;++a)if(t[a])for(var l=a<<4|t[a],c=r-t[a],v=f[t[a]-1]++<<c,d=v|(1<<c)-1;v<=d;++v)o[u[v]>>h]=l}else for(o=new n(i),a=0;a<i;++a)t[a]&&(o[a]=u[f[t[a]-1]++]>>15-t[a]);return o},g=new t(288);for(c=0;c<144;++c)g[c]=8;for(c=144;c<256;++c)g[c]=9;for(c=256;c<280;++c)g[c]=7;for(c=280;c<288;++c)g[c]=8;var w=new t(32);for(c=0;c<32;++c)w[c]=5;var p=d(g,9,0),y=d(w,5,0),m=function(t){return(t+7)/8|0},b=function(n,r,e){return(null==r||r<0)&&(r=0),(null==e||e>n.length)&&(e=n.length),new t(n.subarray(r,e))},M=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],E=function(t,n,r){var e=new Error(n||M[t]);if(e.code=t,Error.captureStackTrace&&Error.captureStackTrace(e,E),!r)throw e;return e},z=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8},A=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8,t[e+2]|=r>>16},_=function(r,e){for(var i=[],a=0;a<r.length;++a)r[a]&&i.push({s:a,f:r[a]});var s=i.length,o=i.slice();if(!s)return{t:F,l:0};if(1==s){var f=new t(i[0].s+1);return f[i[0].s]=1,{t:f,l:1}}i.sort((function(t,n){return t.f-n.f})),i.push({s:-1,f:25001});var h=i[0],l=i[1],u=0,c=1,v=2;for(i[0]={s:-1,f:h.f+l.f,l:h,r:l};c!=s-1;)h=i[i[u].f<i[v].f?u++:v++],l=i[u!=c&&i[u].f<i[v].f?u++:v++],i[c++]={s:-1,f:h.f+l.f,l:h,r:l};var d=o[0].s;for(a=1;a<s;++a)o[a].s>d&&(d=o[a].s);var g=new n(d+1),w=x(i[c-1],g,0);if(w>e){a=0;var p=0,y=w-e,m=1<<y;for(o.sort((function(t,n){return g[n.s]-g[t.s]||t.f-n.f}));a<s;++a){var b=o[a].s;if(!(g[b]>e))break;p+=m-(1<<w-g[b]),g[b]=e}for(p>>=y;p>0;){var M=o[a].s;g[M]<e?p-=1<<e-g[M]++-1:++a}for(;a>=0&&p;--a){var E=o[a].s;g[E]==e&&(--g[E],++p)}w=e}return{t:new t(g),l:w}},x=function(t,n,r){return-1==t.s?Math.max(x(t.l,n,r+1),x(t.r,n,r+1)):n[t.s]=r},D=function(t){for(var r=t.length;r&&!t[--r];);for(var e=new n(++r),i=0,a=t[0],s=1,o=function(t){e[i++]=t},f=1;f<=r;++f)if(t[f]==a&&f!=r)++s;else{if(!a&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(o(a),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0)}for(;s--;)o(a);s=1,a=t[f]}return{c:e.subarray(0,i),n:r}},T=function(t,n){for(var r=0,e=0;e<n.length;++e)r+=t[e]*n[e];return r},k=function(t,n,r){var e=r.length,i=m(n+2);t[i]=255&e,t[i+1]=e>>8,t[i+2]=255^t[i],t[i+3]=255^t[i+1];for(var a=0;a<e;++a)t[i+a+4]=r[a];return 8*(i+4+e)},C=function(t,r,s,o,f,h,l,u,c,v,m){z(r,m++,s),++f[256];for(var b=_(f,15),M=b.t,E=b.l,x=_(h,15),C=x.t,U=x.l,F=D(M),I=F.c,S=F.n,L=D(C),O=L.c,j=L.n,q=new n(19),B=0;B<I.length;++B)++q[31&I[B]];for(B=0;B<O.length;++B)++q[31&O[B]];for(var G=_(q,7),H=G.t,J=G.l,K=19;K>4&&!H[a[K-1]];--K);var N,P,Q,R,V=v+5<<3,W=T(f,g)+T(h,w)+l,X=T(f,M)+T(h,C)+l+14+3*K+T(q,H)+2*q[16]+3*q[17]+7*q[18];if(c>=0&&V<=W&&V<=X)return k(r,m,t.subarray(c,c+v));if(z(r,m,1+(X<W)),m+=2,X<W){N=d(M,E,0),P=M,Q=d(C,U,0),R=C;var Y=d(H,J,0);z(r,m,S-257),z(r,m+5,j-1),z(r,m+10,K-4),m+=14;for(B=0;B<K;++B)z(r,m+3*B,H[a[B]]);m+=3*K;for(var Z=[I,O],$=0;$<2;++$){var tt=Z[$];for(B=0;B<tt.length;++B){var nt=31&tt[B];z(r,m,Y[nt]),m+=H[nt],nt>15&&(z(r,m,tt[B]>>5&127),m+=tt[B]>>12)}}}else N=p,P=g,Q=y,R=w;for(B=0;B<u;++B){var rt=o[B];if(rt>255){A(r,m,N[(nt=rt>>18&31)+257]),m+=P[nt+257],nt>7&&(z(r,m,rt>>23&31),m+=e[nt]);var et=31&rt;A(r,m,Q[et]),m+=R[et],et>3&&(A(r,m,rt>>5&8191),m+=i[et])}else A(r,m,N[rt]),m+=P[rt]}return A(r,m,N[256]),m+P[256]},U=new r([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),F=new t(0),I=function(){for(var t=new Int32Array(256),n=0;n<256;++n){for(var r=n,e=9;--e;)r=(1&r&&-306674912)^r>>>1;t[n]=r}return t}(),S=function(){var t=1,n=0;return{p:function(r){for(var e=t,i=n,a=0|r.length,s=0;s!=a;){for(var o=Math.min(s+2655,a);s<o;++s)i+=e+=r[s];e=(65535&e)+15*(e>>16),i=(65535&i)+15*(i>>16)}t=e,n=i},d:function(){return(255&(t%=65521))<<24|(65280&t)<<8|(255&(n%=65521))<<8|n>>8}}},L=function(a,s,o,f,u){if(!u&&(u={l:1},s.dictionary)){var c=s.dictionary.subarray(-32768),v=new t(c.length+a.length);v.set(c),v.set(a,c.length),a=v,u.w=c.length}return function(a,s,o,f,u,c){var v=c.z||a.length,d=new t(f+v+5*(1+Math.ceil(v/7e3))+u),g=d.subarray(f,d.length-u),w=c.l,p=7&(c.r||0);if(s){p&&(g[0]=c.r>>3);for(var y=U[s-1],M=y>>13,E=8191&y,z=(1<<o)-1,A=c.p||new n(32768),_=c.h||new n(z+1),x=Math.ceil(o/3),D=2*x,T=function(t){return(a[t]^a[t+1]<<x^a[t+2]<<D)&z},F=new r(25e3),I=new n(288),S=new n(32),L=0,O=0,j=c.i||0,q=0,B=c.w||0,G=0;j+2<v;++j){var H=T(j),J=32767&j,K=_[H];if(A[J]=K,_[H]=J,B<=j){var N=v-j;if((L>7e3||q>24576)&&(N>423||!w)){p=C(a,g,0,F,I,S,O,q,G,j-G,p),q=L=O=0,G=j;for(var P=0;P<286;++P)I[P]=0;for(P=0;P<30;++P)S[P]=0}var Q=2,R=0,V=E,W=J-K&32767;if(N>2&&H==T(j-W))for(var X=Math.min(M,N)-1,Y=Math.min(32767,j),Z=Math.min(258,N);W<=Y&&--V&&J!=K;){if(a[j+Q]==a[j+Q-W]){for(var $=0;$<Z&&a[j+$]==a[j+$-W];++$);if($>Q){if(Q=$,R=W,$>X)break;var tt=Math.min(W,$-2),nt=0;for(P=0;P<tt;++P){var rt=j-W+P&32767,et=rt-A[rt]&32767;et>nt&&(nt=et,K=rt)}}}W+=(J=K)-(K=A[J])&32767}if(R){F[q++]=268435456|h[Q]<<18|l[R];var it=31&h[Q],at=31&l[R];O+=e[it]+i[at],++I[257+it],++S[at],B=j+Q,++L}else F[q++]=a[j],++I[a[j]]}}for(j=Math.max(j,B);j<v;++j)F[q++]=a[j],++I[a[j]];p=C(a,g,w,F,I,S,O,q,G,j-G,p),w||(c.r=7&p|g[p/8|0]<<3,p-=7,c.h=_,c.p=A,c.i=j,c.w=B)}else{for(j=c.w||0;j<v+w;j+=65535){var st=j+65535;st>=v&&(g[p/8|0]=w,st=v),p=k(g,p+1,a.subarray(j,st))}c.i=v}return b(d,0,f+m(p)+u)}(a,null==s.level?6:s.level,null==s.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(a.length)))):12+s.mem,o,f,u)},O=function(t,n,r){for(;r;++n)t[n]=r,r>>>=8},j=function(){function n(n,r){if("function"==typeof n&&(r=n,n={}),this.ondata=r,this.o=n||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new t(98304),this.o.dictionary){var e=this.o.dictionary.subarray(-32768);this.b.set(e,32768-e.length),this.s.i=32768-e.length}}return n.prototype.p=function(t,n){this.ondata(L(t,this.o,0,0,this.s),n)},n.prototype.push=function(n,r){this.ondata||E(5),this.s.l&&E(4);var e=n.length+this.s.z;if(e>this.b.length){if(e>2*this.b.length-32768){var i=new t(-32768&e);i.set(this.b.subarray(0,this.s.z)),this.b=i}var a=this.b.length-this.s.z;a&&(this.b.set(n.subarray(0,a),this.s.z),this.s.z=this.b.length,this.p(this.b,!1)),this.b.set(this.b.subarray(-32768)),this.b.set(n.subarray(a),32768),this.s.z=n.length-a+32768,this.s.i=32766,this.s.w=32768}else this.b.set(n,this.s.z),this.s.z+=n.length;this.s.l=1&r,(this.s.z>this.s.w+8191||r)&&(this.p(this.b,r||!1),this.s.w=this.s.i,this.s.i-=2)},n}();function q(t,n){n||(n={});var r=function(){var t=-1;return{p:function(n){for(var r=t,e=0;e<n.length;++e)r=I[255&r^n[e]]^r>>>8;t=r},d:function(){return~t}}}(),e=t.length;r.p(t);var i,a=L(t,n,10+((i=n).filename?i.filename.length+1:0),8),s=a.length;return function(t,n){var r=n.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=n.level<2?4:9==n.level?2:0,t[9]=3,0!=n.mtime&&O(t,4,Math.floor(new Date(n.mtime||Date.now())/1e3)),r){t[3]=8;for(var e=0;e<=r.length;++e)t[e+10]=r.charCodeAt(e)}}(a,n),O(a,s-8,r.d()),O(a,s-4,e),a}var B=function(){function t(t,n){this.c=S(),this.v=1,j.call(this,t,n)}return t.prototype.push=function(t,n){this.c.p(t),j.prototype.push.call(this,t,n)},t.prototype.p=function(t,n){var r=L(t,this.o,this.v&&(this.o.dictionary?6:2),n&&4,this.s);this.v&&(function(t,n){var r=n.level,e=0==r?0:r<6?1:9==r?3:2;if(t[0]=120,t[1]=e<<6|(n.dictionary&&32),t[1]|=31-(t[0]<<8|t[1])%31,n.dictionary){var i=S();i.p(n.dictionary),O(t,2,i.d())}}(r,this.o),this.v=0),n&&O(r,r.length-4,this.c.d()),this.ondata(r,n)},t}(),G="undefined"!=typeof TextEncoder&&new TextEncoder,H="undefined"!=typeof TextDecoder&&new TextDecoder;try{H.decode(F,{stream:!0})}catch(t){}var J=function(){function t(t){this.ondata=t}return t.prototype.push=function(t,n){this.ondata||E(5),this.d&&E(4),this.ondata(K(t),this.d=n||!1)},t}();function K(n,r){if(r){for(var e=new t(n.length),i=0;i<n.length;++i)e[i]=n.charCodeAt(i);return e}if(G)return G.encode(n);var a=n.length,s=new t(n.length+(n.length>>1)),o=0,f=function(t){s[o++]=t};for(i=0;i<a;++i){if(o+5>s.length){var h=new t(o+8+(a-i<<1));h.set(s),s=h}var l=n.charCodeAt(i);l<128||r?f(l):l<2048?(f(192|l>>6),f(128|63&l)):l>55295&&l<57344?(f(240|(l=65536+(1047552&l)|1023&n.charCodeAt(++i))>>18),f(128|l>>12&63),f(128|l>>6&63),f(128|63&l)):(f(224|l>>12),f(128|l>>6&63),f(128|63&l))}return b(s,0,o)}const N=new class{constructor(){this._init()}clear(){this._init()}addEvent(t){if(!t)throw new Error("Adding invalid event");const n=this._hasEvents?",":"";this.stream.push(n+t),this._hasEvents=!0}finish(){this.stream.push("]",!0);const t=function(t){let n=0;for(let r=0,e=t.length;r<e;r++)n+=t[r].length;const r=new Uint8Array(n);for(let n=0,e=0,i=t.length;n<i;n++){const i=t[n];r.set(i,e),e+=i.length}return r}(this._deflatedData);return this._init(),t}_init(){this._hasEvents=!1,this._deflatedData=[],this.deflate=new B,this.deflate.ondata=(t,n)=>{this._deflatedData.push(t)},this.stream=new J(((t,n)=>{this.deflate.push(t,n)})),this.stream.push("[")}},P={clear:()=>{N.clear()},addEvent:t=>N.addEvent(t),finish:()=>N.finish(),compress:t=>function(t){return q(K(t))}(t)};addEventListener("message",(function(t){const n=t.data.method,r=t.data.id,e=t.data.arg;if(n in P&&"function"==typeof P[n])try{const t=P[n](e);postMessage({id:r,method:n,success:!0,response:t})}catch(t){postMessage({id:r,method:n,success:!1,response:t.message}),console.error(t)}})),postMessage({id:void 0,method:"init",success:!0,response:void 0});`;
|
|
4676
4683
|
|
|
4677
4684
|
function e(){const e=new Blob([r]);return URL.createObjectURL(e)}
|
|
@@ -4680,7 +4687,7 @@ function e(){const e=new Blob([r]);return URL.createObjectURL(e)}
|
|
|
4680
4687
|
* Log a message in debug mode, and add a breadcrumb when _experiment.traceInternals is enabled.
|
|
4681
4688
|
*/
|
|
4682
4689
|
function logInfo(message, shouldAddBreadcrumb) {
|
|
4683
|
-
if (!
|
|
4690
|
+
if (!DEBUG_BUILD) {
|
|
4684
4691
|
return;
|
|
4685
4692
|
}
|
|
4686
4693
|
|
|
@@ -4696,7 +4703,7 @@ function logInfo(message, shouldAddBreadcrumb) {
|
|
|
4696
4703
|
* This is necessary when the breadcrumb may be added before the replay is initialized.
|
|
4697
4704
|
*/
|
|
4698
4705
|
function logInfoNextTick(message, shouldAddBreadcrumb) {
|
|
4699
|
-
if (!
|
|
4706
|
+
if (!DEBUG_BUILD) {
|
|
4700
4707
|
return;
|
|
4701
4708
|
}
|
|
4702
4709
|
|
|
@@ -4883,7 +4890,7 @@ class WorkerHandler {
|
|
|
4883
4890
|
|
|
4884
4891
|
if (!response.success) {
|
|
4885
4892
|
// TODO: Do some error handling, not sure what
|
|
4886
|
-
|
|
4893
|
+
DEBUG_BUILD && logger.error('[Replay]', response.response);
|
|
4887
4894
|
|
|
4888
4895
|
reject(new Error('Error in compression worker'));
|
|
4889
4896
|
return;
|
|
@@ -5113,7 +5120,7 @@ class EventBufferProxy {
|
|
|
5113
5120
|
try {
|
|
5114
5121
|
await Promise.all(addEventPromises);
|
|
5115
5122
|
} catch (error) {
|
|
5116
|
-
|
|
5123
|
+
DEBUG_BUILD && logger.warn('[Replay] Failed to add events when switching buffers.', error);
|
|
5117
5124
|
}
|
|
5118
5125
|
}
|
|
5119
5126
|
}
|
|
@@ -5214,21 +5221,6 @@ function isSampled(sampleRate) {
|
|
|
5214
5221
|
return Math.random() < sampleRate;
|
|
5215
5222
|
}
|
|
5216
5223
|
|
|
5217
|
-
/**
|
|
5218
|
-
* Save a session to session storage.
|
|
5219
|
-
*/
|
|
5220
|
-
function saveSession(session) {
|
|
5221
|
-
if (!hasSessionStorage()) {
|
|
5222
|
-
return;
|
|
5223
|
-
}
|
|
5224
|
-
|
|
5225
|
-
try {
|
|
5226
|
-
WINDOW.sessionStorage.setItem(REPLAY_SESSION_KEY, JSON.stringify(session));
|
|
5227
|
-
} catch (e) {
|
|
5228
|
-
// Ignore potential SecurityError exceptions
|
|
5229
|
-
}
|
|
5230
|
-
}
|
|
5231
|
-
|
|
5232
5224
|
/**
|
|
5233
5225
|
* Get a session with defaults & applied sampling.
|
|
5234
5226
|
*/
|
|
@@ -5252,6 +5244,21 @@ function makeSession(session) {
|
|
|
5252
5244
|
};
|
|
5253
5245
|
}
|
|
5254
5246
|
|
|
5247
|
+
/**
|
|
5248
|
+
* Save a session to session storage.
|
|
5249
|
+
*/
|
|
5250
|
+
function saveSession(session) {
|
|
5251
|
+
if (!hasSessionStorage()) {
|
|
5252
|
+
return;
|
|
5253
|
+
}
|
|
5254
|
+
|
|
5255
|
+
try {
|
|
5256
|
+
WINDOW.sessionStorage.setItem(REPLAY_SESSION_KEY, JSON.stringify(session));
|
|
5257
|
+
} catch (e) {
|
|
5258
|
+
// Ignore potential SecurityError exceptions
|
|
5259
|
+
}
|
|
5260
|
+
}
|
|
5261
|
+
|
|
5255
5262
|
/**
|
|
5256
5263
|
* Get the sampled status for a session based on sample rates & current sampled status.
|
|
5257
5264
|
*/
|
|
@@ -5468,7 +5475,7 @@ async function _addEvent(
|
|
|
5468
5475
|
} catch (error) {
|
|
5469
5476
|
const reason = error && error instanceof EventBufferSizeExceededError ? 'addEventSizeExceeded' : 'addEvent';
|
|
5470
5477
|
|
|
5471
|
-
|
|
5478
|
+
DEBUG_BUILD && logger.error(error);
|
|
5472
5479
|
await replay.stop({ reason });
|
|
5473
5480
|
|
|
5474
5481
|
const client = getClient();
|
|
@@ -5516,7 +5523,7 @@ function maybeApplyCallback(
|
|
|
5516
5523
|
return callback(event);
|
|
5517
5524
|
}
|
|
5518
5525
|
} catch (error) {
|
|
5519
|
-
|
|
5526
|
+
DEBUG_BUILD &&
|
|
5520
5527
|
logger.error('[Replay] An error occured in the `beforeAddRecordingEvent` callback, skipping the event...', error);
|
|
5521
5528
|
return null;
|
|
5522
5529
|
}
|
|
@@ -5748,7 +5755,7 @@ function handleGlobalEventListener(
|
|
|
5748
5755
|
// Unless `captureExceptions` is enabled, we want to ignore errors coming from rrweb
|
|
5749
5756
|
// As there can be a bunch of stuff going wrong in internals there, that we don't want to bubble up to users
|
|
5750
5757
|
if (isRrwebError(event, hint) && !replay.getOptions()._experiments.captureExceptions) {
|
|
5751
|
-
|
|
5758
|
+
DEBUG_BUILD && logger.log('[Replay] Ignoring error from rrweb internals', event);
|
|
5752
5759
|
return null;
|
|
5753
5760
|
}
|
|
5754
5761
|
|
|
@@ -5855,7 +5862,7 @@ function handleHistorySpanListener(replay) {
|
|
|
5855
5862
|
*/
|
|
5856
5863
|
function shouldFilterRequest(replay, url) {
|
|
5857
5864
|
// If we enabled the `traceInternals` experiment, we want to trace everything
|
|
5858
|
-
if (
|
|
5865
|
+
if (DEBUG_BUILD && replay.getOptions()._experiments.traceInternals) {
|
|
5859
5866
|
return false;
|
|
5860
5867
|
}
|
|
5861
5868
|
|
|
@@ -6034,11 +6041,11 @@ function getBodyString(body) {
|
|
|
6034
6041
|
return [_serializeFormData(body)];
|
|
6035
6042
|
}
|
|
6036
6043
|
} catch (e2) {
|
|
6037
|
-
|
|
6044
|
+
DEBUG_BUILD && logger.warn('[Replay] Failed to serialize body', body);
|
|
6038
6045
|
return [undefined, 'BODY_PARSE_ERROR'];
|
|
6039
6046
|
}
|
|
6040
6047
|
|
|
6041
|
-
|
|
6048
|
+
DEBUG_BUILD && logger.info('[Replay] Skipping network body because of body type', body);
|
|
6042
6049
|
|
|
6043
6050
|
return [undefined];
|
|
6044
6051
|
}
|
|
@@ -6262,7 +6269,7 @@ async function captureFetchBreadcrumbToReplay(
|
|
|
6262
6269
|
const result = makeNetworkReplayBreadcrumb('resource.fetch', data);
|
|
6263
6270
|
addNetworkBreadcrumb(options.replay, result);
|
|
6264
6271
|
} catch (error) {
|
|
6265
|
-
|
|
6272
|
+
DEBUG_BUILD && logger.error('[Replay] Failed to capture fetch breadcrumb', error);
|
|
6266
6273
|
}
|
|
6267
6274
|
}
|
|
6268
6275
|
|
|
@@ -6418,7 +6425,7 @@ function getResponseData(
|
|
|
6418
6425
|
|
|
6419
6426
|
return buildNetworkRequestOrResponse(headers, size, undefined);
|
|
6420
6427
|
} catch (error) {
|
|
6421
|
-
|
|
6428
|
+
DEBUG_BUILD && logger.warn('[Replay] Failed to serialize response body', error);
|
|
6422
6429
|
// fallback
|
|
6423
6430
|
return buildNetworkRequestOrResponse(headers, responseBodySize, undefined);
|
|
6424
6431
|
}
|
|
@@ -6435,7 +6442,7 @@ async function _parseFetchResponseBody(response) {
|
|
|
6435
6442
|
const text = await _tryGetResponseText(res);
|
|
6436
6443
|
return [text];
|
|
6437
6444
|
} catch (error) {
|
|
6438
|
-
|
|
6445
|
+
DEBUG_BUILD && logger.warn('[Replay] Failed to get text body from response', error);
|
|
6439
6446
|
return [undefined, 'BODY_PARSE_ERROR'];
|
|
6440
6447
|
}
|
|
6441
6448
|
}
|
|
@@ -6505,7 +6512,7 @@ function _tryCloneResponse(response) {
|
|
|
6505
6512
|
return response.clone();
|
|
6506
6513
|
} catch (error) {
|
|
6507
6514
|
// this can throw if the response was already consumed before
|
|
6508
|
-
|
|
6515
|
+
DEBUG_BUILD && logger.warn('[Replay] Failed to clone response body', error);
|
|
6509
6516
|
}
|
|
6510
6517
|
}
|
|
6511
6518
|
|
|
@@ -6549,7 +6556,7 @@ async function captureXhrBreadcrumbToReplay(
|
|
|
6549
6556
|
const result = makeNetworkReplayBreadcrumb('resource.xhr', data);
|
|
6550
6557
|
addNetworkBreadcrumb(options.replay, result);
|
|
6551
6558
|
} catch (error) {
|
|
6552
|
-
|
|
6559
|
+
DEBUG_BUILD && logger.error('[Replay] Failed to capture xhr breadcrumb', error);
|
|
6553
6560
|
}
|
|
6554
6561
|
}
|
|
6555
6562
|
|
|
@@ -6671,7 +6678,7 @@ function _getXhrResponseBody(xhr) {
|
|
|
6671
6678
|
errors.push(e);
|
|
6672
6679
|
}
|
|
6673
6680
|
|
|
6674
|
-
|
|
6681
|
+
DEBUG_BUILD && logger.warn('[Replay] Failed to get xhr response body', ...errors);
|
|
6675
6682
|
|
|
6676
6683
|
return [undefined];
|
|
6677
6684
|
}
|
|
@@ -6747,7 +6754,7 @@ function beforeAddNetworkBreadcrumb(
|
|
|
6747
6754
|
void captureFetchBreadcrumbToReplay(breadcrumb, hint, options);
|
|
6748
6755
|
}
|
|
6749
6756
|
} catch (e) {
|
|
6750
|
-
|
|
6757
|
+
DEBUG_BUILD && logger.warn('Error when enriching network breadcrumb');
|
|
6751
6758
|
}
|
|
6752
6759
|
}
|
|
6753
6760
|
|
|
@@ -7053,7 +7060,7 @@ function getHandleRecordingEmit(replay) {
|
|
|
7053
7060
|
return (event, _isCheckout) => {
|
|
7054
7061
|
// If this is false, it means session is expired, create and a new session and wait for checkout
|
|
7055
7062
|
if (!replay.checkAndHandleExpiredSession()) {
|
|
7056
|
-
|
|
7063
|
+
DEBUG_BUILD && logger.warn('[Replay] Received replay event after session expired.');
|
|
7057
7064
|
|
|
7058
7065
|
return;
|
|
7059
7066
|
}
|
|
@@ -7470,7 +7477,7 @@ async function sendReplay(
|
|
|
7470
7477
|
_retryCount: retryConfig.count,
|
|
7471
7478
|
});
|
|
7472
7479
|
|
|
7473
|
-
if (
|
|
7480
|
+
if (DEBUG_BUILD && options._experiments && options._experiments.captureExceptions) {
|
|
7474
7481
|
captureException(err);
|
|
7475
7482
|
}
|
|
7476
7483
|
|
|
@@ -8202,9 +8209,9 @@ class ReplayContainer {
|
|
|
8202
8209
|
|
|
8203
8210
|
/** A wrapper to conditionally capture exceptions. */
|
|
8204
8211
|
_handleException(error) {
|
|
8205
|
-
|
|
8212
|
+
DEBUG_BUILD && logger.error('[Replay]', error);
|
|
8206
8213
|
|
|
8207
|
-
if (
|
|
8214
|
+
if (DEBUG_BUILD && this._options._experiments && this._options._experiments.captureExceptions) {
|
|
8208
8215
|
captureException(error);
|
|
8209
8216
|
}
|
|
8210
8217
|
}
|
|
@@ -8521,7 +8528,7 @@ class ReplayContainer {
|
|
|
8521
8528
|
const replayId = this.getSessionId();
|
|
8522
8529
|
|
|
8523
8530
|
if (!this.session || !this.eventBuffer || !replayId) {
|
|
8524
|
-
|
|
8531
|
+
DEBUG_BUILD && logger.error('[Replay] No session or eventBuffer found to flush.');
|
|
8525
8532
|
return;
|
|
8526
8533
|
}
|
|
8527
8534
|
|
|
@@ -8606,7 +8613,7 @@ class ReplayContainer {
|
|
|
8606
8613
|
}
|
|
8607
8614
|
|
|
8608
8615
|
if (!this.checkAndHandleExpiredSession()) {
|
|
8609
|
-
|
|
8616
|
+
DEBUG_BUILD && logger.error('[Replay] Attempting to finish replay event after session expired.');
|
|
8610
8617
|
return;
|
|
8611
8618
|
}
|
|
8612
8619
|
|
|
@@ -8664,7 +8671,7 @@ class ReplayContainer {
|
|
|
8664
8671
|
try {
|
|
8665
8672
|
await this._flushLock;
|
|
8666
8673
|
} catch (err) {
|
|
8667
|
-
|
|
8674
|
+
DEBUG_BUILD && logger.error(err);
|
|
8668
8675
|
} finally {
|
|
8669
8676
|
this._debouncedFlush();
|
|
8670
8677
|
}
|
|
@@ -8733,10 +8740,12 @@ function getOption(
|
|
|
8733
8740
|
allSelectors.push(`.${deprecatedClassOption}`);
|
|
8734
8741
|
}
|
|
8735
8742
|
|
|
8736
|
-
|
|
8737
|
-
|
|
8738
|
-
|
|
8739
|
-
|
|
8743
|
+
consoleSandbox(() => {
|
|
8744
|
+
// eslint-disable-next-line no-console
|
|
8745
|
+
console.warn(
|
|
8746
|
+
'[Replay] You are using a deprecated configuration item for privacy. Read the documentation on how to use the new privacy configuration.',
|
|
8747
|
+
);
|
|
8748
|
+
});
|
|
8740
8749
|
}
|
|
8741
8750
|
|
|
8742
8751
|
return allSelectors.join(',');
|
|
@@ -9154,8 +9163,10 @@ function loadReplayOptionsFromClient(initialOptions) {
|
|
|
9154
9163
|
const finalOptions = { sessionSampleRate: 0, errorSampleRate: 0, ...dropUndefinedKeys(initialOptions) };
|
|
9155
9164
|
|
|
9156
9165
|
if (!opt) {
|
|
9157
|
-
|
|
9158
|
-
|
|
9166
|
+
consoleSandbox(() => {
|
|
9167
|
+
// eslint-disable-next-line no-console
|
|
9168
|
+
console.warn('SDK client is not available.');
|
|
9169
|
+
});
|
|
9159
9170
|
return finalOptions;
|
|
9160
9171
|
}
|
|
9161
9172
|
|
|
@@ -9165,10 +9176,12 @@ function loadReplayOptionsFromClient(initialOptions) {
|
|
|
9165
9176
|
opt.replaysSessionSampleRate == null &&
|
|
9166
9177
|
opt.replaysOnErrorSampleRate == null
|
|
9167
9178
|
) {
|
|
9168
|
-
|
|
9169
|
-
|
|
9170
|
-
|
|
9171
|
-
|
|
9179
|
+
consoleSandbox(() => {
|
|
9180
|
+
// eslint-disable-next-line no-console
|
|
9181
|
+
console.warn(
|
|
9182
|
+
'Replay is disabled because neither `replaysSessionSampleRate` nor `replaysOnErrorSampleRate` are set.',
|
|
9183
|
+
);
|
|
9184
|
+
});
|
|
9172
9185
|
}
|
|
9173
9186
|
|
|
9174
9187
|
if (typeof opt.replaysSessionSampleRate === 'number') {
|