@openreplay/tracker 11.0.4 → 11.0.5

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 (83) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/cjs/app/canvas.d.ts +3 -0
  3. package/cjs/app/canvas.js +19 -7
  4. package/cjs/app/index.d.ts +2 -0
  5. package/cjs/app/index.js +15 -6
  6. package/cjs/app/nodes.d.ts +1 -0
  7. package/cjs/app/nodes.js +3 -0
  8. package/cjs/index.d.ts +1 -0
  9. package/cjs/index.js +7 -1
  10. package/coverage/clover.xml +890 -527
  11. package/coverage/coverage-final.json +10 -9
  12. package/coverage/lcov-report/index.html +30 -30
  13. package/coverage/lcov-report/main/app/canvas.ts.html +21 -6
  14. package/coverage/lcov-report/main/app/guards.ts.html +1 -1
  15. package/coverage/lcov-report/main/app/index.html +13 -13
  16. package/coverage/lcov-report/main/app/index.ts.html +1236 -114
  17. package/coverage/lcov-report/main/app/logger.ts.html +25 -91
  18. package/coverage/lcov-report/main/app/messages.gen.ts.html +1 -1
  19. package/coverage/lcov-report/main/app/nodes.ts.html +1 -1
  20. package/coverage/lcov-report/main/app/observer/iframe_observer.ts.html +1 -1
  21. package/coverage/lcov-report/main/app/observer/iframe_offsets.ts.html +1 -1
  22. package/coverage/lcov-report/main/app/observer/index.html +1 -1
  23. package/coverage/lcov-report/main/app/observer/shadow_root_observer.ts.html +1 -1
  24. package/coverage/lcov-report/main/app/observer/top_observer.ts.html +1 -1
  25. package/coverage/lcov-report/main/app/sanitizer.ts.html +1 -1
  26. package/coverage/lcov-report/main/app/session.ts.html +1 -1
  27. package/coverage/lcov-report/main/app/ticker.ts.html +1 -1
  28. package/coverage/lcov-report/main/index.html +9 -9
  29. package/coverage/lcov-report/main/index.ts.html +376 -100
  30. package/coverage/lcov-report/main/modules/Network/beaconProxy.ts.html +1 -1
  31. package/coverage/lcov-report/main/modules/Network/fetchProxy.ts.html +1 -1
  32. package/coverage/lcov-report/main/modules/Network/index.html +1 -1
  33. package/coverage/lcov-report/main/modules/Network/index.ts.html +1 -1
  34. package/coverage/lcov-report/main/modules/Network/networkMessage.ts.html +1 -1
  35. package/coverage/lcov-report/main/modules/Network/utils.ts.html +1 -1
  36. package/coverage/lcov-report/main/modules/Network/xhrProxy.ts.html +1 -1
  37. package/coverage/lcov-report/main/modules/attributeSender.ts.html +1 -1
  38. package/coverage/lcov-report/main/modules/axiosSpy.ts.html +1 -1
  39. package/coverage/lcov-report/main/modules/conditionsManager.ts.html +112 -67
  40. package/coverage/lcov-report/main/modules/connection.ts.html +1 -1
  41. package/coverage/lcov-report/main/modules/console.ts.html +1 -1
  42. package/coverage/lcov-report/main/modules/constructedStyleSheets.ts.html +1 -1
  43. package/coverage/lcov-report/main/modules/cssrules.ts.html +1 -1
  44. package/coverage/lcov-report/main/modules/exception.ts.html +1 -1
  45. package/coverage/lcov-report/main/modules/featureFlags.ts.html +10 -7
  46. package/coverage/lcov-report/main/modules/focus.ts.html +1 -1
  47. package/coverage/lcov-report/main/modules/fonts.ts.html +1 -1
  48. package/coverage/lcov-report/main/modules/img.ts.html +1 -1
  49. package/coverage/lcov-report/main/modules/index.html +37 -22
  50. package/coverage/lcov-report/main/modules/input.ts.html +1 -1
  51. package/coverage/lcov-report/main/modules/mouse.ts.html +1 -1
  52. package/coverage/lcov-report/main/modules/network.ts.html +1 -1
  53. package/coverage/lcov-report/main/modules/performance.ts.html +1 -1
  54. package/coverage/lcov-report/main/modules/scroll.ts.html +1 -1
  55. package/coverage/lcov-report/main/modules/selection.ts.html +1 -1
  56. package/coverage/lcov-report/main/modules/tabs.ts.html +1 -1
  57. package/coverage/lcov-report/main/modules/tagWatcher.ts.html +72 -15
  58. package/coverage/lcov-report/main/modules/timing.ts.html +1 -1
  59. package/coverage/lcov-report/main/modules/userTesting/SignalManager.ts.html +1 -1
  60. package/coverage/lcov-report/main/modules/userTesting/dnd.ts.html +1 -1
  61. package/coverage/lcov-report/main/modules/userTesting/index.html +1 -1
  62. package/coverage/lcov-report/main/modules/userTesting/index.ts.html +1 -1
  63. package/coverage/lcov-report/main/modules/userTesting/recorder.ts.html +1 -1
  64. package/coverage/lcov-report/main/modules/userTesting/styles.ts.html +1 -1
  65. package/coverage/lcov-report/main/modules/userTesting/utils.ts.html +1 -1
  66. package/coverage/lcov-report/main/modules/viewport.ts.html +1 -1
  67. package/coverage/lcov-report/main/utils.ts.html +1 -1
  68. package/coverage/lcov-report/webworker/BatchWriter.ts.html +23 -5
  69. package/coverage/lcov-report/webworker/MessageEncoder.gen.ts.html +1 -1
  70. package/coverage/lcov-report/webworker/PrimitiveEncoder.ts.html +1 -1
  71. package/coverage/lcov-report/webworker/QueueSender.ts.html +18 -6
  72. package/coverage/lcov-report/webworker/index.html +13 -13
  73. package/coverage/lcov-report/webworker/index.ts.html +17 -8
  74. package/coverage/lcov.info +1629 -942
  75. package/lib/app/canvas.d.ts +3 -0
  76. package/lib/app/canvas.js +19 -7
  77. package/lib/app/index.d.ts +2 -0
  78. package/lib/app/index.js +15 -6
  79. package/lib/app/nodes.d.ts +1 -0
  80. package/lib/app/nodes.js +3 -0
  81. package/lib/index.d.ts +1 -0
  82. package/lib/index.js +7 -1
  83. 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/177</span>
28
+ <span class='fraction'>0/213</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/91</span>
35
+ <span class='fraction'>0/119</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/35</span>
42
+ <span class='fraction'>0/40</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/175</span>
49
+ <span class='fraction'>0/211</span>
50
50
  </div>
51
51
 
52
52
 
@@ -462,7 +462,99 @@
462
462
  <a name='L397'></a><a href='#L397'>397</a>
463
463
  <a name='L398'></a><a href='#L398'>398</a>
464
464
  <a name='L399'></a><a href='#L399'>399</a>
465
- <a name='L400'></a><a href='#L400'>400</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
465
+ <a name='L400'></a><a href='#L400'>400</a>
466
+ <a name='L401'></a><a href='#L401'>401</a>
467
+ <a name='L402'></a><a href='#L402'>402</a>
468
+ <a name='L403'></a><a href='#L403'>403</a>
469
+ <a name='L404'></a><a href='#L404'>404</a>
470
+ <a name='L405'></a><a href='#L405'>405</a>
471
+ <a name='L406'></a><a href='#L406'>406</a>
472
+ <a name='L407'></a><a href='#L407'>407</a>
473
+ <a name='L408'></a><a href='#L408'>408</a>
474
+ <a name='L409'></a><a href='#L409'>409</a>
475
+ <a name='L410'></a><a href='#L410'>410</a>
476
+ <a name='L411'></a><a href='#L411'>411</a>
477
+ <a name='L412'></a><a href='#L412'>412</a>
478
+ <a name='L413'></a><a href='#L413'>413</a>
479
+ <a name='L414'></a><a href='#L414'>414</a>
480
+ <a name='L415'></a><a href='#L415'>415</a>
481
+ <a name='L416'></a><a href='#L416'>416</a>
482
+ <a name='L417'></a><a href='#L417'>417</a>
483
+ <a name='L418'></a><a href='#L418'>418</a>
484
+ <a name='L419'></a><a href='#L419'>419</a>
485
+ <a name='L420'></a><a href='#L420'>420</a>
486
+ <a name='L421'></a><a href='#L421'>421</a>
487
+ <a name='L422'></a><a href='#L422'>422</a>
488
+ <a name='L423'></a><a href='#L423'>423</a>
489
+ <a name='L424'></a><a href='#L424'>424</a>
490
+ <a name='L425'></a><a href='#L425'>425</a>
491
+ <a name='L426'></a><a href='#L426'>426</a>
492
+ <a name='L427'></a><a href='#L427'>427</a>
493
+ <a name='L428'></a><a href='#L428'>428</a>
494
+ <a name='L429'></a><a href='#L429'>429</a>
495
+ <a name='L430'></a><a href='#L430'>430</a>
496
+ <a name='L431'></a><a href='#L431'>431</a>
497
+ <a name='L432'></a><a href='#L432'>432</a>
498
+ <a name='L433'></a><a href='#L433'>433</a>
499
+ <a name='L434'></a><a href='#L434'>434</a>
500
+ <a name='L435'></a><a href='#L435'>435</a>
501
+ <a name='L436'></a><a href='#L436'>436</a>
502
+ <a name='L437'></a><a href='#L437'>437</a>
503
+ <a name='L438'></a><a href='#L438'>438</a>
504
+ <a name='L439'></a><a href='#L439'>439</a>
505
+ <a name='L440'></a><a href='#L440'>440</a>
506
+ <a name='L441'></a><a href='#L441'>441</a>
507
+ <a name='L442'></a><a href='#L442'>442</a>
508
+ <a name='L443'></a><a href='#L443'>443</a>
509
+ <a name='L444'></a><a href='#L444'>444</a>
510
+ <a name='L445'></a><a href='#L445'>445</a>
511
+ <a name='L446'></a><a href='#L446'>446</a>
512
+ <a name='L447'></a><a href='#L447'>447</a>
513
+ <a name='L448'></a><a href='#L448'>448</a>
514
+ <a name='L449'></a><a href='#L449'>449</a>
515
+ <a name='L450'></a><a href='#L450'>450</a>
516
+ <a name='L451'></a><a href='#L451'>451</a>
517
+ <a name='L452'></a><a href='#L452'>452</a>
518
+ <a name='L453'></a><a href='#L453'>453</a>
519
+ <a name='L454'></a><a href='#L454'>454</a>
520
+ <a name='L455'></a><a href='#L455'>455</a>
521
+ <a name='L456'></a><a href='#L456'>456</a>
522
+ <a name='L457'></a><a href='#L457'>457</a>
523
+ <a name='L458'></a><a href='#L458'>458</a>
524
+ <a name='L459'></a><a href='#L459'>459</a>
525
+ <a name='L460'></a><a href='#L460'>460</a>
526
+ <a name='L461'></a><a href='#L461'>461</a>
527
+ <a name='L462'></a><a href='#L462'>462</a>
528
+ <a name='L463'></a><a href='#L463'>463</a>
529
+ <a name='L464'></a><a href='#L464'>464</a>
530
+ <a name='L465'></a><a href='#L465'>465</a>
531
+ <a name='L466'></a><a href='#L466'>466</a>
532
+ <a name='L467'></a><a href='#L467'>467</a>
533
+ <a name='L468'></a><a href='#L468'>468</a>
534
+ <a name='L469'></a><a href='#L469'>469</a>
535
+ <a name='L470'></a><a href='#L470'>470</a>
536
+ <a name='L471'></a><a href='#L471'>471</a>
537
+ <a name='L472'></a><a href='#L472'>472</a>
538
+ <a name='L473'></a><a href='#L473'>473</a>
539
+ <a name='L474'></a><a href='#L474'>474</a>
540
+ <a name='L475'></a><a href='#L475'>475</a>
541
+ <a name='L476'></a><a href='#L476'>476</a>
542
+ <a name='L477'></a><a href='#L477'>477</a>
543
+ <a name='L478'></a><a href='#L478'>478</a>
544
+ <a name='L479'></a><a href='#L479'>479</a>
545
+ <a name='L480'></a><a href='#L480'>480</a>
546
+ <a name='L481'></a><a href='#L481'>481</a>
547
+ <a name='L482'></a><a href='#L482'>482</a>
548
+ <a name='L483'></a><a href='#L483'>483</a>
549
+ <a name='L484'></a><a href='#L484'>484</a>
550
+ <a name='L485'></a><a href='#L485'>485</a>
551
+ <a name='L486'></a><a href='#L486'>486</a>
552
+ <a name='L487'></a><a href='#L487'>487</a>
553
+ <a name='L488'></a><a href='#L488'>488</a>
554
+ <a name='L489'></a><a href='#L489'>489</a>
555
+ <a name='L490'></a><a href='#L490'>490</a>
556
+ <a name='L491'></a><a href='#L491'>491</a>
557
+ <a name='L492'></a><a href='#L492'>492</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
466
558
  <span class="cline-any cline-neutral">&nbsp;</span>
467
559
  <span class="cline-any cline-no">&nbsp;</span>
468
560
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -494,7 +586,7 @@
494
586
  <span class="cline-any cline-no">&nbsp;</span>
495
587
  <span class="cline-any cline-neutral">&nbsp;</span>
496
588
  <span class="cline-any cline-no">&nbsp;</span>
497
- <span class="cline-any cline-no">&nbsp;</span>
589
+ <span class="cline-any cline-neutral">&nbsp;</span>
498
590
  <span class="cline-any cline-neutral">&nbsp;</span>
499
591
  <span class="cline-any cline-neutral">&nbsp;</span>
500
592
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -577,12 +669,12 @@
577
669
  <span class="cline-any cline-neutral">&nbsp;</span>
578
670
  <span class="cline-any cline-no">&nbsp;</span>
579
671
  <span class="cline-any cline-neutral">&nbsp;</span>
580
- <span class="cline-any cline-neutral">&nbsp;</span>
672
+ <span class="cline-any cline-no">&nbsp;</span>
673
+ <span class="cline-any cline-no">&nbsp;</span>
581
674
  <span class="cline-any cline-no">&nbsp;</span>
582
675
  <span class="cline-any cline-neutral">&nbsp;</span>
583
676
  <span class="cline-any cline-neutral">&nbsp;</span>
584
677
  <span class="cline-any cline-neutral">&nbsp;</span>
585
- <span class="cline-any cline-no">&nbsp;</span>
586
678
  <span class="cline-any cline-neutral">&nbsp;</span>
587
679
  <span class="cline-any cline-neutral">&nbsp;</span>
588
680
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -590,13 +682,37 @@
590
682
  <span class="cline-any cline-neutral">&nbsp;</span>
591
683
  <span class="cline-any cline-neutral">&nbsp;</span>
592
684
  <span class="cline-any cline-neutral">&nbsp;</span>
685
+ <span class="cline-any cline-no">&nbsp;</span>
686
+ <span class="cline-any cline-no">&nbsp;</span>
593
687
  <span class="cline-any cline-neutral">&nbsp;</span>
688
+ <span class="cline-any cline-no">&nbsp;</span>
689
+ <span class="cline-any cline-no">&nbsp;</span>
690
+ <span class="cline-any cline-no">&nbsp;</span>
691
+ <span class="cline-any cline-no">&nbsp;</span>
692
+ <span class="cline-any cline-no">&nbsp;</span>
594
693
  <span class="cline-any cline-neutral">&nbsp;</span>
694
+ <span class="cline-any cline-no">&nbsp;</span>
695
+ <span class="cline-any cline-no">&nbsp;</span>
696
+ <span class="cline-any cline-no">&nbsp;</span>
697
+ <span class="cline-any cline-no">&nbsp;</span>
595
698
  <span class="cline-any cline-neutral">&nbsp;</span>
596
699
  <span class="cline-any cline-neutral">&nbsp;</span>
597
700
  <span class="cline-any cline-no">&nbsp;</span>
598
701
  <span class="cline-any cline-no">&nbsp;</span>
599
702
  <span class="cline-any cline-no">&nbsp;</span>
703
+ <span class="cline-any cline-neutral">&nbsp;</span>
704
+ <span class="cline-any cline-neutral">&nbsp;</span>
705
+ <span class="cline-any cline-neutral">&nbsp;</span>
706
+ <span class="cline-any cline-neutral">&nbsp;</span>
707
+ <span class="cline-any cline-no">&nbsp;</span>
708
+ <span class="cline-any cline-no">&nbsp;</span>
709
+ <span class="cline-any cline-no">&nbsp;</span>
710
+ <span class="cline-any cline-neutral">&nbsp;</span>
711
+ <span class="cline-any cline-neutral">&nbsp;</span>
712
+ <span class="cline-any cline-no">&nbsp;</span>
713
+ <span class="cline-any cline-no">&nbsp;</span>
714
+ <span class="cline-any cline-neutral">&nbsp;</span>
715
+ <span class="cline-any cline-neutral">&nbsp;</span>
600
716
  <span class="cline-any cline-no">&nbsp;</span>
601
717
  <span class="cline-any cline-no">&nbsp;</span>
602
718
  <span class="cline-any cline-no">&nbsp;</span>
@@ -614,12 +730,12 @@
614
730
  <span class="cline-any cline-no">&nbsp;</span>
615
731
  <span class="cline-any cline-no">&nbsp;</span>
616
732
  <span class="cline-any cline-no">&nbsp;</span>
617
- <span class="cline-any cline-neutral">&nbsp;</span>
618
733
  <span class="cline-any cline-no">&nbsp;</span>
619
734
  <span class="cline-any cline-no">&nbsp;</span>
620
735
  <span class="cline-any cline-no">&nbsp;</span>
621
736
  <span class="cline-any cline-neutral">&nbsp;</span>
622
737
  <span class="cline-any cline-no">&nbsp;</span>
738
+ <span class="cline-any cline-no">&nbsp;</span>
623
739
  <span class="cline-any cline-neutral">&nbsp;</span>
624
740
  <span class="cline-any cline-no">&nbsp;</span>
625
741
  <span class="cline-any cline-no">&nbsp;</span>
@@ -644,14 +760,21 @@
644
760
  <span class="cline-any cline-neutral">&nbsp;</span>
645
761
  <span class="cline-any cline-neutral">&nbsp;</span>
646
762
  <span class="cline-any cline-neutral">&nbsp;</span>
763
+ <span class="cline-any cline-neutral">&nbsp;</span>
647
764
  <span class="cline-any cline-no">&nbsp;</span>
765
+ <span class="cline-any cline-no">&nbsp;</span>
766
+ <span class="cline-any cline-neutral">&nbsp;</span>
767
+ <span class="cline-any cline-neutral">&nbsp;</span>
768
+ <span class="cline-any cline-neutral">&nbsp;</span>
769
+ <span class="cline-any cline-neutral">&nbsp;</span>
770
+ <span class="cline-any cline-neutral">&nbsp;</span>
648
771
  <span class="cline-any cline-neutral">&nbsp;</span>
649
772
  <span class="cline-any cline-neutral">&nbsp;</span>
650
773
  <span class="cline-any cline-no">&nbsp;</span>
651
774
  <span class="cline-any cline-no">&nbsp;</span>
652
775
  <span class="cline-any cline-no">&nbsp;</span>
653
- <span class="cline-any cline-neutral">&nbsp;</span>
654
- <span class="cline-any cline-neutral">&nbsp;</span>
776
+ <span class="cline-any cline-no">&nbsp;</span>
777
+ <span class="cline-any cline-no">&nbsp;</span>
655
778
  <span class="cline-any cline-no">&nbsp;</span>
656
779
  <span class="cline-any cline-neutral">&nbsp;</span>
657
780
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -715,16 +838,77 @@
715
838
  <span class="cline-any cline-neutral">&nbsp;</span>
716
839
  <span class="cline-any cline-no">&nbsp;</span>
717
840
  <span class="cline-any cline-no">&nbsp;</span>
841
+ <span class="cline-any cline-no">&nbsp;</span>
718
842
  <span class="cline-any cline-neutral">&nbsp;</span>
843
+ <span class="cline-any cline-no">&nbsp;</span>
719
844
  <span class="cline-any cline-neutral">&nbsp;</span>
720
845
  <span class="cline-any cline-no">&nbsp;</span>
721
846
  <span class="cline-any cline-neutral">&nbsp;</span>
847
+ <span class="cline-any cline-neutral">&nbsp;</span>
848
+ <span class="cline-any cline-neutral">&nbsp;</span>
849
+ <span class="cline-any cline-neutral">&nbsp;</span>
722
850
  <span class="cline-any cline-no">&nbsp;</span>
723
851
  <span class="cline-any cline-no">&nbsp;</span>
724
852
  <span class="cline-any cline-neutral">&nbsp;</span>
725
853
  <span class="cline-any cline-neutral">&nbsp;</span>
726
854
  <span class="cline-any cline-no">&nbsp;</span>
727
855
  <span class="cline-any cline-neutral">&nbsp;</span>
856
+ <span class="cline-any cline-no">&nbsp;</span>
857
+ <span class="cline-any cline-neutral">&nbsp;</span>
858
+ <span class="cline-any cline-neutral">&nbsp;</span>
859
+ <span class="cline-any cline-neutral">&nbsp;</span>
860
+ <span class="cline-any cline-neutral">&nbsp;</span>
861
+ <span class="cline-any cline-neutral">&nbsp;</span>
862
+ <span class="cline-any cline-neutral">&nbsp;</span>
863
+ <span class="cline-any cline-neutral">&nbsp;</span>
864
+ <span class="cline-any cline-no">&nbsp;</span>
865
+ <span class="cline-any cline-no">&nbsp;</span>
866
+ <span class="cline-any cline-no">&nbsp;</span>
867
+ <span class="cline-any cline-neutral">&nbsp;</span>
868
+ <span class="cline-any cline-no">&nbsp;</span>
869
+ <span class="cline-any cline-neutral">&nbsp;</span>
870
+ <span class="cline-any cline-no">&nbsp;</span>
871
+ <span class="cline-any cline-neutral">&nbsp;</span>
872
+ <span class="cline-any cline-neutral">&nbsp;</span>
873
+ <span class="cline-any cline-neutral">&nbsp;</span>
874
+ <span class="cline-any cline-neutral">&nbsp;</span>
875
+ <span class="cline-any cline-neutral">&nbsp;</span>
876
+ <span class="cline-any cline-neutral">&nbsp;</span>
877
+ <span class="cline-any cline-neutral">&nbsp;</span>
878
+ <span class="cline-any cline-neutral">&nbsp;</span>
879
+ <span class="cline-any cline-neutral">&nbsp;</span>
880
+ <span class="cline-any cline-neutral">&nbsp;</span>
881
+ <span class="cline-any cline-neutral">&nbsp;</span>
882
+ <span class="cline-any cline-neutral">&nbsp;</span>
883
+ <span class="cline-any cline-neutral">&nbsp;</span>
884
+ <span class="cline-any cline-neutral">&nbsp;</span>
885
+ <span class="cline-any cline-neutral">&nbsp;</span>
886
+ <span class="cline-any cline-neutral">&nbsp;</span>
887
+ <span class="cline-any cline-neutral">&nbsp;</span>
888
+ <span class="cline-any cline-neutral">&nbsp;</span>
889
+ <span class="cline-any cline-no">&nbsp;</span>
890
+ <span class="cline-any cline-no">&nbsp;</span>
891
+ <span class="cline-any cline-no">&nbsp;</span>
892
+ <span class="cline-any cline-neutral">&nbsp;</span>
893
+ <span class="cline-any cline-no">&nbsp;</span>
894
+ <span class="cline-any cline-neutral">&nbsp;</span>
895
+ <span class="cline-any cline-no">&nbsp;</span>
896
+ <span class="cline-any cline-neutral">&nbsp;</span>
897
+ <span class="cline-any cline-neutral">&nbsp;</span>
898
+ <span class="cline-any cline-neutral">&nbsp;</span>
899
+ <span class="cline-any cline-neutral">&nbsp;</span>
900
+ <span class="cline-any cline-neutral">&nbsp;</span>
901
+ <span class="cline-any cline-neutral">&nbsp;</span>
902
+ <span class="cline-any cline-neutral">&nbsp;</span>
903
+ <span class="cline-any cline-neutral">&nbsp;</span>
904
+ <span class="cline-any cline-neutral">&nbsp;</span>
905
+ <span class="cline-any cline-neutral">&nbsp;</span>
906
+ <span class="cline-any cline-neutral">&nbsp;</span>
907
+ <span class="cline-any cline-no">&nbsp;</span>
908
+ <span class="cline-any cline-no">&nbsp;</span>
909
+ <span class="cline-any cline-neutral">&nbsp;</span>
910
+ <span class="cline-any cline-no">&nbsp;</span>
911
+ <span class="cline-any cline-neutral">&nbsp;</span>
728
912
  <span class="cline-any cline-neutral">&nbsp;</span>
729
913
  <span class="cline-any cline-neutral">&nbsp;</span>
730
914
  <span class="cline-any cline-no">&nbsp;</span>
@@ -893,7 +1077,7 @@ export const <span class="cstat-no" title="statement not covered" >Messages = _M
893
1077
  <span class="cstat-no" title="statement not covered" >import Tabs from './modules/tabs.js'</span>
894
1078
  &nbsp;
895
1079
  <span class="cstat-no" title="statement not covered" >import { IN_BROWSER, deprecationWarn, DOCS_HOST } from './utils.js'</span>
896
- <span class="cstat-no" title="statement not covered" >import FeatureFlags, { IFeatureFlag } from './modules/featureFlags.js'</span>
1080
+ import FeatureFlags, { IFeatureFlag } from './modules/featureFlags.js'
897
1081
  import type { Options as AppOptions } from './app/index.js'
898
1082
  import type { Options as ConsoleOptions } from './modules/console.js'
899
1083
  import type { Options as ExceptionOptions } from './modules/exception.js'
@@ -976,114 +1160,145 @@ function <span class="fstat-no" title="function not covered" >processOptions(</s
976
1160
  )
977
1161
  <span class="cstat-no" title="statement not covered" > return</span>
978
1162
  }
979
- const doNotTrack =
980
- <span class="cstat-no" title="statement not covered" > options.respectDoNotTrack &amp;&amp;</span>
981
- (navigator.doNotTrack == '1' ||
982
- // @ts-ignore
983
- window.doNotTrack == '1')
984
- const app = (<span class="cstat-no" title="statement not covered" >this.app =</span>
985
- doNotTrack ||
986
- !('Map' in window) ||
987
- !('Set' in window) ||
988
- !('MutationObserver' in window) ||
989
- !('performance' in window) ||
990
- !('timing' in performance) ||
991
- !('startsWith' in String.prototype) ||
992
- !('Blob' in window) ||
993
- !('Worker' in window)
994
- ? null
995
- : new App(options.projectKey, options.sessionToken, options))
996
- <span class="cstat-no" title="statement not covered" > if (app !== null) {</span>
997
- <span class="cstat-no" title="statement not covered" > Viewport(app)</span>
998
- <span class="cstat-no" title="statement not covered" > CSSRules(app)</span>
999
- <span class="cstat-no" title="statement not covered" > ConstructedStyleSheets(app)</span>
1000
- <span class="cstat-no" title="statement not covered" > Connection(app)</span>
1001
- <span class="cstat-no" title="statement not covered" > Console(app, options)</span>
1002
- <span class="cstat-no" title="statement not covered" > Exception(app, options)</span>
1003
- <span class="cstat-no" title="statement not covered" > Img(app)</span>
1004
- <span class="cstat-no" title="statement not covered" > Input(app, options)</span>
1005
- <span class="cstat-no" title="statement not covered" > Mouse(app, options.mouse)</span>
1006
- <span class="cstat-no" title="statement not covered" > Timing(app, options)</span>
1007
- <span class="cstat-no" title="statement not covered" > Performance(app, options)</span>
1008
- <span class="cstat-no" title="statement not covered" > Scroll(app)</span>
1009
- <span class="cstat-no" title="statement not covered" > Focus(app)</span>
1010
- <span class="cstat-no" title="statement not covered" > Fonts(app)</span>
1011
- <span class="cstat-no" title="statement not covered" > Network(app, options.network)</span>
1012
- <span class="cstat-no" title="statement not covered" > Selection(app)</span>
1013
- <span class="cstat-no" title="statement not covered" > Tabs(app)</span>
1014
- <span class="cstat-no" title="statement not covered" > this.featureFlags = new FeatureFlags(app)</span>
1015
- ;(<span class="cstat-no" title="statement not covered" >window as any).__OPENREPLAY__ = this</span>
1163
+ const doNotTrack = <span class="cstat-no" title="statement not covered" >this.checkDoNotTrack()</span>
1164
+ const failReason: string[] = <span class="cstat-no" title="statement not covered" >[]</span>
1165
+ const conditions: string[] = <span class="cstat-no" title="statement not covered" >[</span>
1166
+ 'Map',
1167
+ 'Set',
1168
+ 'MutationObserver',
1169
+ 'performance',
1170
+ 'timing',
1171
+ 'startsWith',
1172
+ 'Blob',
1173
+ 'Worker',
1174
+ ]
1016
1175
  &nbsp;
1017
- <span class="cstat-no" title="statement not covered" > app.attachStartCallback(<span class="fstat-no" title="function not covered" >() =</span>&gt; {</span>
1018
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (options.flags?.onFlagsLoad) {</span>
1019
- <span class="cstat-no" title="statement not covered" > this.onFlagsLoad(options.flags.onFlagsLoad)</span>
1020
- }
1021
- <span class="cstat-no" title="statement not covered" > void this.featureFlags.reloadFlags()</span>
1022
- })
1023
- const wOpen = <span class="cstat-no" title="statement not covered" >window.open</span>
1024
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (options.autoResetOnWindowOpen || options.resetTabOnWindowOpen) {</span>
1025
- <span class="cstat-no" title="statement not covered" > app.attachStartCallback(<span class="fstat-no" title="function not covered" >() =</span>&gt; {</span>
1026
- const tabId = <span class="cstat-no" title="statement not covered" >app.getTabId()</span>
1027
- const sessStorage = <span class="cstat-no" title="statement not covered" >app.sessionStorage ?? window.sessionStorage</span>
1028
- // @ts-ignore ?
1029
- <span class="cstat-no" title="statement not covered" > window.open = <span class="fstat-no" title="function not covered" >function (.</span>..args) {</span>
1030
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (options.autoResetOnWindowOpen) {</span>
1031
- <span class="cstat-no" title="statement not covered" > app.resetNextPageSession(true)</span>
1032
- }
1033
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (options.resetTabOnWindowOpen) {</span>
1034
- <span class="cstat-no" title="statement not covered" > sessStorage.removeItem(options.session_tabid_key || '__openreplay_tabid')</span>
1035
- }
1036
- <span class="cstat-no" title="statement not covered" > wOpen.call(window, ...args)</span>
1037
- <span class="cstat-no" title="statement not covered" > app.resetNextPageSession(false)</span>
1038
- <span class="cstat-no" title="statement not covered" > sessStorage.setItem(options.session_tabid_key || '__openreplay_tabid', tabId)</span>
1176
+ <span class="cstat-no" title="statement not covered" > if (doNotTrack) {</span>
1177
+ <span class="cstat-no" title="statement not covered" > failReason.push('doNotTrack')</span>
1178
+ } else {
1179
+ <span class="cstat-no" title="statement not covered" > for (const condition of conditions) {</span>
1180
+ <span class="cstat-no" title="statement not covered" > if (condition === 'timing') {</span>
1181
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if ('performance' in window &amp;&amp; !(condition in performance)) {</span>
1182
+ <span class="cstat-no" title="statement not covered" > failReason.push(condition)</span>
1183
+ <span class="cstat-no" title="statement not covered" > break</span>
1184
+ }
1185
+ } else <span class="cstat-no" title="statement not covered" >if (condition === 'startsWith') {</span>
1186
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!(condition in String.prototype)) {</span>
1187
+ <span class="cstat-no" title="statement not covered" > failReason.push(condition)</span>
1188
+ <span class="cstat-no" title="statement not covered" > break</span>
1039
1189
  }
1040
- })
1041
- <span class="cstat-no" title="statement not covered" > app.attachStopCallback(<span class="fstat-no" title="function not covered" >() =</span>&gt; {</span>
1042
- <span class="cstat-no" title="statement not covered" > window.open = wOpen</span>
1043
- })
1190
+ } else {
1191
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!(condition in window)) {</span>
1192
+ <span class="cstat-no" title="statement not covered" > failReason.push(condition)</span>
1193
+ <span class="cstat-no" title="statement not covered" > break</span>
1194
+ }
1195
+ }
1044
1196
  }
1045
- } else {
1046
- <span class="cstat-no" title="statement not covered" > console.log(</span>
1047
- "OpenReplay: browser doesn't support API required for tracking or doNotTrack is set to 1.",
1048
- )
1049
- const req = <span class="cstat-no" title="statement not covered" >new XMLHttpRequest()</span>
1050
- const orig = <span class="cstat-no" title="statement not covered" >options.ingestPoint || DEFAULT_INGEST_POINT</span>
1051
- <span class="cstat-no" title="statement not covered" > req.open('POST', orig + '/v1/web/not-started')</span>
1052
- // no-cors issue only with text/plain or not-set Content-Type
1053
- // req.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
1054
- <span class="cstat-no" title="statement not covered" > req.send(</span>
1055
- JSON.stringify({
1056
- trackerVersion: 'TRACKER_VERSION',
1057
- projectKey: options.projectKey,
1058
- doNotTrack,
1059
- // TODO: add precise reason (an exact API missing)
1060
- }),
1197
+ }
1198
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (failReason.length &gt; 0) {</span>
1199
+ const missingApi = <span class="cstat-no" title="statement not covered" >failReason.join(',')</span>
1200
+ <span class="cstat-no" title="statement not covered" > console.error(</span>
1201
+ `OpenReplay: browser doesn't support API required for tracking or doNotTrack is set to 1. Reason: ${missingApi}`,
1061
1202
  )
1203
+ <span class="cstat-no" title="statement not covered" > this.signalStartIssue('missing_api', failReason)</span>
1204
+ <span class="cstat-no" title="statement not covered" > return</span>
1205
+ }
1206
+ &nbsp;
1207
+ const app = <span class="cstat-no" title="statement not covered" >new App(options.projectKey, options.sessionToken, options, this.signalStartIssue)</span>
1208
+ <span class="cstat-no" title="statement not covered" > this.app = app</span>
1209
+ <span class="cstat-no" title="statement not covered" > Viewport(app)</span>
1210
+ <span class="cstat-no" title="statement not covered" > CSSRules(app)</span>
1211
+ <span class="cstat-no" title="statement not covered" > ConstructedStyleSheets(app)</span>
1212
+ <span class="cstat-no" title="statement not covered" > Connection(app)</span>
1213
+ <span class="cstat-no" title="statement not covered" > Console(app, options)</span>
1214
+ <span class="cstat-no" title="statement not covered" > Exception(app, options)</span>
1215
+ <span class="cstat-no" title="statement not covered" > Img(app)</span>
1216
+ <span class="cstat-no" title="statement not covered" > Input(app, options)</span>
1217
+ <span class="cstat-no" title="statement not covered" > Mouse(app, options.mouse)</span>
1218
+ <span class="cstat-no" title="statement not covered" > Timing(app, options)</span>
1219
+ <span class="cstat-no" title="statement not covered" > Performance(app, options)</span>
1220
+ <span class="cstat-no" title="statement not covered" > Scroll(app)</span>
1221
+ <span class="cstat-no" title="statement not covered" > Focus(app)</span>
1222
+ <span class="cstat-no" title="statement not covered" > Fonts(app)</span>
1223
+ <span class="cstat-no" title="statement not covered" > Network(app, options.network)</span>
1224
+ <span class="cstat-no" title="statement not covered" > Selection(app)</span>
1225
+ <span class="cstat-no" title="statement not covered" > Tabs(app)</span>
1226
+ ;(<span class="cstat-no" title="statement not covered" >window as any).__OPENREPLAY__ = this</span>
1227
+ &nbsp;
1228
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (options.flags?.onFlagsLoad) {</span>
1229
+ <span class="cstat-no" title="statement not covered" > this.onFlagsLoad(options.flags.onFlagsLoad)</span>
1230
+ }
1231
+ const wOpen = <span class="cstat-no" title="statement not covered" >window.open</span>
1232
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (options.autoResetOnWindowOpen || options.resetTabOnWindowOpen) {</span>
1233
+ <span class="cstat-no" title="statement not covered" > app.attachStartCallback(<span class="fstat-no" title="function not covered" >() =</span>&gt; {</span>
1234
+ const tabId = <span class="cstat-no" title="statement not covered" >app.getTabId()</span>
1235
+ const sessStorage = <span class="cstat-no" title="statement not covered" >app.sessionStorage ?? window.sessionStorage</span>
1236
+ // @ts-ignore ?
1237
+ <span class="cstat-no" title="statement not covered" > window.open = <span class="fstat-no" title="function not covered" >function (.</span>..args) {</span>
1238
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (options.autoResetOnWindowOpen) {</span>
1239
+ <span class="cstat-no" title="statement not covered" > app.resetNextPageSession(true)</span>
1240
+ }
1241
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (options.resetTabOnWindowOpen) {</span>
1242
+ <span class="cstat-no" title="statement not covered" > sessStorage.removeItem(options.session_tabid_key || '__openreplay_tabid')</span>
1243
+ }
1244
+ <span class="cstat-no" title="statement not covered" > wOpen.call(window, ...args)</span>
1245
+ <span class="cstat-no" title="statement not covered" > app.resetNextPageSession(false)</span>
1246
+ <span class="cstat-no" title="statement not covered" > sessStorage.setItem(options.session_tabid_key || '__openreplay_tabid', tabId)</span>
1247
+ }
1248
+ })
1249
+ <span class="cstat-no" title="statement not covered" > app.attachStopCallback(<span class="fstat-no" title="function not covered" >() =</span>&gt; {</span>
1250
+ <span class="cstat-no" title="statement not covered" > window.open = wOpen</span>
1251
+ })
1062
1252
  }
1063
1253
  }
1064
1254
  &nbsp;
1255
+ <span class="cstat-no" title="statement not covered" > checkDoNotTrack = <span class="fstat-no" title="function not covered" >() =</span>&gt; {</span>
1256
+ <span class="cstat-no" title="statement not covered" > return (</span>
1257
+ this.options.respectDoNotTrack &amp;&amp;
1258
+ (navigator.doNotTrack == '1' ||
1259
+ // @ts-ignore
1260
+ window.doNotTrack == '1')
1261
+ )
1262
+ }
1263
+ &nbsp;
1264
+ <span class="cstat-no" title="statement not covered" > signalStartIssue = <span class="fstat-no" title="function not covered" >(r</span>eason: string, missingApi: string[]) =&gt; {</span>
1265
+ const doNotTrack = <span class="cstat-no" title="statement not covered" >this.checkDoNotTrack()</span>
1266
+ const req = <span class="cstat-no" title="statement not covered" >new XMLHttpRequest()</span>
1267
+ const orig = <span class="cstat-no" title="statement not covered" >this.options.ingestPoint || DEFAULT_INGEST_POINT</span>
1268
+ <span class="cstat-no" title="statement not covered" > req.open('POST', orig + '/v1/web/not-started')</span>
1269
+ <span class="cstat-no" title="statement not covered" > req.send(</span>
1270
+ JSON.stringify({
1271
+ trackerVersion: 'TRACKER_VERSION',
1272
+ projectKey: this.options.projectKey,
1273
+ doNotTrack,
1274
+ reason,
1275
+ missingApi,
1276
+ }),
1277
+ )
1278
+ }
1279
+ &nbsp;
1065
1280
  <span class="fstat-no" title="function not covered" > isFlagEnabled(</span>flagName: string): boolean {
1066
1281
  <span class="cstat-no" title="statement not covered" > return this.featureFlags.isFlagEnabled(flagName)</span>
1067
1282
  }
1068
1283
  &nbsp;
1069
1284
  <span class="fstat-no" title="function not covered" > onFlagsLoad(</span>callback: (flags: IFeatureFlag[]) =&gt; void): void {
1070
- <span class="cstat-no" title="statement not covered" > this.featureFlags.onFlagsLoad(callback)</span>
1285
+ <span class="cstat-no" title="statement not covered" > this.app?.featureFlags.onFlagsLoad(callback)</span>
1071
1286
  }
1072
1287
  &nbsp;
1073
1288
  <span class="fstat-no" title="function not covered" > clearPersistFlags(</span>) {
1074
- <span class="cstat-no" title="statement not covered" > this.featureFlags.clearPersistFlags()</span>
1289
+ <span class="cstat-no" title="statement not covered" > this.app?.featureFlags.clearPersistFlags()</span>
1075
1290
  }
1076
1291
  &nbsp;
1077
1292
  <span class="fstat-no" title="function not covered" > reloadFlags(</span>) {
1078
- <span class="cstat-no" title="statement not covered" > return this.featureFlags.reloadFlags()</span>
1293
+ <span class="cstat-no" title="statement not covered" > return this.app?.featureFlags.reloadFlags()</span>
1079
1294
  }
1080
1295
  &nbsp;
1081
1296
  <span class="fstat-no" title="function not covered" > getFeatureFlag(</span>flagName: string): IFeatureFlag | undefined {
1082
- <span class="cstat-no" title="statement not covered" > return this.featureFlags.getFeatureFlag(flagName)</span>
1297
+ <span class="cstat-no" title="statement not covered" > return this.app?.featureFlags.getFeatureFlag(flagName)</span>
1083
1298
  }
1084
1299
  &nbsp;
1085
1300
  <span class="fstat-no" title="function not covered" > getAllFeatureFlags(</span>) {
1086
- <span class="cstat-no" title="statement not covered" > return this.featureFlags.flags</span>
1301
+ <span class="cstat-no" title="statement not covered" > return this.app?.featureFlags.flags</span>
1087
1302
  }
1088
1303
  &nbsp;
1089
1304
  <span class="fstat-no" title="function not covered" > use&lt;</span>T&gt;(fn: (app: App | null, options?: Options) =&gt; T): T {
@@ -1112,17 +1327,78 @@ function <span class="fstat-no" title="function not covered" >processOptions(</s
1112
1327
  }
1113
1328
  &nbsp;
1114
1329
  <span class="fstat-no" title="function not covered" > start(</span>startOpts?: Partial&lt;StartOptions&gt;): Promise&lt;StartPromiseReturn&gt; {
1330
+ <span class="cstat-no" title="statement not covered" > if (this.browserEnvCheck()) {</span>
1331
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.app === null) {</span>
1332
+ <span class="cstat-no" title="statement not covered" > return Promise.reject("Browser doesn't support required api, or doNotTrack is active.")</span>
1333
+ }
1334
+ <span class="cstat-no" title="statement not covered" > return this.app.start(startOpts)</span>
1335
+ } else {
1336
+ <span class="cstat-no" title="statement not covered" > return Promise.reject('Trying to start not in browser.')</span>
1337
+ }
1338
+ }
1339
+ &nbsp;
1340
+ <span class="fstat-no" title="function not covered" > browserEnvCheck(</span>) {
1115
1341
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!IN_BROWSER) {</span>
1116
1342
  <span class="cstat-no" title="statement not covered" > console.error(</span>
1117
1343
  `OpenReplay: you are trying to start Tracker on a node.js environment. If you want to use OpenReplay with SSR, please, use componentDidMount or useEffect API for placing the \`tracker.start()\` line. Check documentation on ${DOCS_HOST}${DOCS_SETUP}`,
1118
1344
  )
1345
+ <span class="cstat-no" title="statement not covered" > return false</span>
1346
+ }
1347
+ <span class="cstat-no" title="statement not covered" > return true</span>
1348
+ }
1349
+ &nbsp;
1350
+ /**
1351
+ * start buffering messages without starting the actual session, which gives user 30 seconds to "activate" and record
1352
+ * session by calling start() on conditional trigger and we will then send buffered batch, so it won't get lost
1353
+ * */
1354
+ <span class="fstat-no" title="function not covered" > coldStart(</span>startOpts?: Partial&lt;StartOptions&gt;, conditional?: boolean) {
1355
+ <span class="cstat-no" title="statement not covered" > if (this.browserEnvCheck()) {</span>
1356
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.app === null) {</span>
1357
+ <span class="cstat-no" title="statement not covered" > return Promise.reject('Tracker not initialized')</span>
1358
+ }
1359
+ <span class="cstat-no" title="statement not covered" > void this.app.coldStart(startOpts, conditional)</span>
1360
+ } else {
1119
1361
  <span class="cstat-no" title="statement not covered" > return Promise.reject('Trying to start not in browser.')</span>
1120
1362
  }
1363
+ }
1364
+ &nbsp;
1365
+ /**
1366
+ * Starts offline session recording. Keep in mind that only user device time will be used for timestamps.
1367
+ * (no backend delay sync)
1368
+ *
1369
+ * @param {Object} startOpts - options for session start, same as .start()
1370
+ * @param {Function} onSessionSent - callback that will be called once session is fully sent
1371
+ * @returns methods to manipulate buffer:
1372
+ *
1373
+ * saveBuffer - to save it in localStorage
1374
+ *
1375
+ * getBuffer - returns current buffer
1376
+ *
1377
+ * setBuffer - replaces current buffer with given
1378
+ * */
1379
+ <span class="fstat-no" title="function not covered" > startOfflineRecording(</span>startOpts: Partial&lt;StartOptions&gt;, onSessionSent: () =&gt; void) {
1380
+ <span class="cstat-no" title="statement not covered" > if (this.browserEnvCheck()) {</span>
1381
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.app === null) {</span>
1382
+ <span class="cstat-no" title="statement not covered" > return Promise.reject('Tracker not initialized')</span>
1383
+ }
1384
+ <span class="cstat-no" title="statement not covered" > return this.app.offlineRecording(startOpts, onSessionSent)</span>
1385
+ } else {
1386
+ <span class="cstat-no" title="statement not covered" > return Promise.reject('Trying to start not in browser.')</span>
1387
+ }
1388
+ }
1389
+ &nbsp;
1390
+ /**
1391
+ * Uploads the stored session buffer to backend
1392
+ * @returns promise that resolves once messages are loaded, it has to be awaited
1393
+ * so the session can be uploaded properly
1394
+ * @resolve {boolean} - if messages were loaded successfully
1395
+ * @reject {string} - error message
1396
+ * */
1397
+ <span class="fstat-no" title="function not covered" > uploadOfflineRecording(</span>) {
1121
1398
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.app === null) {</span>
1122
- <span class="cstat-no" title="statement not covered" > return Promise.reject("Browser doesn't support required api, or doNotTrack is active.")</span>
1399
+ <span class="cstat-no" title="statement not covered" > return</span>
1123
1400
  }
1124
- // TODO: check argument type
1125
- <span class="cstat-no" title="statement not covered" > return this.app.start(startOpts)</span>
1401
+ <span class="cstat-no" title="statement not covered" > return this.app.uploadOfflineRecording()</span>
1126
1402
  }
1127
1403
  &nbsp;
1128
1404
  <span class="fstat-no" title="function not covered" > stop(</span>): string | undefined {
@@ -1267,7 +1543,7 @@ function <span class="fstat-no" title="function not covered" >processOptions(</s
1267
1543
  <div class='footer quiet pad2 space-top1 center small'>
1268
1544
  Code coverage generated by
1269
1545
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1270
- at 2024-01-09T10:19:51.427Z
1546
+ at 2024-01-09T16:51:30.347Z
1271
1547
  </div>
1272
1548
  <script src="../prettify.js"></script>
1273
1549
  <script>