@sentry/replay 7.81.1 → 7.83.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 +180 -70
- package/cjs/index.js.map +1 -1
- package/esm/index.js +182 -72
- package/esm/index.js.map +1 -1
- package/package.json +6 -6
- package/types/coreHandlers/handleDom.d.ts +3 -4
- package/types/coreHandlers/handleDom.d.ts.map +1 -1
- package/types/coreHandlers/handleFetch.d.ts +1 -1
- package/types/coreHandlers/handleGlobalEvent.d.ts.map +1 -1
- package/types/coreHandlers/handleHistory.d.ts +3 -7
- package/types/coreHandlers/handleHistory.d.ts.map +1 -1
- package/types/coreHandlers/handleNetworkBreadcrumbs.d.ts.map +1 -1
- package/types/coreHandlers/handleXhr.d.ts +1 -1
- package/types/coreHandlers/util/domUtils.d.ts +1 -7
- package/types/coreHandlers/util/domUtils.d.ts.map +1 -1
- package/types/coreHandlers/util/fetchUtils.d.ts +5 -1
- package/types/coreHandlers/util/fetchUtils.d.ts.map +1 -1
- package/types/coreHandlers/util/networkUtils.d.ts +4 -4
- 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/types/performance.d.ts +1 -1
- package/types/types/performance.d.ts.map +1 -1
- package/types/types/request.d.ts +1 -1
- package/types/types/request.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/handleDom.d.ts +3 -4
- package/types-ts3.8/coreHandlers/handleFetch.d.ts +1 -1
- package/types-ts3.8/coreHandlers/handleHistory.d.ts +3 -7
- package/types-ts3.8/coreHandlers/handleXhr.d.ts +1 -1
- package/types-ts3.8/coreHandlers/util/domUtils.d.ts +1 -7
- package/types-ts3.8/coreHandlers/util/fetchUtils.d.ts +5 -1
- package/types-ts3.8/coreHandlers/util/networkUtils.d.ts +7 -4
- package/types-ts3.8/debug-build.d.ts +7 -0
- package/types-ts3.8/types/performance.d.ts +1 -1
- package/types-ts3.8/types/request.d.ts +1 -1
package/cjs/index.js
CHANGED
|
@@ -4341,12 +4341,13 @@ const handleDomListener = (
|
|
|
4341
4341
|
}
|
|
4342
4342
|
|
|
4343
4343
|
const isClick = handlerData.name === 'click';
|
|
4344
|
-
const event = isClick
|
|
4344
|
+
const event = isClick ? (handlerData.event ) : undefined;
|
|
4345
4345
|
// Ignore clicks if ctrl/alt/meta/shift keys are held down as they alter behavior of clicks (e.g. open in new tab)
|
|
4346
4346
|
if (
|
|
4347
4347
|
isClick &&
|
|
4348
4348
|
replay.clickDetector &&
|
|
4349
4349
|
event &&
|
|
4350
|
+
event.target &&
|
|
4350
4351
|
!event.altKey &&
|
|
4351
4352
|
!event.metaKey &&
|
|
4352
4353
|
!event.ctrlKey &&
|
|
@@ -4355,7 +4356,7 @@ const handleDomListener = (
|
|
|
4355
4356
|
handleClick(
|
|
4356
4357
|
replay.clickDetector,
|
|
4357
4358
|
result ,
|
|
4358
|
-
getClickTargetNode(handlerData.event) ,
|
|
4359
|
+
getClickTargetNode(handlerData.event ) ,
|
|
4359
4360
|
);
|
|
4360
4361
|
}
|
|
4361
4362
|
|
|
@@ -4411,7 +4412,7 @@ function getDomTarget(handlerData) {
|
|
|
4411
4412
|
|
|
4412
4413
|
// Accessing event.target can throw (see getsentry/raven-js#838, #768)
|
|
4413
4414
|
try {
|
|
4414
|
-
target = isClick ? getClickTargetNode(handlerData.event) : getTargetNode(handlerData.event);
|
|
4415
|
+
target = isClick ? getClickTargetNode(handlerData.event ) : getTargetNode(handlerData.event );
|
|
4415
4416
|
message = utils.htmlTreeAsString(target, { maxStringLength: 200 }) || '<unknown>';
|
|
4416
4417
|
} catch (e) {
|
|
4417
4418
|
message = '<unknown>';
|
|
@@ -4673,6 +4674,13 @@ function setupPerformanceObserver(replay) {
|
|
|
4673
4674
|
};
|
|
4674
4675
|
}
|
|
4675
4676
|
|
|
4677
|
+
/**
|
|
4678
|
+
* 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.
|
|
4679
|
+
*
|
|
4680
|
+
* ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.
|
|
4681
|
+
*/
|
|
4682
|
+
const DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);
|
|
4683
|
+
|
|
4676
4684
|
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});`;
|
|
4677
4685
|
|
|
4678
4686
|
function e(){const e=new Blob([r]);return URL.createObjectURL(e)}
|
|
@@ -4681,7 +4689,7 @@ function e(){const e=new Blob([r]);return URL.createObjectURL(e)}
|
|
|
4681
4689
|
* Log a message in debug mode, and add a breadcrumb when _experiment.traceInternals is enabled.
|
|
4682
4690
|
*/
|
|
4683
4691
|
function logInfo(message, shouldAddBreadcrumb) {
|
|
4684
|
-
if (!
|
|
4692
|
+
if (!DEBUG_BUILD) {
|
|
4685
4693
|
return;
|
|
4686
4694
|
}
|
|
4687
4695
|
|
|
@@ -4697,7 +4705,7 @@ function logInfo(message, shouldAddBreadcrumb) {
|
|
|
4697
4705
|
* This is necessary when the breadcrumb may be added before the replay is initialized.
|
|
4698
4706
|
*/
|
|
4699
4707
|
function logInfoNextTick(message, shouldAddBreadcrumb) {
|
|
4700
|
-
if (!
|
|
4708
|
+
if (!DEBUG_BUILD) {
|
|
4701
4709
|
return;
|
|
4702
4710
|
}
|
|
4703
4711
|
|
|
@@ -4884,7 +4892,7 @@ class WorkerHandler {
|
|
|
4884
4892
|
|
|
4885
4893
|
if (!response.success) {
|
|
4886
4894
|
// TODO: Do some error handling, not sure what
|
|
4887
|
-
|
|
4895
|
+
DEBUG_BUILD && utils.logger.error('[Replay]', response.response);
|
|
4888
4896
|
|
|
4889
4897
|
reject(new Error('Error in compression worker'));
|
|
4890
4898
|
return;
|
|
@@ -5114,7 +5122,7 @@ class EventBufferProxy {
|
|
|
5114
5122
|
try {
|
|
5115
5123
|
await Promise.all(addEventPromises);
|
|
5116
5124
|
} catch (error) {
|
|
5117
|
-
|
|
5125
|
+
DEBUG_BUILD && utils.logger.warn('[Replay] Failed to add events when switching buffers.', error);
|
|
5118
5126
|
}
|
|
5119
5127
|
}
|
|
5120
5128
|
}
|
|
@@ -5469,10 +5477,10 @@ async function _addEvent(
|
|
|
5469
5477
|
} catch (error) {
|
|
5470
5478
|
const reason = error && error instanceof EventBufferSizeExceededError ? 'addEventSizeExceeded' : 'addEvent';
|
|
5471
5479
|
|
|
5472
|
-
|
|
5480
|
+
DEBUG_BUILD && utils.logger.error(error);
|
|
5473
5481
|
await replay.stop({ reason });
|
|
5474
5482
|
|
|
5475
|
-
const client = core.
|
|
5483
|
+
const client = core.getClient();
|
|
5476
5484
|
|
|
5477
5485
|
if (client) {
|
|
5478
5486
|
client.recordDroppedEvent('internal_sdk_error', 'replay');
|
|
@@ -5517,7 +5525,7 @@ function maybeApplyCallback(
|
|
|
5517
5525
|
return callback(event);
|
|
5518
5526
|
}
|
|
5519
5527
|
} catch (error) {
|
|
5520
|
-
|
|
5528
|
+
DEBUG_BUILD &&
|
|
5521
5529
|
utils.logger.error('[Replay] An error occured in the `beforeAddRecordingEvent` callback, skipping the event...', error);
|
|
5522
5530
|
return null;
|
|
5523
5531
|
}
|
|
@@ -5618,7 +5626,7 @@ function handleErrorEvent(replay, event) {
|
|
|
5618
5626
|
}
|
|
5619
5627
|
|
|
5620
5628
|
function isBaseTransportSend() {
|
|
5621
|
-
const client = core.
|
|
5629
|
+
const client = core.getClient();
|
|
5622
5630
|
if (!client) {
|
|
5623
5631
|
return false;
|
|
5624
5632
|
}
|
|
@@ -5749,7 +5757,7 @@ function handleGlobalEventListener(
|
|
|
5749
5757
|
// Unless `captureExceptions` is enabled, we want to ignore errors coming from rrweb
|
|
5750
5758
|
// As there can be a bunch of stuff going wrong in internals there, that we don't want to bubble up to users
|
|
5751
5759
|
if (isRrwebError(event, hint) && !replay.getOptions()._experiments.captureExceptions) {
|
|
5752
|
-
|
|
5760
|
+
DEBUG_BUILD && utils.logger.log('[Replay] Ignoring error from rrweb internals', event);
|
|
5753
5761
|
return null;
|
|
5754
5762
|
}
|
|
5755
5763
|
|
|
@@ -5824,7 +5832,7 @@ function handleHistory(handlerData) {
|
|
|
5824
5832
|
}
|
|
5825
5833
|
|
|
5826
5834
|
/**
|
|
5827
|
-
* Returns a listener to be added to `
|
|
5835
|
+
* Returns a listener to be added to `addHistoryInstrumentationHandler(listener)`.
|
|
5828
5836
|
*/
|
|
5829
5837
|
function handleHistorySpanListener(replay) {
|
|
5830
5838
|
return (handlerData) => {
|
|
@@ -5856,7 +5864,7 @@ function handleHistorySpanListener(replay) {
|
|
|
5856
5864
|
*/
|
|
5857
5865
|
function shouldFilterRequest(replay, url) {
|
|
5858
5866
|
// If we enabled the `traceInternals` experiment, we want to trace everything
|
|
5859
|
-
if (
|
|
5867
|
+
if (DEBUG_BUILD && replay.getOptions()._experiments.traceInternals) {
|
|
5860
5868
|
return false;
|
|
5861
5869
|
}
|
|
5862
5870
|
|
|
@@ -5913,7 +5921,7 @@ function handleFetch(handlerData) {
|
|
|
5913
5921
|
}
|
|
5914
5922
|
|
|
5915
5923
|
/**
|
|
5916
|
-
* Returns a listener to be added to `
|
|
5924
|
+
* Returns a listener to be added to `addFetchInstrumentationHandler(listener)`.
|
|
5917
5925
|
*/
|
|
5918
5926
|
function handleFetchSpanListener(replay) {
|
|
5919
5927
|
return (handlerData) => {
|
|
@@ -5957,7 +5965,7 @@ function handleXhr(handlerData) {
|
|
|
5957
5965
|
}
|
|
5958
5966
|
|
|
5959
5967
|
/**
|
|
5960
|
-
* Returns a listener to be added to `
|
|
5968
|
+
* Returns a listener to be added to `addXhrInstrumentationHandler(listener)`.
|
|
5961
5969
|
*/
|
|
5962
5970
|
function handleXhrSpanListener(replay) {
|
|
5963
5971
|
return (handlerData) => {
|
|
@@ -6024,23 +6032,47 @@ function parseContentLengthHeader(header) {
|
|
|
6024
6032
|
function getBodyString(body) {
|
|
6025
6033
|
try {
|
|
6026
6034
|
if (typeof body === 'string') {
|
|
6027
|
-
return body;
|
|
6035
|
+
return [body];
|
|
6028
6036
|
}
|
|
6029
6037
|
|
|
6030
6038
|
if (body instanceof URLSearchParams) {
|
|
6031
|
-
return body.toString();
|
|
6039
|
+
return [body.toString()];
|
|
6032
6040
|
}
|
|
6033
6041
|
|
|
6034
6042
|
if (body instanceof FormData) {
|
|
6035
|
-
return _serializeFormData(body);
|
|
6043
|
+
return [_serializeFormData(body)];
|
|
6036
6044
|
}
|
|
6037
6045
|
} catch (e2) {
|
|
6038
|
-
|
|
6046
|
+
DEBUG_BUILD && utils.logger.warn('[Replay] Failed to serialize body', body);
|
|
6047
|
+
return [undefined, 'BODY_PARSE_ERROR'];
|
|
6039
6048
|
}
|
|
6040
6049
|
|
|
6041
|
-
|
|
6050
|
+
DEBUG_BUILD && utils.logger.info('[Replay] Skipping network body because of body type', body);
|
|
6042
6051
|
|
|
6043
|
-
return undefined;
|
|
6052
|
+
return [undefined];
|
|
6053
|
+
}
|
|
6054
|
+
|
|
6055
|
+
/** Merge a warning into an existing network request/response. */
|
|
6056
|
+
function mergeWarning(
|
|
6057
|
+
info,
|
|
6058
|
+
warning,
|
|
6059
|
+
) {
|
|
6060
|
+
if (!info) {
|
|
6061
|
+
return {
|
|
6062
|
+
headers: {},
|
|
6063
|
+
size: undefined,
|
|
6064
|
+
_meta: {
|
|
6065
|
+
warnings: [warning],
|
|
6066
|
+
},
|
|
6067
|
+
};
|
|
6068
|
+
}
|
|
6069
|
+
|
|
6070
|
+
const newMeta = { ...info._meta };
|
|
6071
|
+
const existingWarnings = newMeta.warnings || [];
|
|
6072
|
+
newMeta.warnings = [...existingWarnings, warning];
|
|
6073
|
+
|
|
6074
|
+
info._meta = newMeta;
|
|
6075
|
+
return info;
|
|
6044
6076
|
}
|
|
6045
6077
|
|
|
6046
6078
|
/** Convert ReplayNetworkRequestData to a PerformanceEntry. */
|
|
@@ -6173,7 +6205,7 @@ function normalizeNetworkBody(body)
|
|
|
6173
6205
|
return {
|
|
6174
6206
|
body: jsonBody,
|
|
6175
6207
|
};
|
|
6176
|
-
} catch (
|
|
6208
|
+
} catch (e3) {
|
|
6177
6209
|
// fall back to just send the body as string
|
|
6178
6210
|
}
|
|
6179
6211
|
}
|
|
@@ -6239,7 +6271,7 @@ async function captureFetchBreadcrumbToReplay(
|
|
|
6239
6271
|
const result = makeNetworkReplayBreadcrumb('resource.fetch', data);
|
|
6240
6272
|
addNetworkBreadcrumb(options.replay, result);
|
|
6241
6273
|
} catch (error) {
|
|
6242
|
-
|
|
6274
|
+
DEBUG_BUILD && utils.logger.error('[Replay] Failed to capture fetch breadcrumb', error);
|
|
6243
6275
|
}
|
|
6244
6276
|
}
|
|
6245
6277
|
|
|
@@ -6318,10 +6350,17 @@ function _getRequestInfo(
|
|
|
6318
6350
|
|
|
6319
6351
|
// We only want to transmit string or string-like bodies
|
|
6320
6352
|
const requestBody = _getFetchRequestArgBody(input);
|
|
6321
|
-
const bodyStr = getBodyString(requestBody);
|
|
6322
|
-
|
|
6353
|
+
const [bodyStr, warning] = getBodyString(requestBody);
|
|
6354
|
+
const data = buildNetworkRequestOrResponse(headers, requestBodySize, bodyStr);
|
|
6355
|
+
|
|
6356
|
+
if (warning) {
|
|
6357
|
+
return mergeWarning(data, warning);
|
|
6358
|
+
}
|
|
6359
|
+
|
|
6360
|
+
return data;
|
|
6323
6361
|
}
|
|
6324
6362
|
|
|
6363
|
+
/** Exported only for tests. */
|
|
6325
6364
|
async function _getResponseInfo(
|
|
6326
6365
|
captureDetails,
|
|
6327
6366
|
{
|
|
@@ -6344,12 +6383,35 @@ async function _getResponseInfo(
|
|
|
6344
6383
|
return buildNetworkRequestOrResponse(headers, responseBodySize, undefined);
|
|
6345
6384
|
}
|
|
6346
6385
|
|
|
6347
|
-
|
|
6348
|
-
|
|
6349
|
-
|
|
6350
|
-
|
|
6351
|
-
|
|
6386
|
+
const [bodyText, warning] = await _parseFetchResponseBody(response);
|
|
6387
|
+
const result = getResponseData(bodyText, {
|
|
6388
|
+
networkCaptureBodies,
|
|
6389
|
+
textEncoder,
|
|
6390
|
+
responseBodySize,
|
|
6391
|
+
captureDetails,
|
|
6392
|
+
headers,
|
|
6393
|
+
});
|
|
6394
|
+
|
|
6395
|
+
if (warning) {
|
|
6396
|
+
return mergeWarning(result, warning);
|
|
6397
|
+
}
|
|
6352
6398
|
|
|
6399
|
+
return result;
|
|
6400
|
+
}
|
|
6401
|
+
|
|
6402
|
+
function getResponseData(
|
|
6403
|
+
bodyText,
|
|
6404
|
+
{
|
|
6405
|
+
networkCaptureBodies,
|
|
6406
|
+
textEncoder,
|
|
6407
|
+
responseBodySize,
|
|
6408
|
+
captureDetails,
|
|
6409
|
+
headers,
|
|
6410
|
+
}
|
|
6411
|
+
|
|
6412
|
+
,
|
|
6413
|
+
) {
|
|
6414
|
+
try {
|
|
6353
6415
|
const size =
|
|
6354
6416
|
bodyText && bodyText.length && responseBodySize === undefined
|
|
6355
6417
|
? getBodySize(bodyText, textEncoder)
|
|
@@ -6365,17 +6427,25 @@ async function _getResponseInfo(
|
|
|
6365
6427
|
|
|
6366
6428
|
return buildNetworkRequestOrResponse(headers, size, undefined);
|
|
6367
6429
|
} catch (error) {
|
|
6368
|
-
|
|
6430
|
+
DEBUG_BUILD && utils.logger.warn('[Replay] Failed to serialize response body', error);
|
|
6369
6431
|
// fallback
|
|
6370
6432
|
return buildNetworkRequestOrResponse(headers, responseBodySize, undefined);
|
|
6371
6433
|
}
|
|
6372
6434
|
}
|
|
6373
6435
|
|
|
6374
|
-
async function
|
|
6436
|
+
async function _parseFetchResponseBody(response) {
|
|
6437
|
+
const res = _tryCloneResponse(response);
|
|
6438
|
+
|
|
6439
|
+
if (!res) {
|
|
6440
|
+
return [undefined, 'BODY_PARSE_ERROR'];
|
|
6441
|
+
}
|
|
6442
|
+
|
|
6375
6443
|
try {
|
|
6376
|
-
|
|
6377
|
-
|
|
6378
|
-
|
|
6444
|
+
const text = await _tryGetResponseText(res);
|
|
6445
|
+
return [text];
|
|
6446
|
+
} catch (error) {
|
|
6447
|
+
DEBUG_BUILD && utils.logger.warn('[Replay] Failed to get text body from response', error);
|
|
6448
|
+
return [undefined, 'BODY_PARSE_ERROR'];
|
|
6379
6449
|
}
|
|
6380
6450
|
}
|
|
6381
6451
|
|
|
@@ -6438,6 +6508,40 @@ function getHeadersFromOptions(
|
|
|
6438
6508
|
return getAllowedHeaders(headers, allowedHeaders);
|
|
6439
6509
|
}
|
|
6440
6510
|
|
|
6511
|
+
function _tryCloneResponse(response) {
|
|
6512
|
+
try {
|
|
6513
|
+
// We have to clone this, as the body can only be read once
|
|
6514
|
+
return response.clone();
|
|
6515
|
+
} catch (error) {
|
|
6516
|
+
// this can throw if the response was already consumed before
|
|
6517
|
+
DEBUG_BUILD && utils.logger.warn('[Replay] Failed to clone response body', error);
|
|
6518
|
+
}
|
|
6519
|
+
}
|
|
6520
|
+
|
|
6521
|
+
/**
|
|
6522
|
+
* Get the response body of a fetch request, or timeout after 500ms.
|
|
6523
|
+
* Fetch can return a streaming body, that may not resolve (or not for a long time).
|
|
6524
|
+
* If that happens, we rather abort after a short time than keep waiting for this.
|
|
6525
|
+
*/
|
|
6526
|
+
function _tryGetResponseText(response) {
|
|
6527
|
+
return new Promise((resolve, reject) => {
|
|
6528
|
+
const timeout = setTimeout(() => reject(new Error('Timeout while trying to read response body')), 500);
|
|
6529
|
+
|
|
6530
|
+
_getResponseText(response)
|
|
6531
|
+
.then(
|
|
6532
|
+
txt => resolve(txt),
|
|
6533
|
+
reason => reject(reason),
|
|
6534
|
+
)
|
|
6535
|
+
.finally(() => clearTimeout(timeout));
|
|
6536
|
+
});
|
|
6537
|
+
}
|
|
6538
|
+
|
|
6539
|
+
async function _getResponseText(response) {
|
|
6540
|
+
// Force this to be a promise, just to be safe
|
|
6541
|
+
// eslint-disable-next-line no-return-await
|
|
6542
|
+
return await response.text();
|
|
6543
|
+
}
|
|
6544
|
+
|
|
6441
6545
|
/**
|
|
6442
6546
|
* Capture an XHR breadcrumb to a replay.
|
|
6443
6547
|
* This adds additional data (where approriate).
|
|
@@ -6454,7 +6558,7 @@ async function captureXhrBreadcrumbToReplay(
|
|
|
6454
6558
|
const result = makeNetworkReplayBreadcrumb('resource.xhr', data);
|
|
6455
6559
|
addNetworkBreadcrumb(options.replay, result);
|
|
6456
6560
|
} catch (error) {
|
|
6457
|
-
|
|
6561
|
+
DEBUG_BUILD && utils.logger.error('[Replay] Failed to capture xhr breadcrumb', error);
|
|
6458
6562
|
}
|
|
6459
6563
|
}
|
|
6460
6564
|
|
|
@@ -6527,8 +6631,8 @@ function _prepareXhrData(
|
|
|
6527
6631
|
: {};
|
|
6528
6632
|
const networkResponseHeaders = getAllowedHeaders(getResponseHeaders(xhr), options.networkResponseHeaders);
|
|
6529
6633
|
|
|
6530
|
-
const requestBody = options.networkCaptureBodies ? getBodyString(input) : undefined;
|
|
6531
|
-
const responseBody = options.networkCaptureBodies ? _getXhrResponseBody(xhr) : undefined;
|
|
6634
|
+
const [requestBody, requestWarning] = options.networkCaptureBodies ? getBodyString(input) : [undefined];
|
|
6635
|
+
const [responseBody, responseWarning] = options.networkCaptureBodies ? _getXhrResponseBody(xhr) : [undefined];
|
|
6532
6636
|
|
|
6533
6637
|
const request = buildNetworkRequestOrResponse(networkRequestHeaders, requestBodySize, requestBody);
|
|
6534
6638
|
const response = buildNetworkRequestOrResponse(networkResponseHeaders, responseBodySize, responseBody);
|
|
@@ -6539,8 +6643,8 @@ function _prepareXhrData(
|
|
|
6539
6643
|
url,
|
|
6540
6644
|
method,
|
|
6541
6645
|
statusCode,
|
|
6542
|
-
request,
|
|
6543
|
-
response,
|
|
6646
|
+
request: requestWarning ? mergeWarning(request, requestWarning) : request,
|
|
6647
|
+
response: responseWarning ? mergeWarning(response, responseWarning) : response,
|
|
6544
6648
|
};
|
|
6545
6649
|
}
|
|
6546
6650
|
|
|
@@ -6563,7 +6667,7 @@ function _getXhrResponseBody(xhr) {
|
|
|
6563
6667
|
const errors = [];
|
|
6564
6668
|
|
|
6565
6669
|
try {
|
|
6566
|
-
return xhr.responseText;
|
|
6670
|
+
return [xhr.responseText];
|
|
6567
6671
|
} catch (e) {
|
|
6568
6672
|
errors.push(e);
|
|
6569
6673
|
}
|
|
@@ -6576,9 +6680,9 @@ function _getXhrResponseBody(xhr) {
|
|
|
6576
6680
|
errors.push(e);
|
|
6577
6681
|
}
|
|
6578
6682
|
|
|
6579
|
-
|
|
6683
|
+
DEBUG_BUILD && utils.logger.warn('[Replay] Failed to get xhr response body', ...errors);
|
|
6580
6684
|
|
|
6581
|
-
return undefined;
|
|
6685
|
+
return [undefined];
|
|
6582
6686
|
}
|
|
6583
6687
|
|
|
6584
6688
|
/**
|
|
@@ -6588,7 +6692,7 @@ function _getXhrResponseBody(xhr) {
|
|
|
6588
6692
|
* (enriching it with further data that is _not_ added to the regular breadcrumbs)
|
|
6589
6693
|
*/
|
|
6590
6694
|
function handleNetworkBreadcrumbs(replay) {
|
|
6591
|
-
const client = core.
|
|
6695
|
+
const client = core.getClient();
|
|
6592
6696
|
|
|
6593
6697
|
try {
|
|
6594
6698
|
const textEncoder = new TextEncoder();
|
|
@@ -6615,8 +6719,8 @@ function handleNetworkBreadcrumbs(replay) {
|
|
|
6615
6719
|
client.on('beforeAddBreadcrumb', (breadcrumb, hint) => beforeAddNetworkBreadcrumb(options, breadcrumb, hint));
|
|
6616
6720
|
} else {
|
|
6617
6721
|
// Fallback behavior
|
|
6618
|
-
utils.
|
|
6619
|
-
utils.
|
|
6722
|
+
utils.addFetchInstrumentationHandler(handleFetchSpanListener(replay));
|
|
6723
|
+
utils.addXhrInstrumentationHandler(handleXhrSpanListener(replay));
|
|
6620
6724
|
}
|
|
6621
6725
|
} catch (e2) {
|
|
6622
6726
|
// Do nothing
|
|
@@ -6652,7 +6756,7 @@ function beforeAddNetworkBreadcrumb(
|
|
|
6652
6756
|
void captureFetchBreadcrumbToReplay(breadcrumb, hint, options);
|
|
6653
6757
|
}
|
|
6654
6758
|
} catch (e) {
|
|
6655
|
-
|
|
6759
|
+
DEBUG_BUILD && utils.logger.warn('Error when enriching network breadcrumb');
|
|
6656
6760
|
}
|
|
6657
6761
|
}
|
|
6658
6762
|
|
|
@@ -6786,11 +6890,11 @@ function normalizeConsoleBreadcrumb(
|
|
|
6786
6890
|
function addGlobalListeners(replay) {
|
|
6787
6891
|
// Listeners from core SDK //
|
|
6788
6892
|
const scope = core.getCurrentHub().getScope();
|
|
6789
|
-
const client = core.
|
|
6893
|
+
const client = core.getClient();
|
|
6790
6894
|
|
|
6791
6895
|
scope.addScopeListener(handleScopeListener(replay));
|
|
6792
|
-
utils.
|
|
6793
|
-
utils.
|
|
6896
|
+
utils.addClickKeypressInstrumentationHandler(handleDomListener(replay));
|
|
6897
|
+
utils.addHistoryInstrumentationHandler(handleHistorySpanListener(replay));
|
|
6794
6898
|
handleNetworkBreadcrumbs(replay);
|
|
6795
6899
|
|
|
6796
6900
|
// Tag all (non replay) events that get sent to Sentry with the current
|
|
@@ -6958,7 +7062,7 @@ function getHandleRecordingEmit(replay) {
|
|
|
6958
7062
|
return (event, _isCheckout) => {
|
|
6959
7063
|
// If this is false, it means session is expired, create and a new session and wait for checkout
|
|
6960
7064
|
if (!replay.checkAndHandleExpiredSession()) {
|
|
6961
|
-
|
|
7065
|
+
DEBUG_BUILD && utils.logger.warn('[Replay] Received replay event after session expired.');
|
|
6962
7066
|
|
|
6963
7067
|
return;
|
|
6964
7068
|
}
|
|
@@ -7375,7 +7479,7 @@ async function sendReplay(
|
|
|
7375
7479
|
_retryCount: retryConfig.count,
|
|
7376
7480
|
});
|
|
7377
7481
|
|
|
7378
|
-
if (
|
|
7482
|
+
if (DEBUG_BUILD && options._experiments && options._experiments.captureExceptions) {
|
|
7379
7483
|
core.captureException(err);
|
|
7380
7484
|
}
|
|
7381
7485
|
|
|
@@ -8107,9 +8211,9 @@ class ReplayContainer {
|
|
|
8107
8211
|
|
|
8108
8212
|
/** A wrapper to conditionally capture exceptions. */
|
|
8109
8213
|
_handleException(error) {
|
|
8110
|
-
|
|
8214
|
+
DEBUG_BUILD && utils.logger.error('[Replay]', error);
|
|
8111
8215
|
|
|
8112
|
-
if (
|
|
8216
|
+
if (DEBUG_BUILD && this._options._experiments && this._options._experiments.captureExceptions) {
|
|
8113
8217
|
core.captureException(error);
|
|
8114
8218
|
}
|
|
8115
8219
|
}
|
|
@@ -8426,7 +8530,7 @@ class ReplayContainer {
|
|
|
8426
8530
|
const replayId = this.getSessionId();
|
|
8427
8531
|
|
|
8428
8532
|
if (!this.session || !this.eventBuffer || !replayId) {
|
|
8429
|
-
|
|
8533
|
+
DEBUG_BUILD && utils.logger.error('[Replay] No session or eventBuffer found to flush.');
|
|
8430
8534
|
return;
|
|
8431
8535
|
}
|
|
8432
8536
|
|
|
@@ -8488,7 +8592,7 @@ class ReplayContainer {
|
|
|
8488
8592
|
// In this case, we want to completely stop the replay - otherwise, we may get inconsistent segments
|
|
8489
8593
|
void this.stop({ reason: 'sendReplay' });
|
|
8490
8594
|
|
|
8491
|
-
const client = core.
|
|
8595
|
+
const client = core.getClient();
|
|
8492
8596
|
|
|
8493
8597
|
if (client) {
|
|
8494
8598
|
client.recordDroppedEvent('send_error', 'replay');
|
|
@@ -8511,7 +8615,7 @@ class ReplayContainer {
|
|
|
8511
8615
|
}
|
|
8512
8616
|
|
|
8513
8617
|
if (!this.checkAndHandleExpiredSession()) {
|
|
8514
|
-
|
|
8618
|
+
DEBUG_BUILD && utils.logger.error('[Replay] Attempting to finish replay event after session expired.');
|
|
8515
8619
|
return;
|
|
8516
8620
|
}
|
|
8517
8621
|
|
|
@@ -8569,7 +8673,7 @@ class ReplayContainer {
|
|
|
8569
8673
|
try {
|
|
8570
8674
|
await this._flushLock;
|
|
8571
8675
|
} catch (err) {
|
|
8572
|
-
|
|
8676
|
+
DEBUG_BUILD && utils.logger.error(err);
|
|
8573
8677
|
} finally {
|
|
8574
8678
|
this._debouncedFlush();
|
|
8575
8679
|
}
|
|
@@ -8638,10 +8742,12 @@ function getOption(
|
|
|
8638
8742
|
allSelectors.push(`.${deprecatedClassOption}`);
|
|
8639
8743
|
}
|
|
8640
8744
|
|
|
8641
|
-
|
|
8642
|
-
|
|
8643
|
-
|
|
8644
|
-
|
|
8745
|
+
utils.consoleSandbox(() => {
|
|
8746
|
+
// eslint-disable-next-line no-console
|
|
8747
|
+
console.warn(
|
|
8748
|
+
'[Replay] You are using a deprecated configuration item for privacy. Read the documentation on how to use the new privacy configuration.',
|
|
8749
|
+
);
|
|
8750
|
+
});
|
|
8645
8751
|
}
|
|
8646
8752
|
|
|
8647
8753
|
return allSelectors.join(',');
|
|
@@ -9053,14 +9159,16 @@ Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
|
|
|
9053
9159
|
|
|
9054
9160
|
/** Parse Replay-related options from SDK options */
|
|
9055
9161
|
function loadReplayOptionsFromClient(initialOptions) {
|
|
9056
|
-
const client = core.
|
|
9162
|
+
const client = core.getClient();
|
|
9057
9163
|
const opt = client && (client.getOptions() );
|
|
9058
9164
|
|
|
9059
9165
|
const finalOptions = { sessionSampleRate: 0, errorSampleRate: 0, ...utils.dropUndefinedKeys(initialOptions) };
|
|
9060
9166
|
|
|
9061
9167
|
if (!opt) {
|
|
9062
|
-
|
|
9063
|
-
|
|
9168
|
+
utils.consoleSandbox(() => {
|
|
9169
|
+
// eslint-disable-next-line no-console
|
|
9170
|
+
console.warn('SDK client is not available.');
|
|
9171
|
+
});
|
|
9064
9172
|
return finalOptions;
|
|
9065
9173
|
}
|
|
9066
9174
|
|
|
@@ -9070,10 +9178,12 @@ function loadReplayOptionsFromClient(initialOptions) {
|
|
|
9070
9178
|
opt.replaysSessionSampleRate == null &&
|
|
9071
9179
|
opt.replaysOnErrorSampleRate == null
|
|
9072
9180
|
) {
|
|
9073
|
-
|
|
9074
|
-
|
|
9075
|
-
|
|
9076
|
-
|
|
9181
|
+
utils.consoleSandbox(() => {
|
|
9182
|
+
// eslint-disable-next-line no-console
|
|
9183
|
+
console.warn(
|
|
9184
|
+
'Replay is disabled because neither `replaysSessionSampleRate` nor `replaysOnErrorSampleRate` are set.',
|
|
9185
|
+
);
|
|
9186
|
+
});
|
|
9077
9187
|
}
|
|
9078
9188
|
|
|
9079
9189
|
if (typeof opt.replaysSessionSampleRate === 'number') {
|