@openreplay/tracker 11.0.2 → 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.
- package/CHANGELOG.md +6 -1
- package/cjs/app/canvas.js +9 -7
- package/cjs/app/index.js +7 -6
- package/cjs/app/observer/iframe_observer.js +1 -1
- package/cjs/app/observer/shadow_root_observer.js +1 -1
- package/cjs/index.js +1 -1
- package/cjs/modules/Network/xhrProxy.js +1 -1
- package/coverage/clover.xml +507 -722
- package/coverage/coverage-final.json +10 -10
- package/coverage/lcov-report/index.html +32 -32
- package/coverage/lcov-report/main/app/canvas.ts.html +8 -14
- package/coverage/lcov-report/main/app/guards.ts.html +1 -1
- package/coverage/lcov-report/main/app/index.html +14 -14
- package/coverage/lcov-report/main/app/index.ts.html +106 -826
- package/coverage/lcov-report/main/app/logger.ts.html +1 -1
- package/coverage/lcov-report/main/app/messages.gen.ts.html +62 -5
- package/coverage/lcov-report/main/app/nodes.ts.html +1 -1
- package/coverage/lcov-report/main/app/observer/iframe_observer.ts.html +2 -2
- package/coverage/lcov-report/main/app/observer/iframe_offsets.ts.html +1 -1
- package/coverage/lcov-report/main/app/observer/index.html +1 -1
- package/coverage/lcov-report/main/app/observer/shadow_root_observer.ts.html +2 -2
- package/coverage/lcov-report/main/app/observer/top_observer.ts.html +1 -1
- package/coverage/lcov-report/main/app/sanitizer.ts.html +1 -1
- package/coverage/lcov-report/main/app/session.ts.html +1 -1
- package/coverage/lcov-report/main/app/ticker.ts.html +1 -1
- package/coverage/lcov-report/main/index.html +9 -9
- package/coverage/lcov-report/main/index.ts.html +118 -223
- package/coverage/lcov-report/main/modules/Network/beaconProxy.ts.html +1 -1
- package/coverage/lcov-report/main/modules/Network/fetchProxy.ts.html +21 -6
- package/coverage/lcov-report/main/modules/Network/index.html +6 -6
- package/coverage/lcov-report/main/modules/Network/index.ts.html +1 -1
- package/coverage/lcov-report/main/modules/Network/networkMessage.ts.html +1 -1
- package/coverage/lcov-report/main/modules/Network/utils.ts.html +1 -1
- package/coverage/lcov-report/main/modules/Network/xhrProxy.ts.html +3 -3
- package/coverage/lcov-report/main/modules/attributeSender.ts.html +1 -1
- package/coverage/lcov-report/main/modules/axiosSpy.ts.html +1 -1
- package/coverage/lcov-report/main/modules/conditionsManager.ts.html +680 -179
- package/coverage/lcov-report/main/modules/connection.ts.html +1 -1
- package/coverage/lcov-report/main/modules/console.ts.html +1 -1
- package/coverage/lcov-report/main/modules/constructedStyleSheets.ts.html +1 -1
- package/coverage/lcov-report/main/modules/cssrules.ts.html +1 -1
- package/coverage/lcov-report/main/modules/exception.ts.html +1 -1
- package/coverage/lcov-report/main/modules/featureFlags.ts.html +7 -10
- package/coverage/lcov-report/main/modules/focus.ts.html +1 -1
- package/coverage/lcov-report/main/modules/fonts.ts.html +1 -1
- package/coverage/lcov-report/main/modules/img.ts.html +1 -1
- package/coverage/lcov-report/main/modules/index.html +27 -27
- package/coverage/lcov-report/main/modules/input.ts.html +1 -1
- package/coverage/lcov-report/main/modules/mouse.ts.html +1 -1
- package/coverage/lcov-report/main/modules/network.ts.html +1 -1
- package/coverage/lcov-report/main/modules/performance.ts.html +1 -1
- package/coverage/lcov-report/main/modules/scroll.ts.html +1 -1
- package/coverage/lcov-report/main/modules/selection.ts.html +1 -1
- package/coverage/lcov-report/main/modules/tabs.ts.html +1 -1
- package/coverage/lcov-report/main/modules/tagWatcher.ts.html +250 -0
- package/coverage/lcov-report/main/modules/timing.ts.html +1 -1
- package/coverage/lcov-report/main/modules/userTesting/SignalManager.ts.html +1 -1
- package/coverage/lcov-report/main/modules/userTesting/dnd.ts.html +1 -1
- package/coverage/lcov-report/main/modules/userTesting/index.html +1 -1
- package/coverage/lcov-report/main/modules/userTesting/index.ts.html +1 -1
- package/coverage/lcov-report/main/modules/userTesting/recorder.ts.html +1 -1
- package/coverage/lcov-report/main/modules/userTesting/styles.ts.html +1 -1
- package/coverage/lcov-report/main/modules/userTesting/utils.ts.html +1 -1
- package/coverage/lcov-report/main/modules/viewport.ts.html +1 -1
- package/coverage/lcov-report/main/utils.ts.html +1 -1
- package/coverage/lcov-report/webworker/BatchWriter.ts.html +1 -1
- package/coverage/lcov-report/webworker/MessageEncoder.gen.ts.html +17 -5
- package/coverage/lcov-report/webworker/PrimitiveEncoder.ts.html +1 -1
- package/coverage/lcov-report/webworker/QueueSender.ts.html +1 -1
- package/coverage/lcov-report/webworker/index.html +10 -10
- package/coverage/lcov-report/webworker/index.ts.html +16 -22
- package/coverage/lcov.info +986 -1371
- package/lib/app/canvas.js +9 -7
- package/lib/app/index.js +7 -6
- package/lib/app/observer/iframe_observer.js +1 -1
- package/lib/app/observer/shadow_root_observer.js +1 -1
- package/lib/index.js +1 -1
- package/lib/modules/Network/xhrProxy.js +1 -1
- 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/
|
|
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/
|
|
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/
|
|
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/
|
|
49
|
+
<span class='fraction'>0/318</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -930,250 +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></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
|
933
|
+
<a name='L868'></a><a href='#L868'>868</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
1174
934
|
<span class="cline-any cline-no"> </span>
|
|
1175
935
|
<span class="cline-any cline-neutral"> </span>
|
|
1176
|
-
<span class="cline-any cline-
|
|
936
|
+
<span class="cline-any cline-neutral"> </span>
|
|
937
|
+
<span class="cline-any cline-neutral"> </span>
|
|
938
|
+
<span class="cline-any cline-neutral"> </span>
|
|
939
|
+
<span class="cline-any cline-neutral"> </span>
|
|
940
|
+
<span class="cline-any cline-neutral"> </span>
|
|
941
|
+
<span class="cline-any cline-neutral"> </span>
|
|
942
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1177
943
|
<span class="cline-any cline-no"> </span>
|
|
1178
944
|
<span class="cline-any cline-neutral"> </span>
|
|
1179
945
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1199,6 +965,7 @@
|
|
|
1199
965
|
<span class="cline-any cline-neutral"> </span>
|
|
1200
966
|
<span class="cline-any cline-no"> </span>
|
|
1201
967
|
<span class="cline-any cline-no"> </span>
|
|
968
|
+
<span class="cline-any cline-no"> </span>
|
|
1202
969
|
<span class="cline-any cline-neutral"> </span>
|
|
1203
970
|
<span class="cline-any cline-neutral"> </span>
|
|
1204
971
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1227,7 +994,6 @@
|
|
|
1227
994
|
<span class="cline-any cline-no"> </span>
|
|
1228
995
|
<span class="cline-any cline-no"> </span>
|
|
1229
996
|
<span class="cline-any cline-no"> </span>
|
|
1230
|
-
<span class="cline-any cline-no"> </span>
|
|
1231
997
|
<span class="cline-any cline-neutral"> </span>
|
|
1232
998
|
<span class="cline-any cline-neutral"> </span>
|
|
1233
999
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1264,7 +1030,6 @@
|
|
|
1264
1030
|
<span class="cline-any cline-no"> </span>
|
|
1265
1031
|
<span class="cline-any cline-no"> </span>
|
|
1266
1032
|
<span class="cline-any cline-no"> </span>
|
|
1267
|
-
<span class="cline-any cline-no"> </span>
|
|
1268
1033
|
<span class="cline-any cline-neutral"> </span>
|
|
1269
1034
|
<span class="cline-any cline-neutral"> </span>
|
|
1270
1035
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1320,12 +1085,6 @@
|
|
|
1320
1085
|
<span class="cline-any cline-no"> </span>
|
|
1321
1086
|
<span class="cline-any cline-neutral"> </span>
|
|
1322
1087
|
<span class="cline-any cline-neutral"> </span>
|
|
1323
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1324
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1325
|
-
<span class="cline-any cline-no"> </span>
|
|
1326
|
-
<span class="cline-any cline-no"> </span>
|
|
1327
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1328
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1329
1088
|
<span class="cline-any cline-no"> </span>
|
|
1330
1089
|
<span class="cline-any cline-no"> </span>
|
|
1331
1090
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1343,14 +1102,11 @@
|
|
|
1343
1102
|
<span class="cline-any cline-neutral"> </span>
|
|
1344
1103
|
<span class="cline-any cline-no"> </span>
|
|
1345
1104
|
<span class="cline-any cline-neutral"> </span>
|
|
1346
|
-
<span class="cline-any cline-no"> </span>
|
|
1347
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1348
1105
|
<span class="cline-any cline-neutral"> </span>
|
|
1349
1106
|
<span class="cline-any cline-neutral"> </span>
|
|
1350
1107
|
<span class="cline-any cline-neutral"> </span>
|
|
1351
1108
|
<span class="cline-any cline-neutral"> </span>
|
|
1352
1109
|
<span class="cline-any cline-neutral"> </span>
|
|
1353
|
-
<span class="cline-any cline-no"> </span>
|
|
1354
1110
|
<span class="cline-any cline-neutral"> </span>
|
|
1355
1111
|
<span class="cline-any cline-no"> </span>
|
|
1356
1112
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1438,12 +1194,13 @@
|
|
|
1438
1194
|
<span class="cline-any cline-no"> </span>
|
|
1439
1195
|
<span class="cline-any cline-no"> </span>
|
|
1440
1196
|
<span class="cline-any cline-no"> </span>
|
|
1441
|
-
<span class="cline-any cline-
|
|
1197
|
+
<span class="cline-any cline-no"> </span>
|
|
1442
1198
|
<span class="cline-any cline-neutral"> </span>
|
|
1443
1199
|
<span class="cline-any cline-neutral"> </span>
|
|
1444
1200
|
<span class="cline-any cline-no"> </span>
|
|
1445
1201
|
<span class="cline-any cline-neutral"> </span>
|
|
1446
1202
|
<span class="cline-any cline-neutral"> </span>
|
|
1203
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1447
1204
|
<span class="cline-any cline-no"> </span>
|
|
1448
1205
|
<span class="cline-any cline-neutral"> </span>
|
|
1449
1206
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1543,75 +1300,30 @@
|
|
|
1543
1300
|
<span class="cline-any cline-neutral"> </span>
|
|
1544
1301
|
<span class="cline-any cline-neutral"> </span>
|
|
1545
1302
|
<span class="cline-any cline-no"> </span>
|
|
1546
|
-
<span class="cline-any cline-no"> </span>
|
|
1547
|
-
<span class="cline-any cline-no"> </span>
|
|
1548
|
-
<span class="cline-any cline-no"> </span>
|
|
1549
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1550
|
-
<span class="cline-any cline-no"> </span>
|
|
1551
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1552
|
-
<span class="cline-any cline-no"> </span>
|
|
1553
1303
|
<span class="cline-any cline-neutral"> </span>
|
|
1554
1304
|
<span class="cline-any cline-neutral"> </span>
|
|
1555
1305
|
<span class="cline-any cline-neutral"> </span>
|
|
1556
1306
|
<span class="cline-any cline-neutral"> </span>
|
|
1557
1307
|
<span class="cline-any cline-neutral"> </span>
|
|
1558
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1559
|
-
<span class="cline-any cline-no"> </span>
|
|
1560
1308
|
<span class="cline-any cline-no"> </span>
|
|
1561
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1562
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1563
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1564
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1565
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1566
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1567
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1568
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1569
|
-
<span class="cline-any cline-no"> </span>
|
|
1570
|
-
<span class="cline-any cline-no"> </span>
|
|
1571
|
-
<span class="cline-any cline-no"> </span>
|
|
1572
|
-
<span class="cline-any cline-no"> </span>
|
|
1573
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1574
|
-
<span class="cline-any cline-no"> </span>
|
|
1575
|
-
<span class="cline-any cline-no"> </span>
|
|
1576
|
-
<span class="cline-any cline-no"> </span>
|
|
1577
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1578
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1579
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1580
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1581
1309
|
<span class="cline-any cline-no"> </span>
|
|
1582
1310
|
<span class="cline-any cline-neutral"> </span>
|
|
1583
1311
|
<span class="cline-any cline-neutral"> </span>
|
|
1584
1312
|
<span class="cline-any cline-neutral"> </span>
|
|
1585
1313
|
<span class="cline-any cline-neutral"> </span>
|
|
1586
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1587
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1588
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1589
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1590
|
-
<span class="cline-any cline-no"> </span>
|
|
1591
|
-
<span class="cline-any cline-no"> </span>
|
|
1592
1314
|
<span class="cline-any cline-no"> </span>
|
|
1593
1315
|
<span class="cline-any cline-no"> </span>
|
|
1594
1316
|
<span class="cline-any cline-no"> </span>
|
|
1595
1317
|
<span class="cline-any cline-no"> </span>
|
|
1596
|
-
<span class="cline-any cline-no"> </span>
|
|
1597
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1598
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1599
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1600
1318
|
<span class="cline-any cline-neutral"> </span>
|
|
1601
1319
|
<span class="cline-any cline-no"> </span>
|
|
1602
1320
|
<span class="cline-any cline-no"> </span>
|
|
1603
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1604
1321
|
<span class="cline-any cline-no"> </span>
|
|
1605
1322
|
<span class="cline-any cline-neutral"> </span>
|
|
1606
1323
|
<span class="cline-any cline-neutral"> </span>
|
|
1607
1324
|
<span class="cline-any cline-neutral"> </span>
|
|
1608
1325
|
<span class="cline-any cline-neutral"> </span>
|
|
1609
1326
|
<span class="cline-any cline-no"> </span>
|
|
1610
|
-
<span class="cline-any cline-no"> </span>
|
|
1611
|
-
<span class="cline-any cline-no"> </span>
|
|
1612
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1613
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1614
|
-
<span class="cline-any cline-no"> </span>
|
|
1615
1327
|
<span class="cline-any cline-neutral"> </span>
|
|
1616
1328
|
<span class="cline-any cline-neutral"> </span>
|
|
1617
1329
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1782,201 +1494,69 @@
|
|
|
1782
1494
|
<span class="cline-any cline-neutral"> </span>
|
|
1783
1495
|
<span class="cline-any cline-neutral"> </span>
|
|
1784
1496
|
<span class="cline-any cline-neutral"> </span>
|
|
1785
|
-
<span class="cline-any cline-no"> </span>
|
|
1786
|
-
<span class="cline-any cline-no"> </span>
|
|
1787
|
-
<span class="cline-any cline-no"> </span>
|
|
1788
|
-
<span class="cline-any cline-no"> </span>
|
|
1789
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1790
1497
|
<span class="cline-any cline-neutral"> </span>
|
|
1791
1498
|
<span class="cline-any cline-no"> </span>
|
|
1792
1499
|
<span class="cline-any cline-no"> </span>
|
|
1793
|
-
<span class="cline-any cline-no"> </span>
|
|
1794
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1795
|
-
<span class="cline-any cline-no"> </span>
|
|
1796
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1797
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1798
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1799
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1800
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1801
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1802
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1803
|
-
<span class="cline-any cline-no"> </span>
|
|
1804
|
-
<span class="cline-any cline-no"> </span>
|
|
1805
|
-
<span class="cline-any cline-no"> </span>
|
|
1806
|
-
<span class="cline-any cline-no"> </span>
|
|
1807
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1808
|
-
<span class="cline-any cline-no"> </span>
|
|
1809
|
-
<span class="cline-any cline-no"> </span>
|
|
1810
|
-
<span class="cline-any cline-no"> </span>
|
|
1811
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1812
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1813
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1814
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1815
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1816
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1817
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1818
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1819
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1820
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1821
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1822
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1823
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1824
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1825
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1826
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1827
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1828
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1829
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1830
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1831
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1832
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1833
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1834
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1835
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1836
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1837
1500
|
<span class="cline-any cline-neutral"> </span>
|
|
1838
1501
|
<span class="cline-any cline-no"> </span>
|
|
1839
1502
|
<span class="cline-any cline-no"> </span>
|
|
1840
|
-
<span class="cline-any cline-no"> </span>
|
|
1841
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1842
1503
|
<span class="cline-any cline-neutral"> </span>
|
|
1843
1504
|
<span class="cline-any cline-neutral"> </span>
|
|
1844
1505
|
<span class="cline-any cline-neutral"> </span>
|
|
1845
1506
|
<span class="cline-any cline-neutral"> </span>
|
|
1846
1507
|
<span class="cline-any cline-neutral"> </span>
|
|
1847
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1848
|
-
<span class="cline-any cline-no"> </span>
|
|
1849
1508
|
<span class="cline-any cline-no"> </span>
|
|
1850
1509
|
<span class="cline-any cline-no"> </span>
|
|
1851
1510
|
<span class="cline-any cline-neutral"> </span>
|
|
1852
1511
|
<span class="cline-any cline-no"> </span>
|
|
1853
1512
|
<span class="cline-any cline-no"> </span>
|
|
1854
|
-
<span class="cline-any cline-no"> </span>
|
|
1855
|
-
<span class="cline-any cline-no"> </span>
|
|
1856
|
-
<span class="cline-any cline-no"> </span>
|
|
1857
|
-
<span class="cline-any cline-no"> </span>
|
|
1858
|
-
<span class="cline-any cline-no"> </span>
|
|
1859
|
-
<span class="cline-any cline-no"> </span>
|
|
1860
1513
|
<span class="cline-any cline-neutral"> </span>
|
|
1861
1514
|
<span class="cline-any cline-no"> </span>
|
|
1862
|
-
<span class="cline-any cline-no"> </span>
|
|
1863
|
-
<span class="cline-any cline-no"> </span>
|
|
1864
1515
|
<span class="cline-any cline-neutral"> </span>
|
|
1865
1516
|
<span class="cline-any cline-no"> </span>
|
|
1866
|
-
<span class="cline-any cline-no"> </span>
|
|
1867
|
-
<span class="cline-any cline-no"> </span>
|
|
1868
|
-
<span class="cline-any cline-no"> </span>
|
|
1869
1517
|
<span class="cline-any cline-neutral"> </span>
|
|
1870
1518
|
<span class="cline-any cline-no"> </span>
|
|
1871
1519
|
<span class="cline-any cline-neutral"> </span>
|
|
1872
|
-
<span class="cline-any cline-no"> </span>
|
|
1873
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1874
|
-
<span class="cline-any cline-no"> </span>
|
|
1875
1520
|
<span class="cline-any cline-neutral"> </span>
|
|
1876
1521
|
<span class="cline-any cline-neutral"> </span>
|
|
1877
1522
|
<span class="cline-any cline-neutral"> </span>
|
|
1878
1523
|
<span class="cline-any cline-neutral"> </span>
|
|
1879
1524
|
<span class="cline-any cline-no"> </span>
|
|
1880
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1881
|
-
<span class="cline-any cline-no"> </span>
|
|
1882
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1883
|
-
<span class="cline-any cline-no"> </span>
|
|
1884
1525
|
<span class="cline-any cline-no"> </span>
|
|
1885
1526
|
<span class="cline-any cline-neutral"> </span>
|
|
1886
|
-
<span class="cline-any cline-no"> </span>
|
|
1887
|
-
<span class="cline-any cline-no"> </span>
|
|
1888
1527
|
<span class="cline-any cline-neutral"> </span>
|
|
1889
|
-
<span class="cline-any cline-no"> </span>
|
|
1890
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1891
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1892
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1893
|
-
<span class="cline-any cline-no"> </span>
|
|
1894
|
-
<span class="cline-any cline-no"> </span>
|
|
1895
|
-
<span class="cline-any cline-no"> </span>
|
|
1896
|
-
<span class="cline-any cline-no"> </span>
|
|
1897
|
-
<span class="cline-any cline-no"> </span>
|
|
1898
|
-
<span class="cline-any cline-no"> </span>
|
|
1899
|
-
<span class="cline-any cline-no"> </span>
|
|
1900
|
-
<span class="cline-any cline-no"> </span>
|
|
1901
|
-
<span class="cline-any cline-no"> </span>
|
|
1902
|
-
<span class="cline-any cline-no"> </span>
|
|
1903
1528
|
<span class="cline-any cline-neutral"> </span>
|
|
1904
|
-
<span class="cline-any cline-no"> </span>
|
|
1905
|
-
<span class="cline-any cline-no"> </span>
|
|
1906
|
-
<span class="cline-any cline-no"> </span>
|
|
1907
|
-
<span class="cline-any cline-no"> </span>
|
|
1908
|
-
<span class="cline-any cline-no"> </span>
|
|
1909
1529
|
<span class="cline-any cline-neutral"> </span>
|
|
1910
|
-
<span class="cline-any cline-no"> </span>
|
|
1911
1530
|
<span class="cline-any cline-neutral"> </span>
|
|
1912
|
-
<span class="cline-any cline-no"> </span>
|
|
1913
1531
|
<span class="cline-any cline-neutral"> </span>
|
|
1914
|
-
<span class="cline-any cline-no"> </span>
|
|
1915
1532
|
<span class="cline-any cline-neutral"> </span>
|
|
1916
1533
|
<span class="cline-any cline-neutral"> </span>
|
|
1917
1534
|
<span class="cline-any cline-neutral"> </span>
|
|
1918
1535
|
<span class="cline-any cline-neutral"> </span>
|
|
1919
1536
|
<span class="cline-any cline-no"> </span>
|
|
1920
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1921
1537
|
<span class="cline-any cline-no"> </span>
|
|
1922
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1923
1538
|
<span class="cline-any cline-no"> </span>
|
|
1924
1539
|
<span class="cline-any cline-no"> </span>
|
|
1925
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1926
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1927
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1928
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1929
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1930
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1931
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1932
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1933
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1934
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1935
1540
|
<span class="cline-any cline-no"> </span>
|
|
1936
1541
|
<span class="cline-any cline-neutral"> </span>
|
|
1937
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1938
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1939
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1940
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1941
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1942
|
-
<span class="cline-any cline-no"> </span>
|
|
1943
1542
|
<span class="cline-any cline-no"> </span>
|
|
1944
1543
|
<span class="cline-any cline-neutral"> </span>
|
|
1945
|
-
<span class="cline-any cline-no"> </span>
|
|
1946
1544
|
<span class="cline-any cline-neutral"> </span>
|
|
1947
1545
|
<span class="cline-any cline-neutral"> </span>
|
|
1948
1546
|
<span class="cline-any cline-neutral"> </span>
|
|
1949
|
-
<span class="cline-any cline-no"> </span>
|
|
1950
|
-
<span class="cline-any cline-no"> </span>
|
|
1951
|
-
<span class="cline-any cline-no"> </span>
|
|
1952
1547
|
<span class="cline-any cline-neutral"> </span>
|
|
1953
1548
|
<span class="cline-any cline-no"> </span>
|
|
1954
|
-
<span class="cline-any cline-no"> </span>
|
|
1955
|
-
<span class="cline-any cline-no"> </span>
|
|
1956
|
-
<span class="cline-any cline-no"> </span>
|
|
1957
1549
|
<span class="cline-any cline-neutral"> </span>
|
|
1958
|
-
<span class="cline-any cline-no"> </span>
|
|
1959
1550
|
<span class="cline-any cline-neutral"> </span>
|
|
1960
1551
|
<span class="cline-any cline-neutral"> </span>
|
|
1961
1552
|
<span class="cline-any cline-neutral"> </span>
|
|
1962
1553
|
<span class="cline-any cline-neutral"> </span>
|
|
1963
|
-
<span class="cline-any cline-no"> </span>
|
|
1964
|
-
<span class="cline-any cline-no"> </span>
|
|
1965
|
-
<span class="cline-any cline-no"> </span>
|
|
1966
1554
|
<span class="cline-any cline-neutral"> </span>
|
|
1967
|
-
<span class="cline-any cline-no"> </span>
|
|
1968
|
-
<span class="cline-any cline-no"> </span>
|
|
1969
|
-
<span class="cline-any cline-no"> </span>
|
|
1970
1555
|
<span class="cline-any cline-neutral"> </span>
|
|
1971
1556
|
<span class="cline-any cline-neutral"> </span>
|
|
1972
|
-
<span class="cline-any cline-no"> </span>
|
|
1973
|
-
<span class="cline-any cline-no"> </span>
|
|
1974
1557
|
<span class="cline-any cline-neutral"> </span>
|
|
1975
|
-
<span class="cline-any cline-no"> </span>
|
|
1976
1558
|
<span class="cline-any cline-neutral"> </span>
|
|
1977
|
-
<span class="cline-any cline-no"> </span>
|
|
1978
1559
|
<span class="cline-any cline-neutral"> </span>
|
|
1979
|
-
<span class="cline-any cline-no"> </span>
|
|
1980
1560
|
<span class="cline-any cline-neutral"> </span>
|
|
1981
1561
|
<span class="cline-any cline-neutral"> </span>
|
|
1982
1562
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1985,24 +1565,8 @@
|
|
|
1985
1565
|
<span class="cline-any cline-no"> </span>
|
|
1986
1566
|
<span class="cline-any cline-no"> </span>
|
|
1987
1567
|
<span class="cline-any cline-neutral"> </span>
|
|
1988
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1989
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1990
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1991
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1992
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1993
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1994
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1995
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1996
|
-
<span class="cline-any cline-neutral"> </span>
|
|
1997
|
-
<span class="cline-any cline-no"> </span>
|
|
1998
|
-
<span class="cline-any cline-no"> </span>
|
|
1999
1568
|
<span class="cline-any cline-no"> </span>
|
|
2000
1569
|
<span class="cline-any cline-neutral"> </span>
|
|
2001
|
-
<span class="cline-any cline-no"> </span>
|
|
2002
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2003
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2004
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2005
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2006
1570
|
<span class="cline-any cline-neutral"> </span>
|
|
2007
1571
|
<span class="cline-any cline-no"> </span>
|
|
2008
1572
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -2011,39 +1575,10 @@
|
|
|
2011
1575
|
<span class="cline-any cline-neutral"> </span>
|
|
2012
1576
|
<span class="cline-any cline-neutral"> </span>
|
|
2013
1577
|
<span class="cline-any cline-neutral"> </span>
|
|
2014
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2015
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2016
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2017
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2018
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2019
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2020
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2021
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2022
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2023
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2024
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2025
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2026
1578
|
<span class="cline-any cline-no"> </span>
|
|
2027
1579
|
<span class="cline-any cline-no"> </span>
|
|
2028
1580
|
<span class="cline-any cline-neutral"> </span>
|
|
2029
1581
|
<span class="cline-any cline-no"> </span>
|
|
2030
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2031
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2032
|
-
<span class="cline-any cline-no"> </span>
|
|
2033
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2034
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2035
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2036
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2037
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2038
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2039
|
-
<span class="cline-any cline-no"> </span>
|
|
2040
|
-
<span class="cline-any cline-no"> </span>
|
|
2041
|
-
<span class="cline-any cline-no"> </span>
|
|
2042
|
-
<span class="cline-any cline-no"> </span>
|
|
2043
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2044
|
-
<span class="cline-any cline-no"> </span>
|
|
2045
|
-
<span class="cline-any cline-no"> </span>
|
|
2046
|
-
<span class="cline-any cline-no"> </span>
|
|
2047
1582
|
<span class="cline-any cline-no"> </span>
|
|
2048
1583
|
<span class="cline-any cline-neutral"> </span>
|
|
2049
1584
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -2074,8 +1609,6 @@
|
|
|
2074
1609
|
<span class="cline-any cline-neutral"> </span>
|
|
2075
1610
|
<span class="cline-any cline-neutral"> </span>
|
|
2076
1611
|
<span class="cline-any cline-no"> </span>
|
|
2077
|
-
<span class="cline-any cline-no"> </span>
|
|
2078
|
-
<span class="cline-any cline-no"> </span>
|
|
2079
1612
|
<span class="cline-any cline-neutral"> </span>
|
|
2080
1613
|
<span class="cline-any cline-no"> </span>
|
|
2081
1614
|
<span class="cline-any cline-no"> </span>
|
|
@@ -2092,16 +1625,6 @@
|
|
|
2092
1625
|
<span class="cline-any cline-neutral"> </span>
|
|
2093
1626
|
<span class="cline-any cline-neutral"> </span>
|
|
2094
1627
|
<span class="cline-any cline-neutral"> </span>
|
|
2095
|
-
<span class="cline-any cline-no"> </span>
|
|
2096
|
-
<span class="cline-any cline-no"> </span>
|
|
2097
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2098
|
-
<span class="cline-any cline-no"> </span>
|
|
2099
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2100
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2101
|
-
<span class="cline-any cline-no"> </span>
|
|
2102
|
-
<span class="cline-any cline-no"> </span>
|
|
2103
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2104
|
-
<span class="cline-any cline-no"> </span>
|
|
2105
1628
|
<span class="cline-any cline-neutral"> </span>
|
|
2106
1629
|
<span class="cline-any cline-no"> </span>
|
|
2107
1630
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -2113,46 +1636,29 @@
|
|
|
2113
1636
|
<span class="cline-any cline-no"> </span>
|
|
2114
1637
|
<span class="cline-any cline-neutral"> </span>
|
|
2115
1638
|
<span class="cline-any cline-no"> </span>
|
|
2116
|
-
<span class="cline-any cline-no"> </span>
|
|
2117
|
-
<span class="cline-any cline-no"> </span>
|
|
2118
|
-
<span class="cline-any cline-no"> </span>
|
|
2119
|
-
<span class="cline-any cline-no"> </span>
|
|
2120
|
-
<span class="cline-any cline-no"> </span>
|
|
2121
|
-
<span class="cline-any cline-no"> </span>
|
|
2122
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2123
|
-
<span class="cline-any cline-no"> </span>
|
|
2124
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2125
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2126
|
-
<span class="cline-any cline-no"> </span>
|
|
2127
1639
|
<span class="cline-any cline-neutral"> </span>
|
|
2128
1640
|
<span class="cline-any cline-neutral"> </span>
|
|
2129
1641
|
<span class="cline-any cline-no"> </span>
|
|
2130
1642
|
<span class="cline-any cline-no"> </span>
|
|
2131
1643
|
<span class="cline-any cline-neutral"> </span>
|
|
2132
1644
|
<span class="cline-any cline-no"> </span>
|
|
2133
|
-
<span class="cline-any cline-no"> </span>
|
|
2134
1645
|
<span class="cline-any cline-neutral"> </span>
|
|
2135
1646
|
<span class="cline-any cline-no"> </span>
|
|
1647
|
+
<span class="cline-any cline-no"> </span>
|
|
2136
1648
|
<span class="cline-any cline-neutral"> </span>
|
|
2137
1649
|
<span class="cline-any cline-neutral"> </span>
|
|
2138
1650
|
<span class="cline-any cline-no"> </span>
|
|
2139
1651
|
<span class="cline-any cline-no"> </span>
|
|
2140
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2141
|
-
<span class="cline-any cline-no"> </span>
|
|
2142
1652
|
<span class="cline-any cline-no"> </span>
|
|
2143
1653
|
<span class="cline-any cline-neutral"> </span>
|
|
2144
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2145
1654
|
<span class="cline-any cline-no"> </span>
|
|
2146
1655
|
<span class="cline-any cline-no"> </span>
|
|
2147
1656
|
<span class="cline-any cline-neutral"> </span>
|
|
2148
1657
|
<span class="cline-any cline-neutral"> </span>
|
|
2149
1658
|
<span class="cline-any cline-no"> </span>
|
|
2150
|
-
<span class="cline-any cline-no"> </span>
|
|
2151
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2152
1659
|
<span class="cline-any cline-neutral"> </span>
|
|
2153
1660
|
<span class="cline-any cline-no"> </span>
|
|
2154
1661
|
<span class="cline-any cline-neutral"> </span>
|
|
2155
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2156
1662
|
<span class="cline-any cline-no"> </span>
|
|
2157
1663
|
<span class="cline-any cline-neutral"> </span>
|
|
2158
1664
|
<span class="cline-any cline-no"> </span>
|
|
@@ -2197,13 +1703,11 @@
|
|
|
2197
1703
|
<span class="cline-any cline-no"> </span>
|
|
2198
1704
|
<span class="cline-any cline-no"> </span>
|
|
2199
1705
|
<span class="cline-any cline-no"> </span>
|
|
2200
|
-
<span class="cline-any cline-no"> </span>
|
|
2201
1706
|
<span class="cline-any cline-neutral"> </span>
|
|
2202
1707
|
<span class="cline-any cline-neutral"> </span>
|
|
2203
1708
|
<span class="cline-any cline-no"> </span>
|
|
2204
1709
|
<span class="cline-any cline-no"> </span>
|
|
2205
1710
|
<span class="cline-any cline-no"> </span>
|
|
2206
|
-
<span class="cline-any cline-no"> </span>
|
|
2207
1711
|
<span class="cline-any cline-neutral"> </span>
|
|
2208
1712
|
<span class="cline-any cline-neutral"> </span>
|
|
2209
1713
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -2253,11 +1757,27 @@
|
|
|
2253
1757
|
<span class="cline-any cline-neutral"> </span>
|
|
2254
1758
|
<span class="cline-any cline-neutral"> </span>
|
|
2255
1759
|
<span class="cline-any cline-neutral"> </span>
|
|
1760
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1761
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1762
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1763
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1764
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2256
1765
|
<span class="cline-any cline-no"> </span>
|
|
2257
1766
|
<span class="cline-any cline-no"> </span>
|
|
1767
|
+
<span class="cline-any cline-no"> </span>
|
|
1768
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2258
1769
|
<span class="cline-any cline-neutral"> </span>
|
|
2259
1770
|
<span class="cline-any cline-neutral"> </span>
|
|
2260
1771
|
<span class="cline-any cline-neutral"> </span>
|
|
1772
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1773
|
+
<span class="cline-any cline-no"> </span>
|
|
1774
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1775
|
+
<span class="cline-any cline-no"> </span>
|
|
1776
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1777
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1778
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1779
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1780
|
+
<span class="cline-any cline-no"> </span>
|
|
2261
1781
|
<span class="cline-any cline-no"> </span>
|
|
2262
1782
|
<span class="cline-any cline-no"> </span>
|
|
2263
1783
|
<span class="cline-any cline-no"> </span>
|
|
@@ -2277,10 +1797,16 @@
|
|
|
2277
1797
|
<span class="cline-any cline-neutral"> </span>
|
|
2278
1798
|
<span class="cline-any cline-neutral"> </span>
|
|
2279
1799
|
<span class="cline-any cline-neutral"> </span>
|
|
2280
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"
|
|
2281
|
-
<span class="cstat-no" title="statement not covered" >import
|
|
2282
|
-
|
|
2283
|
-
|
|
1800
|
+
<span class="cline-any cline-neutral"> </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'
|
|
2284
1810
|
<span class="cstat-no" title="statement not covered" >import {</span>
|
|
2285
1811
|
now,
|
|
2286
1812
|
adjustTimeOrigin,
|
|
@@ -2306,6 +1832,7 @@ import type { Options as SessOptions } from './session.js'
|
|
|
2306
1832
|
import type { Options as NetworkOptions } from '../modules/network.js'
|
|
2307
1833
|
<span class="cstat-no" title="statement not covered" >import CanvasRecorder from './canvas.js'</span>
|
|
2308
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>
|
|
2309
1836
|
|
|
2310
1837
|
import type {
|
|
2311
1838
|
Options as WebworkerOptions,
|
|
@@ -2333,7 +1860,6 @@ interface OnStartInfo {
|
|
|
2333
1860
|
|
|
2334
1861
|
const CANCELED = <span class="cstat-no" title="statement not covered" >'canceled' as const</span>
|
|
2335
1862
|
const uxtStorageKey = <span class="cstat-no" title="statement not covered" >'or_uxt_active'</span>
|
|
2336
|
-
const bufferStorageKey = <span class="cstat-no" title="statement not covered" >'or_buffer_1'</span>
|
|
2337
1863
|
const START_ERROR = <span class="cstat-no" title="statement not covered" >':(' as const</span>
|
|
2338
1864
|
type SuccessfulStart = OnStartInfo & {
|
|
2339
1865
|
success: true
|
|
@@ -2371,7 +1897,6 @@ type CommitCallback = (messages: Array<Message>) => void
|
|
|
2371
1897
|
<span class="cstat-no" title="statement not covered" > NotActive,</span>
|
|
2372
1898
|
<span class="cstat-no" title="statement not covered" > Starting,</span>
|
|
2373
1899
|
<span class="cstat-no" title="statement not covered" > Active,</span>
|
|
2374
|
-
<span class="cstat-no" title="statement not covered" > ColdStart,</span>
|
|
2375
1900
|
}
|
|
2376
1901
|
|
|
2377
1902
|
type AppOptions = {
|
|
@@ -2425,14 +1950,8 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2425
1950
|
readonly localStorage: Storage
|
|
2426
1951
|
readonly sessionStorage: Storage
|
|
2427
1952
|
private readonly <span class="cstat-no" title="statement not covered" >messages: Array<Message> = []</span>
|
|
2428
|
-
/**
|
|
2429
|
-
* we need 2 buffers so we don't lose anything
|
|
2430
|
-
* @read coldStart implementation
|
|
2431
|
-
* */
|
|
2432
|
-
private <span class="cstat-no" title="statement not covered" >bufferedMessages1: Array<Message> = []</span>
|
|
2433
|
-
private <span class="cstat-no" title="statement not covered" >bufferedMessages2: Array<Message> = []</span>
|
|
2434
1953
|
/* private */
|
|
2435
|
-
readonly observer: Observer // non-
|
|
1954
|
+
readonly observer: Observer // non-privat for attachContextCallback
|
|
2436
1955
|
private readonly <span class="cstat-no" title="statement not covered" >startCallbacks: Array<StartCallback> = []</span>
|
|
2437
1956
|
private readonly <span class="cstat-no" title="statement not covered" >stopCallbacks: Array<() => any> = []</span>
|
|
2438
1957
|
private readonly <span class="cstat-no" title="statement not covered" >commitCallbacks: Array<CommitCallback> = []</span>
|
|
@@ -2450,15 +1969,12 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2450
1969
|
public attributeSender: AttributeSender
|
|
2451
1970
|
private <span class="cstat-no" title="statement not covered" >canvasRecorder: CanvasRecorder | null = null</span>
|
|
2452
1971
|
private uxtManager: UserTestManager
|
|
2453
|
-
private
|
|
2454
|
-
|
|
2455
|
-
&
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
options: Partial<Options>,
|
|
2460
|
-
private readonly <span class="cstat-no" title="statement not covered" >signalError: (error: string, apis: string[]) => void,</span>
|
|
2461
|
-
) {
|
|
1972
|
+
private tagWatcher: TagWatcher
|
|
1973
|
+
|
|
1974
|
+
<span class="fstat-no" title="function not covered" > constructor(p</span>rojectKey: string, sessionToken: string | undefined, options: Partial<Options>) {
|
|
1975
|
+
// if (options.onStart !== undefined) {
|
|
1976
|
+
// deprecationWarn("'onStart' option", "tracker.start().then(/* handle session info */)")
|
|
1977
|
+
// } ?? maybe onStart is good
|
|
2462
1978
|
<span class="cstat-no" title="statement not covered" > this.contextId = Math.random().toString(36).slice(2)</span>
|
|
2463
1979
|
<span class="cstat-no" title="statement not covered" > this.projectKey = projectKey</span>
|
|
2464
1980
|
<span class="cstat-no" title="statement not covered" > this.networkOptions = options.network</span>
|
|
@@ -2502,7 +2018,7 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2502
2018
|
<span class="cstat-no" title="statement not covered" > this.notify = new Logger(this.options.verbose ? LogLevel.Warnings : LogLevel.Silent)</span>
|
|
2503
2019
|
<span class="cstat-no" title="statement not covered" > this.session = new Session(this, this.options)</span>
|
|
2504
2020
|
<span class="cstat-no" title="statement not covered" > this.attributeSender = new AttributeSender(this, Boolean(this.options.disableStringDict))</span>
|
|
2505
|
-
<span class="cstat-no" title="statement not covered" > this.
|
|
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) => <span class="cstat-no" title="statement not covered" >console.log(`Tag ${tag} has been rendered`))</span></span>
|
|
2506
2022
|
<span class="cstat-no" title="statement not covered" > this.session.attachUpdateCallback(<span class="fstat-no" title="function not covered" >({</span> userID, metadata }) => {</span>
|
|
2507
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>
|
|
2508
2024
|
// TODO: nullable userID
|
|
@@ -2530,25 +2046,26 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2530
2046
|
<span class="cstat-no" title="statement not covered" > this.stop(false)</span>
|
|
2531
2047
|
<span class="cstat-no" title="statement not covered" > void this.start({}, true)</span>
|
|
2532
2048
|
} else <span class="cstat-no" title="statement not covered" >if (data === 'not_init') {</span>
|
|
2533
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2049
|
+
<span class="cstat-no" title="statement not covered" > this.debug.warn('OR WebWorker: writer not initialised. Restarting tracker')</span>
|
|
2534
2050
|
} else <span class="cstat-no" title="statement not covered" >if (data.type === 'failure') {</span>
|
|
2535
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>
|
|
2536
2053
|
<span class="cstat-no" title="statement not covered" > this._debug('worker_failed', data.reason)</span>
|
|
2537
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>
|
|
2538
2055
|
const batch = <span class="cstat-no" title="statement not covered" >data.batch</span>
|
|
2539
2056
|
const batchSize = <span class="cstat-no" title="statement not covered" >batch.byteLength</span>
|
|
2540
2057
|
<span class="cstat-no" title="statement not covered" > if (batchSize > this.compressionThreshold) {</span>
|
|
2541
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) => {</span>
|
|
2542
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2543
|
-
<span class="cstat-no" title="statement not covered" >
|
|
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>
|
|
2544
2061
|
<span class="cstat-no" title="statement not covered" > this.stop(false)</span>
|
|
2545
2062
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.restartAttempts < 3) {</span>
|
|
2546
2063
|
<span class="cstat-no" title="statement not covered" > this.restartAttempts += 1</span>
|
|
2547
2064
|
<span class="cstat-no" title="statement not covered" > void this.start({}, true)</span>
|
|
2548
2065
|
}
|
|
2066
|
+
} else {
|
|
2067
|
+
<span class="cstat-no" title="statement not covered" > this.worker?.postMessage({ type: 'compressed', batch: result })</span>
|
|
2549
2068
|
}
|
|
2550
|
-
// @ts-ignore
|
|
2551
|
-
<span class="cstat-no" title="statement not covered" > this.worker?.postMessage({ type: 'compressed', batch: result })</span>
|
|
2552
2069
|
})
|
|
2553
2070
|
} else {
|
|
2554
2071
|
<span class="cstat-no" title="statement not covered" > this.worker?.postMessage({ type: 'uncompressed', batch: batch })</span>
|
|
@@ -2647,17 +2164,9 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2647
2164
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this._usingOldFetchPlugin && message[0] === MType.NetworkRequest) {</span>
|
|
2648
2165
|
<span class="cstat-no" title="statement not covered" > return</span>
|
|
2649
2166
|
}
|
|
2650
|
-
|
|
2651
2167
|
// ====================================================
|
|
2652
|
-
|
|
2653
|
-
<span class="cstat-no" title="statement not covered" >
|
|
2654
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.singleBuffer) {</span>
|
|
2655
|
-
<span class="cstat-no" title="statement not covered" > this.bufferedMessages2.push(message)</span>
|
|
2656
|
-
}
|
|
2657
|
-
<span class="cstat-no" title="statement not covered" > this.conditionsManager?.processMessage(message)</span>
|
|
2658
|
-
} else {
|
|
2659
|
-
<span class="cstat-no" title="statement not covered" > this.messages.push(message)</span>
|
|
2660
|
-
}
|
|
2168
|
+
|
|
2169
|
+
<span class="cstat-no" title="statement not covered" > this.messages.push(message)</span>
|
|
2661
2170
|
// TODO: commit on start if there were `urgent` sends;
|
|
2662
2171
|
// Clarify where urgent can be used for;
|
|
2663
2172
|
// Clarify workflow for each type of message in case it was sent before start
|
|
@@ -2668,11 +2177,7 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2668
2177
|
}
|
|
2669
2178
|
}
|
|
2670
2179
|
|
|
2671
|
-
|
|
2672
|
-
* Normal workflow: add timestamp and tab data to batch, then commit it
|
|
2673
|
-
* every ~30ms
|
|
2674
|
-
* */
|
|
2675
|
-
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 {
|
|
2676
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 && this.messages.length) {</span>
|
|
2677
2182
|
<span class="cstat-no" title="statement not covered" > requestIdleCb(<span class="fstat-no" title="function not covered" >() =</span>> {</span>
|
|
2678
2183
|
<span class="cstat-no" title="statement not covered" > this.messages.unshift(TabData(this.session.getTabId()))</span>
|
|
@@ -2684,39 +2189,6 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2684
2189
|
})
|
|
2685
2190
|
}
|
|
2686
2191
|
}
|
|
2687
|
-
|
|
2688
|
-
<span class="cstat-no" title="statement not covered" > coldStartCommitN = 0</span>
|
|
2689
|
-
|
|
2690
|
-
/**
|
|
2691
|
-
* Cold start: add timestamp and tab data to both batches
|
|
2692
|
-
* every 2nd tick, ~60ms
|
|
2693
|
-
* this will make batches a bit larger and replay will work with bigger jumps every frame
|
|
2694
|
-
* but in turn we don't overload batch writer on session start with 1000 batches
|
|
2695
|
-
* */
|
|
2696
|
-
private <span class="fstat-no" title="function not covered" >_cStartCommit(</span>): void {
|
|
2697
|
-
<span class="cstat-no" title="statement not covered" > this.coldStartCommitN += 1</span>
|
|
2698
|
-
<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>
|
|
2699
|
-
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1.push(Timestamp(this.timestamp()))</span>
|
|
2700
|
-
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1.push(TabData(this.session.getTabId()))</span>
|
|
2701
|
-
<span class="cstat-no" title="statement not covered" > this.bufferedMessages2.push(Timestamp(this.timestamp()))</span>
|
|
2702
|
-
<span class="cstat-no" title="statement not covered" > this.bufferedMessages2.push(TabData(this.session.getTabId()))</span>
|
|
2703
|
-
<span class="cstat-no" title="statement not covered" > this.coldStartCommitN = 0</span>
|
|
2704
|
-
}
|
|
2705
|
-
}
|
|
2706
|
-
|
|
2707
|
-
private <span class="fstat-no" title="function not covered" >commit(</span>): void {
|
|
2708
|
-
<span class="cstat-no" title="statement not covered" > if (this.activityState === ActivityState.ColdStart) {</span>
|
|
2709
|
-
<span class="cstat-no" title="statement not covered" > this._cStartCommit()</span>
|
|
2710
|
-
} else {
|
|
2711
|
-
<span class="cstat-no" title="statement not covered" > this._nCommit()</span>
|
|
2712
|
-
}
|
|
2713
|
-
}
|
|
2714
|
-
|
|
2715
|
-
private <span class="fstat-no" title="function not covered" >postToWorker(</span>messages: Array<Message>) {
|
|
2716
|
-
<span class="cstat-no" title="statement not covered" > this.worker?.postMessage(messages)</span>
|
|
2717
|
-
<span class="cstat-no" title="statement not covered" > this.commitCallbacks.forEach(<span class="fstat-no" title="function not covered" >(c</span>b) => <span class="cstat-no" title="statement not covered" >cb(messages))</span></span>
|
|
2718
|
-
<span class="cstat-no" title="statement not covered" > messages.length = 0</span>
|
|
2719
|
-
}
|
|
2720
2192
|
|
|
2721
2193
|
private <span class="cstat-no" title="statement not covered" >delay = 0</span>
|
|
2722
2194
|
|
|
@@ -2888,193 +2360,20 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2888
2360
|
<span class="cstat-no" title="statement not covered" > this.sessionStorage.removeItem(this.options.session_reset_key)</span>
|
|
2889
2361
|
}
|
|
2890
2362
|
}
|
|
2891
|
-
|
|
2892
|
-
<span class="cstat-no" title="statement not covered" > coldInterval: ReturnType<typeof setInterval> | null = null</span>
|
|
2893
|
-
<span class="cstat-no" title="statement not covered" > orderNumber = 0</span>
|
|
2894
|
-
<span class="cstat-no" title="statement not covered" > coldStartTs = 0</span>
|
|
2895
|
-
<span class="cstat-no" title="statement not covered" > singleBuffer = false</span>
|
|
2896
|
-
|
|
2897
|
-
private <span class="fstat-no" title="function not covered" >checkSessionToken(</span>forceNew?: boolean) {
|
|
2898
|
-
const lsReset = <span class="cstat-no" title="statement not covered" >this.sessionStorage.getItem(this.options.session_reset_key) !== null</span>
|
|
2899
|
-
const needNewSessionID = <span class="cstat-no" title="statement not covered" >forceNew || lsReset</span>
|
|
2900
|
-
const sessionToken = <span class="cstat-no" title="statement not covered" >this.session.getSessionToken()</span>
|
|
2901
|
-
|
|
2902
|
-
<span class="cstat-no" title="statement not covered" > return needNewSessionID || !sessionToken</span>
|
|
2903
|
-
}
|
|
2904
|
-
/**
|
|
2905
|
-
* start buffering messages without starting the actual session, which gives
|
|
2906
|
-
* user 30 seconds to "activate" and record session by calling `start()` on conditional trigger
|
|
2907
|
-
* and we will then send buffered batch, so it won't get lost
|
|
2908
|
-
* */
|
|
2909
|
-
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) {
|
|
2910
|
-
<span class="cstat-no" title="statement not covered" > this.singleBuffer = false</span>
|
|
2911
|
-
const second = <span class="cstat-no" title="statement not covered" >1000</span>
|
|
2912
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (conditional) {</span>
|
|
2913
|
-
<span class="cstat-no" title="statement not covered" > this.conditionsManager = new ConditionsManager(this, startOpts)</span>
|
|
2914
|
-
}
|
|
2915
|
-
const isNewSession = <span class="cstat-no" title="statement not covered" >this.checkSessionToken(startOpts.forceNew)</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
|
-
const r = <span class="cstat-no" title="statement not covered" >await fetch(this.options.ingestPoint + '/v1/web/start', {</span>
|
|
2918
|
-
method: 'POST',
|
|
2919
|
-
headers: {
|
|
2920
|
-
'Content-Type': 'application/json',
|
|
2921
|
-
},
|
|
2922
|
-
body: JSON.stringify({
|
|
2923
|
-
...this.getTrackerInfo(),
|
|
2924
|
-
timestamp: now(),
|
|
2925
|
-
doNotRecord: true,
|
|
2926
|
-
bufferDiff: 0,
|
|
2927
|
-
userID: this.session.getInfo().userID,
|
|
2928
|
-
token: undefined,
|
|
2929
|
-
deviceMemory,
|
|
2930
|
-
jsHeapSizeLimit,
|
|
2931
|
-
timezone: getTimezone(),
|
|
2932
|
-
}),
|
|
2933
|
-
})
|
|
2934
|
-
// this token is needed to fetch conditions and flags,
|
|
2935
|
-
// but it can't be used to record a session
|
|
2936
|
-
const {
|
|
2937
|
-
token,
|
|
2938
|
-
userBrowser,
|
|
2939
|
-
userCity,
|
|
2940
|
-
userCountry,
|
|
2941
|
-
userDevice,
|
|
2942
|
-
userOS,
|
|
2943
|
-
userState,
|
|
2944
|
-
projectID,
|
|
2945
|
-
} = <span class="cstat-no" title="statement not covered" >await r.json()</span>
|
|
2946
|
-
<span class="cstat-no" title="statement not covered" > this.session.assign({ projectID })</span>
|
|
2947
|
-
<span class="cstat-no" title="statement not covered" > this.session.setUserInfo({</span>
|
|
2948
|
-
userBrowser,
|
|
2949
|
-
userCity,
|
|
2950
|
-
userCountry,
|
|
2951
|
-
userDevice,
|
|
2952
|
-
userOS,
|
|
2953
|
-
userState,
|
|
2954
|
-
})
|
|
2955
|
-
<span class="cstat-no" title="statement not covered" > await this.conditionsManager?.fetchConditions(token as string)</span>
|
|
2956
|
-
<span class="cstat-no" title="statement not covered" > await this.featureFlags.reloadFlags(token as string)</span>
|
|
2957
|
-
<span class="cstat-no" title="statement not covered" > this.conditionsManager?.processFlags(this.featureFlags.flags)</span>
|
|
2958
|
-
}
|
|
2959
|
-
const cycle = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >() =</span>> {</span>
|
|
2960
|
-
<span class="cstat-no" title="statement not covered" > this.orderNumber += 1</span>
|
|
2961
|
-
<span class="cstat-no" title="statement not covered" > adjustTimeOrigin()</span>
|
|
2962
|
-
<span class="cstat-no" title="statement not covered" > this.coldStartTs = now()</span>
|
|
2963
|
-
<span class="cstat-no" title="statement not covered" > if (this.orderNumber % 2 === 0) {</span>
|
|
2964
|
-
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1.length = 0</span>
|
|
2965
|
-
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1.push(Timestamp(this.timestamp()))</span>
|
|
2966
|
-
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1.push(TabData(this.session.getTabId()))</span>
|
|
2967
|
-
} else {
|
|
2968
|
-
<span class="cstat-no" title="statement not covered" > this.bufferedMessages2.length = 0</span>
|
|
2969
|
-
<span class="cstat-no" title="statement not covered" > this.bufferedMessages2.push(Timestamp(this.timestamp()))</span>
|
|
2970
|
-
<span class="cstat-no" title="statement not covered" > this.bufferedMessages2.push(TabData(this.session.getTabId()))</span>
|
|
2971
|
-
}
|
|
2972
|
-
<span class="cstat-no" title="statement not covered" > this.stop(false)</span>
|
|
2973
|
-
<span class="cstat-no" title="statement not covered" > this.activityState = ActivityState.ColdStart</span>
|
|
2974
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (startOpts.sessionHash) {</span>
|
|
2975
|
-
<span class="cstat-no" title="statement not covered" > this.session.applySessionHash(startOpts.sessionHash)</span>
|
|
2976
|
-
}
|
|
2977
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (startOpts.forceNew) {</span>
|
|
2978
|
-
// Reset session metadata only if requested directly
|
|
2979
|
-
<span class="cstat-no" title="statement not covered" > this.session.reset()</span>
|
|
2980
|
-
}
|
|
2981
|
-
<span class="cstat-no" title="statement not covered" > this.session.assign({</span>
|
|
2982
|
-
// MBTODO: maybe it would make sense to `forceNew` if the `userID` was changed
|
|
2983
|
-
userID: startOpts.userID,
|
|
2984
|
-
metadata: startOpts.metadata,
|
|
2985
|
-
})
|
|
2986
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!isNewSession) {</span>
|
|
2987
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
2988
|
-
<span class="cstat-no" title="statement not covered" > this.send(TabChange(this.session.getTabId()))</span>
|
|
2989
|
-
}
|
|
2990
|
-
<span class="cstat-no" title="statement not covered" > this.observer.observe()</span>
|
|
2991
|
-
<span class="cstat-no" title="statement not covered" > this.ticker.start()</span>
|
|
2992
|
-
}
|
|
2993
|
-
<span class="cstat-no" title="statement not covered" > this.coldInterval = setInterval(<span class="fstat-no" title="function not covered" >() =</span>> {</span>
|
|
2994
|
-
<span class="cstat-no" title="statement not covered" > cycle()</span>
|
|
2995
|
-
}, 30 * second)
|
|
2996
|
-
<span class="cstat-no" title="statement not covered" > cycle()</span>
|
|
2997
|
-
}
|
|
2998
|
-
|
|
2999
|
-
public <span class="fstat-no" title="function not covered" >offlineRecording(</span>startOpts: StartOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
|
|
3000
|
-
<span class="cstat-no" title="statement not covered" > this.singleBuffer = true</span>
|
|
3001
|
-
const isNewSession = <span class="cstat-no" title="statement not covered" >this.checkSessionToken(startOpts.forceNew)</span>
|
|
3002
|
-
<span class="cstat-no" title="statement not covered" > adjustTimeOrigin()</span>
|
|
3003
|
-
<span class="cstat-no" title="statement not covered" > this.coldStartTs = now()</span>
|
|
3004
|
-
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1.length = 0</span>
|
|
3005
|
-
const saverBuffer = <span class="cstat-no" title="statement not covered" >this.localStorage.getItem(bufferStorageKey)</span>
|
|
3006
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (saverBuffer) {</span>
|
|
3007
|
-
const data = <span class="cstat-no" title="statement not covered" >JSON.parse(saverBuffer)</span>
|
|
3008
|
-
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1 = Array.isArray(data) ? data : []</span>
|
|
3009
|
-
<span class="cstat-no" title="statement not covered" > this.localStorage.removeItem(bufferStorageKey)</span>
|
|
3010
|
-
}
|
|
3011
|
-
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1.push(Timestamp(this.timestamp()))</span>
|
|
3012
|
-
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1.push(TabData(this.session.getTabId()))</span>
|
|
3013
|
-
<span class="cstat-no" title="statement not covered" > this.activityState = ActivityState.ColdStart</span>
|
|
3014
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (startOpts.sessionHash) {</span>
|
|
3015
|
-
<span class="cstat-no" title="statement not covered" > this.session.applySessionHash(startOpts.sessionHash)</span>
|
|
3016
|
-
}
|
|
3017
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (startOpts.forceNew) {</span>
|
|
3018
|
-
// Reset session metadata only if requested directly
|
|
3019
|
-
<span class="cstat-no" title="statement not covered" > this.session.reset()</span>
|
|
3020
|
-
}
|
|
3021
|
-
<span class="cstat-no" title="statement not covered" > this.session.assign({</span>
|
|
3022
|
-
// MBTODO: maybe it would make sense to `forceNew` if the `userID` was changed
|
|
3023
|
-
userID: startOpts.userID,
|
|
3024
|
-
metadata: startOpts.metadata,
|
|
3025
|
-
})
|
|
3026
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!isNewSession) {</span>
|
|
3027
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
3028
|
-
<span class="cstat-no" title="statement not covered" > this.send(TabChange(this.session.getTabId()))</span>
|
|
3029
|
-
}
|
|
3030
|
-
<span class="cstat-no" title="statement not covered" > this.observer.observe()</span>
|
|
3031
|
-
<span class="cstat-no" title="statement not covered" > this.ticker.start()</span>
|
|
3032
|
-
}
|
|
3033
|
-
|
|
3034
|
-
/**
|
|
3035
|
-
* Saves the captured messages in localStorage (or whatever is used in its place)
|
|
3036
|
-
*
|
|
3037
|
-
* Then when this.offlineRecording is called, it will preload this messages and clear the storage item
|
|
3038
|
-
*
|
|
3039
|
-
* Keeping the size of local storage reasonable is up to the end users of this library
|
|
3040
|
-
* */
|
|
3041
|
-
public <span class="fstat-no" title="function not covered" >saveBuffer(</span>) {
|
|
3042
|
-
<span class="cstat-no" title="statement not covered" > this.localStorage.setItem(bufferStorageKey, JSON.stringify(this.bufferedMessages1))</span>
|
|
3043
|
-
}
|
|
3044
|
-
|
|
3045
|
-
/**
|
|
3046
|
-
* Uploads the stored buffer to create session
|
|
3047
|
-
* */
|
|
3048
|
-
public <span class="fstat-no" title="function not covered" >uploadOfflineRecording(</span>) {
|
|
3049
|
-
const buffer = <span class="cstat-no" title="statement not covered" >this.bufferedMessages1</span>
|
|
3050
|
-
<span class="cstat-no" title="statement not covered" > this.stop(false)</span>
|
|
3051
|
-
// then fetch it
|
|
3052
|
-
<span class="cstat-no" title="statement not covered" > this.clearBuffers()</span>
|
|
3053
|
-
}
|
|
3054
2363
|
|
|
3055
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<StartPromiseReturn> {
|
|
3056
|
-
const isColdStart = <span class="cstat-no" title="statement not covered" >this.activityState === ActivityState.ColdStart</span>
|
|
3057
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (isColdStart && this.coldInterval) {</span>
|
|
3058
|
-
<span class="cstat-no" title="statement not covered" > clearInterval(this.coldInterval)</span>
|
|
3059
|
-
}
|
|
3060
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>
|
|
3061
|
-
|
|
3062
|
-
<span class="cstat-no" title="statement not covered" > this.signalError(reason, [])</span>
|
|
3063
|
-
<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>
|
|
3064
2367
|
}
|
|
3065
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
<span class="cstat-no" title="statement not covered" > this.signalError(reason, [])</span>
|
|
3072
|
-
<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
|
+
)
|
|
3073
2374
|
}
|
|
3074
2375
|
<span class="cstat-no" title="statement not covered" > this.activityState = ActivityState.Starting</span>
|
|
3075
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3076
|
-
<span class="cstat-no" title="statement not covered" > adjustTimeOrigin()</span>
|
|
3077
|
-
}
|
|
2376
|
+
<span class="cstat-no" title="statement not covered" > adjustTimeOrigin()</span>
|
|
3078
2377
|
|
|
3079
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>
|
|
3080
2379
|
<span class="cstat-no" title="statement not covered" > this.session.applySessionHash(startOpts.sessionHash)</span>
|
|
@@ -3101,13 +2400,15 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
3101
2400
|
tabId: this.session.getTabId(),
|
|
3102
2401
|
})
|
|
3103
2402
|
|
|
3104
|
-
const
|
|
3105
|
-
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>
|
|
3106
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>
|
|
3107
2408
|
|
|
3108
2409
|
<span class="cstat-no" title="statement not covered" > this.debug.log(</span>
|
|
3109
2410
|
'OpenReplay: starting session; need new session id?',
|
|
3110
|
-
|
|
2411
|
+
needNewSessionID,
|
|
3111
2412
|
'session token: ',
|
|
3112
2413
|
sessionToken,
|
|
3113
2414
|
)
|
|
@@ -3120,8 +2421,6 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
3120
2421
|
body: JSON.stringify({
|
|
3121
2422
|
...this.getTrackerInfo(),
|
|
3122
2423
|
timestamp,
|
|
3123
|
-
doNotRecord: false,
|
|
3124
|
-
bufferDiff: timestamp - this.coldStartTs,
|
|
3125
2424
|
userID: this.session.getInfo().userID,
|
|
3126
2425
|
token: isNewSession ? undefined : sessionToken,
|
|
3127
2426
|
deviceMemory,
|
|
@@ -3144,14 +2443,10 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
3144
2443
|
})
|
|
3145
2444
|
.then(<span class="fstat-no" title="function not covered" >(r</span>) => {
|
|
3146
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>
|
|
3147
|
-
|
|
3148
|
-
<span class="cstat-no" title="statement not covered" > this.signalError(reason, [])</span>
|
|
3149
|
-
<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>
|
|
3150
2447
|
}
|
|
3151
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>
|
|
3152
|
-
|
|
3153
|
-
<span class="cstat-no" title="statement not covered" > this.signalError(reason, [])</span>
|
|
3154
|
-
<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>
|
|
3155
2450
|
}
|
|
3156
2451
|
const {
|
|
3157
2452
|
token,
|
|
@@ -3180,9 +2475,7 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
3180
2475
|
typeof delay !== 'number' ||
|
|
3181
2476
|
(typeof beaconSizeLimit !== 'number' && typeof beaconSizeLimit !== 'undefined')
|
|
3182
2477
|
) {
|
|
3183
|
-
|
|
3184
|
-
<span class="cstat-no" title="statement not covered" > this.signalError(reason, [])</span>
|
|
3185
|
-
<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>
|
|
3186
2479
|
}
|
|
3187
2480
|
<span class="cstat-no" title="statement not covered" > this.delay = delay</span>
|
|
3188
2481
|
<span class="cstat-no" title="statement not covered" > this.session.setSessionToken(token)</span>
|
|
@@ -3199,6 +2492,13 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
3199
2492
|
timestamp: startTimestamp || timestamp,
|
|
3200
2493
|
projectID,
|
|
3201
2494
|
})
|
|
2495
|
+
|
|
2496
|
+
<span class="cstat-no" title="statement not covered" > this.worker.postMessage({</span>
|
|
2497
|
+
type: 'auth',
|
|
2498
|
+
token,
|
|
2499
|
+
beaconSizeLimit,
|
|
2500
|
+
})
|
|
2501
|
+
|
|
3202
2502
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!isNewSession && token === sessionToken) {</span>
|
|
3203
2503
|
<span class="cstat-no" title="statement not covered" > this.debug.log('continuing session on new tab', this.session.getTabId())</span>
|
|
3204
2504
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
@@ -3210,48 +2510,13 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
3210
2510
|
)
|
|
3211
2511
|
<span class="cstat-no" title="statement not covered" > this.localStorage.setItem(this.options.local_uuid_key, userUUID)</span>
|
|
3212
2512
|
|
|
3213
|
-
<span class="cstat-no" title="statement not covered" > this.worker.postMessage({</span>
|
|
3214
|
-
type: 'auth',
|
|
3215
|
-
token,
|
|
3216
|
-
beaconSizeLimit,
|
|
3217
|
-
})
|
|
3218
|
-
|
|
3219
2513
|
<span class="cstat-no" title="statement not covered" > this.compressionThreshold = compressionThreshold</span>
|
|
3220
2514
|
const onStartInfo = <span class="cstat-no" title="statement not covered" >{ sessionToken: token, userUUID, sessionID }</span>
|
|
3221
2515
|
|
|
3222
|
-
const flushBuffer = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(b</span>uffer: Message[]) => {</span>
|
|
3223
|
-
let ended = <span class="cstat-no" title="statement not covered" >false</span>
|
|
3224
|
-
const messagesBatch: Message[] = <span class="cstat-no" title="statement not covered" >[buffer.shift() as unknown as Message]</span>
|
|
3225
|
-
<span class="cstat-no" title="statement not covered" > while (!ended) {</span>
|
|
3226
|
-
const nextMsg = <span class="cstat-no" title="statement not covered" >buffer[0]</span>
|
|
3227
|
-
<span class="cstat-no" title="statement not covered" > if (!nextMsg || nextMsg[0] === MType.Timestamp) {</span>
|
|
3228
|
-
<span class="cstat-no" title="statement not covered" > ended = true</span>
|
|
3229
|
-
} else {
|
|
3230
|
-
<span class="cstat-no" title="statement not covered" > messagesBatch.push(buffer.shift() as unknown as Message)</span>
|
|
3231
|
-
}
|
|
3232
|
-
}
|
|
3233
|
-
<span class="cstat-no" title="statement not covered" > this.postToWorker(messagesBatch)</span>
|
|
3234
|
-
}
|
|
3235
2516
|
// TODO: start as early as possible (before receiving the token)
|
|
3236
2517
|
<span class="cstat-no" title="statement not covered" > this.startCallbacks.forEach(<span class="fstat-no" title="function not covered" >(c</span>b) => <span class="cstat-no" title="statement not covered" >cb(onStartInfo))</span> /</span>/ MBTODO: callbacks after DOM "mounted" (observed)
|
|
3237
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3238
|
-
|
|
3239
|
-
<span class="cstat-no" title="statement not covered" > this.activityState = ActivityState.Active</span>
|
|
3240
|
-
<span class="cstat-no" title="statement not covered" > if (isColdStart) {</span>
|
|
3241
|
-
const biggestBurger =
|
|
3242
|
-
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1.length > this.bufferedMessages2.length</span>
|
|
3243
|
-
? this.bufferedMessages1
|
|
3244
|
-
: this.bufferedMessages2
|
|
3245
|
-
<span class="cstat-no" title="statement not covered" > while (biggestBurger.length > 0) {</span>
|
|
3246
|
-
<span class="cstat-no" title="statement not covered" > flushBuffer(biggestBurger)</span>
|
|
3247
|
-
}
|
|
3248
|
-
<span class="cstat-no" title="statement not covered" > this.clearBuffers()</span>
|
|
3249
|
-
<span class="cstat-no" title="statement not covered" > this.commit()</span>
|
|
3250
|
-
/** --------------- COLD START BUFFER ------------------*/
|
|
3251
|
-
} else {
|
|
3252
|
-
<span class="cstat-no" title="statement not covered" > this.observer.observe()</span>
|
|
3253
|
-
<span class="cstat-no" title="statement not covered" > this.ticker.start()</span>
|
|
3254
|
-
}
|
|
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>
|
|
3255
2520
|
|
|
3256
2521
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (canvasEnabled) {</span>
|
|
3257
2522
|
<span class="cstat-no" title="statement not covered" > this.canvasRecorder =</span>
|
|
@@ -3259,6 +2524,7 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
3259
2524
|
new CanvasRecorder(this, { fps: canvasFPS, quality: canvasQuality })
|
|
3260
2525
|
<span class="cstat-no" title="statement not covered" > this.canvasRecorder.startTracking()</span>
|
|
3261
2526
|
}
|
|
2527
|
+
<span class="cstat-no" title="statement not covered" > this.activityState = ActivityState.Active</span>
|
|
3262
2528
|
|
|
3263
2529
|
<span class="cstat-no" title="statement not covered" > this.notify.log('OpenReplay tracking started.')</span>
|
|
3264
2530
|
// get rid of onStart ?
|
|
@@ -3303,13 +2569,11 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
3303
2569
|
<span class="cstat-no" title="statement not covered" > this.stop()</span>
|
|
3304
2570
|
<span class="cstat-no" title="statement not covered" > this.session.reset()</span>
|
|
3305
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>
|
|
3306
|
-
<span class="cstat-no" title="statement not covered" > this.signalError(CANCELED, [])</span>
|
|
3307
2572
|
<span class="cstat-no" title="statement not covered" > return UnsuccessfulStart(CANCELED)</span>
|
|
3308
2573
|
}
|
|
3309
2574
|
|
|
3310
2575
|
<span class="cstat-no" title="statement not covered" > this.notify.log('OpenReplay was unable to start. ', reason)</span>
|
|
3311
2576
|
<span class="cstat-no" title="statement not covered" > this._debug('session_start', reason)</span>
|
|
3312
|
-
<span class="cstat-no" title="statement not covered" > this.signalError(START_ERROR, [])</span>
|
|
3313
2577
|
<span class="cstat-no" title="statement not covered" > return UnsuccessfulStart(START_ERROR)</span>
|
|
3314
2578
|
})
|
|
3315
2579
|
}
|
|
@@ -3359,9 +2623,24 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
3359
2623
|
<span class="cstat-no" title="statement not covered" > return this.session.getTabId()</span>
|
|
3360
2624
|
}
|
|
3361
2625
|
|
|
3362
|
-
|
|
3363
|
-
|
|
3364
|
-
|
|
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') => void}
|
|
2630
|
+
* */
|
|
2631
|
+
<span class="fstat-no" title="function not covered" > trackWs(</span>channelName: string): (msgType: string, data: string, dir: 'up' | 'down') => 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> => {</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 > 5 * 1024 * 1024 ||
|
|
2638
|
+
msgType.length > 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
|
+
}
|
|
3365
2644
|
}
|
|
3366
2645
|
|
|
3367
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 {
|
|
@@ -3374,6 +2653,7 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
3374
2653
|
<span class="cstat-no" title="statement not covered" > this.ticker.stop()</span>
|
|
3375
2654
|
<span class="cstat-no" title="statement not covered" > this.stopCallbacks.forEach(<span class="fstat-no" title="function not covered" >(c</span>b) => <span class="cstat-no" title="statement not covered" >cb())</span></span>
|
|
3376
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>
|
|
3377
2657
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.worker && stopWorker) {</span>
|
|
3378
2658
|
<span class="cstat-no" title="statement not covered" > this.worker.postMessage('stop')</span>
|
|
3379
2659
|
}
|
|
@@ -3391,7 +2671,7 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
3391
2671
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
3392
2672
|
Code coverage generated by
|
|
3393
2673
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
3394
|
-
at
|
|
2674
|
+
at 2024-01-09T10:19:51.427Z
|
|
3395
2675
|
</div>
|
|
3396
2676
|
<script src="../../prettify.js"></script>
|
|
3397
2677
|
<script>
|