@openreplay/tracker 11.0.0 → 11.0.1

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 (89) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/cjs/app/index.d.ts +3 -0
  3. package/cjs/app/index.js +27 -4
  4. package/cjs/index.d.ts +1 -0
  5. package/cjs/index.js +7 -1
  6. package/cjs/modules/userTesting/SignalManager.d.ts +29 -0
  7. package/cjs/modules/userTesting/SignalManager.js +83 -0
  8. package/cjs/modules/userTesting/index.d.ts +5 -5
  9. package/cjs/modules/userTesting/index.js +156 -189
  10. package/cjs/modules/userTesting/styles.d.ts +28 -11
  11. package/cjs/modules/userTesting/styles.js +51 -29
  12. package/cjs/modules/userTesting/utils.d.ts +9 -0
  13. package/cjs/modules/userTesting/utils.js +87 -0
  14. package/coverage/clover.xml +851 -351
  15. package/coverage/coverage-final.json +10 -4
  16. package/coverage/lcov-report/index.html +38 -23
  17. package/coverage/lcov-report/main/app/canvas.ts.html +1 -1
  18. package/coverage/lcov-report/main/app/guards.ts.html +42 -42
  19. package/coverage/lcov-report/main/app/index.html +24 -24
  20. package/coverage/lcov-report/main/app/index.ts.html +196 -28
  21. package/coverage/lcov-report/main/app/logger.ts.html +1 -1
  22. package/coverage/lcov-report/main/app/messages.gen.ts.html +1 -1
  23. package/coverage/lcov-report/main/app/nodes.ts.html +1 -1
  24. package/coverage/lcov-report/main/app/observer/iframe_observer.ts.html +1 -1
  25. package/coverage/lcov-report/main/app/observer/iframe_offsets.ts.html +1 -1
  26. package/coverage/lcov-report/main/app/observer/index.html +1 -1
  27. package/coverage/lcov-report/main/app/observer/shadow_root_observer.ts.html +1 -1
  28. package/coverage/lcov-report/main/app/observer/top_observer.ts.html +1 -1
  29. package/coverage/lcov-report/main/app/sanitizer.ts.html +1 -1
  30. package/coverage/lcov-report/main/app/session.ts.html +1 -1
  31. package/coverage/lcov-report/main/app/ticker.ts.html +1 -1
  32. package/coverage/lcov-report/main/index.html +11 -11
  33. package/coverage/lcov-report/main/index.ts.html +33 -6
  34. package/coverage/lcov-report/main/modules/Network/beaconProxy.ts.html +1 -1
  35. package/coverage/lcov-report/main/modules/Network/fetchProxy.ts.html +1 -1
  36. package/coverage/lcov-report/main/modules/Network/index.html +1 -1
  37. package/coverage/lcov-report/main/modules/Network/index.ts.html +1 -1
  38. package/coverage/lcov-report/main/modules/Network/networkMessage.ts.html +1 -1
  39. package/coverage/lcov-report/main/modules/Network/utils.ts.html +1 -1
  40. package/coverage/lcov-report/main/modules/Network/xhrProxy.ts.html +1 -1
  41. package/coverage/lcov-report/main/modules/attributeSender.ts.html +1 -1
  42. package/coverage/lcov-report/main/modules/axiosSpy.ts.html +1 -1
  43. package/coverage/lcov-report/main/modules/connection.ts.html +1 -1
  44. package/coverage/lcov-report/main/modules/console.ts.html +1 -1
  45. package/coverage/lcov-report/main/modules/constructedStyleSheets.ts.html +1 -1
  46. package/coverage/lcov-report/main/modules/cssrules.ts.html +1 -1
  47. package/coverage/lcov-report/main/modules/exception.ts.html +1 -1
  48. package/coverage/lcov-report/main/modules/featureFlags.ts.html +1 -1
  49. package/coverage/lcov-report/main/modules/focus.ts.html +1 -1
  50. package/coverage/lcov-report/main/modules/fonts.ts.html +1 -1
  51. package/coverage/lcov-report/main/modules/img.ts.html +1 -1
  52. package/coverage/lcov-report/main/modules/index.html +1 -1
  53. package/coverage/lcov-report/main/modules/input.ts.html +1 -1
  54. package/coverage/lcov-report/main/modules/mouse.ts.html +1 -1
  55. package/coverage/lcov-report/main/modules/network.ts.html +1 -1
  56. package/coverage/lcov-report/main/modules/performance.ts.html +1 -1
  57. package/coverage/lcov-report/main/modules/scroll.ts.html +1 -1
  58. package/coverage/lcov-report/main/modules/selection.ts.html +1 -1
  59. package/coverage/lcov-report/main/modules/tabs.ts.html +1 -1
  60. package/coverage/lcov-report/main/modules/timing.ts.html +1 -1
  61. package/coverage/lcov-report/main/modules/userTesting/SignalManager.ts.html +361 -0
  62. package/coverage/lcov-report/main/modules/userTesting/dnd.ts.html +10 -22
  63. package/coverage/lcov-report/main/modules/userTesting/index.html +61 -31
  64. package/coverage/lcov-report/main/modules/userTesting/index.ts.html +809 -113
  65. package/coverage/lcov-report/main/modules/userTesting/recorder.ts.html +136 -67
  66. package/coverage/lcov-report/main/modules/userTesting/styles.ts.html +159 -87
  67. package/coverage/lcov-report/main/modules/userTesting/utils.ts.html +361 -0
  68. package/coverage/lcov-report/main/modules/viewport.ts.html +1 -1
  69. package/coverage/lcov-report/main/utils.ts.html +48 -6
  70. package/coverage/lcov-report/webworker/BatchWriter.ts.html +1 -1
  71. package/coverage/lcov-report/webworker/MessageEncoder.gen.ts.html +1 -1
  72. package/coverage/lcov-report/webworker/PrimitiveEncoder.ts.html +1 -1
  73. package/coverage/lcov-report/webworker/QueueSender.ts.html +1 -1
  74. package/coverage/lcov-report/webworker/index.html +1 -1
  75. package/coverage/lcov-report/webworker/index.ts.html +1 -1
  76. package/coverage/lcov.info +1535 -653
  77. package/lib/app/index.d.ts +3 -0
  78. package/lib/app/index.js +27 -4
  79. package/lib/index.d.ts +1 -0
  80. package/lib/index.js +7 -1
  81. package/lib/modules/userTesting/SignalManager.d.ts +29 -0
  82. package/lib/modules/userTesting/SignalManager.js +80 -0
  83. package/lib/modules/userTesting/index.d.ts +5 -5
  84. package/lib/modules/userTesting/index.js +128 -161
  85. package/lib/modules/userTesting/styles.d.ts +28 -11
  86. package/lib/modules/userTesting/styles.js +50 -28
  87. package/lib/modules/userTesting/utils.d.ts +9 -0
  88. package/lib/modules/userTesting/utils.js +79 -0
  89. package/package.json +2 -2
@@ -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/296</span>
28
+ <span class='fraction'>0/319</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/170</span>
35
+ <span class='fraction'>0/190</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/57</span>
42
+ <span class='fraction'>0/62</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/288</span>
49
+ <span class='fraction'>0/309</span>
50
50
  </div>
51
51
 
52
52
 
@@ -840,7 +840,63 @@
840
840
  <a name='L775'></a><a href='#L775'>775</a>
841
841
  <a name='L776'></a><a href='#L776'>776</a>
842
842
  <a name='L777'></a><a href='#L777'>777</a>
843
- <a name='L778'></a><a href='#L778'>778</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
843
+ <a name='L778'></a><a href='#L778'>778</a>
844
+ <a name='L779'></a><a href='#L779'>779</a>
845
+ <a name='L780'></a><a href='#L780'>780</a>
846
+ <a name='L781'></a><a href='#L781'>781</a>
847
+ <a name='L782'></a><a href='#L782'>782</a>
848
+ <a name='L783'></a><a href='#L783'>783</a>
849
+ <a name='L784'></a><a href='#L784'>784</a>
850
+ <a name='L785'></a><a href='#L785'>785</a>
851
+ <a name='L786'></a><a href='#L786'>786</a>
852
+ <a name='L787'></a><a href='#L787'>787</a>
853
+ <a name='L788'></a><a href='#L788'>788</a>
854
+ <a name='L789'></a><a href='#L789'>789</a>
855
+ <a name='L790'></a><a href='#L790'>790</a>
856
+ <a name='L791'></a><a href='#L791'>791</a>
857
+ <a name='L792'></a><a href='#L792'>792</a>
858
+ <a name='L793'></a><a href='#L793'>793</a>
859
+ <a name='L794'></a><a href='#L794'>794</a>
860
+ <a name='L795'></a><a href='#L795'>795</a>
861
+ <a name='L796'></a><a href='#L796'>796</a>
862
+ <a name='L797'></a><a href='#L797'>797</a>
863
+ <a name='L798'></a><a href='#L798'>798</a>
864
+ <a name='L799'></a><a href='#L799'>799</a>
865
+ <a name='L800'></a><a href='#L800'>800</a>
866
+ <a name='L801'></a><a href='#L801'>801</a>
867
+ <a name='L802'></a><a href='#L802'>802</a>
868
+ <a name='L803'></a><a href='#L803'>803</a>
869
+ <a name='L804'></a><a href='#L804'>804</a>
870
+ <a name='L805'></a><a href='#L805'>805</a>
871
+ <a name='L806'></a><a href='#L806'>806</a>
872
+ <a name='L807'></a><a href='#L807'>807</a>
873
+ <a name='L808'></a><a href='#L808'>808</a>
874
+ <a name='L809'></a><a href='#L809'>809</a>
875
+ <a name='L810'></a><a href='#L810'>810</a>
876
+ <a name='L811'></a><a href='#L811'>811</a>
877
+ <a name='L812'></a><a href='#L812'>812</a>
878
+ <a name='L813'></a><a href='#L813'>813</a>
879
+ <a name='L814'></a><a href='#L814'>814</a>
880
+ <a name='L815'></a><a href='#L815'>815</a>
881
+ <a name='L816'></a><a href='#L816'>816</a>
882
+ <a name='L817'></a><a href='#L817'>817</a>
883
+ <a name='L818'></a><a href='#L818'>818</a>
884
+ <a name='L819'></a><a href='#L819'>819</a>
885
+ <a name='L820'></a><a href='#L820'>820</a>
886
+ <a name='L821'></a><a href='#L821'>821</a>
887
+ <a name='L822'></a><a href='#L822'>822</a>
888
+ <a name='L823'></a><a href='#L823'>823</a>
889
+ <a name='L824'></a><a href='#L824'>824</a>
890
+ <a name='L825'></a><a href='#L825'>825</a>
891
+ <a name='L826'></a><a href='#L826'>826</a>
892
+ <a name='L827'></a><a href='#L827'>827</a>
893
+ <a name='L828'></a><a href='#L828'>828</a>
894
+ <a name='L829'></a><a href='#L829'>829</a>
895
+ <a name='L830'></a><a href='#L830'>830</a>
896
+ <a name='L831'></a><a href='#L831'>831</a>
897
+ <a name='L832'></a><a href='#L832'>832</a>
898
+ <a name='L833'></a><a href='#L833'>833</a>
899
+ <a name='L834'></a><a href='#L834'>834</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
844
900
  <span class="cline-any cline-no">&nbsp;</span>
845
901
  <span class="cline-any cline-no">&nbsp;</span>
846
902
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -866,6 +922,7 @@
866
922
  <span class="cline-any cline-neutral">&nbsp;</span>
867
923
  <span class="cline-any cline-neutral">&nbsp;</span>
868
924
  <span class="cline-any cline-no">&nbsp;</span>
925
+ <span class="cline-any cline-no">&nbsp;</span>
869
926
  <span class="cline-any cline-neutral">&nbsp;</span>
870
927
  <span class="cline-any cline-neutral">&nbsp;</span>
871
928
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -893,6 +950,20 @@
893
950
  <span class="cline-any cline-neutral">&nbsp;</span>
894
951
  <span class="cline-any cline-no">&nbsp;</span>
895
952
  <span class="cline-any cline-no">&nbsp;</span>
953
+ <span class="cline-any cline-no">&nbsp;</span>
954
+ <span class="cline-any cline-neutral">&nbsp;</span>
955
+ <span class="cline-any cline-neutral">&nbsp;</span>
956
+ <span class="cline-any cline-neutral">&nbsp;</span>
957
+ <span class="cline-any cline-neutral">&nbsp;</span>
958
+ <span class="cline-any cline-neutral">&nbsp;</span>
959
+ <span class="cline-any cline-neutral">&nbsp;</span>
960
+ <span class="cline-any cline-neutral">&nbsp;</span>
961
+ <span class="cline-any cline-neutral">&nbsp;</span>
962
+ <span class="cline-any cline-neutral">&nbsp;</span>
963
+ <span class="cline-any cline-neutral">&nbsp;</span>
964
+ <span class="cline-any cline-neutral">&nbsp;</span>
965
+ <span class="cline-any cline-neutral">&nbsp;</span>
966
+ <span class="cline-any cline-neutral">&nbsp;</span>
896
967
  <span class="cline-any cline-neutral">&nbsp;</span>
897
968
  <span class="cline-any cline-neutral">&nbsp;</span>
898
969
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -947,6 +1018,7 @@
947
1018
  <span class="cline-any cline-neutral">&nbsp;</span>
948
1019
  <span class="cline-any cline-neutral">&nbsp;</span>
949
1020
  <span class="cline-any cline-neutral">&nbsp;</span>
1021
+ <span class="cline-any cline-neutral">&nbsp;</span>
950
1022
  <span class="cline-any cline-no">&nbsp;</span>
951
1023
  <span class="cline-any cline-neutral">&nbsp;</span>
952
1024
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -986,10 +1058,6 @@
986
1058
  <span class="cline-any cline-neutral">&nbsp;</span>
987
1059
  <span class="cline-any cline-neutral">&nbsp;</span>
988
1060
  <span class="cline-any cline-no">&nbsp;</span>
989
- <span class="cline-any cline-no">&nbsp;</span>
990
- <span class="cline-any cline-neutral">&nbsp;</span>
991
- <span class="cline-any cline-neutral">&nbsp;</span>
992
- <span class="cline-any cline-neutral">&nbsp;</span>
993
1061
  <span class="cline-any cline-neutral">&nbsp;</span>
994
1062
  <span class="cline-any cline-neutral">&nbsp;</span>
995
1063
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1021,6 +1089,8 @@
1021
1089
  <span class="cline-any cline-neutral">&nbsp;</span>
1022
1090
  <span class="cline-any cline-neutral">&nbsp;</span>
1023
1091
  <span class="cline-any cline-neutral">&nbsp;</span>
1092
+ <span class="cline-any cline-neutral">&nbsp;</span>
1093
+ <span class="cline-any cline-no">&nbsp;</span>
1024
1094
  <span class="cline-any cline-no">&nbsp;</span>
1025
1095
  <span class="cline-any cline-no">&nbsp;</span>
1026
1096
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1527,27 +1597,58 @@
1527
1597
  <span class="cline-any cline-neutral">&nbsp;</span>
1528
1598
  <span class="cline-any cline-neutral">&nbsp;</span>
1529
1599
  <span class="cline-any cline-no">&nbsp;</span>
1600
+ <span class="cline-any cline-no">&nbsp;</span>
1601
+ <span class="cline-any cline-neutral">&nbsp;</span>
1530
1602
  <span class="cline-any cline-neutral">&nbsp;</span>
1531
1603
  <span class="cline-any cline-no">&nbsp;</span>
1604
+ <span class="cline-any cline-no">&nbsp;</span>
1605
+ <span class="cline-any cline-no">&nbsp;</span>
1532
1606
  <span class="cline-any cline-neutral">&nbsp;</span>
1607
+ <span class="cline-any cline-no">&nbsp;</span>
1608
+ <span class="cline-any cline-no">&nbsp;</span>
1609
+ <span class="cline-any cline-neutral">&nbsp;</span>
1610
+ <span class="cline-any cline-neutral">&nbsp;</span>
1611
+ <span class="cline-any cline-no">&nbsp;</span>
1612
+ <span class="cline-any cline-neutral">&nbsp;</span>
1613
+ <span class="cline-any cline-no">&nbsp;</span>
1533
1614
  <span class="cline-any cline-neutral">&nbsp;</span>
1534
1615
  <span class="cline-any cline-no">&nbsp;</span>
1535
1616
  <span class="cline-any cline-neutral">&nbsp;</span>
1536
1617
  <span class="cline-any cline-no">&nbsp;</span>
1537
1618
  <span class="cline-any cline-no">&nbsp;</span>
1619
+ <span class="cline-any cline-neutral">&nbsp;</span>
1538
1620
  <span class="cline-any cline-no">&nbsp;</span>
1621
+ <span class="cline-any cline-neutral">&nbsp;</span>
1539
1622
  <span class="cline-any cline-no">&nbsp;</span>
1540
1623
  <span class="cline-any cline-neutral">&nbsp;</span>
1541
1624
  <span class="cline-any cline-neutral">&nbsp;</span>
1542
1625
  <span class="cline-any cline-neutral">&nbsp;</span>
1543
1626
  <span class="cline-any cline-no">&nbsp;</span>
1627
+ <span class="cline-any cline-no">&nbsp;</span>
1628
+ <span class="cline-any cline-no">&nbsp;</span>
1629
+ <span class="cline-any cline-neutral">&nbsp;</span>
1630
+ <span class="cline-any cline-no">&nbsp;</span>
1631
+ <span class="cline-any cline-no">&nbsp;</span>
1632
+ <span class="cline-any cline-no">&nbsp;</span>
1633
+ <span class="cline-any cline-no">&nbsp;</span>
1634
+ <span class="cline-any cline-no">&nbsp;</span>
1635
+ <span class="cline-any cline-neutral">&nbsp;</span>
1544
1636
  <span class="cline-any cline-neutral">&nbsp;</span>
1637
+ <span class="cline-any cline-neutral">&nbsp;</span>
1638
+ <span class="cline-any cline-no">&nbsp;</span>
1545
1639
  <span class="cline-any cline-no">&nbsp;</span>
1546
1640
  <span class="cline-any cline-neutral">&nbsp;</span>
1547
1641
  <span class="cline-any cline-no">&nbsp;</span>
1548
1642
  <span class="cline-any cline-no">&nbsp;</span>
1643
+ <span class="cline-any cline-no">&nbsp;</span>
1644
+ <span class="cline-any cline-neutral">&nbsp;</span>
1645
+ <span class="cline-any cline-neutral">&nbsp;</span>
1646
+ <span class="cline-any cline-neutral">&nbsp;</span>
1549
1647
  <span class="cline-any cline-neutral">&nbsp;</span>
1550
1648
  <span class="cline-any cline-no">&nbsp;</span>
1649
+ <span class="cline-any cline-neutral">&nbsp;</span>
1650
+ <span class="cline-any cline-neutral">&nbsp;</span>
1651
+ <span class="cline-any cline-neutral">&nbsp;</span>
1551
1652
  <span class="cline-any cline-no">&nbsp;</span>
1552
1653
  <span class="cline-any cline-neutral">&nbsp;</span>
1553
1654
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1563,6 +1664,17 @@
1563
1664
  <span class="cline-any cline-neutral">&nbsp;</span>
1564
1665
  <span class="cline-any cline-neutral">&nbsp;</span>
1565
1666
  <span class="cline-any cline-neutral">&nbsp;</span>
1667
+ <span class="cline-any cline-no">&nbsp;</span>
1668
+ <span class="cline-any cline-neutral">&nbsp;</span>
1669
+ <span class="cline-any cline-neutral">&nbsp;</span>
1670
+ <span class="cline-any cline-neutral">&nbsp;</span>
1671
+ <span class="cline-any cline-no">&nbsp;</span>
1672
+ <span class="cline-any cline-neutral">&nbsp;</span>
1673
+ <span class="cline-any cline-neutral">&nbsp;</span>
1674
+ <span class="cline-any cline-neutral">&nbsp;</span>
1675
+ <span class="cline-any cline-no">&nbsp;</span>
1676
+ <span class="cline-any cline-neutral">&nbsp;</span>
1677
+ <span class="cline-any cline-neutral">&nbsp;</span>
1566
1678
  <span class="cline-any cline-neutral">&nbsp;</span>
1567
1679
  <span class="cline-any cline-neutral">&nbsp;</span>
1568
1680
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1643,6 +1755,7 @@ import type { Options as LoggerOptions } from './logger.js'
1643
1755
  import type { Options as SessOptions } from './session.js'
1644
1756
  import type { Options as NetworkOptions } from '../modules/network.js'
1645
1757
  <span class="cstat-no" title="statement not covered" >import CanvasRecorder from './canvas.js'</span>
1758
+ <span class="cstat-no" title="statement not covered" >import UserTestManager from '../modules/userTesting/index.js'</span>
1646
1759
  &nbsp;
1647
1760
  import type {
1648
1761
  Options as WebworkerOptions,
@@ -1669,17 +1782,31 @@ interface OnStartInfo {
1669
1782
  }
1670
1783
  &nbsp;
1671
1784
  const CANCELED = <span class="cstat-no" title="statement not covered" >'canceled' as const</span>
1785
+ const uxtStorageKey = <span class="cstat-no" title="statement not covered" >'or_uxt_active'</span>
1672
1786
  const START_ERROR = <span class="cstat-no" title="statement not covered" >':(' as const</span>
1673
- type SuccessfulStart = OnStartInfo &amp; { success: true }
1787
+ type SuccessfulStart = OnStartInfo &amp; {
1788
+ success: true
1789
+ }
1674
1790
  type UnsuccessfulStart = {
1675
1791
  reason: typeof CANCELED | string
1676
1792
  success: false
1677
1793
  }
1678
1794
  &nbsp;
1679
- type RickRoll = { source: string; context: string } &amp; (
1680
- | { line: 'never-gonna-give-you-up' }
1681
- | { line: 'never-gonna-let-you-down'; token: string }
1682
- | { line: 'never-gonna-run-around-and-desert-you'; token: string }
1795
+ type RickRoll = {
1796
+ source: string
1797
+ context: string
1798
+ } &amp; (
1799
+ | {
1800
+ line: 'never-gonna-give-you-up'
1801
+ }
1802
+ | {
1803
+ line: 'never-gonna-let-you-down'
1804
+ token: string
1805
+ }
1806
+ | {
1807
+ line: 'never-gonna-run-around-and-desert-you'
1808
+ token: string
1809
+ }
1683
1810
  )
1684
1811
  &nbsp;
1685
1812
  const UnsuccessfulStart = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(r</span>eason: string): UnsuccessfulStart =&gt; (<span class="cstat-no" title="statement not covered" >{ reason, success: false })</span></span>
@@ -1714,6 +1841,7 @@ type AppOptions = {
1714
1841
  sessionStorage: Storage | null
1715
1842
  forceSingleTab?: boolean
1716
1843
  disableStringDict?: boolean
1844
+ assistSocketHost?: string
1717
1845
  &nbsp;
1718
1846
  // @deprecated
1719
1847
  onStart?: StartCallback
@@ -1763,11 +1891,7 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
1763
1891
  private readonly contextId
1764
1892
  public attributeSender: AttributeSender
1765
1893
  private <span class="cstat-no" title="statement not covered" >canvasRecorder: CanvasRecorder | null = null</span>
1766
- private <span class="cstat-no" title="statement not covered" >canvasOptions = {</span>
1767
- canvasEnabled: false,
1768
- canvasQuality: 'medium',
1769
- canvasFPS: 1,
1770
- }
1894
+ private uxtManager: UserTestManager
1771
1895
  &nbsp;
1772
1896
  <span class="fstat-no" title="function not covered" > constructor(p</span>rojectKey: string, sessionToken: string | undefined, options: Partial&lt;Options&gt;) {
1773
1897
  // if (options.onStart !== undefined) {
@@ -1794,12 +1918,14 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
1794
1918
  sessionStorage: null,
1795
1919
  disableStringDict: false,
1796
1920
  forceSingleTab: false,
1921
+ assistSocketHost: '',
1797
1922
  },
1798
1923
  options,
1799
1924
  )
1800
1925
  &nbsp;
1801
1926
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.options.forceSingleTab &amp;&amp; globalThis &amp;&amp; 'BroadcastChannel' in globalThis) {</span>
1802
- <span class="cstat-no" title="statement not covered" > this.bc = inIframe() ? null : new BroadcastChannel('rick')</span>
1927
+ const host = <span class="cstat-no" title="statement not covered" >location.hostname.split('.').slice(-2).join('_')</span>
1928
+ <span class="cstat-no" title="statement not covered" > this.bc = inIframe() ? null : new BroadcastChannel(`rick_${host}`)</span>
1803
1929
  }
1804
1930
  &nbsp;
1805
1931
  <span class="cstat-no" title="statement not covered" > this.revID = this.options.revID</span>
@@ -2304,19 +2430,19 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
2304
2430
  })
2305
2431
  &nbsp;
2306
2432
  <span class="cstat-no" title="statement not covered" > this.compressionThreshold = compressionThreshold</span>
2307
- &nbsp;
2308
2433
  const onStartInfo = <span class="cstat-no" title="statement not covered" >{ sessionToken: token, userUUID, sessionID }</span>
2309
2434
  &nbsp;
2310
2435
  // TODO: start as early as possible (before receiving the token)
2311
- <span class="cstat-no" title="statement not covered" > this.canvasRecorder =</span>
2312
- this.canvasRecorder ?? new CanvasRecorder(this, { fps: 2, quality: 'high' })
2313
- <span class="cstat-no" title="statement not covered" > this.canvasRecorder.startTracking()</span>
2314
2436
  <span class="cstat-no" title="statement not covered" > this.startCallbacks.forEach(<span class="fstat-no" title="function not covered" >(c</span>b) =&gt; <span class="cstat-no" title="statement not covered" >cb(onStartInfo))</span> /</span>/ MBTODO: callbacks after DOM "mounted" (observed)
2315
2437
  <span class="cstat-no" title="statement not covered" > this.observer.observe()</span>
2316
2438
  <span class="cstat-no" title="statement not covered" > this.ticker.start()</span>
2317
- // if (canvasEnabled) {
2318
- // canvasRecorder(this, { fps: canvasFPS, quality: canvasQuality })
2319
- // }
2439
+ &nbsp;
2440
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (canvasEnabled) {</span>
2441
+ <span class="cstat-no" title="statement not covered" > this.canvasRecorder =</span>
2442
+ this.canvasRecorder ??
2443
+ new CanvasRecorder(this, { fps: canvasFPS, quality: canvasQuality })
2444
+ <span class="cstat-no" title="statement not covered" > this.canvasRecorder.startTracking()</span>
2445
+ }
2320
2446
  <span class="cstat-no" title="statement not covered" > this.activityState = ActivityState.Active</span>
2321
2447
  &nbsp;
2322
2448
  <span class="cstat-no" title="statement not covered" > this.notify.log('OpenReplay tracking started.')</span>
@@ -2325,6 +2451,37 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
2325
2451
  <span class="cstat-no" title="statement not covered" > this.options.onStart(onStartInfo)</span>
2326
2452
  }
2327
2453
  <span class="cstat-no" title="statement not covered" > this.restartAttempts = 0</span>
2454
+ &nbsp;
2455
+ <span class="cstat-no" title="statement not covered" > this.uxtManager = this.uxtManager</span>
2456
+ ? this.uxtManager
2457
+ : new UserTestManager(this, uxtStorageKey)
2458
+ let uxtId: number | undefined
2459
+ const savedUxtTag = <span class="cstat-no" title="statement not covered" >this.localStorage.getItem(uxtStorageKey)</span>
2460
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (savedUxtTag) {</span>
2461
+ <span class="cstat-no" title="statement not covered" > uxtId = parseInt(savedUxtTag, 10)</span>
2462
+ }
2463
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (location?.search) {</span>
2464
+ const query = <span class="cstat-no" title="statement not covered" >new URLSearchParams(location.search)</span>
2465
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (query.has('oruxt')) {</span>
2466
+ const qId = <span class="cstat-no" title="statement not covered" >query.get('oruxt')</span>
2467
+ <span class="cstat-no" title="statement not covered" > uxtId = qId ? parseInt(qId, 10) : undefined</span>
2468
+ }
2469
+ }
2470
+ &nbsp;
2471
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (uxtId) {</span>
2472
+ <span class="cstat-no" title="statement not covered" > if (!this.uxtManager.isActive) {</span>
2473
+ // eslint-disable-next-line
2474
+ <span class="cstat-no" title="statement not covered" > this.uxtManager.getTest(uxtId, token, Boolean(savedUxtTag)).then(<span class="fstat-no" title="function not covered" >(i</span>d) =&gt; {</span>
2475
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (id) {</span>
2476
+ <span class="cstat-no" title="statement not covered" > this.onUxtCb.forEach(<span class="fstat-no" title="function not covered" >(c</span>b: (id: number) =&gt; void) =&gt; <span class="cstat-no" title="statement not covered" >cb(id))</span></span>
2477
+ }
2478
+ })
2479
+ } else {
2480
+ // @ts-ignore
2481
+ <span class="cstat-no" title="statement not covered" > this.onUxtCb.forEach(<span class="fstat-no" title="function not covered" >(c</span>b: (id: number) =&gt; void) =&gt; <span class="cstat-no" title="statement not covered" >cb(uxtId))</span></span>
2482
+ }
2483
+ }
2484
+ &nbsp;
2328
2485
  <span class="cstat-no" title="statement not covered" > return SuccessfulStart(onStartInfo)</span>
2329
2486
  })
2330
2487
  .catch(<span class="fstat-no" title="function not covered" >(r</span>eason) =&gt; {
@@ -2339,6 +2496,17 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
2339
2496
  <span class="cstat-no" title="statement not covered" > return UnsuccessfulStart(START_ERROR)</span>
2340
2497
  })
2341
2498
  }
2499
+ &nbsp;
2500
+ <span class="cstat-no" title="statement not covered" > onUxtCb = []</span>
2501
+ &nbsp;
2502
+ <span class="fstat-no" title="function not covered" > addOnUxtCb(</span>cb: (id: number) =&gt; void) {
2503
+ // @ts-ignore
2504
+ <span class="cstat-no" title="statement not covered" > this.onUxtCb.push(cb)</span>
2505
+ }
2506
+ &nbsp;
2507
+ <span class="fstat-no" title="function not covered" > getUxtId(</span>): number | null {
2508
+ <span class="cstat-no" title="statement not covered" > return this.uxtManager?.getTestId()</span>
2509
+ }
2342
2510
  &nbsp;
2343
2511
  /**
2344
2512
  * basically we ask other tabs during constructor
@@ -2401,7 +2569,7 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
2401
2569
  <div class='footer quiet pad2 space-top1 center small'>
2402
2570
  Code coverage generated by
2403
2571
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2404
- at 2023-11-21T10:02:27.844Z
2572
+ at 2023-12-12T11:45:01.048Z
2405
2573
  </div>
2406
2574
  <script src="../../prettify.js"></script>
2407
2575
  <script>
@@ -262,7 +262,7 @@ export type Options = true | _Options | LogLevel
262
262
  <div class='footer quiet pad2 space-top1 center small'>
263
263
  Code coverage generated by
264
264
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
265
- at 2023-11-21T10:02:27.844Z
265
+ at 2023-12-12T11:45:01.048Z
266
266
  </div>
267
267
  <script src="../../prettify.js"></script>
268
268
  <script>
@@ -2845,7 +2845,7 @@ export { default, Type } from '../../common/messages.gen.js'
2845
2845
  <div class='footer quiet pad2 space-top1 center small'>
2846
2846
  Code coverage generated by
2847
2847
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
2848
- at 2023-11-21T10:02:27.844Z
2848
+ at 2023-12-12T11:45:01.048Z
2849
2849
  </div>
2850
2850
  <script src="../../prettify.js"></script>
2851
2851
  <script>
@@ -376,7 +376,7 @@ type ElementListener = [string, EventListener, boolean]
376
376
  <div class='footer quiet pad2 space-top1 center small'>
377
377
  Code coverage generated by
378
378
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
379
- at 2023-11-21T10:02:27.844Z
379
+ at 2023-12-12T11:45:01.048Z
380
380
  </div>
381
381
  <script src="../../prettify.js"></script>
382
382
  <script>
@@ -133,7 +133,7 @@
133
133
  <div class='footer quiet pad2 space-top1 center small'>
134
134
  Code coverage generated by
135
135
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
136
- at 2023-11-21T10:02:27.844Z
136
+ at 2023-12-12T11:45:01.048Z
137
137
  </div>
138
138
  <script src="../../../prettify.js"></script>
139
139
  <script>
@@ -274,7 +274,7 @@ type OffsetState = {
274
274
  <div class='footer quiet pad2 space-top1 center small'>
275
275
  Code coverage generated by
276
276
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
277
- at 2023-11-21T10:02:27.844Z
277
+ at 2023-12-12T11:45:01.048Z
278
278
  </div>
279
279
  <script src="../../../prettify.js"></script>
280
280
  <script>
@@ -146,7 +146,7 @@
146
146
  <div class='footer quiet pad2 space-top1 center small'>
147
147
  Code coverage generated by
148
148
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
149
- at 2023-11-21T10:02:27.844Z
149
+ at 2023-12-12T11:45:01.048Z
150
150
  </div>
151
151
  <script src="../../../prettify.js"></script>
152
152
  <script>
@@ -127,7 +127,7 @@
127
127
  <div class='footer quiet pad2 space-top1 center small'>
128
128
  Code coverage generated by
129
129
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
130
- at 2023-11-21T10:02:27.844Z
130
+ at 2023-12-12T11:45:01.048Z
131
131
  </div>
132
132
  <script src="../../../prettify.js"></script>
133
133
  <script>
@@ -523,7 +523,7 @@ const attachShadowNativeFn = <span class="cstat-no" title="statement not covered
523
523
  <div class='footer quiet pad2 space-top1 center small'>
524
524
  Code coverage generated by
525
525
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
526
- at 2023-11-21T10:02:27.844Z
526
+ at 2023-12-12T11:45:01.048Z
527
527
  </div>
528
528
  <script src="../../../prettify.js"></script>
529
529
  <script>
@@ -388,7 +388,7 @@ export const <span class="cstat-no" title="statement not covered" >stringWiper =
388
388
  <div class='footer quiet pad2 space-top1 center small'>
389
389
  Code coverage generated by
390
390
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
391
- at 2023-11-21T10:02:27.844Z
391
+ at 2023-12-12T11:45:01.048Z
392
392
  </div>
393
393
  <script src="../../prettify.js"></script>
394
394
  <script>
@@ -607,7 +607,7 @@ export type Options = {
607
607
  <div class='footer quiet pad2 space-top1 center small'>
608
608
  Code coverage generated by
609
609
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
610
- at 2023-11-21T10:02:27.844Z
610
+ at 2023-12-12T11:45:01.048Z
611
611
  </div>
612
612
  <script src="../../prettify.js"></script>
613
613
  <script>
@@ -235,7 +235,7 @@ function <span class="fstat-no" title="function not covered" >wrap(</span>callba
235
235
  <div class='footer quiet pad2 space-top1 center small'>
236
236
  Code coverage generated by
237
237
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
238
- at 2023-11-21T10:02:27.844Z
238
+ at 2023-12-12T11:45:01.048Z
239
239
  </div>
240
240
  <script src="../../prettify.js"></script>
241
241
  <script>
@@ -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/248</span>
28
+ <span class='fraction'>0/255</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/119</span>
35
+ <span class='fraction'>0/120</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/55</span>
42
+ <span class='fraction'>0/56</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/246</span>
49
+ <span class='fraction'>0/253</span>
50
50
  </div>
51
51
 
52
52
 
@@ -84,13 +84,13 @@
84
84
  <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
85
85
  </td>
86
86
  <td data-value="0" class="pct low">0%</td>
87
- <td data-value="171" class="abs low">0/171</td>
87
+ <td data-value="174" class="abs low">0/174</td>
88
88
  <td data-value="0" class="pct low">0%</td>
89
- <td data-value="89" class="abs low">0/89</td>
89
+ <td data-value="90" class="abs low">0/90</td>
90
90
  <td data-value="0" class="pct low">0%</td>
91
- <td data-value="33" class="abs low">0/33</td>
91
+ <td data-value="34" class="abs low">0/34</td>
92
92
  <td data-value="0" class="pct low">0%</td>
93
- <td data-value="169" class="abs low">0/169</td>
93
+ <td data-value="172" class="abs low">0/172</td>
94
94
  </tr>
95
95
 
96
96
  <tr>
@@ -99,13 +99,13 @@
99
99
  <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
100
100
  </td>
101
101
  <td data-value="0" class="pct low">0%</td>
102
- <td data-value="77" class="abs low">0/77</td>
102
+ <td data-value="81" class="abs low">0/81</td>
103
103
  <td data-value="0" class="pct low">0%</td>
104
104
  <td data-value="30" class="abs low">0/30</td>
105
105
  <td data-value="0" class="pct low">0%</td>
106
106
  <td data-value="22" class="abs low">0/22</td>
107
107
  <td data-value="0" class="pct low">0%</td>
108
- <td data-value="77" class="abs low">0/77</td>
108
+ <td data-value="81" class="abs low">0/81</td>
109
109
  </tr>
110
110
 
111
111
  </tbody>
@@ -116,7 +116,7 @@
116
116
  <div class='footer quiet pad2 space-top1 center small'>
117
117
  Code coverage generated by
118
118
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
119
- at 2023-11-21T10:02:27.844Z
119
+ at 2023-12-12T11:45:01.048Z
120
120
  </div>
121
121
  <script src="../prettify.js"></script>
122
122
  <script>