@openreplay/tracker 16.4.10-beta.0 → 16.4.10
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/dist/cjs/entry.js +110 -45
- package/dist/cjs/entry.js.map +1 -1
- package/dist/cjs/index.js +110 -45
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/main/app/index.d.ts +1 -0
- package/dist/cjs/main/app/nodes/idSeq.d.ts +14 -0
- package/dist/cjs/main/app/nodes/index.d.ts +2 -1
- package/dist/cjs/main/app/observer/top_observer.d.ts +1 -1
- package/dist/lib/entry.js +110 -45
- package/dist/lib/entry.js.map +1 -1
- package/dist/lib/index.js +110 -45
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/main/app/index.d.ts +1 -0
- package/dist/lib/main/app/nodes/idSeq.d.ts +14 -0
- package/dist/lib/main/app/nodes/index.d.ts +2 -1
- package/dist/lib/main/app/observer/top_observer.d.ts +1 -1
- package/dist/types/main/app/index.d.ts +1 -0
- package/dist/types/main/app/nodes/idSeq.d.ts +14 -0
- package/dist/types/main/app/nodes/index.d.ts +2 -1
- package/dist/types/main/app/observer/top_observer.d.ts +1 -1
- package/package.json +1 -1
package/dist/cjs/entry.js
CHANGED
|
@@ -60,12 +60,12 @@ fl[28] = 258, revfl[258] = 28;
|
|
|
60
60
|
var _b = freb(fdeb, 0), revfd = _b.r;
|
|
61
61
|
// map of value to reverse (assuming 16 bits)
|
|
62
62
|
var rev = new u16(32768);
|
|
63
|
-
for (var i = 0; i < 32768; ++i) {
|
|
63
|
+
for (var i$1 = 0; i$1 < 32768; ++i$1) {
|
|
64
64
|
// reverse table algorithm from SO
|
|
65
|
-
var x$1 = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);
|
|
65
|
+
var x$1 = ((i$1 & 0xAAAA) >> 1) | ((i$1 & 0x5555) << 1);
|
|
66
66
|
x$1 = ((x$1 & 0xCCCC) >> 2) | ((x$1 & 0x3333) << 2);
|
|
67
67
|
x$1 = ((x$1 & 0xF0F0) >> 4) | ((x$1 & 0x0F0F) << 4);
|
|
68
|
-
rev[i] = (((x$1 & 0xFF00) >> 8) | ((x$1 & 0x00FF) << 8)) >> 1;
|
|
68
|
+
rev[i$1] = (((x$1 & 0xFF00) >> 8) | ((x$1 & 0x00FF) << 8)) >> 1;
|
|
69
69
|
}
|
|
70
70
|
// create huffman tree from u8 "map": index -> code length for code index
|
|
71
71
|
// mb (max bits) must be at most 15
|
|
@@ -121,18 +121,18 @@ var hMap = (function (cd, mb, r) {
|
|
|
121
121
|
});
|
|
122
122
|
// fixed length tree
|
|
123
123
|
var flt = new u8(288);
|
|
124
|
-
for (var i = 0; i < 144; ++i)
|
|
125
|
-
flt[i] = 8;
|
|
126
|
-
for (var i = 144; i < 256; ++i)
|
|
127
|
-
flt[i] = 9;
|
|
128
|
-
for (var i = 256; i < 280; ++i)
|
|
129
|
-
flt[i] = 7;
|
|
130
|
-
for (var i = 280; i < 288; ++i)
|
|
131
|
-
flt[i] = 8;
|
|
124
|
+
for (var i$1 = 0; i$1 < 144; ++i$1)
|
|
125
|
+
flt[i$1] = 8;
|
|
126
|
+
for (var i$1 = 144; i$1 < 256; ++i$1)
|
|
127
|
+
flt[i$1] = 9;
|
|
128
|
+
for (var i$1 = 256; i$1 < 280; ++i$1)
|
|
129
|
+
flt[i$1] = 7;
|
|
130
|
+
for (var i$1 = 280; i$1 < 288; ++i$1)
|
|
131
|
+
flt[i$1] = 8;
|
|
132
132
|
// fixed distance tree
|
|
133
133
|
var fdt = new u8(32);
|
|
134
|
-
for (var i = 0; i < 32; ++i)
|
|
135
|
-
fdt[i] = 5;
|
|
134
|
+
for (var i$1 = 0; i$1 < 32; ++i$1)
|
|
135
|
+
fdt[i$1] = 5;
|
|
136
136
|
// fixed length map
|
|
137
137
|
var flm = /*#__PURE__*/ hMap(flt, 9, 0);
|
|
138
138
|
// fixed distance map
|
|
@@ -3649,6 +3649,27 @@ class Maintainer {
|
|
|
3649
3649
|
}
|
|
3650
3650
|
}
|
|
3651
3651
|
|
|
3652
|
+
// 4 levels, 128 frames between each level, 8_388_608 nodes per page
|
|
3653
|
+
// lets hope no one will need more :D
|
|
3654
|
+
const BITS_LEVEL = 2; // 4
|
|
3655
|
+
const BITS_ORDER = 7; // 128
|
|
3656
|
+
const BITS_NODE = 22; // 8_388_608
|
|
3657
|
+
const SHIFT_ORDER = BITS_NODE;
|
|
3658
|
+
const SHIFT_LEVEL = BITS_NODE + BITS_ORDER;
|
|
3659
|
+
const MASK_NODE = (1 << BITS_NODE) - 1;
|
|
3660
|
+
const MASK_ORDER = (1 << BITS_ORDER) - 1;
|
|
3661
|
+
const MASK_LEVEL = (1 << BITS_LEVEL) - 1;
|
|
3662
|
+
function pack(level, order, nodeId) {
|
|
3663
|
+
if (level < 0 || level > MASK_LEVEL)
|
|
3664
|
+
throw new RangeError('OR: nesting level overflow, max 4');
|
|
3665
|
+
if (order < 0 || order > MASK_ORDER)
|
|
3666
|
+
throw new RangeError('OR: frame order overflow, max 128');
|
|
3667
|
+
const v = ((level & MASK_LEVEL) << SHIFT_LEVEL) |
|
|
3668
|
+
((order & MASK_ORDER) << SHIFT_ORDER) |
|
|
3669
|
+
(nodeId & MASK_NODE);
|
|
3670
|
+
return v >>> 0;
|
|
3671
|
+
}
|
|
3672
|
+
|
|
3652
3673
|
class Nodes {
|
|
3653
3674
|
constructor(params) {
|
|
3654
3675
|
this.nodes = new Map();
|
|
@@ -3676,6 +3697,9 @@ class Nodes {
|
|
|
3676
3697
|
}
|
|
3677
3698
|
listeners.push([type, listener, useCapture]);
|
|
3678
3699
|
};
|
|
3700
|
+
this.createFrameId = (level, frameOrder) => {
|
|
3701
|
+
return pack(level, frameOrder, 0);
|
|
3702
|
+
};
|
|
3679
3703
|
this.unregisterNode = (node) => {
|
|
3680
3704
|
const id = node[this.node_id];
|
|
3681
3705
|
if (id !== undefined) {
|
|
@@ -3696,16 +3720,8 @@ class Nodes {
|
|
|
3696
3720
|
this.maintainer = new Maintainer(this.nodes, this.unregisterNode, params.maintainer);
|
|
3697
3721
|
this.maintainer.start();
|
|
3698
3722
|
}
|
|
3699
|
-
|
|
3700
|
-
|
|
3701
|
-
const placeholderSize = 99999999;
|
|
3702
|
-
const nextFrameId = placeholderSize * frameOrder;
|
|
3703
|
-
// I highly doubt that this will ever happen,
|
|
3704
|
-
// but it will be easier to debug if it does
|
|
3705
|
-
if (nextFrameId > maxSafeNumber) {
|
|
3706
|
-
throw new Error('Placeholder id overflow');
|
|
3707
|
-
}
|
|
3708
|
-
this.nextNodeId = nextFrameId;
|
|
3723
|
+
crossdomainMode(level, frameOrder) {
|
|
3724
|
+
this.nextNodeId = this.createFrameId(level, frameOrder);
|
|
3709
3725
|
}
|
|
3710
3726
|
registerNode(node) {
|
|
3711
3727
|
let id = node[this.node_id];
|
|
@@ -4913,7 +4929,7 @@ class TopObserver extends Observer {
|
|
|
4913
4929
|
this.app.nodes.callNodeCallbacks(document, true);
|
|
4914
4930
|
}, window.document.documentElement);
|
|
4915
4931
|
}
|
|
4916
|
-
crossdomainObserve(rootNodeId, frameOder) {
|
|
4932
|
+
crossdomainObserve(rootNodeId, frameOder, frameLevel) {
|
|
4917
4933
|
const observer = this;
|
|
4918
4934
|
Element.prototype.attachShadow = function () {
|
|
4919
4935
|
// eslint-disable-next-line
|
|
@@ -4922,7 +4938,7 @@ class TopObserver extends Observer {
|
|
|
4922
4938
|
return shadow;
|
|
4923
4939
|
};
|
|
4924
4940
|
this.app.nodes.clear();
|
|
4925
|
-
this.app.nodes.
|
|
4941
|
+
this.app.nodes.crossdomainMode(frameLevel, frameOder);
|
|
4926
4942
|
const iframeObserver = new IFrameObserver(this.app);
|
|
4927
4943
|
this.iframeObservers.set(window.document, iframeObserver);
|
|
4928
4944
|
iframeObserver.syntheticObserve(rootNodeId, window.document);
|
|
@@ -5276,7 +5292,7 @@ class App {
|
|
|
5276
5292
|
this.stopCallbacks = [];
|
|
5277
5293
|
this.commitCallbacks = [];
|
|
5278
5294
|
this.activityState = ActivityState.NotActive;
|
|
5279
|
-
this.version = '16.4.10
|
|
5295
|
+
this.version = '16.4.10'; // TODO: version compatability check inside each plugin.
|
|
5280
5296
|
this.socketMode = false;
|
|
5281
5297
|
this.compressionThreshold = 24 * 1000;
|
|
5282
5298
|
this.bc = null;
|
|
@@ -5286,10 +5302,8 @@ class App {
|
|
|
5286
5302
|
this.rootId = null;
|
|
5287
5303
|
this.pageFrames = [];
|
|
5288
5304
|
this.frameOderNumber = 0;
|
|
5289
|
-
this.
|
|
5290
|
-
|
|
5291
|
-
'usability-test': true,
|
|
5292
|
-
};
|
|
5305
|
+
this.frameLevel = 0;
|
|
5306
|
+
this.features = {};
|
|
5293
5307
|
this.emptyBatchCounter = 0;
|
|
5294
5308
|
/** used by child iframes for crossdomain only */
|
|
5295
5309
|
this.parentActive = false;
|
|
@@ -5319,6 +5333,7 @@ class App {
|
|
|
5319
5333
|
this.rootId = data.id;
|
|
5320
5334
|
this.session.setSessionToken(data.token, this.projectKey);
|
|
5321
5335
|
this.frameOderNumber = data.frameOrderNumber;
|
|
5336
|
+
this.frameLevel = data.frameLevel;
|
|
5322
5337
|
this.debug.log('starting iframe tracking', data);
|
|
5323
5338
|
this.allowAppStart();
|
|
5324
5339
|
}
|
|
@@ -5368,8 +5383,8 @@ class App {
|
|
|
5368
5383
|
line: proto.iframeId,
|
|
5369
5384
|
id,
|
|
5370
5385
|
token,
|
|
5371
|
-
// since indexes go from 0 we +1
|
|
5372
5386
|
frameOrderNumber: order,
|
|
5387
|
+
frameLevel: this.frameLevel + 1,
|
|
5373
5388
|
};
|
|
5374
5389
|
this.debug.log('Got child frame signal; nodeId', id, event.source, iframeData);
|
|
5375
5390
|
// @ts-ignore
|
|
@@ -5856,6 +5871,7 @@ class App {
|
|
|
5856
5871
|
* listen for messages from parent window, so we can signal that we're alive
|
|
5857
5872
|
* */
|
|
5858
5873
|
window.addEventListener('message', this.parentCrossDomainFrameListener);
|
|
5874
|
+
window.addEventListener('message', this.crossDomainIframeListener);
|
|
5859
5875
|
setInterval(() => {
|
|
5860
5876
|
if (document.hidden) {
|
|
5861
5877
|
return;
|
|
@@ -6449,7 +6465,7 @@ class App {
|
|
|
6449
6465
|
}
|
|
6450
6466
|
await this.tagWatcher.fetchTags(this.options.ingestPoint, token);
|
|
6451
6467
|
this.activityState = ActivityState.Active;
|
|
6452
|
-
if (this.options.crossdomain?.enabled
|
|
6468
|
+
if (this.options.crossdomain?.enabled) {
|
|
6453
6469
|
void this.bootChildrenFrames();
|
|
6454
6470
|
}
|
|
6455
6471
|
if (canvasEnabled && !this.options.canvas.disableCanvas) {
|
|
@@ -6477,7 +6493,7 @@ class App {
|
|
|
6477
6493
|
}
|
|
6478
6494
|
else {
|
|
6479
6495
|
if (this.insideIframe && this.rootId) {
|
|
6480
|
-
this.observer.crossdomainObserve(this.rootId, this.frameOderNumber);
|
|
6496
|
+
this.observer.crossdomainObserve(this.rootId, this.frameOderNumber, this.frameLevel);
|
|
6481
6497
|
}
|
|
6482
6498
|
else {
|
|
6483
6499
|
this.observer.observe();
|
|
@@ -6631,7 +6647,7 @@ class App {
|
|
|
6631
6647
|
stop(stopWorker = true) {
|
|
6632
6648
|
if (this.activityState !== ActivityState.NotActive) {
|
|
6633
6649
|
try {
|
|
6634
|
-
if (
|
|
6650
|
+
if (this.options.crossdomain?.enabled) {
|
|
6635
6651
|
this.killChildrenFrames();
|
|
6636
6652
|
}
|
|
6637
6653
|
this.attributeSender.clear();
|
|
@@ -7605,7 +7621,7 @@ function getUniqueSiblingClass(el) {
|
|
|
7605
7621
|
return null;
|
|
7606
7622
|
}
|
|
7607
7623
|
|
|
7608
|
-
|
|
7624
|
+
let e=-1;const t=t=>{addEventListener("pageshow",(n=>{n.persisted&&(e=n.timeStamp,t(n));}),true);},n=(e,t,n,i)=>{let s,o;return r=>{t.value>=0&&(r||i)&&(o=t.value-(s??0),(o||void 0===s)&&(s=t.value,t.delta=o,t.rating=((e,t)=>e>t[1]?"poor":e>t[0]?"needs-improvement":"good")(t.value,n),e(t)));}},i=e=>{requestAnimationFrame((()=>requestAnimationFrame((()=>e()))));},s=()=>{const e=performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},o=()=>{const e=s();return e?.activationStart??0},r=(t,n=-1)=>{const i=s();let r="navigate";e>=0?r="back-forward-cache":i&&(document.prerendering||o()>0?r="prerender":document.wasDiscarded?r="restore":i.type&&(r=i.type.replace(/_/g,"-")));return {name:t,value:n,rating:"good",delta:0,entries:[],id:`v5-${Date.now()}-${Math.floor(8999999999999*Math.random())+1e12}`,navigationType:r}},c=new WeakMap;function a(e,t){return c.get(e)||c.set(e,new t),c.get(e)}class d{t;i=0;o=[];h(e){if(e.hadRecentInput)return;const t=this.o[0],n=this.o.at(-1);this.i&&t&&n&&e.startTime-n.startTime<1e3&&e.startTime-t.startTime<5e3?(this.i+=e.value,this.o.push(e)):(this.i=e.value,this.o=[e]),this.t?.(e);}}const h=(e,t,n={})=>{try{if(PerformanceObserver.supportedEntryTypes.includes(e)){const i=new PerformanceObserver((e=>{Promise.resolve().then((()=>{t(e.getEntries());}));}));return i.observe({type:e,buffered:!0,...n}),i}}catch{}},f=e=>{let t=false;return ()=>{t||(e(),t=true);}};let u=-1;const l=new Set,m=()=>"hidden"!==document.visibilityState||document.prerendering?1/0:0,p=e=>{if("hidden"===document.visibilityState){if("visibilitychange"===e.type)for(const e of l)e();isFinite(u)||(u="visibilitychange"===e.type?e.timeStamp:0,removeEventListener("prerenderingchange",p,true));}},v=()=>{if(u<0){const e=o(),n=document.prerendering?void 0:globalThis.performance.getEntriesByType("visibility-state").filter((t=>"hidden"===t.name&&t.startTime>e))[0]?.startTime;u=n??m(),addEventListener("visibilitychange",p,true),addEventListener("prerenderingchange",p,true),t((()=>{setTimeout((()=>{u=m();}));}));}return {get firstHiddenTime(){return u},onHidden(e){l.add(e);}}},g=e=>{document.prerendering?addEventListener("prerenderingchange",(()=>e()),true):e();},y=[1800,3e3],E=(e,s={})=>{g((()=>{const c=v();let a,d=r("FCP");const f=h("paint",(e=>{for(const t of e)"first-contentful-paint"===t.name&&(f.disconnect(),t.startTime<c.firstHiddenTime&&(d.value=Math.max(t.startTime-o(),0),d.entries.push(t),a(true)));}));f&&(a=n(e,d,y,s.reportAllChanges),t((t=>{d=r("FCP"),a=n(e,d,y,s.reportAllChanges),i((()=>{d.value=performance.now()-t.timeStamp,a(true);}));})));}));},b=[.1,.25],L=(e,s={})=>{const o=v();E(f((()=>{let c,f=r("CLS",0);const u=a(s,d),l=e=>{for(const t of e)u.h(t);u.i>f.value&&(f.value=u.i,f.entries=u.o,c());},m=h("layout-shift",l);m&&(c=n(e,f,b,s.reportAllChanges),o.onHidden((()=>{l(m.takeRecords()),c(true);})),t((()=>{u.i=0,f=r("CLS",0),c=n(e,f,b,s.reportAllChanges),i((()=>c()));})),setTimeout(c));})));};let P=0,T=1/0,_=0;const M=e=>{for(const t of e)t.interactionId&&(T=Math.min(T,t.interactionId),_=Math.max(_,t.interactionId),P=_?(_-T)/7+1:0);};let w;const C=()=>w?P:performance.interactionCount??0,I=()=>{"interactionCount"in performance||w||(w=h("event",M,{type:"event",buffered:true,durationThreshold:0}));};let F=0;class k{u=[];l=new Map;m;p;v(){F=C(),this.u.length=0,this.l.clear();}L(){const e=Math.min(this.u.length-1,Math.floor((C()-F)/50));return this.u[e]}h(e){if(this.m?.(e),!e.interactionId&&"first-input"!==e.entryType)return;const t=this.u.at(-1);let n=this.l.get(e.interactionId);if(n||this.u.length<10||e.duration>t.P){if(n?e.duration>n.P?(n.entries=[e],n.P=e.duration):e.duration===n.P&&e.startTime===n.entries[0].startTime&&n.entries.push(e):(n={id:e.interactionId,entries:[e],P:e.duration},this.l.set(n.id,n),this.u.push(n)),this.u.sort(((e,t)=>t.P-e.P)),this.u.length>10){const e=this.u.splice(10);for(const t of e)this.l.delete(t.id);}this.p?.(n);}}}const A=e=>{const t=globalThis.requestIdleCallback||setTimeout;"hidden"===document.visibilityState?e():(e=f(e),addEventListener("visibilitychange",e,{once:true,capture:true}),t((()=>{e(),removeEventListener("visibilitychange",e,{capture:true});})));},B=[200,500],S=(e,i={})=>{if(!globalThis.PerformanceEventTiming||!("interactionId"in PerformanceEventTiming.prototype))return;const s=v();g((()=>{I();let o,c=r("INP");const d=a(i,k),f=e=>{A((()=>{for(const t of e)d.h(t);const t=d.L();t&&t.P!==c.value&&(c.value=t.P,c.entries=t.entries,o());}));},u=h("event",f,{durationThreshold:i.durationThreshold??40});o=n(e,c,B,i.reportAllChanges),u&&(u.observe({type:"first-input",buffered:true}),s.onHidden((()=>{f(u.takeRecords()),o(true);})),t((()=>{d.v(),c=r("INP"),o=n(e,c,B,i.reportAllChanges);})));}));};class N{m;h(e){this.m?.(e);}}const q=[2500,4e3],x=(e,s={})=>{g((()=>{const c=v();let d,u=r("LCP");const l=a(s,N),m=e=>{s.reportAllChanges||(e=e.slice(-1));for(const t of e)l.h(t),t.startTime<c.firstHiddenTime&&(u.value=Math.max(t.startTime-o(),0),u.entries=[t],d());},p=h("largest-contentful-paint",m);if(p){d=n(e,u,q,s.reportAllChanges);const o=f((()=>{m(p.takeRecords()),p.disconnect(),d(true);})),c=e=>{e.isTrusted&&(A(o),removeEventListener(e.type,c,{capture:true}));};for(const e of ["keydown","click","visibilitychange"])addEventListener(e,c,{capture:true});t((t=>{u=r("LCP"),d=n(e,u,q,s.reportAllChanges),i((()=>{u.value=performance.now()-t.timeStamp,d(true);}));}));}}));},H=[800,1800],O=e=>{document.prerendering?g((()=>O(e))):"complete"!==document.readyState?addEventListener("load",(()=>O(e)),true):setTimeout(e);},$=(e,i={})=>{let c=r("TTFB"),a=n(e,c,H,i.reportAllChanges);O((()=>{const d=s();d&&(c.value=Math.max(d.responseStart-o(),0),c.entries=[d],a(true),t((()=>{c=r("TTFB",0),a=n(e,c,H,i.reportAllChanges),a(true);})));}));};
|
|
7609
7625
|
|
|
7610
7626
|
function getPaintBlocks(resources) {
|
|
7611
7627
|
const paintBlocks = [];
|
|
@@ -7718,10 +7734,10 @@ function Timing (app, opts) {
|
|
|
7718
7734
|
// onINP(): Chromium
|
|
7719
7735
|
// onLCP(): Chromium, Firefox
|
|
7720
7736
|
// onTTFB(): Chromium, Firefox, Safari
|
|
7721
|
-
|
|
7722
|
-
|
|
7723
|
-
|
|
7724
|
-
|
|
7737
|
+
L(onVitalsSignal);
|
|
7738
|
+
S(onVitalsSignal);
|
|
7739
|
+
x(onVitalsSignal);
|
|
7740
|
+
$(onVitalsSignal);
|
|
7725
7741
|
});
|
|
7726
7742
|
app.attachStopCallback(function () {
|
|
7727
7743
|
observer.disconnect();
|
|
@@ -8512,7 +8528,9 @@ class NetworkMessage {
|
|
|
8512
8528
|
});
|
|
8513
8529
|
if (!messageInfo)
|
|
8514
8530
|
return null;
|
|
8515
|
-
const
|
|
8531
|
+
const gqlHeader = "application/graphql-response";
|
|
8532
|
+
const isGraphql = messageInfo.url.includes("/graphql")
|
|
8533
|
+
|| Object.values(messageInfo.request.headers).some(v => v.includes(gqlHeader));
|
|
8516
8534
|
if (isGraphql && messageInfo.response.body && typeof messageInfo.response.body === 'string') {
|
|
8517
8535
|
const isError = messageInfo.response.body.includes("errors");
|
|
8518
8536
|
messageInfo.status = isError ? 400 : 200;
|
|
@@ -8818,6 +8836,7 @@ class FetchProxyHandler {
|
|
|
8818
8836
|
this.tokenUrlMatcher = tokenUrlMatcher;
|
|
8819
8837
|
}
|
|
8820
8838
|
apply(target, _, argsList) {
|
|
8839
|
+
var _a;
|
|
8821
8840
|
const input = argsList[0];
|
|
8822
8841
|
const init = argsList[1];
|
|
8823
8842
|
if (!input ||
|
|
@@ -8833,6 +8852,31 @@ class FetchProxyHandler {
|
|
|
8833
8852
|
}
|
|
8834
8853
|
const item = new NetworkMessage(this.ignoredHeaders, this.setSessionTokenHeader, this.sanitize);
|
|
8835
8854
|
this.beforeFetch(item, input, init);
|
|
8855
|
+
const signal = (argsList[0] instanceof Request ? argsList[0].signal : undefined) ||
|
|
8856
|
+
((_a = argsList[1]) === null || _a === void 0 ? void 0 : _a.signal);
|
|
8857
|
+
// guard to avoid double-send
|
|
8858
|
+
let abortedNotified = false;
|
|
8859
|
+
const notifyAbort = () => {
|
|
8860
|
+
if (abortedNotified)
|
|
8861
|
+
return;
|
|
8862
|
+
abortedNotified = true;
|
|
8863
|
+
item.endTime = performance.now();
|
|
8864
|
+
item.duration = item.endTime - (item.startTime || item.endTime);
|
|
8865
|
+
item.status = 0;
|
|
8866
|
+
item.statusText = "Aborted";
|
|
8867
|
+
item.readyState = 0;
|
|
8868
|
+
const msg = item.getMessage();
|
|
8869
|
+
if (msg)
|
|
8870
|
+
this.sendMessage(msg);
|
|
8871
|
+
};
|
|
8872
|
+
if (signal) {
|
|
8873
|
+
if (signal.aborted) {
|
|
8874
|
+
notifyAbort();
|
|
8875
|
+
}
|
|
8876
|
+
else {
|
|
8877
|
+
signal.addEventListener("abort", notifyAbort, { once: true });
|
|
8878
|
+
}
|
|
8879
|
+
}
|
|
8836
8880
|
this.setSessionTokenHeader((name, value) => {
|
|
8837
8881
|
if (this.tokenUrlMatcher !== undefined) {
|
|
8838
8882
|
if (!this.tokenUrlMatcher(item.url)) {
|
|
@@ -8861,11 +8905,22 @@ class FetchProxyHandler {
|
|
|
8861
8905
|
}
|
|
8862
8906
|
});
|
|
8863
8907
|
return target.apply(window, argsList)
|
|
8864
|
-
.then(this.afterFetch(item)
|
|
8908
|
+
.then(this.afterFetch(item, () => {
|
|
8909
|
+
abortedNotified = true;
|
|
8910
|
+
}))
|
|
8865
8911
|
.catch((e) => {
|
|
8866
|
-
// mock finally
|
|
8867
8912
|
item.endTime = performance.now();
|
|
8868
8913
|
item.duration = item.endTime - (item.startTime || item.endTime);
|
|
8914
|
+
if (e && e.name === "AbortError") {
|
|
8915
|
+
item.status = 0;
|
|
8916
|
+
item.statusText = "Aborted";
|
|
8917
|
+
item.readyState = 0;
|
|
8918
|
+
if (!abortedNotified) {
|
|
8919
|
+
const msg = item.getMessage();
|
|
8920
|
+
if (msg)
|
|
8921
|
+
this.sendMessage(msg);
|
|
8922
|
+
}
|
|
8923
|
+
}
|
|
8869
8924
|
throw e;
|
|
8870
8925
|
});
|
|
8871
8926
|
}
|
|
@@ -8917,8 +8972,10 @@ class FetchProxyHandler {
|
|
|
8917
8972
|
item.requestData = genStringBody(init.body);
|
|
8918
8973
|
}
|
|
8919
8974
|
}
|
|
8920
|
-
afterFetch(item) {
|
|
8975
|
+
afterFetch(item, onResolved) {
|
|
8921
8976
|
return (resp) => {
|
|
8977
|
+
if (onResolved)
|
|
8978
|
+
onResolved === null || onResolved === void 0 ? void 0 : onResolved();
|
|
8922
8979
|
item.endTime = performance.now();
|
|
8923
8980
|
item.duration = item.endTime - (item.startTime || item.endTime);
|
|
8924
8981
|
item.status = resp.status;
|
|
@@ -8954,7 +9011,15 @@ class FetchProxyHandler {
|
|
|
8954
9011
|
}
|
|
8955
9012
|
})
|
|
8956
9013
|
.catch((e) => {
|
|
8957
|
-
if (e.name
|
|
9014
|
+
if (e.name === "AbortError") {
|
|
9015
|
+
item.status = 0;
|
|
9016
|
+
item.statusText = "Aborted";
|
|
9017
|
+
item.readyState = 0;
|
|
9018
|
+
const msg = item.getMessage();
|
|
9019
|
+
if (msg)
|
|
9020
|
+
this.sendMessage(msg);
|
|
9021
|
+
}
|
|
9022
|
+
else {
|
|
8958
9023
|
throw e;
|
|
8959
9024
|
}
|
|
8960
9025
|
});
|
|
@@ -9650,7 +9715,7 @@ class API {
|
|
|
9650
9715
|
this.signalStartIssue = (reason, missingApi) => {
|
|
9651
9716
|
const doNotTrack = this.checkDoNotTrack();
|
|
9652
9717
|
console.log("Tracker couldn't start due to:", JSON.stringify({
|
|
9653
|
-
trackerVersion: '16.4.10
|
|
9718
|
+
trackerVersion: '16.4.10',
|
|
9654
9719
|
projectKey: this.options.projectKey,
|
|
9655
9720
|
doNotTrack,
|
|
9656
9721
|
reason: missingApi.length ? `missing api: ${missingApi.join(',')}` : reason,
|