@openreplay/tracker 11.0.3 → 11.0.4

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 (71) hide show
  1. package/cjs/app/canvas.js +5 -1
  2. package/cjs/app/index.js +1 -1
  3. package/cjs/index.js +1 -1
  4. package/coverage/clover.xml +548 -810
  5. package/coverage/coverage-final.json +10 -10
  6. package/coverage/lcov-report/index.html +32 -32
  7. package/coverage/lcov-report/main/app/canvas.ts.html +8 -14
  8. package/coverage/lcov-report/main/app/guards.ts.html +1 -1
  9. package/coverage/lcov-report/main/app/index.html +14 -14
  10. package/coverage/lcov-report/main/app/index.ts.html +108 -834
  11. package/coverage/lcov-report/main/app/logger.ts.html +1 -1
  12. package/coverage/lcov-report/main/app/messages.gen.ts.html +62 -5
  13. package/coverage/lcov-report/main/app/nodes.ts.html +1 -1
  14. package/coverage/lcov-report/main/app/observer/iframe_observer.ts.html +2 -2
  15. package/coverage/lcov-report/main/app/observer/iframe_offsets.ts.html +1 -1
  16. package/coverage/lcov-report/main/app/observer/index.html +1 -1
  17. package/coverage/lcov-report/main/app/observer/shadow_root_observer.ts.html +2 -2
  18. package/coverage/lcov-report/main/app/observer/top_observer.ts.html +1 -1
  19. package/coverage/lcov-report/main/app/sanitizer.ts.html +1 -1
  20. package/coverage/lcov-report/main/app/session.ts.html +1 -1
  21. package/coverage/lcov-report/main/app/ticker.ts.html +1 -1
  22. package/coverage/lcov-report/main/index.html +9 -9
  23. package/coverage/lcov-report/main/index.ts.html +118 -223
  24. package/coverage/lcov-report/main/modules/Network/beaconProxy.ts.html +1 -1
  25. package/coverage/lcov-report/main/modules/Network/fetchProxy.ts.html +21 -6
  26. package/coverage/lcov-report/main/modules/Network/index.html +6 -6
  27. package/coverage/lcov-report/main/modules/Network/index.ts.html +1 -1
  28. package/coverage/lcov-report/main/modules/Network/networkMessage.ts.html +1 -1
  29. package/coverage/lcov-report/main/modules/Network/utils.ts.html +1 -1
  30. package/coverage/lcov-report/main/modules/Network/xhrProxy.ts.html +3 -3
  31. package/coverage/lcov-report/main/modules/attributeSender.ts.html +1 -1
  32. package/coverage/lcov-report/main/modules/axiosSpy.ts.html +1 -1
  33. package/coverage/lcov-report/main/modules/connection.ts.html +1 -1
  34. package/coverage/lcov-report/main/modules/console.ts.html +1 -1
  35. package/coverage/lcov-report/main/modules/constructedStyleSheets.ts.html +1 -1
  36. package/coverage/lcov-report/main/modules/cssrules.ts.html +1 -1
  37. package/coverage/lcov-report/main/modules/exception.ts.html +1 -1
  38. package/coverage/lcov-report/main/modules/featureFlags.ts.html +7 -10
  39. package/coverage/lcov-report/main/modules/focus.ts.html +1 -1
  40. package/coverage/lcov-report/main/modules/fonts.ts.html +1 -1
  41. package/coverage/lcov-report/main/modules/img.ts.html +1 -1
  42. package/coverage/lcov-report/main/modules/index.html +27 -27
  43. package/coverage/lcov-report/main/modules/input.ts.html +1 -1
  44. package/coverage/lcov-report/main/modules/mouse.ts.html +1 -1
  45. package/coverage/lcov-report/main/modules/network.ts.html +1 -1
  46. package/coverage/lcov-report/main/modules/performance.ts.html +1 -1
  47. package/coverage/lcov-report/main/modules/scroll.ts.html +1 -1
  48. package/coverage/lcov-report/main/modules/selection.ts.html +1 -1
  49. package/coverage/lcov-report/main/modules/tabs.ts.html +1 -1
  50. package/coverage/lcov-report/main/modules/tagWatcher.ts.html +250 -0
  51. package/coverage/lcov-report/main/modules/timing.ts.html +1 -1
  52. package/coverage/lcov-report/main/modules/userTesting/SignalManager.ts.html +1 -1
  53. package/coverage/lcov-report/main/modules/userTesting/dnd.ts.html +1 -1
  54. package/coverage/lcov-report/main/modules/userTesting/index.html +1 -1
  55. package/coverage/lcov-report/main/modules/userTesting/index.ts.html +1 -1
  56. package/coverage/lcov-report/main/modules/userTesting/recorder.ts.html +1 -1
  57. package/coverage/lcov-report/main/modules/userTesting/styles.ts.html +1 -1
  58. package/coverage/lcov-report/main/modules/userTesting/utils.ts.html +1 -1
  59. package/coverage/lcov-report/main/modules/viewport.ts.html +1 -1
  60. package/coverage/lcov-report/main/utils.ts.html +1 -1
  61. package/coverage/lcov-report/webworker/BatchWriter.ts.html +1 -1
  62. package/coverage/lcov-report/webworker/MessageEncoder.gen.ts.html +17 -5
  63. package/coverage/lcov-report/webworker/PrimitiveEncoder.ts.html +1 -1
  64. package/coverage/lcov-report/webworker/QueueSender.ts.html +1 -1
  65. package/coverage/lcov-report/webworker/index.html +10 -10
  66. package/coverage/lcov-report/webworker/index.ts.html +16 -22
  67. package/coverage/lcov.info +1069 -1535
  68. package/lib/app/canvas.js +5 -1
  69. package/lib/app/index.js +1 -1
  70. package/lib/index.js +1 -1
  71. 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/454</span>
28
+ <span class='fraction'>0/329</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/240</span>
35
+ <span class='fraction'>0/197</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/76</span>
42
+ <span class='fraction'>0/65</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/442</span>
49
+ <span class='fraction'>0/318</span>
50
50
  </div>
51
51
 
52
52
 
@@ -930,252 +930,16 @@
930
930
  <a name='L865'></a><a href='#L865'>865</a>
931
931
  <a name='L866'></a><a href='#L866'>866</a>
932
932
  <a name='L867'></a><a href='#L867'>867</a>
933
- <a name='L868'></a><a href='#L868'>868</a>
934
- <a name='L869'></a><a href='#L869'>869</a>
935
- <a name='L870'></a><a href='#L870'>870</a>
936
- <a name='L871'></a><a href='#L871'>871</a>
937
- <a name='L872'></a><a href='#L872'>872</a>
938
- <a name='L873'></a><a href='#L873'>873</a>
939
- <a name='L874'></a><a href='#L874'>874</a>
940
- <a name='L875'></a><a href='#L875'>875</a>
941
- <a name='L876'></a><a href='#L876'>876</a>
942
- <a name='L877'></a><a href='#L877'>877</a>
943
- <a name='L878'></a><a href='#L878'>878</a>
944
- <a name='L879'></a><a href='#L879'>879</a>
945
- <a name='L880'></a><a href='#L880'>880</a>
946
- <a name='L881'></a><a href='#L881'>881</a>
947
- <a name='L882'></a><a href='#L882'>882</a>
948
- <a name='L883'></a><a href='#L883'>883</a>
949
- <a name='L884'></a><a href='#L884'>884</a>
950
- <a name='L885'></a><a href='#L885'>885</a>
951
- <a name='L886'></a><a href='#L886'>886</a>
952
- <a name='L887'></a><a href='#L887'>887</a>
953
- <a name='L888'></a><a href='#L888'>888</a>
954
- <a name='L889'></a><a href='#L889'>889</a>
955
- <a name='L890'></a><a href='#L890'>890</a>
956
- <a name='L891'></a><a href='#L891'>891</a>
957
- <a name='L892'></a><a href='#L892'>892</a>
958
- <a name='L893'></a><a href='#L893'>893</a>
959
- <a name='L894'></a><a href='#L894'>894</a>
960
- <a name='L895'></a><a href='#L895'>895</a>
961
- <a name='L896'></a><a href='#L896'>896</a>
962
- <a name='L897'></a><a href='#L897'>897</a>
963
- <a name='L898'></a><a href='#L898'>898</a>
964
- <a name='L899'></a><a href='#L899'>899</a>
965
- <a name='L900'></a><a href='#L900'>900</a>
966
- <a name='L901'></a><a href='#L901'>901</a>
967
- <a name='L902'></a><a href='#L902'>902</a>
968
- <a name='L903'></a><a href='#L903'>903</a>
969
- <a name='L904'></a><a href='#L904'>904</a>
970
- <a name='L905'></a><a href='#L905'>905</a>
971
- <a name='L906'></a><a href='#L906'>906</a>
972
- <a name='L907'></a><a href='#L907'>907</a>
973
- <a name='L908'></a><a href='#L908'>908</a>
974
- <a name='L909'></a><a href='#L909'>909</a>
975
- <a name='L910'></a><a href='#L910'>910</a>
976
- <a name='L911'></a><a href='#L911'>911</a>
977
- <a name='L912'></a><a href='#L912'>912</a>
978
- <a name='L913'></a><a href='#L913'>913</a>
979
- <a name='L914'></a><a href='#L914'>914</a>
980
- <a name='L915'></a><a href='#L915'>915</a>
981
- <a name='L916'></a><a href='#L916'>916</a>
982
- <a name='L917'></a><a href='#L917'>917</a>
983
- <a name='L918'></a><a href='#L918'>918</a>
984
- <a name='L919'></a><a href='#L919'>919</a>
985
- <a name='L920'></a><a href='#L920'>920</a>
986
- <a name='L921'></a><a href='#L921'>921</a>
987
- <a name='L922'></a><a href='#L922'>922</a>
988
- <a name='L923'></a><a href='#L923'>923</a>
989
- <a name='L924'></a><a href='#L924'>924</a>
990
- <a name='L925'></a><a href='#L925'>925</a>
991
- <a name='L926'></a><a href='#L926'>926</a>
992
- <a name='L927'></a><a href='#L927'>927</a>
993
- <a name='L928'></a><a href='#L928'>928</a>
994
- <a name='L929'></a><a href='#L929'>929</a>
995
- <a name='L930'></a><a href='#L930'>930</a>
996
- <a name='L931'></a><a href='#L931'>931</a>
997
- <a name='L932'></a><a href='#L932'>932</a>
998
- <a name='L933'></a><a href='#L933'>933</a>
999
- <a name='L934'></a><a href='#L934'>934</a>
1000
- <a name='L935'></a><a href='#L935'>935</a>
1001
- <a name='L936'></a><a href='#L936'>936</a>
1002
- <a name='L937'></a><a href='#L937'>937</a>
1003
- <a name='L938'></a><a href='#L938'>938</a>
1004
- <a name='L939'></a><a href='#L939'>939</a>
1005
- <a name='L940'></a><a href='#L940'>940</a>
1006
- <a name='L941'></a><a href='#L941'>941</a>
1007
- <a name='L942'></a><a href='#L942'>942</a>
1008
- <a name='L943'></a><a href='#L943'>943</a>
1009
- <a name='L944'></a><a href='#L944'>944</a>
1010
- <a name='L945'></a><a href='#L945'>945</a>
1011
- <a name='L946'></a><a href='#L946'>946</a>
1012
- <a name='L947'></a><a href='#L947'>947</a>
1013
- <a name='L948'></a><a href='#L948'>948</a>
1014
- <a name='L949'></a><a href='#L949'>949</a>
1015
- <a name='L950'></a><a href='#L950'>950</a>
1016
- <a name='L951'></a><a href='#L951'>951</a>
1017
- <a name='L952'></a><a href='#L952'>952</a>
1018
- <a name='L953'></a><a href='#L953'>953</a>
1019
- <a name='L954'></a><a href='#L954'>954</a>
1020
- <a name='L955'></a><a href='#L955'>955</a>
1021
- <a name='L956'></a><a href='#L956'>956</a>
1022
- <a name='L957'></a><a href='#L957'>957</a>
1023
- <a name='L958'></a><a href='#L958'>958</a>
1024
- <a name='L959'></a><a href='#L959'>959</a>
1025
- <a name='L960'></a><a href='#L960'>960</a>
1026
- <a name='L961'></a><a href='#L961'>961</a>
1027
- <a name='L962'></a><a href='#L962'>962</a>
1028
- <a name='L963'></a><a href='#L963'>963</a>
1029
- <a name='L964'></a><a href='#L964'>964</a>
1030
- <a name='L965'></a><a href='#L965'>965</a>
1031
- <a name='L966'></a><a href='#L966'>966</a>
1032
- <a name='L967'></a><a href='#L967'>967</a>
1033
- <a name='L968'></a><a href='#L968'>968</a>
1034
- <a name='L969'></a><a href='#L969'>969</a>
1035
- <a name='L970'></a><a href='#L970'>970</a>
1036
- <a name='L971'></a><a href='#L971'>971</a>
1037
- <a name='L972'></a><a href='#L972'>972</a>
1038
- <a name='L973'></a><a href='#L973'>973</a>
1039
- <a name='L974'></a><a href='#L974'>974</a>
1040
- <a name='L975'></a><a href='#L975'>975</a>
1041
- <a name='L976'></a><a href='#L976'>976</a>
1042
- <a name='L977'></a><a href='#L977'>977</a>
1043
- <a name='L978'></a><a href='#L978'>978</a>
1044
- <a name='L979'></a><a href='#L979'>979</a>
1045
- <a name='L980'></a><a href='#L980'>980</a>
1046
- <a name='L981'></a><a href='#L981'>981</a>
1047
- <a name='L982'></a><a href='#L982'>982</a>
1048
- <a name='L983'></a><a href='#L983'>983</a>
1049
- <a name='L984'></a><a href='#L984'>984</a>
1050
- <a name='L985'></a><a href='#L985'>985</a>
1051
- <a name='L986'></a><a href='#L986'>986</a>
1052
- <a name='L987'></a><a href='#L987'>987</a>
1053
- <a name='L988'></a><a href='#L988'>988</a>
1054
- <a name='L989'></a><a href='#L989'>989</a>
1055
- <a name='L990'></a><a href='#L990'>990</a>
1056
- <a name='L991'></a><a href='#L991'>991</a>
1057
- <a name='L992'></a><a href='#L992'>992</a>
1058
- <a name='L993'></a><a href='#L993'>993</a>
1059
- <a name='L994'></a><a href='#L994'>994</a>
1060
- <a name='L995'></a><a href='#L995'>995</a>
1061
- <a name='L996'></a><a href='#L996'>996</a>
1062
- <a name='L997'></a><a href='#L997'>997</a>
1063
- <a name='L998'></a><a href='#L998'>998</a>
1064
- <a name='L999'></a><a href='#L999'>999</a>
1065
- <a name='L1000'></a><a href='#L1000'>1000</a>
1066
- <a name='L1001'></a><a href='#L1001'>1001</a>
1067
- <a name='L1002'></a><a href='#L1002'>1002</a>
1068
- <a name='L1003'></a><a href='#L1003'>1003</a>
1069
- <a name='L1004'></a><a href='#L1004'>1004</a>
1070
- <a name='L1005'></a><a href='#L1005'>1005</a>
1071
- <a name='L1006'></a><a href='#L1006'>1006</a>
1072
- <a name='L1007'></a><a href='#L1007'>1007</a>
1073
- <a name='L1008'></a><a href='#L1008'>1008</a>
1074
- <a name='L1009'></a><a href='#L1009'>1009</a>
1075
- <a name='L1010'></a><a href='#L1010'>1010</a>
1076
- <a name='L1011'></a><a href='#L1011'>1011</a>
1077
- <a name='L1012'></a><a href='#L1012'>1012</a>
1078
- <a name='L1013'></a><a href='#L1013'>1013</a>
1079
- <a name='L1014'></a><a href='#L1014'>1014</a>
1080
- <a name='L1015'></a><a href='#L1015'>1015</a>
1081
- <a name='L1016'></a><a href='#L1016'>1016</a>
1082
- <a name='L1017'></a><a href='#L1017'>1017</a>
1083
- <a name='L1018'></a><a href='#L1018'>1018</a>
1084
- <a name='L1019'></a><a href='#L1019'>1019</a>
1085
- <a name='L1020'></a><a href='#L1020'>1020</a>
1086
- <a name='L1021'></a><a href='#L1021'>1021</a>
1087
- <a name='L1022'></a><a href='#L1022'>1022</a>
1088
- <a name='L1023'></a><a href='#L1023'>1023</a>
1089
- <a name='L1024'></a><a href='#L1024'>1024</a>
1090
- <a name='L1025'></a><a href='#L1025'>1025</a>
1091
- <a name='L1026'></a><a href='#L1026'>1026</a>
1092
- <a name='L1027'></a><a href='#L1027'>1027</a>
1093
- <a name='L1028'></a><a href='#L1028'>1028</a>
1094
- <a name='L1029'></a><a href='#L1029'>1029</a>
1095
- <a name='L1030'></a><a href='#L1030'>1030</a>
1096
- <a name='L1031'></a><a href='#L1031'>1031</a>
1097
- <a name='L1032'></a><a href='#L1032'>1032</a>
1098
- <a name='L1033'></a><a href='#L1033'>1033</a>
1099
- <a name='L1034'></a><a href='#L1034'>1034</a>
1100
- <a name='L1035'></a><a href='#L1035'>1035</a>
1101
- <a name='L1036'></a><a href='#L1036'>1036</a>
1102
- <a name='L1037'></a><a href='#L1037'>1037</a>
1103
- <a name='L1038'></a><a href='#L1038'>1038</a>
1104
- <a name='L1039'></a><a href='#L1039'>1039</a>
1105
- <a name='L1040'></a><a href='#L1040'>1040</a>
1106
- <a name='L1041'></a><a href='#L1041'>1041</a>
1107
- <a name='L1042'></a><a href='#L1042'>1042</a>
1108
- <a name='L1043'></a><a href='#L1043'>1043</a>
1109
- <a name='L1044'></a><a href='#L1044'>1044</a>
1110
- <a name='L1045'></a><a href='#L1045'>1045</a>
1111
- <a name='L1046'></a><a href='#L1046'>1046</a>
1112
- <a name='L1047'></a><a href='#L1047'>1047</a>
1113
- <a name='L1048'></a><a href='#L1048'>1048</a>
1114
- <a name='L1049'></a><a href='#L1049'>1049</a>
1115
- <a name='L1050'></a><a href='#L1050'>1050</a>
1116
- <a name='L1051'></a><a href='#L1051'>1051</a>
1117
- <a name='L1052'></a><a href='#L1052'>1052</a>
1118
- <a name='L1053'></a><a href='#L1053'>1053</a>
1119
- <a name='L1054'></a><a href='#L1054'>1054</a>
1120
- <a name='L1055'></a><a href='#L1055'>1055</a>
1121
- <a name='L1056'></a><a href='#L1056'>1056</a>
1122
- <a name='L1057'></a><a href='#L1057'>1057</a>
1123
- <a name='L1058'></a><a href='#L1058'>1058</a>
1124
- <a name='L1059'></a><a href='#L1059'>1059</a>
1125
- <a name='L1060'></a><a href='#L1060'>1060</a>
1126
- <a name='L1061'></a><a href='#L1061'>1061</a>
1127
- <a name='L1062'></a><a href='#L1062'>1062</a>
1128
- <a name='L1063'></a><a href='#L1063'>1063</a>
1129
- <a name='L1064'></a><a href='#L1064'>1064</a>
1130
- <a name='L1065'></a><a href='#L1065'>1065</a>
1131
- <a name='L1066'></a><a href='#L1066'>1066</a>
1132
- <a name='L1067'></a><a href='#L1067'>1067</a>
1133
- <a name='L1068'></a><a href='#L1068'>1068</a>
1134
- <a name='L1069'></a><a href='#L1069'>1069</a>
1135
- <a name='L1070'></a><a href='#L1070'>1070</a>
1136
- <a name='L1071'></a><a href='#L1071'>1071</a>
1137
- <a name='L1072'></a><a href='#L1072'>1072</a>
1138
- <a name='L1073'></a><a href='#L1073'>1073</a>
1139
- <a name='L1074'></a><a href='#L1074'>1074</a>
1140
- <a name='L1075'></a><a href='#L1075'>1075</a>
1141
- <a name='L1076'></a><a href='#L1076'>1076</a>
1142
- <a name='L1077'></a><a href='#L1077'>1077</a>
1143
- <a name='L1078'></a><a href='#L1078'>1078</a>
1144
- <a name='L1079'></a><a href='#L1079'>1079</a>
1145
- <a name='L1080'></a><a href='#L1080'>1080</a>
1146
- <a name='L1081'></a><a href='#L1081'>1081</a>
1147
- <a name='L1082'></a><a href='#L1082'>1082</a>
1148
- <a name='L1083'></a><a href='#L1083'>1083</a>
1149
- <a name='L1084'></a><a href='#L1084'>1084</a>
1150
- <a name='L1085'></a><a href='#L1085'>1085</a>
1151
- <a name='L1086'></a><a href='#L1086'>1086</a>
1152
- <a name='L1087'></a><a href='#L1087'>1087</a>
1153
- <a name='L1088'></a><a href='#L1088'>1088</a>
1154
- <a name='L1089'></a><a href='#L1089'>1089</a>
1155
- <a name='L1090'></a><a href='#L1090'>1090</a>
1156
- <a name='L1091'></a><a href='#L1091'>1091</a>
1157
- <a name='L1092'></a><a href='#L1092'>1092</a>
1158
- <a name='L1093'></a><a href='#L1093'>1093</a>
1159
- <a name='L1094'></a><a href='#L1094'>1094</a>
1160
- <a name='L1095'></a><a href='#L1095'>1095</a>
1161
- <a name='L1096'></a><a href='#L1096'>1096</a>
1162
- <a name='L1097'></a><a href='#L1097'>1097</a>
1163
- <a name='L1098'></a><a href='#L1098'>1098</a>
1164
- <a name='L1099'></a><a href='#L1099'>1099</a>
1165
- <a name='L1100'></a><a href='#L1100'>1100</a>
1166
- <a name='L1101'></a><a href='#L1101'>1101</a>
1167
- <a name='L1102'></a><a href='#L1102'>1102</a>
1168
- <a name='L1103'></a><a href='#L1103'>1103</a>
1169
- <a name='L1104'></a><a href='#L1104'>1104</a>
1170
- <a name='L1105'></a><a href='#L1105'>1105</a>
1171
- <a name='L1106'></a><a href='#L1106'>1106</a>
1172
- <a name='L1107'></a><a href='#L1107'>1107</a>
1173
- <a name='L1108'></a><a href='#L1108'>1108</a>
1174
- <a name='L1109'></a><a href='#L1109'>1109</a>
1175
- <a name='L1110'></a><a href='#L1110'>1110</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
933
+ <a name='L868'></a><a href='#L868'>868</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
1176
934
  <span class="cline-any cline-no">&nbsp;</span>
1177
935
  <span class="cline-any cline-neutral">&nbsp;</span>
1178
- <span class="cline-any cline-no">&nbsp;</span>
936
+ <span class="cline-any cline-neutral">&nbsp;</span>
937
+ <span class="cline-any cline-neutral">&nbsp;</span>
938
+ <span class="cline-any cline-neutral">&nbsp;</span>
939
+ <span class="cline-any cline-neutral">&nbsp;</span>
940
+ <span class="cline-any cline-neutral">&nbsp;</span>
941
+ <span class="cline-any cline-neutral">&nbsp;</span>
942
+ <span class="cline-any cline-neutral">&nbsp;</span>
1179
943
  <span class="cline-any cline-no">&nbsp;</span>
1180
944
  <span class="cline-any cline-neutral">&nbsp;</span>
1181
945
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1201,6 +965,7 @@
1201
965
  <span class="cline-any cline-neutral">&nbsp;</span>
1202
966
  <span class="cline-any cline-no">&nbsp;</span>
1203
967
  <span class="cline-any cline-no">&nbsp;</span>
968
+ <span class="cline-any cline-no">&nbsp;</span>
1204
969
  <span class="cline-any cline-neutral">&nbsp;</span>
1205
970
  <span class="cline-any cline-neutral">&nbsp;</span>
1206
971
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1229,7 +994,6 @@
1229
994
  <span class="cline-any cline-no">&nbsp;</span>
1230
995
  <span class="cline-any cline-no">&nbsp;</span>
1231
996
  <span class="cline-any cline-no">&nbsp;</span>
1232
- <span class="cline-any cline-no">&nbsp;</span>
1233
997
  <span class="cline-any cline-neutral">&nbsp;</span>
1234
998
  <span class="cline-any cline-neutral">&nbsp;</span>
1235
999
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1266,7 +1030,6 @@
1266
1030
  <span class="cline-any cline-no">&nbsp;</span>
1267
1031
  <span class="cline-any cline-no">&nbsp;</span>
1268
1032
  <span class="cline-any cline-no">&nbsp;</span>
1269
- <span class="cline-any cline-no">&nbsp;</span>
1270
1033
  <span class="cline-any cline-neutral">&nbsp;</span>
1271
1034
  <span class="cline-any cline-neutral">&nbsp;</span>
1272
1035
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1322,12 +1085,6 @@
1322
1085
  <span class="cline-any cline-no">&nbsp;</span>
1323
1086
  <span class="cline-any cline-neutral">&nbsp;</span>
1324
1087
  <span class="cline-any cline-neutral">&nbsp;</span>
1325
- <span class="cline-any cline-neutral">&nbsp;</span>
1326
- <span class="cline-any cline-neutral">&nbsp;</span>
1327
- <span class="cline-any cline-no">&nbsp;</span>
1328
- <span class="cline-any cline-no">&nbsp;</span>
1329
- <span class="cline-any cline-neutral">&nbsp;</span>
1330
- <span class="cline-any cline-neutral">&nbsp;</span>
1331
1088
  <span class="cline-any cline-no">&nbsp;</span>
1332
1089
  <span class="cline-any cline-no">&nbsp;</span>
1333
1090
  <span class="cline-any cline-no">&nbsp;</span>
@@ -1345,14 +1102,11 @@
1345
1102
  <span class="cline-any cline-neutral">&nbsp;</span>
1346
1103
  <span class="cline-any cline-no">&nbsp;</span>
1347
1104
  <span class="cline-any cline-neutral">&nbsp;</span>
1348
- <span class="cline-any cline-no">&nbsp;</span>
1349
- <span class="cline-any cline-neutral">&nbsp;</span>
1350
1105
  <span class="cline-any cline-neutral">&nbsp;</span>
1351
1106
  <span class="cline-any cline-neutral">&nbsp;</span>
1352
1107
  <span class="cline-any cline-neutral">&nbsp;</span>
1353
1108
  <span class="cline-any cline-neutral">&nbsp;</span>
1354
1109
  <span class="cline-any cline-neutral">&nbsp;</span>
1355
- <span class="cline-any cline-no">&nbsp;</span>
1356
1110
  <span class="cline-any cline-neutral">&nbsp;</span>
1357
1111
  <span class="cline-any cline-no">&nbsp;</span>
1358
1112
  <span class="cline-any cline-no">&nbsp;</span>
@@ -1440,12 +1194,13 @@
1440
1194
  <span class="cline-any cline-no">&nbsp;</span>
1441
1195
  <span class="cline-any cline-no">&nbsp;</span>
1442
1196
  <span class="cline-any cline-no">&nbsp;</span>
1443
- <span class="cline-any cline-neutral">&nbsp;</span>
1197
+ <span class="cline-any cline-no">&nbsp;</span>
1444
1198
  <span class="cline-any cline-neutral">&nbsp;</span>
1445
1199
  <span class="cline-any cline-neutral">&nbsp;</span>
1446
1200
  <span class="cline-any cline-no">&nbsp;</span>
1447
1201
  <span class="cline-any cline-neutral">&nbsp;</span>
1448
1202
  <span class="cline-any cline-neutral">&nbsp;</span>
1203
+ <span class="cline-any cline-neutral">&nbsp;</span>
1449
1204
  <span class="cline-any cline-no">&nbsp;</span>
1450
1205
  <span class="cline-any cline-neutral">&nbsp;</span>
1451
1206
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1545,14 +1300,6 @@
1545
1300
  <span class="cline-any cline-neutral">&nbsp;</span>
1546
1301
  <span class="cline-any cline-neutral">&nbsp;</span>
1547
1302
  <span class="cline-any cline-no">&nbsp;</span>
1548
- <span class="cline-any cline-no">&nbsp;</span>
1549
- <span class="cline-any cline-no">&nbsp;</span>
1550
- <span class="cline-any cline-no">&nbsp;</span>
1551
- <span class="cline-any cline-neutral">&nbsp;</span>
1552
- <span class="cline-any cline-no">&nbsp;</span>
1553
- <span class="cline-any cline-neutral">&nbsp;</span>
1554
- <span class="cline-any cline-no">&nbsp;</span>
1555
- <span class="cline-any cline-neutral">&nbsp;</span>
1556
1303
  <span class="cline-any cline-neutral">&nbsp;</span>
1557
1304
  <span class="cline-any cline-neutral">&nbsp;</span>
1558
1305
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1564,10 +1311,6 @@
1564
1311
  <span class="cline-any cline-neutral">&nbsp;</span>
1565
1312
  <span class="cline-any cline-neutral">&nbsp;</span>
1566
1313
  <span class="cline-any cline-neutral">&nbsp;</span>
1567
- <span class="cline-any cline-neutral">&nbsp;</span>
1568
- <span class="cline-any cline-neutral">&nbsp;</span>
1569
- <span class="cline-any cline-neutral">&nbsp;</span>
1570
- <span class="cline-any cline-neutral">&nbsp;</span>
1571
1314
  <span class="cline-any cline-no">&nbsp;</span>
1572
1315
  <span class="cline-any cline-no">&nbsp;</span>
1573
1316
  <span class="cline-any cline-no">&nbsp;</span>
@@ -1583,39 +1326,6 @@
1583
1326
  <span class="cline-any cline-no">&nbsp;</span>
1584
1327
  <span class="cline-any cline-neutral">&nbsp;</span>
1585
1328
  <span class="cline-any cline-neutral">&nbsp;</span>
1586
- <span class="cline-any cline-neutral">&nbsp;</span>
1587
- <span class="cline-any cline-neutral">&nbsp;</span>
1588
- <span class="cline-any cline-neutral">&nbsp;</span>
1589
- <span class="cline-any cline-neutral">&nbsp;</span>
1590
- <span class="cline-any cline-neutral">&nbsp;</span>
1591
- <span class="cline-any cline-neutral">&nbsp;</span>
1592
- <span class="cline-any cline-no">&nbsp;</span>
1593
- <span class="cline-any cline-no">&nbsp;</span>
1594
- <span class="cline-any cline-no">&nbsp;</span>
1595
- <span class="cline-any cline-no">&nbsp;</span>
1596
- <span class="cline-any cline-no">&nbsp;</span>
1597
- <span class="cline-any cline-no">&nbsp;</span>
1598
- <span class="cline-any cline-no">&nbsp;</span>
1599
- <span class="cline-any cline-neutral">&nbsp;</span>
1600
- <span class="cline-any cline-neutral">&nbsp;</span>
1601
- <span class="cline-any cline-neutral">&nbsp;</span>
1602
- <span class="cline-any cline-neutral">&nbsp;</span>
1603
- <span class="cline-any cline-no">&nbsp;</span>
1604
- <span class="cline-any cline-no">&nbsp;</span>
1605
- <span class="cline-any cline-neutral">&nbsp;</span>
1606
- <span class="cline-any cline-no">&nbsp;</span>
1607
- <span class="cline-any cline-neutral">&nbsp;</span>
1608
- <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
1613
- <span class="cline-any cline-no">&nbsp;</span>
1614
- <span class="cline-any cline-neutral">&nbsp;</span>
1615
- <span class="cline-any cline-neutral">&nbsp;</span>
1616
- <span class="cline-any cline-no">&nbsp;</span>
1617
- <span class="cline-any cline-neutral">&nbsp;</span>
1618
- <span class="cline-any cline-neutral">&nbsp;</span>
1619
1329
  <span class="cline-any cline-no">&nbsp;</span>
1620
1330
  <span class="cline-any cline-neutral">&nbsp;</span>
1621
1331
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1784,54 +1494,12 @@
1784
1494
  <span class="cline-any cline-neutral">&nbsp;</span>
1785
1495
  <span class="cline-any cline-neutral">&nbsp;</span>
1786
1496
  <span class="cline-any cline-neutral">&nbsp;</span>
1787
- <span class="cline-any cline-no">&nbsp;</span>
1788
- <span class="cline-any cline-no">&nbsp;</span>
1789
- <span class="cline-any cline-no">&nbsp;</span>
1790
- <span class="cline-any cline-no">&nbsp;</span>
1791
1497
  <span class="cline-any cline-neutral">&nbsp;</span>
1792
- <span class="cline-any cline-neutral">&nbsp;</span>
1793
- <span class="cline-any cline-no">&nbsp;</span>
1794
1498
  <span class="cline-any cline-no">&nbsp;</span>
1795
1499
  <span class="cline-any cline-no">&nbsp;</span>
1796
1500
  <span class="cline-any cline-neutral">&nbsp;</span>
1797
1501
  <span class="cline-any cline-no">&nbsp;</span>
1798
- <span class="cline-any cline-neutral">&nbsp;</span>
1799
- <span class="cline-any cline-neutral">&nbsp;</span>
1800
- <span class="cline-any cline-neutral">&nbsp;</span>
1801
- <span class="cline-any cline-neutral">&nbsp;</span>
1802
- <span class="cline-any cline-neutral">&nbsp;</span>
1803
- <span class="cline-any cline-neutral">&nbsp;</span>
1804
- <span class="cline-any cline-neutral">&nbsp;</span>
1805
- <span class="cline-any cline-no">&nbsp;</span>
1806
1502
  <span class="cline-any cline-no">&nbsp;</span>
1807
- <span class="cline-any cline-no">&nbsp;</span>
1808
- <span class="cline-any cline-no">&nbsp;</span>
1809
- <span class="cline-any cline-neutral">&nbsp;</span>
1810
- <span class="cline-any cline-no">&nbsp;</span>
1811
- <span class="cline-any cline-no">&nbsp;</span>
1812
- <span class="cline-any cline-no">&nbsp;</span>
1813
- <span class="cline-any cline-neutral">&nbsp;</span>
1814
- <span class="cline-any cline-neutral">&nbsp;</span>
1815
- <span class="cline-any cline-neutral">&nbsp;</span>
1816
- <span class="cline-any cline-neutral">&nbsp;</span>
1817
- <span class="cline-any cline-neutral">&nbsp;</span>
1818
- <span class="cline-any cline-neutral">&nbsp;</span>
1819
- <span class="cline-any cline-neutral">&nbsp;</span>
1820
- <span class="cline-any cline-neutral">&nbsp;</span>
1821
- <span class="cline-any cline-neutral">&nbsp;</span>
1822
- <span class="cline-any cline-neutral">&nbsp;</span>
1823
- <span class="cline-any cline-neutral">&nbsp;</span>
1824
- <span class="cline-any cline-neutral">&nbsp;</span>
1825
- <span class="cline-any cline-neutral">&nbsp;</span>
1826
- <span class="cline-any cline-neutral">&nbsp;</span>
1827
- <span class="cline-any cline-neutral">&nbsp;</span>
1828
- <span class="cline-any cline-neutral">&nbsp;</span>
1829
- <span class="cline-any cline-neutral">&nbsp;</span>
1830
- <span class="cline-any cline-neutral">&nbsp;</span>
1831
- <span class="cline-any cline-neutral">&nbsp;</span>
1832
- <span class="cline-any cline-neutral">&nbsp;</span>
1833
- <span class="cline-any cline-neutral">&nbsp;</span>
1834
- <span class="cline-any cline-neutral">&nbsp;</span>
1835
1503
  <span class="cline-any cline-neutral">&nbsp;</span>
1836
1504
  <span class="cline-any cline-neutral">&nbsp;</span>
1837
1505
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1839,147 +1507,56 @@
1839
1507
  <span class="cline-any cline-neutral">&nbsp;</span>
1840
1508
  <span class="cline-any cline-no">&nbsp;</span>
1841
1509
  <span class="cline-any cline-no">&nbsp;</span>
1842
- <span class="cline-any cline-no">&nbsp;</span>
1843
- <span class="cline-any cline-neutral">&nbsp;</span>
1844
- <span class="cline-any cline-neutral">&nbsp;</span>
1845
- <span class="cline-any cline-neutral">&nbsp;</span>
1846
- <span class="cline-any cline-neutral">&nbsp;</span>
1847
- <span class="cline-any cline-neutral">&nbsp;</span>
1848
1510
  <span class="cline-any cline-neutral">&nbsp;</span>
1849
- <span class="cline-any cline-neutral">&nbsp;</span>
1850
- <span class="cline-any cline-no">&nbsp;</span>
1851
- <span class="cline-any cline-no">&nbsp;</span>
1852
- <span class="cline-any cline-no">&nbsp;</span>
1853
1511
  <span class="cline-any cline-no">&nbsp;</span>
1854
1512
  <span class="cline-any cline-no">&nbsp;</span>
1855
1513
  <span class="cline-any cline-neutral">&nbsp;</span>
1856
1514
  <span class="cline-any cline-no">&nbsp;</span>
1857
- <span class="cline-any cline-no">&nbsp;</span>
1858
- <span class="cline-any cline-no">&nbsp;</span>
1859
- <span class="cline-any cline-no">&nbsp;</span>
1860
- <span class="cline-any cline-no">&nbsp;</span>
1861
- <span class="cline-any cline-no">&nbsp;</span>
1862
- <span class="cline-any cline-no">&nbsp;</span>
1863
- <span class="cline-any cline-no">&nbsp;</span>
1864
1515
  <span class="cline-any cline-neutral">&nbsp;</span>
1865
1516
  <span class="cline-any cline-no">&nbsp;</span>
1866
- <span class="cline-any cline-no">&nbsp;</span>
1867
- <span class="cline-any cline-no">&nbsp;</span>
1868
1517
  <span class="cline-any cline-neutral">&nbsp;</span>
1869
1518
  <span class="cline-any cline-no">&nbsp;</span>
1870
- <span class="cline-any cline-no">&nbsp;</span>
1871
- <span class="cline-any cline-no">&nbsp;</span>
1872
- <span class="cline-any cline-no">&nbsp;</span>
1873
1519
  <span class="cline-any cline-neutral">&nbsp;</span>
1874
- <span class="cline-any cline-no">&nbsp;</span>
1875
- <span class="cline-any cline-neutral">&nbsp;</span>
1876
- <span class="cline-any cline-no">&nbsp;</span>
1877
- <span class="cline-any cline-neutral">&nbsp;</span>
1878
- <span class="cline-any cline-no">&nbsp;</span>
1879
1520
  <span class="cline-any cline-neutral">&nbsp;</span>
1880
1521
  <span class="cline-any cline-neutral">&nbsp;</span>
1881
1522
  <span class="cline-any cline-neutral">&nbsp;</span>
1882
1523
  <span class="cline-any cline-neutral">&nbsp;</span>
1883
1524
  <span class="cline-any cline-no">&nbsp;</span>
1884
- <span class="cline-any cline-neutral">&nbsp;</span>
1885
1525
  <span class="cline-any cline-no">&nbsp;</span>
1886
1526
  <span class="cline-any cline-neutral">&nbsp;</span>
1887
- <span class="cline-any cline-no">&nbsp;</span>
1888
- <span class="cline-any cline-no">&nbsp;</span>
1889
1527
  <span class="cline-any cline-neutral">&nbsp;</span>
1890
- <span class="cline-any cline-no">&nbsp;</span>
1891
- <span class="cline-any cline-no">&nbsp;</span>
1892
- <span class="cline-any cline-neutral">&nbsp;</span>
1893
- <span class="cline-any cline-no">&nbsp;</span>
1894
- <span class="cline-any cline-neutral">&nbsp;</span>
1895
- <span class="cline-any cline-neutral">&nbsp;</span>
1896
- <span class="cline-any cline-neutral">&nbsp;</span>
1897
- <span class="cline-any cline-no">&nbsp;</span>
1898
- <span class="cline-any cline-no">&nbsp;</span>
1899
- <span class="cline-any cline-no">&nbsp;</span>
1900
- <span class="cline-any cline-no">&nbsp;</span>
1901
- <span class="cline-any cline-no">&nbsp;</span>
1902
- <span class="cline-any cline-no">&nbsp;</span>
1903
- <span class="cline-any cline-no">&nbsp;</span>
1904
- <span class="cline-any cline-no">&nbsp;</span>
1905
- <span class="cline-any cline-no">&nbsp;</span>
1906
- <span class="cline-any cline-no">&nbsp;</span>
1907
1528
  <span class="cline-any cline-neutral">&nbsp;</span>
1908
- <span class="cline-any cline-no">&nbsp;</span>
1909
- <span class="cline-any cline-no">&nbsp;</span>
1910
- <span class="cline-any cline-no">&nbsp;</span>
1911
- <span class="cline-any cline-no">&nbsp;</span>
1912
- <span class="cline-any cline-no">&nbsp;</span>
1913
1529
  <span class="cline-any cline-neutral">&nbsp;</span>
1914
- <span class="cline-any cline-no">&nbsp;</span>
1915
1530
  <span class="cline-any cline-neutral">&nbsp;</span>
1916
- <span class="cline-any cline-no">&nbsp;</span>
1917
1531
  <span class="cline-any cline-neutral">&nbsp;</span>
1918
- <span class="cline-any cline-no">&nbsp;</span>
1919
1532
  <span class="cline-any cline-neutral">&nbsp;</span>
1920
1533
  <span class="cline-any cline-neutral">&nbsp;</span>
1921
1534
  <span class="cline-any cline-neutral">&nbsp;</span>
1922
1535
  <span class="cline-any cline-neutral">&nbsp;</span>
1923
1536
  <span class="cline-any cline-no">&nbsp;</span>
1924
- <span class="cline-any cline-neutral">&nbsp;</span>
1925
1537
  <span class="cline-any cline-no">&nbsp;</span>
1926
- <span class="cline-any cline-neutral">&nbsp;</span>
1927
1538
  <span class="cline-any cline-no">&nbsp;</span>
1928
1539
  <span class="cline-any cline-no">&nbsp;</span>
1929
- <span class="cline-any cline-neutral">&nbsp;</span>
1930
- <span class="cline-any cline-neutral">&nbsp;</span>
1931
- <span class="cline-any cline-neutral">&nbsp;</span>
1932
- <span class="cline-any cline-neutral">&nbsp;</span>
1933
- <span class="cline-any cline-neutral">&nbsp;</span>
1934
- <span class="cline-any cline-neutral">&nbsp;</span>
1935
- <span class="cline-any cline-neutral">&nbsp;</span>
1936
- <span class="cline-any cline-neutral">&nbsp;</span>
1937
- <span class="cline-any cline-neutral">&nbsp;</span>
1938
- <span class="cline-any cline-neutral">&nbsp;</span>
1939
1540
  <span class="cline-any cline-no">&nbsp;</span>
1940
1541
  <span class="cline-any cline-neutral">&nbsp;</span>
1941
- <span class="cline-any cline-neutral">&nbsp;</span>
1942
- <span class="cline-any cline-neutral">&nbsp;</span>
1943
- <span class="cline-any cline-neutral">&nbsp;</span>
1944
- <span class="cline-any cline-neutral">&nbsp;</span>
1945
- <span class="cline-any cline-neutral">&nbsp;</span>
1946
1542
  <span class="cline-any cline-no">&nbsp;</span>
1947
1543
  <span class="cline-any cline-neutral">&nbsp;</span>
1948
- <span class="cline-any cline-no">&nbsp;</span>
1949
1544
  <span class="cline-any cline-neutral">&nbsp;</span>
1950
1545
  <span class="cline-any cline-neutral">&nbsp;</span>
1951
1546
  <span class="cline-any cline-neutral">&nbsp;</span>
1952
- <span class="cline-any cline-no">&nbsp;</span>
1953
- <span class="cline-any cline-no">&nbsp;</span>
1954
- <span class="cline-any cline-no">&nbsp;</span>
1955
1547
  <span class="cline-any cline-neutral">&nbsp;</span>
1956
1548
  <span class="cline-any cline-no">&nbsp;</span>
1957
- <span class="cline-any cline-no">&nbsp;</span>
1958
- <span class="cline-any cline-no">&nbsp;</span>
1959
- <span class="cline-any cline-no">&nbsp;</span>
1960
1549
  <span class="cline-any cline-neutral">&nbsp;</span>
1961
- <span class="cline-any cline-no">&nbsp;</span>
1962
1550
  <span class="cline-any cline-neutral">&nbsp;</span>
1963
1551
  <span class="cline-any cline-neutral">&nbsp;</span>
1964
1552
  <span class="cline-any cline-neutral">&nbsp;</span>
1965
1553
  <span class="cline-any cline-neutral">&nbsp;</span>
1966
- <span class="cline-any cline-no">&nbsp;</span>
1967
- <span class="cline-any cline-no">&nbsp;</span>
1968
- <span class="cline-any cline-no">&nbsp;</span>
1969
1554
  <span class="cline-any cline-neutral">&nbsp;</span>
1970
- <span class="cline-any cline-no">&nbsp;</span>
1971
- <span class="cline-any cline-no">&nbsp;</span>
1972
- <span class="cline-any cline-no">&nbsp;</span>
1973
1555
  <span class="cline-any cline-neutral">&nbsp;</span>
1974
1556
  <span class="cline-any cline-neutral">&nbsp;</span>
1975
- <span class="cline-any cline-no">&nbsp;</span>
1976
- <span class="cline-any cline-no">&nbsp;</span>
1977
1557
  <span class="cline-any cline-neutral">&nbsp;</span>
1978
- <span class="cline-any cline-no">&nbsp;</span>
1979
1558
  <span class="cline-any cline-neutral">&nbsp;</span>
1980
- <span class="cline-any cline-no">&nbsp;</span>
1981
1559
  <span class="cline-any cline-neutral">&nbsp;</span>
1982
- <span class="cline-any cline-no">&nbsp;</span>
1983
1560
  <span class="cline-any cline-neutral">&nbsp;</span>
1984
1561
  <span class="cline-any cline-neutral">&nbsp;</span>
1985
1562
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -1988,24 +1565,8 @@
1988
1565
  <span class="cline-any cline-no">&nbsp;</span>
1989
1566
  <span class="cline-any cline-no">&nbsp;</span>
1990
1567
  <span class="cline-any cline-neutral">&nbsp;</span>
1991
- <span class="cline-any cline-neutral">&nbsp;</span>
1992
- <span class="cline-any cline-neutral">&nbsp;</span>
1993
- <span class="cline-any cline-neutral">&nbsp;</span>
1994
- <span class="cline-any cline-neutral">&nbsp;</span>
1995
- <span class="cline-any cline-neutral">&nbsp;</span>
1996
- <span class="cline-any cline-neutral">&nbsp;</span>
1997
- <span class="cline-any cline-neutral">&nbsp;</span>
1998
- <span class="cline-any cline-neutral">&nbsp;</span>
1999
- <span class="cline-any cline-neutral">&nbsp;</span>
2000
- <span class="cline-any cline-no">&nbsp;</span>
2001
- <span class="cline-any cline-no">&nbsp;</span>
2002
1568
  <span class="cline-any cline-no">&nbsp;</span>
2003
1569
  <span class="cline-any cline-neutral">&nbsp;</span>
2004
- <span class="cline-any cline-no">&nbsp;</span>
2005
- <span class="cline-any cline-neutral">&nbsp;</span>
2006
- <span class="cline-any cline-neutral">&nbsp;</span>
2007
- <span class="cline-any cline-neutral">&nbsp;</span>
2008
- <span class="cline-any cline-neutral">&nbsp;</span>
2009
1570
  <span class="cline-any cline-neutral">&nbsp;</span>
2010
1571
  <span class="cline-any cline-no">&nbsp;</span>
2011
1572
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -2014,40 +1575,10 @@
2014
1575
  <span class="cline-any cline-neutral">&nbsp;</span>
2015
1576
  <span class="cline-any cline-neutral">&nbsp;</span>
2016
1577
  <span class="cline-any cline-neutral">&nbsp;</span>
2017
- <span class="cline-any cline-neutral">&nbsp;</span>
2018
- <span class="cline-any cline-neutral">&nbsp;</span>
2019
- <span class="cline-any cline-neutral">&nbsp;</span>
2020
- <span class="cline-any cline-neutral">&nbsp;</span>
2021
- <span class="cline-any cline-neutral">&nbsp;</span>
2022
- <span class="cline-any cline-neutral">&nbsp;</span>
2023
- <span class="cline-any cline-neutral">&nbsp;</span>
2024
- <span class="cline-any cline-neutral">&nbsp;</span>
2025
- <span class="cline-any cline-neutral">&nbsp;</span>
2026
- <span class="cline-any cline-neutral">&nbsp;</span>
2027
- <span class="cline-any cline-neutral">&nbsp;</span>
2028
- <span class="cline-any cline-neutral">&nbsp;</span>
2029
- <span class="cline-any cline-neutral">&nbsp;</span>
2030
1578
  <span class="cline-any cline-no">&nbsp;</span>
2031
1579
  <span class="cline-any cline-no">&nbsp;</span>
2032
1580
  <span class="cline-any cline-neutral">&nbsp;</span>
2033
1581
  <span class="cline-any cline-no">&nbsp;</span>
2034
- <span class="cline-any cline-neutral">&nbsp;</span>
2035
- <span class="cline-any cline-neutral">&nbsp;</span>
2036
- <span class="cline-any cline-no">&nbsp;</span>
2037
- <span class="cline-any cline-neutral">&nbsp;</span>
2038
- <span class="cline-any cline-neutral">&nbsp;</span>
2039
- <span class="cline-any cline-neutral">&nbsp;</span>
2040
- <span class="cline-any cline-neutral">&nbsp;</span>
2041
- <span class="cline-any cline-neutral">&nbsp;</span>
2042
- <span class="cline-any cline-neutral">&nbsp;</span>
2043
- <span class="cline-any cline-no">&nbsp;</span>
2044
- <span class="cline-any cline-no">&nbsp;</span>
2045
- <span class="cline-any cline-no">&nbsp;</span>
2046
- <span class="cline-any cline-no">&nbsp;</span>
2047
- <span class="cline-any cline-neutral">&nbsp;</span>
2048
- <span class="cline-any cline-no">&nbsp;</span>
2049
- <span class="cline-any cline-no">&nbsp;</span>
2050
- <span class="cline-any cline-no">&nbsp;</span>
2051
1582
  <span class="cline-any cline-no">&nbsp;</span>
2052
1583
  <span class="cline-any cline-neutral">&nbsp;</span>
2053
1584
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -2078,8 +1609,6 @@
2078
1609
  <span class="cline-any cline-neutral">&nbsp;</span>
2079
1610
  <span class="cline-any cline-neutral">&nbsp;</span>
2080
1611
  <span class="cline-any cline-no">&nbsp;</span>
2081
- <span class="cline-any cline-no">&nbsp;</span>
2082
- <span class="cline-any cline-no">&nbsp;</span>
2083
1612
  <span class="cline-any cline-neutral">&nbsp;</span>
2084
1613
  <span class="cline-any cline-no">&nbsp;</span>
2085
1614
  <span class="cline-any cline-no">&nbsp;</span>
@@ -2096,16 +1625,6 @@
2096
1625
  <span class="cline-any cline-neutral">&nbsp;</span>
2097
1626
  <span class="cline-any cline-neutral">&nbsp;</span>
2098
1627
  <span class="cline-any cline-neutral">&nbsp;</span>
2099
- <span class="cline-any cline-no">&nbsp;</span>
2100
- <span class="cline-any cline-no">&nbsp;</span>
2101
- <span class="cline-any cline-neutral">&nbsp;</span>
2102
- <span class="cline-any cline-no">&nbsp;</span>
2103
- <span class="cline-any cline-neutral">&nbsp;</span>
2104
- <span class="cline-any cline-neutral">&nbsp;</span>
2105
- <span class="cline-any cline-no">&nbsp;</span>
2106
- <span class="cline-any cline-no">&nbsp;</span>
2107
- <span class="cline-any cline-neutral">&nbsp;</span>
2108
- <span class="cline-any cline-no">&nbsp;</span>
2109
1628
  <span class="cline-any cline-neutral">&nbsp;</span>
2110
1629
  <span class="cline-any cline-no">&nbsp;</span>
2111
1630
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -2117,46 +1636,29 @@
2117
1636
  <span class="cline-any cline-no">&nbsp;</span>
2118
1637
  <span class="cline-any cline-neutral">&nbsp;</span>
2119
1638
  <span class="cline-any cline-no">&nbsp;</span>
2120
- <span class="cline-any cline-no">&nbsp;</span>
2121
- <span class="cline-any cline-no">&nbsp;</span>
2122
- <span class="cline-any cline-no">&nbsp;</span>
2123
- <span class="cline-any cline-no">&nbsp;</span>
2124
- <span class="cline-any cline-no">&nbsp;</span>
2125
- <span class="cline-any cline-no">&nbsp;</span>
2126
- <span class="cline-any cline-neutral">&nbsp;</span>
2127
- <span class="cline-any cline-no">&nbsp;</span>
2128
- <span class="cline-any cline-neutral">&nbsp;</span>
2129
- <span class="cline-any cline-neutral">&nbsp;</span>
2130
- <span class="cline-any cline-no">&nbsp;</span>
2131
1639
  <span class="cline-any cline-neutral">&nbsp;</span>
2132
1640
  <span class="cline-any cline-neutral">&nbsp;</span>
2133
1641
  <span class="cline-any cline-no">&nbsp;</span>
2134
1642
  <span class="cline-any cline-no">&nbsp;</span>
2135
1643
  <span class="cline-any cline-neutral">&nbsp;</span>
2136
1644
  <span class="cline-any cline-no">&nbsp;</span>
2137
- <span class="cline-any cline-no">&nbsp;</span>
2138
1645
  <span class="cline-any cline-neutral">&nbsp;</span>
2139
1646
  <span class="cline-any cline-no">&nbsp;</span>
1647
+ <span class="cline-any cline-no">&nbsp;</span>
2140
1648
  <span class="cline-any cline-neutral">&nbsp;</span>
2141
1649
  <span class="cline-any cline-neutral">&nbsp;</span>
2142
1650
  <span class="cline-any cline-no">&nbsp;</span>
2143
1651
  <span class="cline-any cline-no">&nbsp;</span>
2144
- <span class="cline-any cline-neutral">&nbsp;</span>
2145
1652
  <span class="cline-any cline-no">&nbsp;</span>
2146
- <span class="cline-any cline-no">&nbsp;</span>
2147
- <span class="cline-any cline-neutral">&nbsp;</span>
2148
1653
  <span class="cline-any cline-neutral">&nbsp;</span>
2149
1654
  <span class="cline-any cline-no">&nbsp;</span>
2150
1655
  <span class="cline-any cline-no">&nbsp;</span>
2151
1656
  <span class="cline-any cline-neutral">&nbsp;</span>
2152
1657
  <span class="cline-any cline-neutral">&nbsp;</span>
2153
1658
  <span class="cline-any cline-no">&nbsp;</span>
2154
- <span class="cline-any cline-no">&nbsp;</span>
2155
- <span class="cline-any cline-neutral">&nbsp;</span>
2156
1659
  <span class="cline-any cline-neutral">&nbsp;</span>
2157
1660
  <span class="cline-any cline-no">&nbsp;</span>
2158
1661
  <span class="cline-any cline-neutral">&nbsp;</span>
2159
- <span class="cline-any cline-neutral">&nbsp;</span>
2160
1662
  <span class="cline-any cline-no">&nbsp;</span>
2161
1663
  <span class="cline-any cline-neutral">&nbsp;</span>
2162
1664
  <span class="cline-any cline-no">&nbsp;</span>
@@ -2201,13 +1703,11 @@
2201
1703
  <span class="cline-any cline-no">&nbsp;</span>
2202
1704
  <span class="cline-any cline-no">&nbsp;</span>
2203
1705
  <span class="cline-any cline-no">&nbsp;</span>
2204
- <span class="cline-any cline-no">&nbsp;</span>
2205
1706
  <span class="cline-any cline-neutral">&nbsp;</span>
2206
1707
  <span class="cline-any cline-neutral">&nbsp;</span>
2207
1708
  <span class="cline-any cline-no">&nbsp;</span>
2208
1709
  <span class="cline-any cline-no">&nbsp;</span>
2209
1710
  <span class="cline-any cline-no">&nbsp;</span>
2210
- <span class="cline-any cline-no">&nbsp;</span>
2211
1711
  <span class="cline-any cline-neutral">&nbsp;</span>
2212
1712
  <span class="cline-any cline-neutral">&nbsp;</span>
2213
1713
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -2257,11 +1757,27 @@
2257
1757
  <span class="cline-any cline-neutral">&nbsp;</span>
2258
1758
  <span class="cline-any cline-neutral">&nbsp;</span>
2259
1759
  <span class="cline-any cline-neutral">&nbsp;</span>
1760
+ <span class="cline-any cline-neutral">&nbsp;</span>
1761
+ <span class="cline-any cline-neutral">&nbsp;</span>
1762
+ <span class="cline-any cline-neutral">&nbsp;</span>
1763
+ <span class="cline-any cline-neutral">&nbsp;</span>
1764
+ <span class="cline-any cline-neutral">&nbsp;</span>
1765
+ <span class="cline-any cline-no">&nbsp;</span>
2260
1766
  <span class="cline-any cline-no">&nbsp;</span>
2261
1767
  <span class="cline-any cline-no">&nbsp;</span>
2262
1768
  <span class="cline-any cline-neutral">&nbsp;</span>
2263
1769
  <span class="cline-any cline-neutral">&nbsp;</span>
2264
1770
  <span class="cline-any cline-neutral">&nbsp;</span>
1771
+ <span class="cline-any cline-neutral">&nbsp;</span>
1772
+ <span class="cline-any cline-neutral">&nbsp;</span>
1773
+ <span class="cline-any cline-no">&nbsp;</span>
1774
+ <span class="cline-any cline-neutral">&nbsp;</span>
1775
+ <span class="cline-any cline-no">&nbsp;</span>
1776
+ <span class="cline-any cline-neutral">&nbsp;</span>
1777
+ <span class="cline-any cline-neutral">&nbsp;</span>
1778
+ <span class="cline-any cline-neutral">&nbsp;</span>
1779
+ <span class="cline-any cline-neutral">&nbsp;</span>
1780
+ <span class="cline-any cline-no">&nbsp;</span>
2265
1781
  <span class="cline-any cline-no">&nbsp;</span>
2266
1782
  <span class="cline-any cline-no">&nbsp;</span>
2267
1783
  <span class="cline-any cline-no">&nbsp;</span>
@@ -2281,10 +1797,16 @@
2281
1797
  <span class="cline-any cline-neutral">&nbsp;</span>
2282
1798
  <span class="cline-any cline-neutral">&nbsp;</span>
2283
1799
  <span class="cline-any cline-neutral">&nbsp;</span>
2284
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" >import ConditionsManager from '../modules/conditionsManager.js'</span>
2285
- <span class="cstat-no" title="statement not covered" >import FeatureFlags from '../modules/featureFlags.js'</span>
2286
- import type Message from './messages.gen.js'
2287
- <span class="cstat-no" title="statement not covered" >import { Timestamp, Metadata, UserID, Type as MType, TabChange, TabData } from './messages.gen.js'</span>
1800
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type Message from './messages.gen.js'
1801
+ <span class="cstat-no" title="statement not covered" >import {</span>
1802
+ Timestamp,
1803
+ Metadata,
1804
+ UserID,
1805
+ Type as MType,
1806
+ TabChange,
1807
+ TabData,
1808
+ WSChannel,
1809
+ } from './messages.gen.js'
2288
1810
  <span class="cstat-no" title="statement not covered" >import {</span>
2289
1811
  now,
2290
1812
  adjustTimeOrigin,
@@ -2310,6 +1832,7 @@ import type { Options as SessOptions } from './session.js'
2310
1832
  import type { Options as NetworkOptions } from '../modules/network.js'
2311
1833
  <span class="cstat-no" title="statement not covered" >import CanvasRecorder from './canvas.js'</span>
2312
1834
  <span class="cstat-no" title="statement not covered" >import UserTestManager from '../modules/userTesting/index.js'</span>
1835
+ <span class="cstat-no" title="statement not covered" >import TagWatcher from '../modules/tagWatcher.js'</span>
2313
1836
  &nbsp;
2314
1837
  import type {
2315
1838
  Options as WebworkerOptions,
@@ -2337,7 +1860,6 @@ interface OnStartInfo {
2337
1860
  &nbsp;
2338
1861
  const CANCELED = <span class="cstat-no" title="statement not covered" >'canceled' as const</span>
2339
1862
  const uxtStorageKey = <span class="cstat-no" title="statement not covered" >'or_uxt_active'</span>
2340
- const bufferStorageKey = <span class="cstat-no" title="statement not covered" >'or_buffer_1'</span>
2341
1863
  const START_ERROR = <span class="cstat-no" title="statement not covered" >':(' as const</span>
2342
1864
  type SuccessfulStart = OnStartInfo &amp; {
2343
1865
  success: true
@@ -2375,7 +1897,6 @@ type CommitCallback = (messages: Array&lt;Message&gt;) =&gt; void
2375
1897
  <span class="cstat-no" title="statement not covered" > NotActive,</span>
2376
1898
  <span class="cstat-no" title="statement not covered" > Starting,</span>
2377
1899
  <span class="cstat-no" title="statement not covered" > Active,</span>
2378
- <span class="cstat-no" title="statement not covered" > ColdStart,</span>
2379
1900
  }
2380
1901
  &nbsp;
2381
1902
  type AppOptions = {
@@ -2429,14 +1950,8 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
2429
1950
  readonly localStorage: Storage
2430
1951
  readonly sessionStorage: Storage
2431
1952
  private readonly <span class="cstat-no" title="statement not covered" >messages: Array&lt;Message&gt; = []</span>
2432
- /**
2433
- * we need 2 buffers so we don't lose anything
2434
- * @read coldStart implementation
2435
- * */
2436
- private <span class="cstat-no" title="statement not covered" >bufferedMessages1: Array&lt;Message&gt; = []</span>
2437
- private readonly <span class="cstat-no" title="statement not covered" >bufferedMessages2: Array&lt;Message&gt; = []</span>
2438
1953
  /* private */
2439
- readonly observer: Observer // non-private for attachContextCallback
1954
+ readonly observer: Observer // non-privat for attachContextCallback
2440
1955
  private readonly <span class="cstat-no" title="statement not covered" >startCallbacks: Array&lt;StartCallback&gt; = []</span>
2441
1956
  private readonly <span class="cstat-no" title="statement not covered" >stopCallbacks: Array&lt;() =&gt; any&gt; = []</span>
2442
1957
  private readonly <span class="cstat-no" title="statement not covered" >commitCallbacks: Array&lt;CommitCallback&gt; = []</span>
@@ -2454,15 +1969,12 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
2454
1969
  public attributeSender: AttributeSender
2455
1970
  private <span class="cstat-no" title="statement not covered" >canvasRecorder: CanvasRecorder | null = null</span>
2456
1971
  private uxtManager: UserTestManager
2457
- private <span class="cstat-no" title="statement not covered" >conditionsManager: ConditionsManager | null = null</span>
2458
- public featureFlags: FeatureFlags
2459
- &nbsp;
2460
- <span class="fstat-no" title="function not covered" > constructor(</span>
2461
- projectKey: string,
2462
- sessionToken: string | undefined,
2463
- options: Partial&lt;Options&gt;,
2464
- private readonly <span class="cstat-no" title="statement not covered" >signalError: (error: string, apis: string[]) =&gt; void,</span>
2465
- ) {
1972
+ private tagWatcher: TagWatcher
1973
+ &nbsp;
1974
+ <span class="fstat-no" title="function not covered" > constructor(p</span>rojectKey: string, sessionToken: string | undefined, options: Partial&lt;Options&gt;) {
1975
+ // if (options.onStart !== undefined) {
1976
+ // deprecationWarn("'onStart' option", "tracker.start().then(/* handle session info */)")
1977
+ // } ?? maybe onStart is good
2466
1978
  <span class="cstat-no" title="statement not covered" > this.contextId = Math.random().toString(36).slice(2)</span>
2467
1979
  <span class="cstat-no" title="statement not covered" > this.projectKey = projectKey</span>
2468
1980
  <span class="cstat-no" title="statement not covered" > this.networkOptions = options.network</span>
@@ -2506,7 +2018,7 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
2506
2018
  <span class="cstat-no" title="statement not covered" > this.notify = new Logger(this.options.verbose ? LogLevel.Warnings : LogLevel.Silent)</span>
2507
2019
  <span class="cstat-no" title="statement not covered" > this.session = new Session(this, this.options)</span>
2508
2020
  <span class="cstat-no" title="statement not covered" > this.attributeSender = new AttributeSender(this, Boolean(this.options.disableStringDict))</span>
2509
- <span class="cstat-no" title="statement not covered" > this.featureFlags = new FeatureFlags(this)</span>
2021
+ <span class="cstat-no" title="statement not covered" > this.tagWatcher = new TagWatcher(this.sessionStorage, this.debug.error, <span class="fstat-no" title="function not covered" >(t</span>ag) =&gt; <span class="cstat-no" title="statement not covered" >console.log(`Tag ${tag} has been rendered`))</span></span>
2510
2022
  <span class="cstat-no" title="statement not covered" > this.session.attachUpdateCallback(<span class="fstat-no" title="function not covered" >({</span> userID, metadata }) =&gt; {</span>
2511
2023
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (userID != null) {</span>
2512
2024
  // TODO: nullable userID
@@ -2534,25 +2046,26 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
2534
2046
  <span class="cstat-no" title="statement not covered" > this.stop(false)</span>
2535
2047
  <span class="cstat-no" title="statement not covered" > void this.start({}, true)</span>
2536
2048
  } else <span class="cstat-no" title="statement not covered" >if (data === 'not_init') {</span>
2537
- <span class="cstat-no" title="statement not covered" > console.warn('WebWorker: writer not initialised. Restarting tracker')</span>
2049
+ <span class="cstat-no" title="statement not covered" > this.debug.warn('OR WebWorker: writer not initialised. Restarting tracker')</span>
2538
2050
  } else <span class="cstat-no" title="statement not covered" >if (data.type === 'failure') {</span>
2539
2051
  <span class="cstat-no" title="statement not covered" > this.stop(false)</span>
2052
+ <span class="cstat-no" title="statement not covered" > this.debug.error('worker_failed', data.reason)</span>
2540
2053
  <span class="cstat-no" title="statement not covered" > this._debug('worker_failed', data.reason)</span>
2541
2054
  } else <span class="cstat-no" title="statement not covered" ><span class="missing-if-branch" title="if path not taken" >I</span>if (data.type === 'compress') {</span>
2542
2055
  const batch = <span class="cstat-no" title="statement not covered" >data.batch</span>
2543
2056
  const batchSize = <span class="cstat-no" title="statement not covered" >batch.byteLength</span>
2544
2057
  <span class="cstat-no" title="statement not covered" > if (batchSize &gt; this.compressionThreshold) {</span>
2545
2058
  <span class="cstat-no" title="statement not covered" > gzip(data.batch, { mtime: 0 }, <span class="fstat-no" title="function not covered" >(e</span>rr, result) =&gt; {</span>
2546
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (err) {</span>
2547
- <span class="cstat-no" title="statement not covered" > console.error('Openreplay compression error:', err)</span>
2059
+ <span class="cstat-no" title="statement not covered" > if (err) {</span>
2060
+ <span class="cstat-no" title="statement not covered" > this.debug.error('Openreplay compression error:', err)</span>
2548
2061
  <span class="cstat-no" title="statement not covered" > this.stop(false)</span>
2549
2062
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.restartAttempts &lt; 3) {</span>
2550
2063
  <span class="cstat-no" title="statement not covered" > this.restartAttempts += 1</span>
2551
2064
  <span class="cstat-no" title="statement not covered" > void this.start({}, true)</span>
2552
2065
  }
2066
+ } else {
2067
+ <span class="cstat-no" title="statement not covered" > this.worker?.postMessage({ type: 'compressed', batch: result })</span>
2553
2068
  }
2554
- // @ts-ignore
2555
- <span class="cstat-no" title="statement not covered" > this.worker?.postMessage({ type: 'compressed', batch: result })</span>
2556
2069
  })
2557
2070
  } else {
2558
2071
  <span class="cstat-no" title="statement not covered" > this.worker?.postMessage({ type: 'uncompressed', batch: batch })</span>
@@ -2629,7 +2142,7 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
2629
2142
  body: JSON.stringify({
2630
2143
  context,
2631
2144
  // @ts-ignore
2632
- error: `${e as unknown as string}`,
2145
+ error: `${e}`,
2633
2146
  }),
2634
2147
  })
2635
2148
  }
@@ -2651,17 +2164,9 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
2651
2164
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this._usingOldFetchPlugin &amp;&amp; message[0] === MType.NetworkRequest) {</span>
2652
2165
  <span class="cstat-no" title="statement not covered" > return</span>
2653
2166
  }
2654
- &nbsp;
2655
2167
  // ====================================================
2656
- <span class="cstat-no" title="statement not covered" > if (this.activityState === ActivityState.ColdStart) {</span>
2657
- <span class="cstat-no" title="statement not covered" > this.bufferedMessages1.push(message)</span>
2658
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.singleBuffer) {</span>
2659
- <span class="cstat-no" title="statement not covered" > this.bufferedMessages2.push(message)</span>
2660
- }
2661
- <span class="cstat-no" title="statement not covered" > this.conditionsManager?.processMessage(message)</span>
2662
- } else {
2663
- <span class="cstat-no" title="statement not covered" > this.messages.push(message)</span>
2664
- }
2168
+ &nbsp;
2169
+ <span class="cstat-no" title="statement not covered" > this.messages.push(message)</span>
2665
2170
  // TODO: commit on start if there were `urgent` sends;
2666
2171
  // Clarify where urgent can be used for;
2667
2172
  // Clarify workflow for each type of message in case it was sent before start
@@ -2672,11 +2177,7 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
2672
2177
  }
2673
2178
  }
2674
2179
  &nbsp;
2675
- /**
2676
- * Normal workflow: add timestamp and tab data to batch, then commit it
2677
- * every ~30ms
2678
- * */
2679
- private <span class="fstat-no" title="function not covered" >_nCommit(</span>): void {
2180
+ private <span class="fstat-no" title="function not covered" >commit(</span>): void {
2680
2181
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.worker !== undefined &amp;&amp; this.messages.length) {</span>
2681
2182
  <span class="cstat-no" title="statement not covered" > requestIdleCb(<span class="fstat-no" title="function not covered" >() =</span>&gt; {</span>
2682
2183
  <span class="cstat-no" title="statement not covered" > this.messages.unshift(TabData(this.session.getTabId()))</span>
@@ -2688,39 +2189,6 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
2688
2189
  })
2689
2190
  }
2690
2191
  }
2691
- &nbsp;
2692
- <span class="cstat-no" title="statement not covered" > coldStartCommitN = 0</span>
2693
- &nbsp;
2694
- /**
2695
- * Cold start: add timestamp and tab data to both batches
2696
- * every 2nd tick, ~60ms
2697
- * this will make batches a bit larger and replay will work with bigger jumps every frame
2698
- * but in turn we don't overload batch writer on session start with 1000 batches
2699
- * */
2700
- private <span class="fstat-no" title="function not covered" >_cStartCommit(</span>): void {
2701
- <span class="cstat-no" title="statement not covered" > this.coldStartCommitN += 1</span>
2702
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.coldStartCommitN === 2) {</span>
2703
- <span class="cstat-no" title="statement not covered" > this.bufferedMessages1.push(Timestamp(this.timestamp()))</span>
2704
- <span class="cstat-no" title="statement not covered" > this.bufferedMessages1.push(TabData(this.session.getTabId()))</span>
2705
- <span class="cstat-no" title="statement not covered" > this.bufferedMessages2.push(Timestamp(this.timestamp()))</span>
2706
- <span class="cstat-no" title="statement not covered" > this.bufferedMessages2.push(TabData(this.session.getTabId()))</span>
2707
- <span class="cstat-no" title="statement not covered" > this.coldStartCommitN = 0</span>
2708
- }
2709
- }
2710
- &nbsp;
2711
- private <span class="fstat-no" title="function not covered" >commit(</span>): void {
2712
- <span class="cstat-no" title="statement not covered" > if (this.activityState === ActivityState.ColdStart) {</span>
2713
- <span class="cstat-no" title="statement not covered" > this._cStartCommit()</span>
2714
- } else {
2715
- <span class="cstat-no" title="statement not covered" > this._nCommit()</span>
2716
- }
2717
- }
2718
- &nbsp;
2719
- private <span class="fstat-no" title="function not covered" >postToWorker(</span>messages: Array&lt;Message&gt;) {
2720
- <span class="cstat-no" title="statement not covered" > this.worker?.postMessage(messages)</span>
2721
- <span class="cstat-no" title="statement not covered" > this.commitCallbacks.forEach(<span class="fstat-no" title="function not covered" >(c</span>b) =&gt; <span class="cstat-no" title="statement not covered" >cb(messages))</span></span>
2722
- <span class="cstat-no" title="statement not covered" > messages.length = 0</span>
2723
- }
2724
2192
  &nbsp;
2725
2193
  private <span class="cstat-no" title="statement not covered" >delay = 0</span>
2726
2194
  &nbsp;
@@ -2893,193 +2361,19 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
2893
2361
  }
2894
2362
  }
2895
2363
  &nbsp;
2896
- <span class="cstat-no" title="statement not covered" > coldInterval: ReturnType&lt;typeof setInterval&gt; | null = null</span>
2897
- <span class="cstat-no" title="statement not covered" > orderNumber = 0</span>
2898
- <span class="cstat-no" title="statement not covered" > coldStartTs = 0</span>
2899
- <span class="cstat-no" title="statement not covered" > singleBuffer = false</span>
2900
- &nbsp;
2901
- private <span class="fstat-no" title="function not covered" >checkSessionToken(</span>forceNew?: boolean) {
2902
- const lsReset = <span class="cstat-no" title="statement not covered" >this.sessionStorage.getItem(this.options.session_reset_key) !== null</span>
2903
- const needNewSessionID = <span class="cstat-no" title="statement not covered" >forceNew || lsReset</span>
2904
- const sessionToken = <span class="cstat-no" title="statement not covered" >this.session.getSessionToken()</span>
2905
- &nbsp;
2906
- <span class="cstat-no" title="statement not covered" > return needNewSessionID || !sessionToken</span>
2907
- }
2908
- /**
2909
- * start buffering messages without starting the actual session, which gives
2910
- * user 30 seconds to "activate" and record session by calling `start()` on conditional trigger
2911
- * and we will then send buffered batch, so it won't get lost
2912
- * */
2913
- public async <span class="fstat-no" title="function not covered" >coldStart(</span>startOpts: StartOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span> conditional?: boolean) {
2914
- <span class="cstat-no" title="statement not covered" > this.singleBuffer = false</span>
2915
- const second = <span class="cstat-no" title="statement not covered" >1000</span>
2916
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (conditional) {</span>
2917
- <span class="cstat-no" title="statement not covered" > this.conditionsManager = new ConditionsManager(this, startOpts)</span>
2918
- }
2919
- const isNewSession = <span class="cstat-no" title="statement not covered" >this.checkSessionToken(startOpts.forceNew)</span>
2920
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (conditional) {</span>
2921
- const r = <span class="cstat-no" title="statement not covered" >await fetch(this.options.ingestPoint + '/v1/web/start', {</span>
2922
- method: 'POST',
2923
- headers: {
2924
- 'Content-Type': 'application/json',
2925
- },
2926
- body: JSON.stringify({
2927
- ...this.getTrackerInfo(),
2928
- timestamp: now(),
2929
- doNotRecord: true,
2930
- bufferDiff: 0,
2931
- userID: this.session.getInfo().userID,
2932
- token: undefined,
2933
- deviceMemory,
2934
- jsHeapSizeLimit,
2935
- timezone: getTimezone(),
2936
- }),
2937
- })
2938
- // this token is needed to fetch conditions and flags,
2939
- // but it can't be used to record a session
2940
- const {
2941
- token,
2942
- userBrowser,
2943
- userCity,
2944
- userCountry,
2945
- userDevice,
2946
- userOS,
2947
- userState,
2948
- projectID,
2949
- } = <span class="cstat-no" title="statement not covered" >await r.json()</span>
2950
- <span class="cstat-no" title="statement not covered" > this.session.assign({ projectID })</span>
2951
- <span class="cstat-no" title="statement not covered" > this.session.setUserInfo({</span>
2952
- userBrowser,
2953
- userCity,
2954
- userCountry,
2955
- userDevice,
2956
- userOS,
2957
- userState,
2958
- })
2959
- const onStartInfo = <span class="cstat-no" title="statement not covered" >{ sessionToken: token, userUUID: '', sessionID: '' }</span>
2960
- <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>
2961
- <span class="cstat-no" title="statement not covered" > await this.conditionsManager?.fetchConditions(projectID as string, token as string)</span>
2962
- <span class="cstat-no" title="statement not covered" > await this.featureFlags.reloadFlags(token as string)</span>
2963
- <span class="cstat-no" title="statement not covered" > this.conditionsManager?.processFlags(this.featureFlags.flags)</span>
2964
- }
2965
- const cycle = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >() =</span>&gt; {</span>
2966
- <span class="cstat-no" title="statement not covered" > this.orderNumber += 1</span>
2967
- <span class="cstat-no" title="statement not covered" > adjustTimeOrigin()</span>
2968
- <span class="cstat-no" title="statement not covered" > this.coldStartTs = now()</span>
2969
- <span class="cstat-no" title="statement not covered" > if (this.orderNumber % 2 === 0) {</span>
2970
- <span class="cstat-no" title="statement not covered" > this.bufferedMessages1.length = 0</span>
2971
- <span class="cstat-no" title="statement not covered" > this.bufferedMessages1.push(Timestamp(this.timestamp()))</span>
2972
- <span class="cstat-no" title="statement not covered" > this.bufferedMessages1.push(TabData(this.session.getTabId()))</span>
2973
- } else {
2974
- <span class="cstat-no" title="statement not covered" > this.bufferedMessages2.length = 0</span>
2975
- <span class="cstat-no" title="statement not covered" > this.bufferedMessages2.push(Timestamp(this.timestamp()))</span>
2976
- <span class="cstat-no" title="statement not covered" > this.bufferedMessages2.push(TabData(this.session.getTabId()))</span>
2977
- }
2978
- <span class="cstat-no" title="statement not covered" > this.stop(false)</span>
2979
- <span class="cstat-no" title="statement not covered" > this.activityState = ActivityState.ColdStart</span>
2980
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (startOpts.sessionHash) {</span>
2981
- <span class="cstat-no" title="statement not covered" > this.session.applySessionHash(startOpts.sessionHash)</span>
2982
- }
2983
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (startOpts.forceNew) {</span>
2984
- // Reset session metadata only if requested directly
2985
- <span class="cstat-no" title="statement not covered" > this.session.reset()</span>
2986
- }
2987
- <span class="cstat-no" title="statement not covered" > this.session.assign({</span>
2988
- // MBTODO: maybe it would make sense to `forceNew` if the `userID` was changed
2989
- userID: startOpts.userID,
2990
- metadata: startOpts.metadata,
2991
- })
2992
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!isNewSession) {</span>
2993
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
2994
- <span class="cstat-no" title="statement not covered" > this.send(TabChange(this.session.getTabId()))</span>
2995
- }
2996
- <span class="cstat-no" title="statement not covered" > this.observer.observe()</span>
2997
- <span class="cstat-no" title="statement not covered" > this.ticker.start()</span>
2998
- }
2999
- <span class="cstat-no" title="statement not covered" > this.coldInterval = setInterval(<span class="fstat-no" title="function not covered" >() =</span>&gt; {</span>
3000
- <span class="cstat-no" title="statement not covered" > cycle()</span>
3001
- }, 30 * second)
3002
- <span class="cstat-no" title="statement not covered" > cycle()</span>
3003
- }
3004
- &nbsp;
3005
- public <span class="fstat-no" title="function not covered" >offlineRecording(</span>startOpts: StartOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
3006
- <span class="cstat-no" title="statement not covered" > this.singleBuffer = true</span>
3007
- const isNewSession = <span class="cstat-no" title="statement not covered" >this.checkSessionToken(startOpts.forceNew)</span>
3008
- <span class="cstat-no" title="statement not covered" > adjustTimeOrigin()</span>
3009
- <span class="cstat-no" title="statement not covered" > this.coldStartTs = now()</span>
3010
- <span class="cstat-no" title="statement not covered" > this.bufferedMessages1.length = 0</span>
3011
- const saverBuffer = <span class="cstat-no" title="statement not covered" >this.localStorage.getItem(bufferStorageKey)</span>
3012
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (saverBuffer) {</span>
3013
- const data = <span class="cstat-no" title="statement not covered" >JSON.parse(saverBuffer)</span>
3014
- <span class="cstat-no" title="statement not covered" > this.bufferedMessages1 = Array.isArray(data) ? data : []</span>
3015
- <span class="cstat-no" title="statement not covered" > this.localStorage.removeItem(bufferStorageKey)</span>
3016
- }
3017
- <span class="cstat-no" title="statement not covered" > this.bufferedMessages1.push(Timestamp(this.timestamp()))</span>
3018
- <span class="cstat-no" title="statement not covered" > this.bufferedMessages1.push(TabData(this.session.getTabId()))</span>
3019
- <span class="cstat-no" title="statement not covered" > this.activityState = ActivityState.ColdStart</span>
3020
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (startOpts.sessionHash) {</span>
3021
- <span class="cstat-no" title="statement not covered" > this.session.applySessionHash(startOpts.sessionHash)</span>
3022
- }
3023
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (startOpts.forceNew) {</span>
3024
- // Reset session metadata only if requested directly
3025
- <span class="cstat-no" title="statement not covered" > this.session.reset()</span>
3026
- }
3027
- <span class="cstat-no" title="statement not covered" > this.session.assign({</span>
3028
- // MBTODO: maybe it would make sense to `forceNew` if the `userID` was changed
3029
- userID: startOpts.userID,
3030
- metadata: startOpts.metadata,
3031
- })
3032
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!isNewSession) {</span>
3033
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
3034
- <span class="cstat-no" title="statement not covered" > this.send(TabChange(this.session.getTabId()))</span>
3035
- }
3036
- <span class="cstat-no" title="statement not covered" > this.observer.observe()</span>
3037
- <span class="cstat-no" title="statement not covered" > this.ticker.start()</span>
3038
- }
3039
- &nbsp;
3040
- /**
3041
- * Saves the captured messages in localStorage (or whatever is used in its place)
3042
- *
3043
- * Then when this.offlineRecording is called, it will preload this messages and clear the storage item
3044
- *
3045
- * Keeping the size of local storage reasonable is up to the end users of this library
3046
- * */
3047
- public <span class="fstat-no" title="function not covered" >saveBuffer(</span>) {
3048
- <span class="cstat-no" title="statement not covered" > this.localStorage.setItem(bufferStorageKey, JSON.stringify(this.bufferedMessages1))</span>
3049
- }
3050
- &nbsp;
3051
- /**
3052
- * Uploads the stored buffer to create session
3053
- * */
3054
- public <span class="fstat-no" title="function not covered" >uploadOfflineRecording(</span>) {
3055
- <span class="cstat-no" title="statement not covered" > this.stop(false)</span>
3056
- // then fetch it
3057
- <span class="cstat-no" title="statement not covered" > this.clearBuffers()</span>
3058
- }
3059
- &nbsp;
3060
- private <span class="fstat-no" title="function not covered" >_start(</span>startOpts: StartOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span> resetByWorker = <span class="branch-0 cbranch-no" title="branch not covered" >false,</span> conditionName?: string): Promise&lt;StartPromiseReturn&gt; {
3061
- const isColdStart = <span class="cstat-no" title="statement not covered" >this.activityState === ActivityState.ColdStart</span>
3062
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (isColdStart &amp;&amp; this.coldInterval) {</span>
3063
- <span class="cstat-no" title="statement not covered" > clearInterval(this.coldInterval)</span>
3064
- }
2364
+ private <span class="fstat-no" title="function not covered" >_start(</span>startOpts: StartOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span> resetByWorker = <span class="branch-0 cbranch-no" title="branch not covered" >false)</span>: Promise&lt;StartPromiseReturn&gt; {
3065
2365
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.worker) {</span>
3066
- const reason = <span class="cstat-no" title="statement not covered" >'No worker found: perhaps, CSP is not set.'</span>
3067
- <span class="cstat-no" title="statement not covered" > this.signalError(reason, [])</span>
3068
- <span class="cstat-no" title="statement not covered" > return Promise.resolve(UnsuccessfulStart(reason))</span>
2366
+ <span class="cstat-no" title="statement not covered" > return Promise.resolve(UnsuccessfulStart('No worker found: perhaps, CSP is not set.'))</span>
3069
2367
  }
3070
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
3071
- this.activityState === ActivityState.Active ||
3072
- this.activityState === ActivityState.Starting
3073
- ) {
3074
- const reason =
3075
- <span class="cstat-no" title="statement not covered" > 'OpenReplay: trying to call `start()` on the instance that has been started already.'</span>
3076
- <span class="cstat-no" title="statement not covered" > this.signalError(reason, [])</span>
3077
- <span class="cstat-no" title="statement not covered" > return Promise.resolve(UnsuccessfulStart(reason))</span>
2368
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.activityState !== ActivityState.NotActive) {</span>
2369
+ <span class="cstat-no" title="statement not covered" > return Promise.resolve(</span>
2370
+ UnsuccessfulStart(
2371
+ 'OpenReplay: trying to call `start()` on the instance that has been started already.',
2372
+ ),
2373
+ )
3078
2374
  }
3079
2375
  <span class="cstat-no" title="statement not covered" > this.activityState = ActivityState.Starting</span>
3080
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!isColdStart) {</span>
3081
- <span class="cstat-no" title="statement not covered" > adjustTimeOrigin()</span>
3082
- }
2376
+ <span class="cstat-no" title="statement not covered" > adjustTimeOrigin()</span>
3083
2377
  &nbsp;
3084
2378
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (startOpts.sessionHash) {</span>
3085
2379
  <span class="cstat-no" title="statement not covered" > this.session.applySessionHash(startOpts.sessionHash)</span>
@@ -3106,13 +2400,15 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
3106
2400
  tabId: this.session.getTabId(),
3107
2401
  })
3108
2402
  &nbsp;
3109
- const sessionToken = <span class="cstat-no" title="statement not covered" >this.session.getSessionToken()</span>
3110
- const isNewSession = <span class="cstat-no" title="statement not covered" >this.checkSessionToken(startOpts.forceNew)</span>
2403
+ const lsReset = <span class="cstat-no" title="statement not covered" >this.sessionStorage.getItem(this.options.session_reset_key) !== null</span>
3111
2404
  <span class="cstat-no" title="statement not covered" > this.sessionStorage.removeItem(this.options.session_reset_key)</span>
2405
+ const needNewSessionID = <span class="cstat-no" title="statement not covered" >startOpts.forceNew || lsReset || resetByWorker</span>
2406
+ const sessionToken = <span class="cstat-no" title="statement not covered" >this.session.getSessionToken()</span>
2407
+ const isNewSession = <span class="cstat-no" title="statement not covered" >needNewSessionID || !sessionToken</span>
3112
2408
  &nbsp;
3113
2409
  <span class="cstat-no" title="statement not covered" > this.debug.log(</span>
3114
2410
  'OpenReplay: starting session; need new session id?',
3115
- isNewSession,
2411
+ needNewSessionID,
3116
2412
  'session token: ',
3117
2413
  sessionToken,
3118
2414
  )
@@ -3125,14 +2421,11 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
3125
2421
  body: JSON.stringify({
3126
2422
  ...this.getTrackerInfo(),
3127
2423
  timestamp,
3128
- doNotRecord: false,
3129
- bufferDiff: timestamp - this.coldStartTs,
3130
2424
  userID: this.session.getInfo().userID,
3131
2425
  token: isNewSession ? undefined : sessionToken,
3132
2426
  deviceMemory,
3133
2427
  jsHeapSizeLimit,
3134
2428
  timezone: getTimezone(),
3135
- condition: conditionName,
3136
2429
  }),
3137
2430
  })
3138
2431
  .then(<span class="fstat-no" title="function not covered" >(r</span>) =&gt; {
@@ -3150,14 +2443,10 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
3150
2443
  })
3151
2444
  .then(<span class="fstat-no" title="function not covered" >(r</span>) =&gt; {
3152
2445
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.worker) {</span>
3153
- const reason = <span class="cstat-no" title="statement not covered" >'no worker found after start request (this might not happen)'</span>
3154
- <span class="cstat-no" title="statement not covered" > this.signalError(reason, [])</span>
3155
- <span class="cstat-no" title="statement not covered" > return Promise.reject(reason)</span>
2446
+ <span class="cstat-no" title="statement not covered" > return Promise.reject('no worker found after start request (this might not happen)')</span>
3156
2447
  }
3157
2448
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.activityState === ActivityState.NotActive) {</span>
3158
- const reason = <span class="cstat-no" title="statement not covered" >'Tracker stopped during authorization'</span>
3159
- <span class="cstat-no" title="statement not covered" > this.signalError(reason, [])</span>
3160
- <span class="cstat-no" title="statement not covered" > return Promise.reject(reason)</span>
2449
+ <span class="cstat-no" title="statement not covered" > return Promise.reject('Tracker stopped during authorization')</span>
3161
2450
  }
3162
2451
  const {
3163
2452
  token,
@@ -3186,9 +2475,7 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
3186
2475
  typeof delay !== 'number' ||
3187
2476
  (typeof beaconSizeLimit !== 'number' &amp;&amp; typeof beaconSizeLimit !== 'undefined')
3188
2477
  ) {
3189
- const reason = <span class="cstat-no" title="statement not covered" >`Incorrect server response: ${JSON.stringify(r)}`</span>
3190
- <span class="cstat-no" title="statement not covered" > this.signalError(reason, [])</span>
3191
- <span class="cstat-no" title="statement not covered" > return Promise.reject(reason)</span>
2478
+ <span class="cstat-no" title="statement not covered" > return Promise.reject(`Incorrect server response: ${JSON.stringify(r)}`)</span>
3192
2479
  }
3193
2480
  <span class="cstat-no" title="statement not covered" > this.delay = delay</span>
3194
2481
  <span class="cstat-no" title="statement not covered" > this.session.setSessionToken(token)</span>
@@ -3205,6 +2492,13 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
3205
2492
  timestamp: startTimestamp || timestamp,
3206
2493
  projectID,
3207
2494
  })
2495
+ &nbsp;
2496
+ <span class="cstat-no" title="statement not covered" > this.worker.postMessage({</span>
2497
+ type: 'auth',
2498
+ token,
2499
+ beaconSizeLimit,
2500
+ })
2501
+ &nbsp;
3208
2502
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!isNewSession &amp;&amp; token === sessionToken) {</span>
3209
2503
  <span class="cstat-no" title="statement not covered" > this.debug.log('continuing session on new tab', this.session.getTabId())</span>
3210
2504
  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
@@ -3216,48 +2510,13 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
3216
2510
  )
3217
2511
  <span class="cstat-no" title="statement not covered" > this.localStorage.setItem(this.options.local_uuid_key, userUUID)</span>
3218
2512
  &nbsp;
3219
- <span class="cstat-no" title="statement not covered" > this.worker.postMessage({</span>
3220
- type: 'auth',
3221
- token,
3222
- beaconSizeLimit,
3223
- })
3224
- &nbsp;
3225
2513
  <span class="cstat-no" title="statement not covered" > this.compressionThreshold = compressionThreshold</span>
3226
2514
  const onStartInfo = <span class="cstat-no" title="statement not covered" >{ sessionToken: token, userUUID, sessionID }</span>
3227
2515
  &nbsp;
3228
- const flushBuffer = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(b</span>uffer: Message[]) =&gt; {</span>
3229
- let ended = <span class="cstat-no" title="statement not covered" >false</span>
3230
- const messagesBatch: Message[] = <span class="cstat-no" title="statement not covered" >[buffer.shift() as unknown as Message]</span>
3231
- <span class="cstat-no" title="statement not covered" > while (!ended) {</span>
3232
- const nextMsg = <span class="cstat-no" title="statement not covered" >buffer[0]</span>
3233
- <span class="cstat-no" title="statement not covered" > if (!nextMsg || nextMsg[0] === MType.Timestamp) {</span>
3234
- <span class="cstat-no" title="statement not covered" > ended = true</span>
3235
- } else {
3236
- <span class="cstat-no" title="statement not covered" > messagesBatch.push(buffer.shift() as unknown as Message)</span>
3237
- }
3238
- }
3239
- <span class="cstat-no" title="statement not covered" > this.postToWorker(messagesBatch)</span>
3240
- }
3241
2516
  // TODO: start as early as possible (before receiving the token)
3242
2517
  <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)
3243
- <span class="cstat-no" title="statement not covered" > void this.featureFlags.reloadFlags()</span>
3244
- /** --------------- COLD START BUFFER ------------------*/
3245
- <span class="cstat-no" title="statement not covered" > this.activityState = ActivityState.Active</span>
3246
- <span class="cstat-no" title="statement not covered" > if (isColdStart) {</span>
3247
- const biggestBurger =
3248
- <span class="cstat-no" title="statement not covered" > this.bufferedMessages1.length &gt; this.bufferedMessages2.length</span>
3249
- ? this.bufferedMessages1
3250
- : this.bufferedMessages2
3251
- <span class="cstat-no" title="statement not covered" > while (biggestBurger.length &gt; 0) {</span>
3252
- <span class="cstat-no" title="statement not covered" > flushBuffer(biggestBurger)</span>
3253
- }
3254
- <span class="cstat-no" title="statement not covered" > this.clearBuffers()</span>
3255
- <span class="cstat-no" title="statement not covered" > this.commit()</span>
3256
- /** --------------- COLD START BUFFER ------------------*/
3257
- } else {
3258
- <span class="cstat-no" title="statement not covered" > this.observer.observe()</span>
3259
- <span class="cstat-no" title="statement not covered" > this.ticker.start()</span>
3260
- }
2518
+ <span class="cstat-no" title="statement not covered" > this.observer.observe()</span>
2519
+ <span class="cstat-no" title="statement not covered" > this.ticker.start()</span>
3261
2520
  &nbsp;
3262
2521
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (canvasEnabled) {</span>
3263
2522
  <span class="cstat-no" title="statement not covered" > this.canvasRecorder =</span>
@@ -3265,6 +2524,7 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
3265
2524
  new CanvasRecorder(this, { fps: canvasFPS, quality: canvasQuality })
3266
2525
  <span class="cstat-no" title="statement not covered" > this.canvasRecorder.startTracking()</span>
3267
2526
  }
2527
+ <span class="cstat-no" title="statement not covered" > this.activityState = ActivityState.Active</span>
3268
2528
  &nbsp;
3269
2529
  <span class="cstat-no" title="statement not covered" > this.notify.log('OpenReplay tracking started.')</span>
3270
2530
  // get rid of onStart ?
@@ -3309,13 +2569,11 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
3309
2569
  <span class="cstat-no" title="statement not covered" > this.stop()</span>
3310
2570
  <span class="cstat-no" title="statement not covered" > this.session.reset()</span>
3311
2571
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (reason === CANCELED) {</span>
3312
- <span class="cstat-no" title="statement not covered" > this.signalError(CANCELED, [])</span>
3313
2572
  <span class="cstat-no" title="statement not covered" > return UnsuccessfulStart(CANCELED)</span>
3314
2573
  }
3315
2574
  &nbsp;
3316
2575
  <span class="cstat-no" title="statement not covered" > this.notify.log('OpenReplay was unable to start. ', reason)</span>
3317
2576
  <span class="cstat-no" title="statement not covered" > this._debug('session_start', reason)</span>
3318
- <span class="cstat-no" title="statement not covered" > this.signalError(START_ERROR, [])</span>
3319
2577
  <span class="cstat-no" title="statement not covered" > return UnsuccessfulStart(START_ERROR)</span>
3320
2578
  })
3321
2579
  }
@@ -3365,9 +2623,24 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
3365
2623
  <span class="cstat-no" title="statement not covered" > return this.session.getTabId()</span>
3366
2624
  }
3367
2625
  &nbsp;
3368
- <span class="fstat-no" title="function not covered" > clearBuffers(</span>) {
3369
- <span class="cstat-no" title="statement not covered" > this.bufferedMessages1.length = 0</span>
3370
- <span class="cstat-no" title="statement not covered" > this.bufferedMessages2.length = 0</span>
2626
+ /**
2627
+ * Creates a named hook that expects event name, data string and msg direction (up/down),
2628
+ * it will skip any message bigger than 5 mb or event name bigger than 255 symbols
2629
+ * @returns {(msgType: string, data: string, dir: 'up' | 'down') =&gt; void}
2630
+ * */
2631
+ <span class="fstat-no" title="function not covered" > trackWs(</span>channelName: string): (msgType: string, data: string, dir: 'up' | 'down') =&gt; void {
2632
+ const channel = <span class="cstat-no" title="statement not covered" >channelName</span>
2633
+ <span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >(m</span>sgType: string, data: string, dir: 'up' | 'down' = <span class="branch-0 cbranch-no" title="branch not covered" >'down')</span> =&gt; {</span>
2634
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
2635
+ typeof msgType !== 'string' ||
2636
+ typeof data !== 'string' ||
2637
+ data.length &gt; 5 * 1024 * 1024 ||
2638
+ msgType.length &gt; 255
2639
+ ) {
2640
+ <span class="cstat-no" title="statement not covered" > return</span>
2641
+ }
2642
+ <span class="cstat-no" title="statement not covered" > this.send(WSChannel('websocket', channel, data, this.timestamp(), dir, msgType))</span>
2643
+ }
3371
2644
  }
3372
2645
  &nbsp;
3373
2646
  <span class="fstat-no" title="function not covered" > stop(</span>stopWorker = <span class="branch-0 cbranch-no" title="branch not covered" >true)</span>: void {
@@ -3380,6 +2653,7 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
3380
2653
  <span class="cstat-no" title="statement not covered" > this.ticker.stop()</span>
3381
2654
  <span class="cstat-no" title="statement not covered" > this.stopCallbacks.forEach(<span class="fstat-no" title="function not covered" >(c</span>b) =&gt; <span class="cstat-no" title="statement not covered" >cb())</span></span>
3382
2655
  <span class="cstat-no" title="statement not covered" > this.notify.log('OpenReplay tracking stopped.')</span>
2656
+ <span class="cstat-no" title="statement not covered" > this.tagWatcher.clear()</span>
3383
2657
  <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.worker &amp;&amp; stopWorker) {</span>
3384
2658
  <span class="cstat-no" title="statement not covered" > this.worker.postMessage('stop')</span>
3385
2659
  }
@@ -3397,7 +2671,7 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
3397
2671
  <div class='footer quiet pad2 space-top1 center small'>
3398
2672
  Code coverage generated by
3399
2673
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
3400
- at 2023-12-21T16:07:43.444Z
2674
+ at 2024-01-09T10:19:51.427Z
3401
2675
  </div>
3402
2676
  <script src="../../prettify.js"></script>
3403
2677
  <script>