@openreplay/tracker 13.0.0 → 13.0.2

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.
Files changed (79) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/bun.lockb +0 -0
  3. package/cjs/app/canvas.d.ts +4 -1
  4. package/cjs/app/canvas.js +28 -13
  5. package/cjs/app/index.d.ts +23 -0
  6. package/cjs/app/index.js +23 -4
  7. package/cjs/index.js +1 -1
  8. package/coverage/clover.xml +1054 -964
  9. package/coverage/coverage-final.json +21 -21
  10. package/coverage/lcov-report/index.html +43 -43
  11. package/coverage/lcov-report/main/app/canvas.ts.html +224 -47
  12. package/coverage/lcov-report/main/app/guards.ts.html +26 -26
  13. package/coverage/lcov-report/main/app/index.html +42 -42
  14. package/coverage/lcov-report/main/app/index.ts.html +157 -37
  15. package/coverage/lcov-report/main/app/logger.ts.html +1 -1
  16. package/coverage/lcov-report/main/app/messages.gen.ts.html +244 -154
  17. package/coverage/lcov-report/main/app/nodes.ts.html +7 -4
  18. package/coverage/lcov-report/main/app/observer/iframe_observer.ts.html +1 -1
  19. package/coverage/lcov-report/main/app/observer/iframe_offsets.ts.html +1 -1
  20. package/coverage/lcov-report/main/app/observer/index.html +5 -5
  21. package/coverage/lcov-report/main/app/observer/shadow_root_observer.ts.html +1 -1
  22. package/coverage/lcov-report/main/app/observer/top_observer.ts.html +7 -4
  23. package/coverage/lcov-report/main/app/sanitizer.ts.html +2 -2
  24. package/coverage/lcov-report/main/app/session.ts.html +2 -2
  25. package/coverage/lcov-report/main/app/ticker.ts.html +1 -1
  26. package/coverage/lcov-report/main/index.html +13 -13
  27. package/coverage/lcov-report/main/index.ts.html +32 -14
  28. package/coverage/lcov-report/main/modules/Network/beaconProxy.ts.html +17 -8
  29. package/coverage/lcov-report/main/modules/Network/fetchProxy.ts.html +40 -13
  30. package/coverage/lcov-report/main/modules/Network/index.html +21 -21
  31. package/coverage/lcov-report/main/modules/Network/index.ts.html +2 -2
  32. package/coverage/lcov-report/main/modules/Network/networkMessage.ts.html +12 -6
  33. package/coverage/lcov-report/main/modules/Network/utils.ts.html +17 -8
  34. package/coverage/lcov-report/main/modules/Network/xhrProxy.ts.html +39 -12
  35. package/coverage/lcov-report/main/modules/attributeSender.ts.html +1 -1
  36. package/coverage/lcov-report/main/modules/axiosSpy.ts.html +1 -1
  37. package/coverage/lcov-report/main/modules/conditionsManager.ts.html +4 -22
  38. package/coverage/lcov-report/main/modules/connection.ts.html +1 -1
  39. package/coverage/lcov-report/main/modules/console.ts.html +1 -1
  40. package/coverage/lcov-report/main/modules/constructedStyleSheets.ts.html +3 -3
  41. package/coverage/lcov-report/main/modules/cssrules.ts.html +1 -1
  42. package/coverage/lcov-report/main/modules/exception.ts.html +1 -1
  43. package/coverage/lcov-report/main/modules/featureFlags.ts.html +1 -1
  44. package/coverage/lcov-report/main/modules/focus.ts.html +1 -1
  45. package/coverage/lcov-report/main/modules/fonts.ts.html +1 -1
  46. package/coverage/lcov-report/main/modules/img.ts.html +4 -4
  47. package/coverage/lcov-report/main/modules/index.html +24 -24
  48. package/coverage/lcov-report/main/modules/input.ts.html +1 -1
  49. package/coverage/lcov-report/main/modules/mouse.ts.html +1 -1
  50. package/coverage/lcov-report/main/modules/network.ts.html +2 -2
  51. package/coverage/lcov-report/main/modules/performance.ts.html +1 -1
  52. package/coverage/lcov-report/main/modules/scroll.ts.html +1 -1
  53. package/coverage/lcov-report/main/modules/selection.ts.html +1 -1
  54. package/coverage/lcov-report/main/modules/tabs.ts.html +1 -1
  55. package/coverage/lcov-report/main/modules/tagWatcher.ts.html +95 -92
  56. package/coverage/lcov-report/main/modules/timing.ts.html +1 -1
  57. package/coverage/lcov-report/main/modules/userTesting/SignalManager.ts.html +1 -1
  58. package/coverage/lcov-report/main/modules/userTesting/dnd.ts.html +1 -1
  59. package/coverage/lcov-report/main/modules/userTesting/index.html +1 -1
  60. package/coverage/lcov-report/main/modules/userTesting/index.ts.html +1 -1
  61. package/coverage/lcov-report/main/modules/userTesting/recorder.ts.html +1 -1
  62. package/coverage/lcov-report/main/modules/userTesting/styles.ts.html +1 -1
  63. package/coverage/lcov-report/main/modules/userTesting/utils.ts.html +1 -1
  64. package/coverage/lcov-report/main/modules/viewport.ts.html +4 -4
  65. package/coverage/lcov-report/main/utils.ts.html +181 -31
  66. package/coverage/lcov-report/webworker/BatchWriter.ts.html +1 -1
  67. package/coverage/lcov-report/webworker/MessageEncoder.gen.ts.html +31 -7
  68. package/coverage/lcov-report/webworker/PrimitiveEncoder.ts.html +1 -1
  69. package/coverage/lcov-report/webworker/QueueSender.ts.html +48 -18
  70. package/coverage/lcov-report/webworker/index.html +14 -14
  71. package/coverage/lcov-report/webworker/index.ts.html +51 -21
  72. package/coverage/lcov.info +1882 -1653
  73. package/lib/app/canvas.d.ts +4 -1
  74. package/lib/app/canvas.js +28 -13
  75. package/lib/app/index.d.ts +23 -0
  76. package/lib/app/index.js +23 -4
  77. package/lib/common/tsconfig.tsbuildinfo +1 -1
  78. package/lib/index.js +1 -1
  79. package/package.json +1 -1
@@ -25,28 +25,28 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">0% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/81</span>
28
+ <span class='fraction'>0/94</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/30</span>
35
+ <span class='fraction'>0/39</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/22</span>
42
+ <span class='fraction'>0/27</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">0% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/81</span>
49
+ <span class='fraction'>0/92</span>
50
50
  </div>
51
51
 
52
52
 
@@ -256,7 +256,57 @@
256
256
  <a name='L191'></a><a href='#L191'>191</a>
257
257
  <a name='L192'></a><a href='#L192'>192</a>
258
258
  <a name='L193'></a><a href='#L193'>193</a>
259
- <a name='L194'></a><a href='#L194'>194</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a>
268
+ <a name='L203'></a><a href='#L203'>203</a>
269
+ <a name='L204'></a><a href='#L204'>204</a>
270
+ <a name='L205'></a><a href='#L205'>205</a>
271
+ <a name='L206'></a><a href='#L206'>206</a>
272
+ <a name='L207'></a><a href='#L207'>207</a>
273
+ <a name='L208'></a><a href='#L208'>208</a>
274
+ <a name='L209'></a><a href='#L209'>209</a>
275
+ <a name='L210'></a><a href='#L210'>210</a>
276
+ <a name='L211'></a><a href='#L211'>211</a>
277
+ <a name='L212'></a><a href='#L212'>212</a>
278
+ <a name='L213'></a><a href='#L213'>213</a>
279
+ <a name='L214'></a><a href='#L214'>214</a>
280
+ <a name='L215'></a><a href='#L215'>215</a>
281
+ <a name='L216'></a><a href='#L216'>216</a>
282
+ <a name='L217'></a><a href='#L217'>217</a>
283
+ <a name='L218'></a><a href='#L218'>218</a>
284
+ <a name='L219'></a><a href='#L219'>219</a>
285
+ <a name='L220'></a><a href='#L220'>220</a>
286
+ <a name='L221'></a><a href='#L221'>221</a>
287
+ <a name='L222'></a><a href='#L222'>222</a>
288
+ <a name='L223'></a><a href='#L223'>223</a>
289
+ <a name='L224'></a><a href='#L224'>224</a>
290
+ <a name='L225'></a><a href='#L225'>225</a>
291
+ <a name='L226'></a><a href='#L226'>226</a>
292
+ <a name='L227'></a><a href='#L227'>227</a>
293
+ <a name='L228'></a><a href='#L228'>228</a>
294
+ <a name='L229'></a><a href='#L229'>229</a>
295
+ <a name='L230'></a><a href='#L230'>230</a>
296
+ <a name='L231'></a><a href='#L231'>231</a>
297
+ <a name='L232'></a><a href='#L232'>232</a>
298
+ <a name='L233'></a><a href='#L233'>233</a>
299
+ <a name='L234'></a><a href='#L234'>234</a>
300
+ <a name='L235'></a><a href='#L235'>235</a>
301
+ <a name='L236'></a><a href='#L236'>236</a>
302
+ <a name='L237'></a><a href='#L237'>237</a>
303
+ <a name='L238'></a><a href='#L238'>238</a>
304
+ <a name='L239'></a><a href='#L239'>239</a>
305
+ <a name='L240'></a><a href='#L240'>240</a>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
260
310
  <span class="cline-any cline-neutral">&nbsp;</span>
261
311
  <span class="cline-any cline-no">&nbsp;</span>
262
312
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -271,9 +321,11 @@
271
321
  <span class="cline-any cline-no">&nbsp;</span>
272
322
  <span class="cline-any cline-no">&nbsp;</span>
273
323
  <span class="cline-any cline-neutral">&nbsp;</span>
324
+ <span class="cline-any cline-neutral">&nbsp;</span>
274
325
  <span class="cline-any cline-no">&nbsp;</span>
275
326
  <span class="cline-any cline-no">&nbsp;</span>
276
327
  <span class="cline-any cline-neutral">&nbsp;</span>
328
+ <span class="cline-any cline-neutral">&nbsp;</span>
277
329
  <span class="cline-any cline-no">&nbsp;</span>
278
330
  <span class="cline-any cline-neutral">&nbsp;</span>
279
331
  <span class="cline-any cline-no">&nbsp;</span>
@@ -362,6 +414,10 @@
362
414
  <span class="cline-any cline-no">&nbsp;</span>
363
415
  <span class="cline-any cline-no">&nbsp;</span>
364
416
  <span class="cline-any cline-no">&nbsp;</span>
417
+ <span class="cline-any cline-no">&nbsp;</span>
418
+ <span class="cline-any cline-neutral">&nbsp;</span>
419
+ <span class="cline-any cline-no">&nbsp;</span>
420
+ <span class="cline-any cline-neutral">&nbsp;</span>
365
421
  <span class="cline-any cline-neutral">&nbsp;</span>
366
422
  <span class="cline-any cline-neutral">&nbsp;</span>
367
423
  <span class="cline-any cline-no">&nbsp;</span>
@@ -400,6 +456,7 @@
400
456
  <span class="cline-any cline-no">&nbsp;</span>
401
457
  <span class="cline-any cline-neutral">&nbsp;</span>
402
458
  <span class="cline-any cline-no">&nbsp;</span>
459
+ <span class="cline-any cline-no">&nbsp;</span>
403
460
  <span class="cline-any cline-neutral">&nbsp;</span>
404
461
  <span class="cline-any cline-neutral">&nbsp;</span>
405
462
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -419,6 +476,8 @@
419
476
  <span class="cline-any cline-no">&nbsp;</span>
420
477
  <span class="cline-any cline-neutral">&nbsp;</span>
421
478
  <span class="cline-any cline-no">&nbsp;</span>
479
+ <span class="cline-any cline-no">&nbsp;</span>
480
+ <span class="cline-any cline-neutral">&nbsp;</span>
422
481
  <span class="cline-any cline-neutral">&nbsp;</span>
423
482
  <span class="cline-any cline-neutral">&nbsp;</span>
424
483
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -428,24 +487,65 @@
428
487
  <span class="cline-any cline-neutral">&nbsp;</span>
429
488
  <span class="cline-any cline-neutral">&nbsp;</span>
430
489
  <span class="cline-any cline-neutral">&nbsp;</span>
490
+ <span class="cline-any cline-no">&nbsp;</span>
491
+ <span class="cline-any cline-no">&nbsp;</span>
431
492
  <span class="cline-any cline-neutral">&nbsp;</span>
432
493
  <span class="cline-any cline-neutral">&nbsp;</span>
433
494
  <span class="cline-any cline-neutral">&nbsp;</span>
434
495
  <span class="cline-any cline-neutral">&nbsp;</span>
435
496
  <span class="cline-any cline-no">&nbsp;</span>
436
497
  <span class="cline-any cline-no">&nbsp;</span>
498
+ <span class="cline-any cline-neutral">&nbsp;</span>
499
+ <span class="cline-any cline-neutral">&nbsp;</span>
500
+ <span class="cline-any cline-neutral">&nbsp;</span>
501
+ <span class="cline-any cline-neutral">&nbsp;</span>
502
+ <span class="cline-any cline-no">&nbsp;</span>
437
503
  <span class="cline-any cline-no">&nbsp;</span>
504
+ <span class="cline-any cline-neutral">&nbsp;</span>
505
+ <span class="cline-any cline-neutral">&nbsp;</span>
438
506
  <span class="cline-any cline-no">&nbsp;</span>
439
507
  <span class="cline-any cline-neutral">&nbsp;</span>
440
508
  <span class="cline-any cline-no">&nbsp;</span>
441
509
  <span class="cline-any cline-no">&nbsp;</span>
442
510
  <span class="cline-any cline-no">&nbsp;</span>
511
+ <span class="cline-any cline-no">&nbsp;</span>
512
+ <span class="cline-any cline-neutral">&nbsp;</span>
513
+ <span class="cline-any cline-neutral">&nbsp;</span>
443
514
  <span class="cline-any cline-neutral">&nbsp;</span>
444
515
  <span class="cline-any cline-no">&nbsp;</span>
445
516
  <span class="cline-any cline-no">&nbsp;</span>
517
+ <span class="cline-any cline-no">&nbsp;</span>
518
+ <span class="cline-any cline-neutral">&nbsp;</span>
519
+ <span class="cline-any cline-neutral">&nbsp;</span>
446
520
  <span class="cline-any cline-neutral">&nbsp;</span>
447
521
  <span class="cline-any cline-no">&nbsp;</span>
522
+ <span class="cline-any cline-neutral">&nbsp;</span>
523
+ <span class="cline-any cline-neutral">&nbsp;</span>
524
+ <span class="cline-any cline-neutral">&nbsp;</span>
448
525
  <span class="cline-any cline-no">&nbsp;</span>
526
+ <span class="cline-any cline-no">&nbsp;</span>
527
+ <span class="cline-any cline-neutral">&nbsp;</span>
528
+ <span class="cline-any cline-no">&nbsp;</span>
529
+ <span class="cline-any cline-neutral">&nbsp;</span>
530
+ <span class="cline-any cline-neutral">&nbsp;</span>
531
+ <span class="cline-any cline-neutral">&nbsp;</span>
532
+ <span class="cline-any cline-neutral">&nbsp;</span>
533
+ <span class="cline-any cline-neutral">&nbsp;</span>
534
+ <span class="cline-any cline-neutral">&nbsp;</span>
535
+ <span class="cline-any cline-neutral">&nbsp;</span>
536
+ <span class="cline-any cline-neutral">&nbsp;</span>
537
+ <span class="cline-any cline-neutral">&nbsp;</span>
538
+ <span class="cline-any cline-neutral">&nbsp;</span>
539
+ <span class="cline-any cline-neutral">&nbsp;</span>
540
+ <span class="cline-any cline-neutral">&nbsp;</span>
541
+ <span class="cline-any cline-neutral">&nbsp;</span>
542
+ <span class="cline-any cline-neutral">&nbsp;</span>
543
+ <span class="cline-any cline-neutral">&nbsp;</span>
544
+ <span class="cline-any cline-neutral">&nbsp;</span>
545
+ <span class="cline-any cline-neutral">&nbsp;</span>
546
+ <span class="cline-any cline-neutral">&nbsp;</span>
547
+ <span class="cline-any cline-neutral">&nbsp;</span>
548
+ <span class="cline-any cline-neutral">&nbsp;</span>
449
549
  <span class="cline-any cline-neutral">&nbsp;</span>
450
550
  <span class="cline-any cline-neutral">&nbsp;</span>
451
551
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -464,9 +564,11 @@ let timeOrigin: number = <span class="cstat-no" title="statement not covered" >I
464
564
  <span class="cstat-no" title="statement not covered" >export function <span class="fstat-no" title="function not covered" >a</span>djustTimeOrigin(</span>) {
465
565
  <span class="cstat-no" title="statement not covered" > timeOrigin = Date.now() - performance.now()</span>
466
566
  }
567
+ &nbsp;
467
568
  <span class="cstat-no" title="statement not covered" >export function <span class="fstat-no" title="function not covered" >g</span>etTimeOrigin(</span>) {
468
569
  <span class="cstat-no" title="statement not covered" > return timeOrigin</span>
469
570
  }
571
+ &nbsp;
470
572
  export const <span class="cstat-no" title="statement not covered" >now: () =&gt; number =</span>
471
573
  IN_BROWSER &amp;&amp; !!performance.now
472
574
  ? <span class="fstat-no" title="function not covered" >() =</span>&gt; <span class="cstat-no" title="statement not covered" >Math.round(performance.now() + timeOrigin)</span>
@@ -553,13 +655,17 @@ function <span class="fstat-no" title="function not covered" >dec2hex(</span>dec
553
655
  // msCrypto = IE11
554
656
  // @ts-ignore
555
657
  const safeCrypto = <span class="cstat-no" title="statement not covered" >window.crypto || window.msCrypto</span>
556
- <span class="cstat-no" title="statement not covered" > safeCrypto.getRandomValues(arr)</span>
557
- <span class="cstat-no" title="statement not covered" > return Array.from(arr, dec2hex).join('')</span>
658
+ <span class="cstat-no" title="statement not covered" > if (safeCrypto) {</span>
659
+ <span class="cstat-no" title="statement not covered" > safeCrypto.getRandomValues(arr)</span>
660
+ <span class="cstat-no" title="statement not covered" > return Array.from(arr, dec2hex).join('')</span>
661
+ } else {
662
+ <span class="cstat-no" title="statement not covered" > return Array.from({ length: len || 40 }, <span class="fstat-no" title="function not covered" >() =</span>&gt; <span class="cstat-no" title="statement not covered" >dec2hex(Math.floor(Math.random() * 16)))</span>.join('')</span>
663
+ }
558
664
  }
559
665
  &nbsp;
560
666
  <span class="cstat-no" title="statement not covered" >export function <span class="fstat-no" title="function not covered" >i</span>nIframe(</span>) {
561
667
  <span class="cstat-no" title="statement not covered" > try {</span>
562
- <span class="cstat-no" title="statement not covered" > return window.self !== window.top</span>
668
+ <span class="cstat-no" title="statement not covered" > return window.self &amp;&amp; window.top &amp;&amp; window.self !== window.top</span>
563
669
  } catch (e) {
564
670
  <span class="cstat-no" title="statement not covered" > return true</span>
565
671
  }
@@ -592,9 +698,10 @@ function <span class="fstat-no" title="function not covered" >dec2hex(</span>dec
592
698
  <span class="cstat-no" title="statement not covered" > try {</span>
593
699
  <span class="cstat-no" title="statement not covered" > target[safeAddEventListener](event, cb, capture)</span>
594
700
  } catch (e) {
701
+ const msg = <span class="cstat-no" title="statement not covered" >e.message</span>
595
702
  <span class="cstat-no" title="statement not covered" > console.debug(</span>
596
703
  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
597
- `Openreplay: ${e.messages}; if this error is caused by an IframeObserver, ignore it`,
704
+ `Openreplay: ${msg}; if this error is caused by an IframeObserver, ignore it`,
598
705
  )
599
706
  }
600
707
  }
@@ -611,37 +718,80 @@ function <span class="fstat-no" title="function not covered" >dec2hex(</span>dec
611
718
  <span class="cstat-no" title="statement not covered" > try {</span>
612
719
  <span class="cstat-no" title="statement not covered" > target[safeRemoveEventListener](event, cb, capture)</span>
613
720
  } catch (e) {
721
+ const msg = <span class="cstat-no" title="statement not covered" >e.message</span>
614
722
  <span class="cstat-no" title="statement not covered" > console.debug(</span>
615
723
  // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
616
- `Openreplay: ${e.messages}; if this error is caused by an IframeObserver, ignore it`,
724
+ `Openreplay: ${msg}; if this error is caused by an IframeObserver, ignore it`,
617
725
  )
618
726
  }
619
727
  }
620
728
  &nbsp;
621
- /**
622
- * This is a brief polyfill that suits our needs
623
- * I took inspiration from Microsoft Clarity polyfill on this one
624
- * then adapted it a little bit
625
- *
626
- * I'm very grateful for their bright idea
627
- * */
628
- <span class="cstat-no" title="statement not covered" >export function <span class="fstat-no" title="function not covered" >r</span>equestIdleCb(</span>callback: () =&gt; void) {
629
- const taskTimeout = <span class="cstat-no" title="statement not covered" >3000</span>
630
- <span class="cstat-no" title="statement not covered" > if (window.requestIdleCallback) {</span>
631
- <span class="cstat-no" title="statement not covered" > return window.requestIdleCallback(callback, { timeout: taskTimeout })</span>
632
- } else {
633
- const channel = <span class="cstat-no" title="statement not covered" >new MessageChannel()</span>
634
- const incoming = <span class="cstat-no" title="statement not covered" >channel.port1</span>
635
- const outgoing = <span class="cstat-no" title="statement not covered" >channel.port2</span>
729
+ class FIFOTaskScheduler {
730
+ taskQueue: any[]
731
+ isRunning: boolean
732
+ <span class="fstat-no" title="function not covered" > constructor() {</span>
733
+ <span class="cstat-no" title="statement not covered" > this.taskQueue = []</span>
734
+ <span class="cstat-no" title="statement not covered" > this.isRunning = false</span>
735
+ }
736
+ &nbsp;
737
+ // Adds a task to the queue
738
+ <span class="fstat-no" title="function not covered" > addTask(</span>task: () =&gt; any) {
739
+ <span class="cstat-no" title="statement not covered" > this.taskQueue.push(task)</span>
740
+ <span class="cstat-no" title="statement not covered" > this.runTasks()</span>
741
+ }
636
742
  &nbsp;
637
- <span class="cstat-no" title="statement not covered" > incoming.onmessage = <span class="fstat-no" title="function not covered" >(): void =</span>&gt; {</span>
638
- <span class="cstat-no" title="statement not covered" > callback()</span>
743
+ // Runs tasks from the queue
744
+ <span class="fstat-no" title="function not covered" > runTasks(</span>) {
745
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.isRunning || this.taskQueue.length === 0) {</span>
746
+ <span class="cstat-no" title="statement not covered" > return</span>
639
747
  }
640
- <span class="cstat-no" title="statement not covered" > requestAnimationFrame(<span class="fstat-no" title="function not covered" >(): void =</span>&gt; {</span>
641
- <span class="cstat-no" title="statement not covered" > outgoing.postMessage(1)</span>
642
- })
748
+ &nbsp;
749
+ <span class="cstat-no" title="statement not covered" > this.isRunning = true</span>
750
+ &nbsp;
751
+ const executeNextTask = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >() =</span>&gt; {</span>
752
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.taskQueue.length === 0) {</span>
753
+ <span class="cstat-no" title="statement not covered" > this.isRunning = false</span>
754
+ <span class="cstat-no" title="statement not covered" > return</span>
755
+ }
756
+ &nbsp;
757
+ // Get the next task and execute it
758
+ const nextTask = <span class="cstat-no" title="statement not covered" >this.taskQueue.shift()</span>
759
+ <span class="cstat-no" title="statement not covered" > Promise.resolve(nextTask()).then(<span class="fstat-no" title="function not covered" >() =</span>&gt; {</span>
760
+ <span class="cstat-no" title="statement not covered" > requestAnimationFrame(<span class="fstat-no" title="function not covered" >() =</span>&gt; <span class="cstat-no" title="statement not covered" >executeNextTask())</span></span>
761
+ })
762
+ }
763
+ &nbsp;
764
+ <span class="cstat-no" title="statement not covered" > executeNextTask()</span>
643
765
  }
644
766
  }
767
+ &nbsp;
768
+ const scheduler = <span class="cstat-no" title="statement not covered" >new FIFOTaskScheduler()</span>
769
+ <span class="cstat-no" title="statement not covered" >export function <span class="fstat-no" title="function not covered" >r</span>equestIdleCb(</span>callback: () =&gt; void) {
770
+ // performance improvement experiment;
771
+ <span class="cstat-no" title="statement not covered" > scheduler.addTask(callback)</span>
772
+ /**
773
+ * This is a brief polyfill that suits our needs
774
+ * I took inspiration from Microsoft Clarity polyfill on this one
775
+ * then adapted it a little bit
776
+ *
777
+ * I'm very grateful for their bright idea
778
+ * */
779
+ // const taskTimeout = 3000
780
+ // if (window.requestIdleCallback) {
781
+ // return window.requestIdleCallback(callback, { timeout: taskTimeout })
782
+ // } else {
783
+ // const channel = new MessageChannel()
784
+ // const incoming = channel.port1
785
+ // const outgoing = channel.port2
786
+ //
787
+ // incoming.onmessage = (): void =&gt; {
788
+ // callback()
789
+ // }
790
+ // requestAnimationFrame((): void =&gt; {
791
+ // outgoing.postMessage(1)
792
+ // })
793
+ // }
794
+ }
645
795
  &nbsp;</pre></td></tr></table></pre>
646
796
 
647
797
  <div class='push'></div><!-- for sticky footer -->
@@ -649,7 +799,7 @@ function <span class="fstat-no" title="function not covered" >dec2hex(</span>dec
649
799
  <div class='footer quiet pad2 space-top1 center small'>
650
800
  Code coverage generated by
651
801
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
652
- at 2024-01-23T12:19:37.435Z
802
+ at 2024-06-04T11:50:55.506Z
653
803
  </div>
654
804
  <script src="../prettify.js"></script>
655
805
  <script>
@@ -484,7 +484,7 @@ const MAX_M_SIZE = <span class="cstat-no" title="statement not covered" >(1 &lt;
484
484
  <div class='footer quiet pad2 space-top1 center small'>
485
485
  Code coverage generated by
486
486
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
487
- at 2024-01-23T12:19:37.435Z
487
+ at 2024-06-04T11:50:55.506Z
488
488
  </div>
489
489
  <script src="../prettify.js"></script>
490
490
  <script>
@@ -25,14 +25,14 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">0% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/147</span>
28
+ <span class='fraction'>0/151</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/280</span>
35
+ <span class='fraction'>0/290</span>
36
36
  </div>
37
37
 
38
38
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">0% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/147</span>
49
+ <span class='fraction'>0/151</span>
50
50
  </div>
51
51
 
52
52
 
@@ -367,7 +367,15 @@
367
367
  <a name='L302'></a><a href='#L302'>302</a>
368
368
  <a name='L303'></a><a href='#L303'>303</a>
369
369
  <a name='L304'></a><a href='#L304'>304</a>
370
- <a name='L305'></a><a href='#L305'>305</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
370
+ <a name='L305'></a><a href='#L305'>305</a>
371
+ <a name='L306'></a><a href='#L306'>306</a>
372
+ <a name='L307'></a><a href='#L307'>307</a>
373
+ <a name='L308'></a><a href='#L308'>308</a>
374
+ <a name='L309'></a><a href='#L309'>309</a>
375
+ <a name='L310'></a><a href='#L310'>310</a>
376
+ <a name='L311'></a><a href='#L311'>311</a>
377
+ <a name='L312'></a><a href='#L312'>312</a>
378
+ <a name='L313'></a><a href='#L313'>313</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
371
379
  <span class="cline-any cline-neutral">&nbsp;</span>
372
380
  <span class="cline-any cline-neutral">&nbsp;</span>
373
381
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -668,6 +676,14 @@
668
676
  <span class="cline-any cline-no">&nbsp;</span>
669
677
  <span class="cline-any cline-neutral">&nbsp;</span>
670
678
  <span class="cline-any cline-neutral">&nbsp;</span>
679
+ <span class="cline-any cline-no">&nbsp;</span>
680
+ <span class="cline-any cline-no">&nbsp;</span>
681
+ <span class="cline-any cline-neutral">&nbsp;</span>
682
+ <span class="cline-any cline-neutral">&nbsp;</span>
683
+ <span class="cline-any cline-no">&nbsp;</span>
684
+ <span class="cline-any cline-no">&nbsp;</span>
685
+ <span class="cline-any cline-neutral">&nbsp;</span>
686
+ <span class="cline-any cline-neutral">&nbsp;</span>
671
687
  <span class="cline-any cline-neutral">&nbsp;</span>
672
688
  <span class="cline-any cline-neutral">&nbsp;</span>
673
689
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -687,7 +703,7 @@ import Message from '../common/messages.gen.js'
687
703
  <span class="cstat-no" title="statement not covered" > return this.uint(msg[1])</span>
688
704
  <span class="cstat-no" title="statement not covered" > break</span>
689
705
  &nbsp;
690
- case Messages.Type.SetPageLocation:
706
+ case Messages.Type.SetPageLocationDeprecated:
691
707
  <span class="cstat-no" title="statement not covered" > return this.string(msg[1]) &amp;&amp; this.string(msg[2]) &amp;&amp; this.uint(msg[3])</span>
692
708
  <span class="cstat-no" title="statement not covered" > break</span>
693
709
  &nbsp;
@@ -807,7 +823,7 @@ import Message from '../common/messages.gen.js'
807
823
  <span class="cstat-no" title="statement not covered" > return this.string(msg[1])</span>
808
824
  <span class="cstat-no" title="statement not covered" > break</span>
809
825
  &nbsp;
810
- case Messages.Type.Redux:
826
+ case Messages.Type.ReduxDeprecated:
811
827
  <span class="cstat-no" title="statement not covered" > return this.string(msg[1]) &amp;&amp; this.string(msg[2]) &amp;&amp; this.uint(msg[3])</span>
812
828
  <span class="cstat-no" title="statement not covered" > break</span>
813
829
  &nbsp;
@@ -970,6 +986,14 @@ import Message from '../common/messages.gen.js'
970
986
  case Messages.Type.TagTrigger:
971
987
  <span class="cstat-no" title="statement not covered" > return this.int(msg[1])</span>
972
988
  <span class="cstat-no" title="statement not covered" > break</span>
989
+ &nbsp;
990
+ case Messages.Type.Redux:
991
+ <span class="cstat-no" title="statement not covered" > return this.string(msg[1]) &amp;&amp; this.string(msg[2]) &amp;&amp; this.uint(msg[3]) &amp;&amp; this.uint(msg[4])</span>
992
+ <span class="cstat-no" title="statement not covered" > break</span>
993
+ &nbsp;
994
+ case Messages.Type.SetPageLocation:
995
+ <span class="cstat-no" title="statement not covered" > return this.string(msg[1]) &amp;&amp; this.string(msg[2]) &amp;&amp; this.uint(msg[3]) &amp;&amp; this.string(msg[4])</span>
996
+ <span class="cstat-no" title="statement not covered" > break</span>
973
997
  &nbsp;
974
998
  }
975
999
  }
@@ -982,7 +1006,7 @@ import Message from '../common/messages.gen.js'
982
1006
  <div class='footer quiet pad2 space-top1 center small'>
983
1007
  Code coverage generated by
984
1008
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
985
- at 2024-01-23T12:19:37.435Z
1009
+ at 2024-06-04T11:50:55.506Z
986
1010
  </div>
987
1011
  <script src="../prettify.js"></script>
988
1012
  <script>
@@ -421,7 +421,7 @@ const textEncoder: { encode(str: string): Uint8Array } =
421
421
  <div class='footer quiet pad2 space-top1 center small'>
422
422
  Code coverage generated by
423
423
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
424
- at 2024-01-23T12:19:37.435Z
424
+ at 2024-06-04T11:50:55.506Z
425
425
  </div>
426
426
  <script src="../prettify.js"></script>
427
427
  <script>