@openreplay/tracker 11.0.1 → 11.0.3
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 +4 -6
- 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/fetchProxy.js +4 -2
- package/cjs/modules/Network/xhrProxy.js +1 -1
- package/coverage/clover.xml +879 -563
- package/coverage/coverage-final.json +9 -8
- package/coverage/lcov-report/index.html +38 -38
- package/coverage/lcov-report/main/app/canvas.ts.html +1 -1
- package/coverage/lcov-report/main/app/guards.ts.html +1 -1
- package/coverage/lcov-report/main/app/index.html +9 -9
- package/coverage/lcov-report/main/app/index.ts.html +867 -39
- package/coverage/lcov-report/main/app/logger.ts.html +1 -1
- package/coverage/lcov-report/main/app/messages.gen.ts.html +1 -1
- package/coverage/lcov-report/main/app/nodes.ts.html +1 -1
- package/coverage/lcov-report/main/app/observer/iframe_observer.ts.html +1 -1
- 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 +1 -1
- 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 +247 -100
- package/coverage/lcov-report/main/modules/Network/beaconProxy.ts.html +1 -1
- package/coverage/lcov-report/main/modules/Network/fetchProxy.ts.html +1 -1
- package/coverage/lcov-report/main/modules/Network/index.html +1 -1
- 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 +1 -1
- 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 +1300 -0
- 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 +10 -7
- 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 +26 -11
- 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/timing.ts.html +1 -1
- package/coverage/lcov-report/main/modules/userTesting/SignalManager.ts.html +89 -80
- package/coverage/lcov-report/main/modules/userTesting/dnd.ts.html +1 -1
- package/coverage/lcov-report/main/modules/userTesting/index.html +37 -37
- package/coverage/lcov-report/main/modules/userTesting/index.ts.html +24 -21
- package/coverage/lcov-report/main/modules/userTesting/recorder.ts.html +1 -1
- package/coverage/lcov-report/main/modules/userTesting/styles.ts.html +56 -56
- package/coverage/lcov-report/main/modules/userTesting/utils.ts.html +27 -24
- 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 +1 -1
- 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 +5 -5
- package/coverage/lcov-report/webworker/index.ts.html +15 -9
- package/coverage/lcov.info +1604 -999
- package/lib/app/canvas.js +4 -6
- 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/fetchProxy.js +4 -2
- package/lib/modules/Network/xhrProxy.js +1 -1
- package/package.json +2 -2
|
@@ -25,28 +25,28 @@
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
26
|
<span class="strong">0% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>0/
|
|
28
|
+
<span class='fraction'>0/454</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/240</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/76</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/442</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -896,7 +896,285 @@
|
|
|
896
896
|
<a name='L831'></a><a href='#L831'>831</a>
|
|
897
897
|
<a name='L832'></a><a href='#L832'>832</a>
|
|
898
898
|
<a name='L833'></a><a href='#L833'>833</a>
|
|
899
|
-
<a name='L834'></a><a href='#L834'>834</a
|
|
899
|
+
<a name='L834'></a><a href='#L834'>834</a>
|
|
900
|
+
<a name='L835'></a><a href='#L835'>835</a>
|
|
901
|
+
<a name='L836'></a><a href='#L836'>836</a>
|
|
902
|
+
<a name='L837'></a><a href='#L837'>837</a>
|
|
903
|
+
<a name='L838'></a><a href='#L838'>838</a>
|
|
904
|
+
<a name='L839'></a><a href='#L839'>839</a>
|
|
905
|
+
<a name='L840'></a><a href='#L840'>840</a>
|
|
906
|
+
<a name='L841'></a><a href='#L841'>841</a>
|
|
907
|
+
<a name='L842'></a><a href='#L842'>842</a>
|
|
908
|
+
<a name='L843'></a><a href='#L843'>843</a>
|
|
909
|
+
<a name='L844'></a><a href='#L844'>844</a>
|
|
910
|
+
<a name='L845'></a><a href='#L845'>845</a>
|
|
911
|
+
<a name='L846'></a><a href='#L846'>846</a>
|
|
912
|
+
<a name='L847'></a><a href='#L847'>847</a>
|
|
913
|
+
<a name='L848'></a><a href='#L848'>848</a>
|
|
914
|
+
<a name='L849'></a><a href='#L849'>849</a>
|
|
915
|
+
<a name='L850'></a><a href='#L850'>850</a>
|
|
916
|
+
<a name='L851'></a><a href='#L851'>851</a>
|
|
917
|
+
<a name='L852'></a><a href='#L852'>852</a>
|
|
918
|
+
<a name='L853'></a><a href='#L853'>853</a>
|
|
919
|
+
<a name='L854'></a><a href='#L854'>854</a>
|
|
920
|
+
<a name='L855'></a><a href='#L855'>855</a>
|
|
921
|
+
<a name='L856'></a><a href='#L856'>856</a>
|
|
922
|
+
<a name='L857'></a><a href='#L857'>857</a>
|
|
923
|
+
<a name='L858'></a><a href='#L858'>858</a>
|
|
924
|
+
<a name='L859'></a><a href='#L859'>859</a>
|
|
925
|
+
<a name='L860'></a><a href='#L860'>860</a>
|
|
926
|
+
<a name='L861'></a><a href='#L861'>861</a>
|
|
927
|
+
<a name='L862'></a><a href='#L862'>862</a>
|
|
928
|
+
<a name='L863'></a><a href='#L863'>863</a>
|
|
929
|
+
<a name='L864'></a><a href='#L864'>864</a>
|
|
930
|
+
<a name='L865'></a><a href='#L865'>865</a>
|
|
931
|
+
<a name='L866'></a><a href='#L866'>866</a>
|
|
932
|
+
<a name='L867'></a><a href='#L867'>867</a>
|
|
933
|
+
<a name='L868'></a><a href='#L868'>868</a>
|
|
934
|
+
<a name='L869'></a><a href='#L869'>869</a>
|
|
935
|
+
<a name='L870'></a><a href='#L870'>870</a>
|
|
936
|
+
<a name='L871'></a><a href='#L871'>871</a>
|
|
937
|
+
<a name='L872'></a><a href='#L872'>872</a>
|
|
938
|
+
<a name='L873'></a><a href='#L873'>873</a>
|
|
939
|
+
<a name='L874'></a><a href='#L874'>874</a>
|
|
940
|
+
<a name='L875'></a><a href='#L875'>875</a>
|
|
941
|
+
<a name='L876'></a><a href='#L876'>876</a>
|
|
942
|
+
<a name='L877'></a><a href='#L877'>877</a>
|
|
943
|
+
<a name='L878'></a><a href='#L878'>878</a>
|
|
944
|
+
<a name='L879'></a><a href='#L879'>879</a>
|
|
945
|
+
<a name='L880'></a><a href='#L880'>880</a>
|
|
946
|
+
<a name='L881'></a><a href='#L881'>881</a>
|
|
947
|
+
<a name='L882'></a><a href='#L882'>882</a>
|
|
948
|
+
<a name='L883'></a><a href='#L883'>883</a>
|
|
949
|
+
<a name='L884'></a><a href='#L884'>884</a>
|
|
950
|
+
<a name='L885'></a><a href='#L885'>885</a>
|
|
951
|
+
<a name='L886'></a><a href='#L886'>886</a>
|
|
952
|
+
<a name='L887'></a><a href='#L887'>887</a>
|
|
953
|
+
<a name='L888'></a><a href='#L888'>888</a>
|
|
954
|
+
<a name='L889'></a><a href='#L889'>889</a>
|
|
955
|
+
<a name='L890'></a><a href='#L890'>890</a>
|
|
956
|
+
<a name='L891'></a><a href='#L891'>891</a>
|
|
957
|
+
<a name='L892'></a><a href='#L892'>892</a>
|
|
958
|
+
<a name='L893'></a><a href='#L893'>893</a>
|
|
959
|
+
<a name='L894'></a><a href='#L894'>894</a>
|
|
960
|
+
<a name='L895'></a><a href='#L895'>895</a>
|
|
961
|
+
<a name='L896'></a><a href='#L896'>896</a>
|
|
962
|
+
<a name='L897'></a><a href='#L897'>897</a>
|
|
963
|
+
<a name='L898'></a><a href='#L898'>898</a>
|
|
964
|
+
<a name='L899'></a><a href='#L899'>899</a>
|
|
965
|
+
<a name='L900'></a><a href='#L900'>900</a>
|
|
966
|
+
<a name='L901'></a><a href='#L901'>901</a>
|
|
967
|
+
<a name='L902'></a><a href='#L902'>902</a>
|
|
968
|
+
<a name='L903'></a><a href='#L903'>903</a>
|
|
969
|
+
<a name='L904'></a><a href='#L904'>904</a>
|
|
970
|
+
<a name='L905'></a><a href='#L905'>905</a>
|
|
971
|
+
<a name='L906'></a><a href='#L906'>906</a>
|
|
972
|
+
<a name='L907'></a><a href='#L907'>907</a>
|
|
973
|
+
<a name='L908'></a><a href='#L908'>908</a>
|
|
974
|
+
<a name='L909'></a><a href='#L909'>909</a>
|
|
975
|
+
<a name='L910'></a><a href='#L910'>910</a>
|
|
976
|
+
<a name='L911'></a><a href='#L911'>911</a>
|
|
977
|
+
<a name='L912'></a><a href='#L912'>912</a>
|
|
978
|
+
<a name='L913'></a><a href='#L913'>913</a>
|
|
979
|
+
<a name='L914'></a><a href='#L914'>914</a>
|
|
980
|
+
<a name='L915'></a><a href='#L915'>915</a>
|
|
981
|
+
<a name='L916'></a><a href='#L916'>916</a>
|
|
982
|
+
<a name='L917'></a><a href='#L917'>917</a>
|
|
983
|
+
<a name='L918'></a><a href='#L918'>918</a>
|
|
984
|
+
<a name='L919'></a><a href='#L919'>919</a>
|
|
985
|
+
<a name='L920'></a><a href='#L920'>920</a>
|
|
986
|
+
<a name='L921'></a><a href='#L921'>921</a>
|
|
987
|
+
<a name='L922'></a><a href='#L922'>922</a>
|
|
988
|
+
<a name='L923'></a><a href='#L923'>923</a>
|
|
989
|
+
<a name='L924'></a><a href='#L924'>924</a>
|
|
990
|
+
<a name='L925'></a><a href='#L925'>925</a>
|
|
991
|
+
<a name='L926'></a><a href='#L926'>926</a>
|
|
992
|
+
<a name='L927'></a><a href='#L927'>927</a>
|
|
993
|
+
<a name='L928'></a><a href='#L928'>928</a>
|
|
994
|
+
<a name='L929'></a><a href='#L929'>929</a>
|
|
995
|
+
<a name='L930'></a><a href='#L930'>930</a>
|
|
996
|
+
<a name='L931'></a><a href='#L931'>931</a>
|
|
997
|
+
<a name='L932'></a><a href='#L932'>932</a>
|
|
998
|
+
<a name='L933'></a><a href='#L933'>933</a>
|
|
999
|
+
<a name='L934'></a><a href='#L934'>934</a>
|
|
1000
|
+
<a name='L935'></a><a href='#L935'>935</a>
|
|
1001
|
+
<a name='L936'></a><a href='#L936'>936</a>
|
|
1002
|
+
<a name='L937'></a><a href='#L937'>937</a>
|
|
1003
|
+
<a name='L938'></a><a href='#L938'>938</a>
|
|
1004
|
+
<a name='L939'></a><a href='#L939'>939</a>
|
|
1005
|
+
<a name='L940'></a><a href='#L940'>940</a>
|
|
1006
|
+
<a name='L941'></a><a href='#L941'>941</a>
|
|
1007
|
+
<a name='L942'></a><a href='#L942'>942</a>
|
|
1008
|
+
<a name='L943'></a><a href='#L943'>943</a>
|
|
1009
|
+
<a name='L944'></a><a href='#L944'>944</a>
|
|
1010
|
+
<a name='L945'></a><a href='#L945'>945</a>
|
|
1011
|
+
<a name='L946'></a><a href='#L946'>946</a>
|
|
1012
|
+
<a name='L947'></a><a href='#L947'>947</a>
|
|
1013
|
+
<a name='L948'></a><a href='#L948'>948</a>
|
|
1014
|
+
<a name='L949'></a><a href='#L949'>949</a>
|
|
1015
|
+
<a name='L950'></a><a href='#L950'>950</a>
|
|
1016
|
+
<a name='L951'></a><a href='#L951'>951</a>
|
|
1017
|
+
<a name='L952'></a><a href='#L952'>952</a>
|
|
1018
|
+
<a name='L953'></a><a href='#L953'>953</a>
|
|
1019
|
+
<a name='L954'></a><a href='#L954'>954</a>
|
|
1020
|
+
<a name='L955'></a><a href='#L955'>955</a>
|
|
1021
|
+
<a name='L956'></a><a href='#L956'>956</a>
|
|
1022
|
+
<a name='L957'></a><a href='#L957'>957</a>
|
|
1023
|
+
<a name='L958'></a><a href='#L958'>958</a>
|
|
1024
|
+
<a name='L959'></a><a href='#L959'>959</a>
|
|
1025
|
+
<a name='L960'></a><a href='#L960'>960</a>
|
|
1026
|
+
<a name='L961'></a><a href='#L961'>961</a>
|
|
1027
|
+
<a name='L962'></a><a href='#L962'>962</a>
|
|
1028
|
+
<a name='L963'></a><a href='#L963'>963</a>
|
|
1029
|
+
<a name='L964'></a><a href='#L964'>964</a>
|
|
1030
|
+
<a name='L965'></a><a href='#L965'>965</a>
|
|
1031
|
+
<a name='L966'></a><a href='#L966'>966</a>
|
|
1032
|
+
<a name='L967'></a><a href='#L967'>967</a>
|
|
1033
|
+
<a name='L968'></a><a href='#L968'>968</a>
|
|
1034
|
+
<a name='L969'></a><a href='#L969'>969</a>
|
|
1035
|
+
<a name='L970'></a><a href='#L970'>970</a>
|
|
1036
|
+
<a name='L971'></a><a href='#L971'>971</a>
|
|
1037
|
+
<a name='L972'></a><a href='#L972'>972</a>
|
|
1038
|
+
<a name='L973'></a><a href='#L973'>973</a>
|
|
1039
|
+
<a name='L974'></a><a href='#L974'>974</a>
|
|
1040
|
+
<a name='L975'></a><a href='#L975'>975</a>
|
|
1041
|
+
<a name='L976'></a><a href='#L976'>976</a>
|
|
1042
|
+
<a name='L977'></a><a href='#L977'>977</a>
|
|
1043
|
+
<a name='L978'></a><a href='#L978'>978</a>
|
|
1044
|
+
<a name='L979'></a><a href='#L979'>979</a>
|
|
1045
|
+
<a name='L980'></a><a href='#L980'>980</a>
|
|
1046
|
+
<a name='L981'></a><a href='#L981'>981</a>
|
|
1047
|
+
<a name='L982'></a><a href='#L982'>982</a>
|
|
1048
|
+
<a name='L983'></a><a href='#L983'>983</a>
|
|
1049
|
+
<a name='L984'></a><a href='#L984'>984</a>
|
|
1050
|
+
<a name='L985'></a><a href='#L985'>985</a>
|
|
1051
|
+
<a name='L986'></a><a href='#L986'>986</a>
|
|
1052
|
+
<a name='L987'></a><a href='#L987'>987</a>
|
|
1053
|
+
<a name='L988'></a><a href='#L988'>988</a>
|
|
1054
|
+
<a name='L989'></a><a href='#L989'>989</a>
|
|
1055
|
+
<a name='L990'></a><a href='#L990'>990</a>
|
|
1056
|
+
<a name='L991'></a><a href='#L991'>991</a>
|
|
1057
|
+
<a name='L992'></a><a href='#L992'>992</a>
|
|
1058
|
+
<a name='L993'></a><a href='#L993'>993</a>
|
|
1059
|
+
<a name='L994'></a><a href='#L994'>994</a>
|
|
1060
|
+
<a name='L995'></a><a href='#L995'>995</a>
|
|
1061
|
+
<a name='L996'></a><a href='#L996'>996</a>
|
|
1062
|
+
<a name='L997'></a><a href='#L997'>997</a>
|
|
1063
|
+
<a name='L998'></a><a href='#L998'>998</a>
|
|
1064
|
+
<a name='L999'></a><a href='#L999'>999</a>
|
|
1065
|
+
<a name='L1000'></a><a href='#L1000'>1000</a>
|
|
1066
|
+
<a name='L1001'></a><a href='#L1001'>1001</a>
|
|
1067
|
+
<a name='L1002'></a><a href='#L1002'>1002</a>
|
|
1068
|
+
<a name='L1003'></a><a href='#L1003'>1003</a>
|
|
1069
|
+
<a name='L1004'></a><a href='#L1004'>1004</a>
|
|
1070
|
+
<a name='L1005'></a><a href='#L1005'>1005</a>
|
|
1071
|
+
<a name='L1006'></a><a href='#L1006'>1006</a>
|
|
1072
|
+
<a name='L1007'></a><a href='#L1007'>1007</a>
|
|
1073
|
+
<a name='L1008'></a><a href='#L1008'>1008</a>
|
|
1074
|
+
<a name='L1009'></a><a href='#L1009'>1009</a>
|
|
1075
|
+
<a name='L1010'></a><a href='#L1010'>1010</a>
|
|
1076
|
+
<a name='L1011'></a><a href='#L1011'>1011</a>
|
|
1077
|
+
<a name='L1012'></a><a href='#L1012'>1012</a>
|
|
1078
|
+
<a name='L1013'></a><a href='#L1013'>1013</a>
|
|
1079
|
+
<a name='L1014'></a><a href='#L1014'>1014</a>
|
|
1080
|
+
<a name='L1015'></a><a href='#L1015'>1015</a>
|
|
1081
|
+
<a name='L1016'></a><a href='#L1016'>1016</a>
|
|
1082
|
+
<a name='L1017'></a><a href='#L1017'>1017</a>
|
|
1083
|
+
<a name='L1018'></a><a href='#L1018'>1018</a>
|
|
1084
|
+
<a name='L1019'></a><a href='#L1019'>1019</a>
|
|
1085
|
+
<a name='L1020'></a><a href='#L1020'>1020</a>
|
|
1086
|
+
<a name='L1021'></a><a href='#L1021'>1021</a>
|
|
1087
|
+
<a name='L1022'></a><a href='#L1022'>1022</a>
|
|
1088
|
+
<a name='L1023'></a><a href='#L1023'>1023</a>
|
|
1089
|
+
<a name='L1024'></a><a href='#L1024'>1024</a>
|
|
1090
|
+
<a name='L1025'></a><a href='#L1025'>1025</a>
|
|
1091
|
+
<a name='L1026'></a><a href='#L1026'>1026</a>
|
|
1092
|
+
<a name='L1027'></a><a href='#L1027'>1027</a>
|
|
1093
|
+
<a name='L1028'></a><a href='#L1028'>1028</a>
|
|
1094
|
+
<a name='L1029'></a><a href='#L1029'>1029</a>
|
|
1095
|
+
<a name='L1030'></a><a href='#L1030'>1030</a>
|
|
1096
|
+
<a name='L1031'></a><a href='#L1031'>1031</a>
|
|
1097
|
+
<a name='L1032'></a><a href='#L1032'>1032</a>
|
|
1098
|
+
<a name='L1033'></a><a href='#L1033'>1033</a>
|
|
1099
|
+
<a name='L1034'></a><a href='#L1034'>1034</a>
|
|
1100
|
+
<a name='L1035'></a><a href='#L1035'>1035</a>
|
|
1101
|
+
<a name='L1036'></a><a href='#L1036'>1036</a>
|
|
1102
|
+
<a name='L1037'></a><a href='#L1037'>1037</a>
|
|
1103
|
+
<a name='L1038'></a><a href='#L1038'>1038</a>
|
|
1104
|
+
<a name='L1039'></a><a href='#L1039'>1039</a>
|
|
1105
|
+
<a name='L1040'></a><a href='#L1040'>1040</a>
|
|
1106
|
+
<a name='L1041'></a><a href='#L1041'>1041</a>
|
|
1107
|
+
<a name='L1042'></a><a href='#L1042'>1042</a>
|
|
1108
|
+
<a name='L1043'></a><a href='#L1043'>1043</a>
|
|
1109
|
+
<a name='L1044'></a><a href='#L1044'>1044</a>
|
|
1110
|
+
<a name='L1045'></a><a href='#L1045'>1045</a>
|
|
1111
|
+
<a name='L1046'></a><a href='#L1046'>1046</a>
|
|
1112
|
+
<a name='L1047'></a><a href='#L1047'>1047</a>
|
|
1113
|
+
<a name='L1048'></a><a href='#L1048'>1048</a>
|
|
1114
|
+
<a name='L1049'></a><a href='#L1049'>1049</a>
|
|
1115
|
+
<a name='L1050'></a><a href='#L1050'>1050</a>
|
|
1116
|
+
<a name='L1051'></a><a href='#L1051'>1051</a>
|
|
1117
|
+
<a name='L1052'></a><a href='#L1052'>1052</a>
|
|
1118
|
+
<a name='L1053'></a><a href='#L1053'>1053</a>
|
|
1119
|
+
<a name='L1054'></a><a href='#L1054'>1054</a>
|
|
1120
|
+
<a name='L1055'></a><a href='#L1055'>1055</a>
|
|
1121
|
+
<a name='L1056'></a><a href='#L1056'>1056</a>
|
|
1122
|
+
<a name='L1057'></a><a href='#L1057'>1057</a>
|
|
1123
|
+
<a name='L1058'></a><a href='#L1058'>1058</a>
|
|
1124
|
+
<a name='L1059'></a><a href='#L1059'>1059</a>
|
|
1125
|
+
<a name='L1060'></a><a href='#L1060'>1060</a>
|
|
1126
|
+
<a name='L1061'></a><a href='#L1061'>1061</a>
|
|
1127
|
+
<a name='L1062'></a><a href='#L1062'>1062</a>
|
|
1128
|
+
<a name='L1063'></a><a href='#L1063'>1063</a>
|
|
1129
|
+
<a name='L1064'></a><a href='#L1064'>1064</a>
|
|
1130
|
+
<a name='L1065'></a><a href='#L1065'>1065</a>
|
|
1131
|
+
<a name='L1066'></a><a href='#L1066'>1066</a>
|
|
1132
|
+
<a name='L1067'></a><a href='#L1067'>1067</a>
|
|
1133
|
+
<a name='L1068'></a><a href='#L1068'>1068</a>
|
|
1134
|
+
<a name='L1069'></a><a href='#L1069'>1069</a>
|
|
1135
|
+
<a name='L1070'></a><a href='#L1070'>1070</a>
|
|
1136
|
+
<a name='L1071'></a><a href='#L1071'>1071</a>
|
|
1137
|
+
<a name='L1072'></a><a href='#L1072'>1072</a>
|
|
1138
|
+
<a name='L1073'></a><a href='#L1073'>1073</a>
|
|
1139
|
+
<a name='L1074'></a><a href='#L1074'>1074</a>
|
|
1140
|
+
<a name='L1075'></a><a href='#L1075'>1075</a>
|
|
1141
|
+
<a name='L1076'></a><a href='#L1076'>1076</a>
|
|
1142
|
+
<a name='L1077'></a><a href='#L1077'>1077</a>
|
|
1143
|
+
<a name='L1078'></a><a href='#L1078'>1078</a>
|
|
1144
|
+
<a name='L1079'></a><a href='#L1079'>1079</a>
|
|
1145
|
+
<a name='L1080'></a><a href='#L1080'>1080</a>
|
|
1146
|
+
<a name='L1081'></a><a href='#L1081'>1081</a>
|
|
1147
|
+
<a name='L1082'></a><a href='#L1082'>1082</a>
|
|
1148
|
+
<a name='L1083'></a><a href='#L1083'>1083</a>
|
|
1149
|
+
<a name='L1084'></a><a href='#L1084'>1084</a>
|
|
1150
|
+
<a name='L1085'></a><a href='#L1085'>1085</a>
|
|
1151
|
+
<a name='L1086'></a><a href='#L1086'>1086</a>
|
|
1152
|
+
<a name='L1087'></a><a href='#L1087'>1087</a>
|
|
1153
|
+
<a name='L1088'></a><a href='#L1088'>1088</a>
|
|
1154
|
+
<a name='L1089'></a><a href='#L1089'>1089</a>
|
|
1155
|
+
<a name='L1090'></a><a href='#L1090'>1090</a>
|
|
1156
|
+
<a name='L1091'></a><a href='#L1091'>1091</a>
|
|
1157
|
+
<a name='L1092'></a><a href='#L1092'>1092</a>
|
|
1158
|
+
<a name='L1093'></a><a href='#L1093'>1093</a>
|
|
1159
|
+
<a name='L1094'></a><a href='#L1094'>1094</a>
|
|
1160
|
+
<a name='L1095'></a><a href='#L1095'>1095</a>
|
|
1161
|
+
<a name='L1096'></a><a href='#L1096'>1096</a>
|
|
1162
|
+
<a name='L1097'></a><a href='#L1097'>1097</a>
|
|
1163
|
+
<a name='L1098'></a><a href='#L1098'>1098</a>
|
|
1164
|
+
<a name='L1099'></a><a href='#L1099'>1099</a>
|
|
1165
|
+
<a name='L1100'></a><a href='#L1100'>1100</a>
|
|
1166
|
+
<a name='L1101'></a><a href='#L1101'>1101</a>
|
|
1167
|
+
<a name='L1102'></a><a href='#L1102'>1102</a>
|
|
1168
|
+
<a name='L1103'></a><a href='#L1103'>1103</a>
|
|
1169
|
+
<a name='L1104'></a><a href='#L1104'>1104</a>
|
|
1170
|
+
<a name='L1105'></a><a href='#L1105'>1105</a>
|
|
1171
|
+
<a name='L1106'></a><a href='#L1106'>1106</a>
|
|
1172
|
+
<a name='L1107'></a><a href='#L1107'>1107</a>
|
|
1173
|
+
<a name='L1108'></a><a href='#L1108'>1108</a>
|
|
1174
|
+
<a name='L1109'></a><a href='#L1109'>1109</a>
|
|
1175
|
+
<a name='L1110'></a><a href='#L1110'>1110</a></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
|
1176
|
+
<span class="cline-any cline-no"> </span>
|
|
1177
|
+
<span class="cline-any cline-neutral"> </span>
|
|
900
1178
|
<span class="cline-any cline-no"> </span>
|
|
901
1179
|
<span class="cline-any cline-no"> </span>
|
|
902
1180
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -951,6 +1229,7 @@
|
|
|
951
1229
|
<span class="cline-any cline-no"> </span>
|
|
952
1230
|
<span class="cline-any cline-no"> </span>
|
|
953
1231
|
<span class="cline-any cline-no"> </span>
|
|
1232
|
+
<span class="cline-any cline-no"> </span>
|
|
954
1233
|
<span class="cline-any cline-neutral"> </span>
|
|
955
1234
|
<span class="cline-any cline-neutral"> </span>
|
|
956
1235
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -987,6 +1266,7 @@
|
|
|
987
1266
|
<span class="cline-any cline-no"> </span>
|
|
988
1267
|
<span class="cline-any cline-no"> </span>
|
|
989
1268
|
<span class="cline-any cline-no"> </span>
|
|
1269
|
+
<span class="cline-any cline-no"> </span>
|
|
990
1270
|
<span class="cline-any cline-neutral"> </span>
|
|
991
1271
|
<span class="cline-any cline-neutral"> </span>
|
|
992
1272
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1042,6 +1322,12 @@
|
|
|
1042
1322
|
<span class="cline-any cline-no"> </span>
|
|
1043
1323
|
<span class="cline-any cline-neutral"> </span>
|
|
1044
1324
|
<span class="cline-any cline-neutral"> </span>
|
|
1325
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1326
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1327
|
+
<span class="cline-any cline-no"> </span>
|
|
1328
|
+
<span class="cline-any cline-no"> </span>
|
|
1329
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1330
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1045
1331
|
<span class="cline-any cline-no"> </span>
|
|
1046
1332
|
<span class="cline-any cline-no"> </span>
|
|
1047
1333
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1059,12 +1345,16 @@
|
|
|
1059
1345
|
<span class="cline-any cline-neutral"> </span>
|
|
1060
1346
|
<span class="cline-any cline-no"> </span>
|
|
1061
1347
|
<span class="cline-any cline-neutral"> </span>
|
|
1348
|
+
<span class="cline-any cline-no"> </span>
|
|
1349
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1062
1350
|
<span class="cline-any cline-neutral"> </span>
|
|
1063
1351
|
<span class="cline-any cline-neutral"> </span>
|
|
1064
1352
|
<span class="cline-any cline-neutral"> </span>
|
|
1065
1353
|
<span class="cline-any cline-neutral"> </span>
|
|
1066
1354
|
<span class="cline-any cline-neutral"> </span>
|
|
1067
1355
|
<span class="cline-any cline-no"> </span>
|
|
1356
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1357
|
+
<span class="cline-any cline-no"> </span>
|
|
1068
1358
|
<span class="cline-any cline-no"> </span>
|
|
1069
1359
|
<span class="cline-any cline-no"> </span>
|
|
1070
1360
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1109,6 +1399,7 @@
|
|
|
1109
1399
|
<span class="cline-any cline-no"> </span>
|
|
1110
1400
|
<span class="cline-any cline-no"> </span>
|
|
1111
1401
|
<span class="cline-any cline-no"> </span>
|
|
1402
|
+
<span class="cline-any cline-no"> </span>
|
|
1112
1403
|
<span class="cline-any cline-neutral"> </span>
|
|
1113
1404
|
<span class="cline-any cline-no"> </span>
|
|
1114
1405
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1254,6 +1545,14 @@
|
|
|
1254
1545
|
<span class="cline-any cline-neutral"> </span>
|
|
1255
1546
|
<span class="cline-any cline-neutral"> </span>
|
|
1256
1547
|
<span class="cline-any cline-no"> </span>
|
|
1548
|
+
<span class="cline-any cline-no"> </span>
|
|
1549
|
+
<span class="cline-any cline-no"> </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
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1554
|
+
<span class="cline-any cline-no"> </span>
|
|
1555
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1257
1556
|
<span class="cline-any cline-neutral"> </span>
|
|
1258
1557
|
<span class="cline-any cline-neutral"> </span>
|
|
1259
1558
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1265,19 +1564,56 @@
|
|
|
1265
1564
|
<span class="cline-any cline-neutral"> </span>
|
|
1266
1565
|
<span class="cline-any cline-neutral"> </span>
|
|
1267
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-neutral"> </span>
|
|
1570
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1571
|
+
<span class="cline-any cline-no"> </span>
|
|
1572
|
+
<span class="cline-any cline-no"> </span>
|
|
1573
|
+
<span class="cline-any cline-no"> </span>
|
|
1574
|
+
<span class="cline-any cline-no"> </span>
|
|
1575
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1576
|
+
<span class="cline-any cline-no"> </span>
|
|
1577
|
+
<span class="cline-any cline-no"> </span>
|
|
1578
|
+
<span class="cline-any cline-no"> </span>
|
|
1579
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1580
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1581
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1582
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1583
|
+
<span class="cline-any cline-no"> </span>
|
|
1584
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1585
|
+
<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-neutral"> </span>
|
|
1591
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1592
|
+
<span class="cline-any cline-no"> </span>
|
|
1593
|
+
<span class="cline-any cline-no"> </span>
|
|
1268
1594
|
<span class="cline-any cline-no"> </span>
|
|
1269
1595
|
<span class="cline-any cline-no"> </span>
|
|
1270
1596
|
<span class="cline-any cline-no"> </span>
|
|
1271
1597
|
<span class="cline-any cline-no"> </span>
|
|
1598
|
+
<span class="cline-any cline-no"> </span>
|
|
1599
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1600
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1601
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1272
1602
|
<span class="cline-any cline-neutral"> </span>
|
|
1273
1603
|
<span class="cline-any cline-no"> </span>
|
|
1274
1604
|
<span class="cline-any cline-no"> </span>
|
|
1605
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1275
1606
|
<span class="cline-any cline-no"> </span>
|
|
1276
1607
|
<span class="cline-any cline-neutral"> </span>
|
|
1277
1608
|
<span class="cline-any cline-neutral"> </span>
|
|
1278
1609
|
<span class="cline-any cline-neutral"> </span>
|
|
1279
1610
|
<span class="cline-any cline-neutral"> </span>
|
|
1280
1611
|
<span class="cline-any cline-no"> </span>
|
|
1612
|
+
<span class="cline-any cline-no"> </span>
|
|
1613
|
+
<span class="cline-any cline-no"> </span>
|
|
1614
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1615
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1616
|
+
<span class="cline-any cline-no"> </span>
|
|
1281
1617
|
<span class="cline-any cline-neutral"> </span>
|
|
1282
1618
|
<span class="cline-any cline-neutral"> </span>
|
|
1283
1619
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1448,64 +1784,209 @@
|
|
|
1448
1784
|
<span class="cline-any cline-neutral"> </span>
|
|
1449
1785
|
<span class="cline-any cline-neutral"> </span>
|
|
1450
1786
|
<span class="cline-any cline-neutral"> </span>
|
|
1787
|
+
<span class="cline-any cline-no"> </span>
|
|
1788
|
+
<span class="cline-any cline-no"> </span>
|
|
1789
|
+
<span class="cline-any cline-no"> </span>
|
|
1790
|
+
<span class="cline-any cline-no"> </span>
|
|
1791
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1451
1792
|
<span class="cline-any cline-neutral"> </span>
|
|
1452
1793
|
<span class="cline-any cline-no"> </span>
|
|
1453
1794
|
<span class="cline-any cline-no"> </span>
|
|
1795
|
+
<span class="cline-any cline-no"> </span>
|
|
1454
1796
|
<span class="cline-any cline-neutral"> </span>
|
|
1455
1797
|
<span class="cline-any cline-no"> </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-neutral"> </span>
|
|
1804
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1805
|
+
<span class="cline-any cline-no"> </span>
|
|
1806
|
+
<span class="cline-any cline-no"> </span>
|
|
1807
|
+
<span class="cline-any cline-no"> </span>
|
|
1808
|
+
<span class="cline-any cline-no"> </span>
|
|
1809
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1810
|
+
<span class="cline-any cline-no"> </span>
|
|
1811
|
+
<span class="cline-any cline-no"> </span>
|
|
1456
1812
|
<span class="cline-any cline-no"> </span>
|
|
1457
1813
|
<span class="cline-any cline-neutral"> </span>
|
|
1458
1814
|
<span class="cline-any cline-neutral"> </span>
|
|
1459
1815
|
<span class="cline-any cline-neutral"> </span>
|
|
1460
1816
|
<span class="cline-any cline-neutral"> </span>
|
|
1461
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
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1838
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1839
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1840
|
+
<span class="cline-any cline-no"> </span>
|
|
1462
1841
|
<span class="cline-any cline-no"> </span>
|
|
1463
1842
|
<span class="cline-any cline-no"> </span>
|
|
1464
1843
|
<span class="cline-any cline-neutral"> </span>
|
|
1844
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1845
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1846
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1847
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1848
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1849
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1850
|
+
<span class="cline-any cline-no"> </span>
|
|
1851
|
+
<span class="cline-any cline-no"> </span>
|
|
1852
|
+
<span class="cline-any cline-no"> </span>
|
|
1465
1853
|
<span class="cline-any cline-no"> </span>
|
|
1466
1854
|
<span class="cline-any cline-no"> </span>
|
|
1467
1855
|
<span class="cline-any cline-neutral"> </span>
|
|
1468
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
|
+
<span class="cline-any cline-no"> </span>
|
|
1861
|
+
<span class="cline-any cline-no"> </span>
|
|
1862
|
+
<span class="cline-any cline-no"> </span>
|
|
1863
|
+
<span class="cline-any cline-no"> </span>
|
|
1864
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1865
|
+
<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-neutral"> </span>
|
|
1869
|
+
<span class="cline-any cline-no"> </span>
|
|
1870
|
+
<span class="cline-any cline-no"> </span>
|
|
1871
|
+
<span class="cline-any cline-no"> </span>
|
|
1872
|
+
<span class="cline-any cline-no"> </span>
|
|
1469
1873
|
<span class="cline-any cline-neutral"> </span>
|
|
1470
1874
|
<span class="cline-any cline-no"> </span>
|
|
1471
1875
|
<span class="cline-any cline-neutral"> </span>
|
|
1472
1876
|
<span class="cline-any cline-no"> </span>
|
|
1473
1877
|
<span class="cline-any cline-neutral"> </span>
|
|
1878
|
+
<span class="cline-any cline-no"> </span>
|
|
1474
1879
|
<span class="cline-any cline-neutral"> </span>
|
|
1475
1880
|
<span class="cline-any cline-neutral"> </span>
|
|
1476
1881
|
<span class="cline-any cline-neutral"> </span>
|
|
1477
1882
|
<span class="cline-any cline-neutral"> </span>
|
|
1478
1883
|
<span class="cline-any cline-no"> </span>
|
|
1884
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1479
1885
|
<span class="cline-any cline-no"> </span>
|
|
1480
1886
|
<span class="cline-any cline-neutral"> </span>
|
|
1887
|
+
<span class="cline-any cline-no"> </span>
|
|
1888
|
+
<span class="cline-any cline-no"> </span>
|
|
1481
1889
|
<span class="cline-any cline-neutral"> </span>
|
|
1890
|
+
<span class="cline-any cline-no"> </span>
|
|
1891
|
+
<span class="cline-any cline-no"> </span>
|
|
1482
1892
|
<span class="cline-any cline-neutral"> </span>
|
|
1893
|
+
<span class="cline-any cline-no"> </span>
|
|
1483
1894
|
<span class="cline-any cline-neutral"> </span>
|
|
1484
1895
|
<span class="cline-any cline-neutral"> </span>
|
|
1485
1896
|
<span class="cline-any cline-neutral"> </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
|
+
<span class="cline-any cline-no"> </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>
|
|
1486
1907
|
<span class="cline-any cline-neutral"> </span>
|
|
1908
|
+
<span class="cline-any cline-no"> </span>
|
|
1909
|
+
<span class="cline-any cline-no"> </span>
|
|
1910
|
+
<span class="cline-any cline-no"> </span>
|
|
1911
|
+
<span class="cline-any cline-no"> </span>
|
|
1912
|
+
<span class="cline-any cline-no"> </span>
|
|
1487
1913
|
<span class="cline-any cline-neutral"> </span>
|
|
1914
|
+
<span class="cline-any cline-no"> </span>
|
|
1488
1915
|
<span class="cline-any cline-neutral"> </span>
|
|
1916
|
+
<span class="cline-any cline-no"> </span>
|
|
1489
1917
|
<span class="cline-any cline-neutral"> </span>
|
|
1490
1918
|
<span class="cline-any cline-no"> </span>
|
|
1919
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1920
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1921
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1922
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1491
1923
|
<span class="cline-any cline-no"> </span>
|
|
1924
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1492
1925
|
<span class="cline-any cline-no"> </span>
|
|
1926
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1493
1927
|
<span class="cline-any cline-no"> </span>
|
|
1494
1928
|
<span class="cline-any cline-no"> </span>
|
|
1495
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
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1936
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1937
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1938
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1496
1939
|
<span class="cline-any cline-no"> </span>
|
|
1497
1940
|
<span class="cline-any cline-neutral"> </span>
|
|
1498
1941
|
<span class="cline-any cline-neutral"> </span>
|
|
1499
1942
|
<span class="cline-any cline-neutral"> </span>
|
|
1500
1943
|
<span class="cline-any cline-neutral"> </span>
|
|
1501
1944
|
<span class="cline-any cline-neutral"> </span>
|
|
1945
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1502
1946
|
<span class="cline-any cline-no"> </span>
|
|
1503
1947
|
<span class="cline-any cline-neutral"> </span>
|
|
1948
|
+
<span class="cline-any cline-no"> </span>
|
|
1504
1949
|
<span class="cline-any cline-neutral"> </span>
|
|
1505
1950
|
<span class="cline-any cline-neutral"> </span>
|
|
1506
1951
|
<span class="cline-any cline-neutral"> </span>
|
|
1952
|
+
<span class="cline-any cline-no"> </span>
|
|
1953
|
+
<span class="cline-any cline-no"> </span>
|
|
1954
|
+
<span class="cline-any cline-no"> </span>
|
|
1507
1955
|
<span class="cline-any cline-neutral"> </span>
|
|
1956
|
+
<span class="cline-any cline-no"> </span>
|
|
1957
|
+
<span class="cline-any cline-no"> </span>
|
|
1958
|
+
<span class="cline-any cline-no"> </span>
|
|
1959
|
+
<span class="cline-any cline-no"> </span>
|
|
1508
1960
|
<span class="cline-any cline-neutral"> </span>
|
|
1961
|
+
<span class="cline-any cline-no"> </span>
|
|
1962
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1963
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1964
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1965
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1966
|
+
<span class="cline-any cline-no"> </span>
|
|
1967
|
+
<span class="cline-any cline-no"> </span>
|
|
1968
|
+
<span class="cline-any cline-no"> </span>
|
|
1969
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1970
|
+
<span class="cline-any cline-no"> </span>
|
|
1971
|
+
<span class="cline-any cline-no"> </span>
|
|
1972
|
+
<span class="cline-any cline-no"> </span>
|
|
1973
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1974
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1975
|
+
<span class="cline-any cline-no"> </span>
|
|
1976
|
+
<span class="cline-any cline-no"> </span>
|
|
1977
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1978
|
+
<span class="cline-any cline-no"> </span>
|
|
1979
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1980
|
+
<span class="cline-any cline-no"> </span>
|
|
1981
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1982
|
+
<span class="cline-any cline-no"> </span>
|
|
1983
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1984
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1985
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1986
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1987
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1988
|
+
<span class="cline-any cline-no"> </span>
|
|
1989
|
+
<span class="cline-any cline-no"> </span>
|
|
1509
1990
|
<span class="cline-any cline-neutral"> </span>
|
|
1510
1991
|
<span class="cline-any cline-neutral"> </span>
|
|
1511
1992
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1518,10 +1999,14 @@
|
|
|
1518
1999
|
<span class="cline-any cline-neutral"> </span>
|
|
1519
2000
|
<span class="cline-any cline-no"> </span>
|
|
1520
2001
|
<span class="cline-any cline-no"> </span>
|
|
2002
|
+
<span class="cline-any cline-no"> </span>
|
|
1521
2003
|
<span class="cline-any cline-neutral"> </span>
|
|
1522
2004
|
<span class="cline-any cline-no"> </span>
|
|
1523
2005
|
<span class="cline-any cline-neutral"> </span>
|
|
1524
2006
|
<span class="cline-any cline-neutral"> </span>
|
|
2007
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2008
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2009
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1525
2010
|
<span class="cline-any cline-no"> </span>
|
|
1526
2011
|
<span class="cline-any cline-neutral"> </span>
|
|
1527
2012
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1529,10 +2014,40 @@
|
|
|
1529
2014
|
<span class="cline-any cline-neutral"> </span>
|
|
1530
2015
|
<span class="cline-any cline-neutral"> </span>
|
|
1531
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
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2027
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2028
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2029
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1532
2030
|
<span class="cline-any cline-no"> </span>
|
|
1533
2031
|
<span class="cline-any cline-no"> </span>
|
|
1534
2032
|
<span class="cline-any cline-neutral"> </span>
|
|
1535
2033
|
<span class="cline-any cline-no"> </span>
|
|
2034
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2035
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2036
|
+
<span class="cline-any cline-no"> </span>
|
|
2037
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2038
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2039
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2040
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2041
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2042
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2043
|
+
<span class="cline-any cline-no"> </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
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2048
|
+
<span class="cline-any cline-no"> </span>
|
|
2049
|
+
<span class="cline-any cline-no"> </span>
|
|
2050
|
+
<span class="cline-any cline-no"> </span>
|
|
1536
2051
|
<span class="cline-any cline-no"> </span>
|
|
1537
2052
|
<span class="cline-any cline-neutral"> </span>
|
|
1538
2053
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1563,6 +2078,8 @@
|
|
|
1563
2078
|
<span class="cline-any cline-neutral"> </span>
|
|
1564
2079
|
<span class="cline-any cline-neutral"> </span>
|
|
1565
2080
|
<span class="cline-any cline-no"> </span>
|
|
2081
|
+
<span class="cline-any cline-no"> </span>
|
|
2082
|
+
<span class="cline-any cline-no"> </span>
|
|
1566
2083
|
<span class="cline-any cline-neutral"> </span>
|
|
1567
2084
|
<span class="cline-any cline-no"> </span>
|
|
1568
2085
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1599,19 +2116,47 @@
|
|
|
1599
2116
|
<span class="cline-any cline-no"> </span>
|
|
1600
2117
|
<span class="cline-any cline-no"> </span>
|
|
1601
2118
|
<span class="cline-any cline-neutral"> </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-no"> </span>
|
|
2123
|
+
<span class="cline-any cline-no"> </span>
|
|
2124
|
+
<span class="cline-any cline-no"> </span>
|
|
2125
|
+
<span class="cline-any cline-no"> </span>
|
|
2126
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2127
|
+
<span class="cline-any cline-no"> </span>
|
|
2128
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2129
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2130
|
+
<span class="cline-any cline-no"> </span>
|
|
2131
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2132
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2133
|
+
<span class="cline-any cline-no"> </span>
|
|
2134
|
+
<span class="cline-any cline-no"> </span>
|
|
2135
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2136
|
+
<span class="cline-any cline-no"> </span>
|
|
2137
|
+
<span class="cline-any cline-no"> </span>
|
|
2138
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2139
|
+
<span class="cline-any cline-no"> </span>
|
|
2140
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1602
2141
|
<span class="cline-any cline-neutral"> </span>
|
|
1603
2142
|
<span class="cline-any cline-no"> </span>
|
|
1604
2143
|
<span class="cline-any cline-no"> </span>
|
|
2144
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2145
|
+
<span class="cline-any cline-no"> </span>
|
|
1605
2146
|
<span class="cline-any cline-no"> </span>
|
|
1606
2147
|
<span class="cline-any cline-neutral"> </span>
|
|
2148
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1607
2149
|
<span class="cline-any cline-no"> </span>
|
|
1608
2150
|
<span class="cline-any cline-no"> </span>
|
|
1609
2151
|
<span class="cline-any cline-neutral"> </span>
|
|
1610
2152
|
<span class="cline-any cline-neutral"> </span>
|
|
1611
2153
|
<span class="cline-any cline-no"> </span>
|
|
2154
|
+
<span class="cline-any cline-no"> </span>
|
|
2155
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1612
2156
|
<span class="cline-any cline-neutral"> </span>
|
|
1613
2157
|
<span class="cline-any cline-no"> </span>
|
|
1614
2158
|
<span class="cline-any cline-neutral"> </span>
|
|
2159
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1615
2160
|
<span class="cline-any cline-no"> </span>
|
|
1616
2161
|
<span class="cline-any cline-neutral"> </span>
|
|
1617
2162
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1656,11 +2201,13 @@
|
|
|
1656
2201
|
<span class="cline-any cline-no"> </span>
|
|
1657
2202
|
<span class="cline-any cline-no"> </span>
|
|
1658
2203
|
<span class="cline-any cline-no"> </span>
|
|
2204
|
+
<span class="cline-any cline-no"> </span>
|
|
1659
2205
|
<span class="cline-any cline-neutral"> </span>
|
|
1660
2206
|
<span class="cline-any cline-neutral"> </span>
|
|
1661
2207
|
<span class="cline-any cline-no"> </span>
|
|
1662
2208
|
<span class="cline-any cline-no"> </span>
|
|
1663
2209
|
<span class="cline-any cline-no"> </span>
|
|
2210
|
+
<span class="cline-any cline-no"> </span>
|
|
1664
2211
|
<span class="cline-any cline-neutral"> </span>
|
|
1665
2212
|
<span class="cline-any cline-neutral"> </span>
|
|
1666
2213
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1712,6 +2259,11 @@
|
|
|
1712
2259
|
<span class="cline-any cline-neutral"> </span>
|
|
1713
2260
|
<span class="cline-any cline-no"> </span>
|
|
1714
2261
|
<span class="cline-any cline-no"> </span>
|
|
2262
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2263
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2264
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2265
|
+
<span class="cline-any cline-no"> </span>
|
|
2266
|
+
<span class="cline-any cline-no"> </span>
|
|
1715
2267
|
<span class="cline-any cline-no"> </span>
|
|
1716
2268
|
<span class="cline-any cline-no"> </span>
|
|
1717
2269
|
<span class="cline-any cline-no"> </span>
|
|
@@ -1729,7 +2281,9 @@
|
|
|
1729
2281
|
<span class="cline-any cline-neutral"> </span>
|
|
1730
2282
|
<span class="cline-any cline-neutral"> </span>
|
|
1731
2283
|
<span class="cline-any cline-neutral"> </span>
|
|
1732
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import
|
|
2284
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" >import ConditionsManager from '../modules/conditionsManager.js'</span>
|
|
2285
|
+
<span class="cstat-no" title="statement not covered" >import FeatureFlags from '../modules/featureFlags.js'</span>
|
|
2286
|
+
import type Message from './messages.gen.js'
|
|
1733
2287
|
<span class="cstat-no" title="statement not covered" >import { Timestamp, Metadata, UserID, Type as MType, TabChange, TabData } from './messages.gen.js'</span>
|
|
1734
2288
|
<span class="cstat-no" title="statement not covered" >import {</span>
|
|
1735
2289
|
now,
|
|
@@ -1783,6 +2337,7 @@ interface OnStartInfo {
|
|
|
1783
2337
|
|
|
1784
2338
|
const CANCELED = <span class="cstat-no" title="statement not covered" >'canceled' as const</span>
|
|
1785
2339
|
const uxtStorageKey = <span class="cstat-no" title="statement not covered" >'or_uxt_active'</span>
|
|
2340
|
+
const bufferStorageKey = <span class="cstat-no" title="statement not covered" >'or_buffer_1'</span>
|
|
1786
2341
|
const START_ERROR = <span class="cstat-no" title="statement not covered" >':(' as const</span>
|
|
1787
2342
|
type SuccessfulStart = OnStartInfo & {
|
|
1788
2343
|
success: true
|
|
@@ -1820,6 +2375,7 @@ type CommitCallback = (messages: Array<Message>) => void
|
|
|
1820
2375
|
<span class="cstat-no" title="statement not covered" > NotActive,</span>
|
|
1821
2376
|
<span class="cstat-no" title="statement not covered" > Starting,</span>
|
|
1822
2377
|
<span class="cstat-no" title="statement not covered" > Active,</span>
|
|
2378
|
+
<span class="cstat-no" title="statement not covered" > ColdStart,</span>
|
|
1823
2379
|
}
|
|
1824
2380
|
|
|
1825
2381
|
type AppOptions = {
|
|
@@ -1873,8 +2429,14 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
1873
2429
|
readonly localStorage: Storage
|
|
1874
2430
|
readonly sessionStorage: Storage
|
|
1875
2431
|
private readonly <span class="cstat-no" title="statement not covered" >messages: Array<Message> = []</span>
|
|
2432
|
+
/**
|
|
2433
|
+
* we need 2 buffers so we don't lose anything
|
|
2434
|
+
* @read coldStart implementation
|
|
2435
|
+
* */
|
|
2436
|
+
private <span class="cstat-no" title="statement not covered" >bufferedMessages1: Array<Message> = []</span>
|
|
2437
|
+
private readonly <span class="cstat-no" title="statement not covered" >bufferedMessages2: Array<Message> = []</span>
|
|
1876
2438
|
/* private */
|
|
1877
|
-
readonly observer: Observer // non-
|
|
2439
|
+
readonly observer: Observer // non-private for attachContextCallback
|
|
1878
2440
|
private readonly <span class="cstat-no" title="statement not covered" >startCallbacks: Array<StartCallback> = []</span>
|
|
1879
2441
|
private readonly <span class="cstat-no" title="statement not covered" >stopCallbacks: Array<() => any> = []</span>
|
|
1880
2442
|
private readonly <span class="cstat-no" title="statement not covered" >commitCallbacks: Array<CommitCallback> = []</span>
|
|
@@ -1892,11 +2454,15 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
1892
2454
|
public attributeSender: AttributeSender
|
|
1893
2455
|
private <span class="cstat-no" title="statement not covered" >canvasRecorder: CanvasRecorder | null = null</span>
|
|
1894
2456
|
private uxtManager: UserTestManager
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
2457
|
+
private <span class="cstat-no" title="statement not covered" >conditionsManager: ConditionsManager | null = null</span>
|
|
2458
|
+
public featureFlags: FeatureFlags
|
|
2459
|
+
|
|
2460
|
+
<span class="fstat-no" title="function not covered" > constructor(</span>
|
|
2461
|
+
projectKey: string,
|
|
2462
|
+
sessionToken: string | undefined,
|
|
2463
|
+
options: Partial<Options>,
|
|
2464
|
+
private readonly <span class="cstat-no" title="statement not covered" >signalError: (error: string, apis: string[]) => void,</span>
|
|
2465
|
+
) {
|
|
1900
2466
|
<span class="cstat-no" title="statement not covered" > this.contextId = Math.random().toString(36).slice(2)</span>
|
|
1901
2467
|
<span class="cstat-no" title="statement not covered" > this.projectKey = projectKey</span>
|
|
1902
2468
|
<span class="cstat-no" title="statement not covered" > this.networkOptions = options.network</span>
|
|
@@ -1940,6 +2506,7 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
1940
2506
|
<span class="cstat-no" title="statement not covered" > this.notify = new Logger(this.options.verbose ? LogLevel.Warnings : LogLevel.Silent)</span>
|
|
1941
2507
|
<span class="cstat-no" title="statement not covered" > this.session = new Session(this, this.options)</span>
|
|
1942
2508
|
<span class="cstat-no" title="statement not covered" > this.attributeSender = new AttributeSender(this, Boolean(this.options.disableStringDict))</span>
|
|
2509
|
+
<span class="cstat-no" title="statement not covered" > this.featureFlags = new FeatureFlags(this)</span>
|
|
1943
2510
|
<span class="cstat-no" title="statement not covered" > this.session.attachUpdateCallback(<span class="fstat-no" title="function not covered" >({</span> userID, metadata }) => {</span>
|
|
1944
2511
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (userID != null) {</span>
|
|
1945
2512
|
// TODO: nullable userID
|
|
@@ -2062,7 +2629,7 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2062
2629
|
body: JSON.stringify({
|
|
2063
2630
|
context,
|
|
2064
2631
|
// @ts-ignore
|
|
2065
|
-
error: `${e}`,
|
|
2632
|
+
error: `${e as unknown as string}`,
|
|
2066
2633
|
}),
|
|
2067
2634
|
})
|
|
2068
2635
|
}
|
|
@@ -2084,9 +2651,17 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2084
2651
|
<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>
|
|
2085
2652
|
<span class="cstat-no" title="statement not covered" > return</span>
|
|
2086
2653
|
}
|
|
2087
|
-
// ====================================================
|
|
2088
2654
|
|
|
2089
|
-
|
|
2655
|
+
// ====================================================
|
|
2656
|
+
<span class="cstat-no" title="statement not covered" > if (this.activityState === ActivityState.ColdStart) {</span>
|
|
2657
|
+
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1.push(message)</span>
|
|
2658
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.singleBuffer) {</span>
|
|
2659
|
+
<span class="cstat-no" title="statement not covered" > this.bufferedMessages2.push(message)</span>
|
|
2660
|
+
}
|
|
2661
|
+
<span class="cstat-no" title="statement not covered" > this.conditionsManager?.processMessage(message)</span>
|
|
2662
|
+
} else {
|
|
2663
|
+
<span class="cstat-no" title="statement not covered" > this.messages.push(message)</span>
|
|
2664
|
+
}
|
|
2090
2665
|
// TODO: commit on start if there were `urgent` sends;
|
|
2091
2666
|
// Clarify where urgent can be used for;
|
|
2092
2667
|
// Clarify workflow for each type of message in case it was sent before start
|
|
@@ -2097,7 +2672,11 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2097
2672
|
}
|
|
2098
2673
|
}
|
|
2099
2674
|
|
|
2100
|
-
|
|
2675
|
+
/**
|
|
2676
|
+
* Normal workflow: add timestamp and tab data to batch, then commit it
|
|
2677
|
+
* every ~30ms
|
|
2678
|
+
* */
|
|
2679
|
+
private <span class="fstat-no" title="function not covered" >_nCommit(</span>): void {
|
|
2101
2680
|
<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>
|
|
2102
2681
|
<span class="cstat-no" title="statement not covered" > requestIdleCb(<span class="fstat-no" title="function not covered" >() =</span>> {</span>
|
|
2103
2682
|
<span class="cstat-no" title="statement not covered" > this.messages.unshift(TabData(this.session.getTabId()))</span>
|
|
@@ -2109,6 +2688,39 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2109
2688
|
})
|
|
2110
2689
|
}
|
|
2111
2690
|
}
|
|
2691
|
+
|
|
2692
|
+
<span class="cstat-no" title="statement not covered" > coldStartCommitN = 0</span>
|
|
2693
|
+
|
|
2694
|
+
/**
|
|
2695
|
+
* Cold start: add timestamp and tab data to both batches
|
|
2696
|
+
* every 2nd tick, ~60ms
|
|
2697
|
+
* this will make batches a bit larger and replay will work with bigger jumps every frame
|
|
2698
|
+
* but in turn we don't overload batch writer on session start with 1000 batches
|
|
2699
|
+
* */
|
|
2700
|
+
private <span class="fstat-no" title="function not covered" >_cStartCommit(</span>): void {
|
|
2701
|
+
<span class="cstat-no" title="statement not covered" > this.coldStartCommitN += 1</span>
|
|
2702
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.coldStartCommitN === 2) {</span>
|
|
2703
|
+
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1.push(Timestamp(this.timestamp()))</span>
|
|
2704
|
+
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1.push(TabData(this.session.getTabId()))</span>
|
|
2705
|
+
<span class="cstat-no" title="statement not covered" > this.bufferedMessages2.push(Timestamp(this.timestamp()))</span>
|
|
2706
|
+
<span class="cstat-no" title="statement not covered" > this.bufferedMessages2.push(TabData(this.session.getTabId()))</span>
|
|
2707
|
+
<span class="cstat-no" title="statement not covered" > this.coldStartCommitN = 0</span>
|
|
2708
|
+
}
|
|
2709
|
+
}
|
|
2710
|
+
|
|
2711
|
+
private <span class="fstat-no" title="function not covered" >commit(</span>): void {
|
|
2712
|
+
<span class="cstat-no" title="statement not covered" > if (this.activityState === ActivityState.ColdStart) {</span>
|
|
2713
|
+
<span class="cstat-no" title="statement not covered" > this._cStartCommit()</span>
|
|
2714
|
+
} else {
|
|
2715
|
+
<span class="cstat-no" title="statement not covered" > this._nCommit()</span>
|
|
2716
|
+
}
|
|
2717
|
+
}
|
|
2718
|
+
|
|
2719
|
+
private <span class="fstat-no" title="function not covered" >postToWorker(</span>messages: Array<Message>) {
|
|
2720
|
+
<span class="cstat-no" title="statement not covered" > this.worker?.postMessage(messages)</span>
|
|
2721
|
+
<span class="cstat-no" title="statement not covered" > this.commitCallbacks.forEach(<span class="fstat-no" title="function not covered" >(c</span>b) => <span class="cstat-no" title="statement not covered" >cb(messages))</span></span>
|
|
2722
|
+
<span class="cstat-no" title="statement not covered" > messages.length = 0</span>
|
|
2723
|
+
}
|
|
2112
2724
|
|
|
2113
2725
|
private <span class="cstat-no" title="statement not covered" >delay = 0</span>
|
|
2114
2726
|
|
|
@@ -2281,19 +2893,193 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2281
2893
|
}
|
|
2282
2894
|
}
|
|
2283
2895
|
|
|
2284
|
-
|
|
2896
|
+
<span class="cstat-no" title="statement not covered" > coldInterval: ReturnType<typeof setInterval> | null = null</span>
|
|
2897
|
+
<span class="cstat-no" title="statement not covered" > orderNumber = 0</span>
|
|
2898
|
+
<span class="cstat-no" title="statement not covered" > coldStartTs = 0</span>
|
|
2899
|
+
<span class="cstat-no" title="statement not covered" > singleBuffer = false</span>
|
|
2900
|
+
|
|
2901
|
+
private <span class="fstat-no" title="function not covered" >checkSessionToken(</span>forceNew?: boolean) {
|
|
2902
|
+
const lsReset = <span class="cstat-no" title="statement not covered" >this.sessionStorage.getItem(this.options.session_reset_key) !== null</span>
|
|
2903
|
+
const needNewSessionID = <span class="cstat-no" title="statement not covered" >forceNew || lsReset</span>
|
|
2904
|
+
const sessionToken = <span class="cstat-no" title="statement not covered" >this.session.getSessionToken()</span>
|
|
2905
|
+
|
|
2906
|
+
<span class="cstat-no" title="statement not covered" > return needNewSessionID || !sessionToken</span>
|
|
2907
|
+
}
|
|
2908
|
+
/**
|
|
2909
|
+
* start buffering messages without starting the actual session, which gives
|
|
2910
|
+
* user 30 seconds to "activate" and record session by calling `start()` on conditional trigger
|
|
2911
|
+
* and we will then send buffered batch, so it won't get lost
|
|
2912
|
+
* */
|
|
2913
|
+
public async <span class="fstat-no" title="function not covered" >coldStart(</span>startOpts: StartOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span> conditional?: boolean) {
|
|
2914
|
+
<span class="cstat-no" title="statement not covered" > this.singleBuffer = false</span>
|
|
2915
|
+
const second = <span class="cstat-no" title="statement not covered" >1000</span>
|
|
2916
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (conditional) {</span>
|
|
2917
|
+
<span class="cstat-no" title="statement not covered" > this.conditionsManager = new ConditionsManager(this, startOpts)</span>
|
|
2918
|
+
}
|
|
2919
|
+
const isNewSession = <span class="cstat-no" title="statement not covered" >this.checkSessionToken(startOpts.forceNew)</span>
|
|
2920
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (conditional) {</span>
|
|
2921
|
+
const r = <span class="cstat-no" title="statement not covered" >await fetch(this.options.ingestPoint + '/v1/web/start', {</span>
|
|
2922
|
+
method: 'POST',
|
|
2923
|
+
headers: {
|
|
2924
|
+
'Content-Type': 'application/json',
|
|
2925
|
+
},
|
|
2926
|
+
body: JSON.stringify({
|
|
2927
|
+
...this.getTrackerInfo(),
|
|
2928
|
+
timestamp: now(),
|
|
2929
|
+
doNotRecord: true,
|
|
2930
|
+
bufferDiff: 0,
|
|
2931
|
+
userID: this.session.getInfo().userID,
|
|
2932
|
+
token: undefined,
|
|
2933
|
+
deviceMemory,
|
|
2934
|
+
jsHeapSizeLimit,
|
|
2935
|
+
timezone: getTimezone(),
|
|
2936
|
+
}),
|
|
2937
|
+
})
|
|
2938
|
+
// this token is needed to fetch conditions and flags,
|
|
2939
|
+
// but it can't be used to record a session
|
|
2940
|
+
const {
|
|
2941
|
+
token,
|
|
2942
|
+
userBrowser,
|
|
2943
|
+
userCity,
|
|
2944
|
+
userCountry,
|
|
2945
|
+
userDevice,
|
|
2946
|
+
userOS,
|
|
2947
|
+
userState,
|
|
2948
|
+
projectID,
|
|
2949
|
+
} = <span class="cstat-no" title="statement not covered" >await r.json()</span>
|
|
2950
|
+
<span class="cstat-no" title="statement not covered" > this.session.assign({ projectID })</span>
|
|
2951
|
+
<span class="cstat-no" title="statement not covered" > this.session.setUserInfo({</span>
|
|
2952
|
+
userBrowser,
|
|
2953
|
+
userCity,
|
|
2954
|
+
userCountry,
|
|
2955
|
+
userDevice,
|
|
2956
|
+
userOS,
|
|
2957
|
+
userState,
|
|
2958
|
+
})
|
|
2959
|
+
const onStartInfo = <span class="cstat-no" title="statement not covered" >{ sessionToken: token, userUUID: '', sessionID: '' }</span>
|
|
2960
|
+
<span class="cstat-no" title="statement not covered" > this.startCallbacks.forEach(<span class="fstat-no" title="function not covered" >(c</span>b) => <span class="cstat-no" title="statement not covered" >cb(onStartInfo))</span></span>
|
|
2961
|
+
<span class="cstat-no" title="statement not covered" > await this.conditionsManager?.fetchConditions(projectID as string, token as string)</span>
|
|
2962
|
+
<span class="cstat-no" title="statement not covered" > await this.featureFlags.reloadFlags(token as string)</span>
|
|
2963
|
+
<span class="cstat-no" title="statement not covered" > this.conditionsManager?.processFlags(this.featureFlags.flags)</span>
|
|
2964
|
+
}
|
|
2965
|
+
const cycle = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >() =</span>> {</span>
|
|
2966
|
+
<span class="cstat-no" title="statement not covered" > this.orderNumber += 1</span>
|
|
2967
|
+
<span class="cstat-no" title="statement not covered" > adjustTimeOrigin()</span>
|
|
2968
|
+
<span class="cstat-no" title="statement not covered" > this.coldStartTs = now()</span>
|
|
2969
|
+
<span class="cstat-no" title="statement not covered" > if (this.orderNumber % 2 === 0) {</span>
|
|
2970
|
+
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1.length = 0</span>
|
|
2971
|
+
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1.push(Timestamp(this.timestamp()))</span>
|
|
2972
|
+
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1.push(TabData(this.session.getTabId()))</span>
|
|
2973
|
+
} else {
|
|
2974
|
+
<span class="cstat-no" title="statement not covered" > this.bufferedMessages2.length = 0</span>
|
|
2975
|
+
<span class="cstat-no" title="statement not covered" > this.bufferedMessages2.push(Timestamp(this.timestamp()))</span>
|
|
2976
|
+
<span class="cstat-no" title="statement not covered" > this.bufferedMessages2.push(TabData(this.session.getTabId()))</span>
|
|
2977
|
+
}
|
|
2978
|
+
<span class="cstat-no" title="statement not covered" > this.stop(false)</span>
|
|
2979
|
+
<span class="cstat-no" title="statement not covered" > this.activityState = ActivityState.ColdStart</span>
|
|
2980
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (startOpts.sessionHash) {</span>
|
|
2981
|
+
<span class="cstat-no" title="statement not covered" > this.session.applySessionHash(startOpts.sessionHash)</span>
|
|
2982
|
+
}
|
|
2983
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (startOpts.forceNew) {</span>
|
|
2984
|
+
// Reset session metadata only if requested directly
|
|
2985
|
+
<span class="cstat-no" title="statement not covered" > this.session.reset()</span>
|
|
2986
|
+
}
|
|
2987
|
+
<span class="cstat-no" title="statement not covered" > this.session.assign({</span>
|
|
2988
|
+
// MBTODO: maybe it would make sense to `forceNew` if the `userID` was changed
|
|
2989
|
+
userID: startOpts.userID,
|
|
2990
|
+
metadata: startOpts.metadata,
|
|
2991
|
+
})
|
|
2992
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!isNewSession) {</span>
|
|
2993
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
2994
|
+
<span class="cstat-no" title="statement not covered" > this.send(TabChange(this.session.getTabId()))</span>
|
|
2995
|
+
}
|
|
2996
|
+
<span class="cstat-no" title="statement not covered" > this.observer.observe()</span>
|
|
2997
|
+
<span class="cstat-no" title="statement not covered" > this.ticker.start()</span>
|
|
2998
|
+
}
|
|
2999
|
+
<span class="cstat-no" title="statement not covered" > this.coldInterval = setInterval(<span class="fstat-no" title="function not covered" >() =</span>> {</span>
|
|
3000
|
+
<span class="cstat-no" title="statement not covered" > cycle()</span>
|
|
3001
|
+
}, 30 * second)
|
|
3002
|
+
<span class="cstat-no" title="statement not covered" > cycle()</span>
|
|
3003
|
+
}
|
|
3004
|
+
|
|
3005
|
+
public <span class="fstat-no" title="function not covered" >offlineRecording(</span>startOpts: StartOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
|
|
3006
|
+
<span class="cstat-no" title="statement not covered" > this.singleBuffer = true</span>
|
|
3007
|
+
const isNewSession = <span class="cstat-no" title="statement not covered" >this.checkSessionToken(startOpts.forceNew)</span>
|
|
3008
|
+
<span class="cstat-no" title="statement not covered" > adjustTimeOrigin()</span>
|
|
3009
|
+
<span class="cstat-no" title="statement not covered" > this.coldStartTs = now()</span>
|
|
3010
|
+
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1.length = 0</span>
|
|
3011
|
+
const saverBuffer = <span class="cstat-no" title="statement not covered" >this.localStorage.getItem(bufferStorageKey)</span>
|
|
3012
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (saverBuffer) {</span>
|
|
3013
|
+
const data = <span class="cstat-no" title="statement not covered" >JSON.parse(saverBuffer)</span>
|
|
3014
|
+
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1 = Array.isArray(data) ? data : []</span>
|
|
3015
|
+
<span class="cstat-no" title="statement not covered" > this.localStorage.removeItem(bufferStorageKey)</span>
|
|
3016
|
+
}
|
|
3017
|
+
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1.push(Timestamp(this.timestamp()))</span>
|
|
3018
|
+
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1.push(TabData(this.session.getTabId()))</span>
|
|
3019
|
+
<span class="cstat-no" title="statement not covered" > this.activityState = ActivityState.ColdStart</span>
|
|
3020
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (startOpts.sessionHash) {</span>
|
|
3021
|
+
<span class="cstat-no" title="statement not covered" > this.session.applySessionHash(startOpts.sessionHash)</span>
|
|
3022
|
+
}
|
|
3023
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (startOpts.forceNew) {</span>
|
|
3024
|
+
// Reset session metadata only if requested directly
|
|
3025
|
+
<span class="cstat-no" title="statement not covered" > this.session.reset()</span>
|
|
3026
|
+
}
|
|
3027
|
+
<span class="cstat-no" title="statement not covered" > this.session.assign({</span>
|
|
3028
|
+
// MBTODO: maybe it would make sense to `forceNew` if the `userID` was changed
|
|
3029
|
+
userID: startOpts.userID,
|
|
3030
|
+
metadata: startOpts.metadata,
|
|
3031
|
+
})
|
|
3032
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!isNewSession) {</span>
|
|
3033
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
3034
|
+
<span class="cstat-no" title="statement not covered" > this.send(TabChange(this.session.getTabId()))</span>
|
|
3035
|
+
}
|
|
3036
|
+
<span class="cstat-no" title="statement not covered" > this.observer.observe()</span>
|
|
3037
|
+
<span class="cstat-no" title="statement not covered" > this.ticker.start()</span>
|
|
3038
|
+
}
|
|
3039
|
+
|
|
3040
|
+
/**
|
|
3041
|
+
* Saves the captured messages in localStorage (or whatever is used in its place)
|
|
3042
|
+
*
|
|
3043
|
+
* Then when this.offlineRecording is called, it will preload this messages and clear the storage item
|
|
3044
|
+
*
|
|
3045
|
+
* Keeping the size of local storage reasonable is up to the end users of this library
|
|
3046
|
+
* */
|
|
3047
|
+
public <span class="fstat-no" title="function not covered" >saveBuffer(</span>) {
|
|
3048
|
+
<span class="cstat-no" title="statement not covered" > this.localStorage.setItem(bufferStorageKey, JSON.stringify(this.bufferedMessages1))</span>
|
|
3049
|
+
}
|
|
3050
|
+
|
|
3051
|
+
/**
|
|
3052
|
+
* Uploads the stored buffer to create session
|
|
3053
|
+
* */
|
|
3054
|
+
public <span class="fstat-no" title="function not covered" >uploadOfflineRecording(</span>) {
|
|
3055
|
+
<span class="cstat-no" title="statement not covered" > this.stop(false)</span>
|
|
3056
|
+
// then fetch it
|
|
3057
|
+
<span class="cstat-no" title="statement not covered" > this.clearBuffers()</span>
|
|
3058
|
+
}
|
|
3059
|
+
|
|
3060
|
+
private <span class="fstat-no" title="function not covered" >_start(</span>startOpts: StartOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{},</span> resetByWorker = <span class="branch-0 cbranch-no" title="branch not covered" >false,</span> conditionName?: string): Promise<StartPromiseReturn> {
|
|
3061
|
+
const isColdStart = <span class="cstat-no" title="statement not covered" >this.activityState === ActivityState.ColdStart</span>
|
|
3062
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (isColdStart && this.coldInterval) {</span>
|
|
3063
|
+
<span class="cstat-no" title="statement not covered" > clearInterval(this.coldInterval)</span>
|
|
3064
|
+
}
|
|
2285
3065
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.worker) {</span>
|
|
2286
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3066
|
+
const reason = <span class="cstat-no" title="statement not covered" >'No worker found: perhaps, CSP is not set.'</span>
|
|
3067
|
+
<span class="cstat-no" title="statement not covered" > this.signalError(reason, [])</span>
|
|
3068
|
+
<span class="cstat-no" title="statement not covered" > return Promise.resolve(UnsuccessfulStart(reason))</span>
|
|
2287
3069
|
}
|
|
2288
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (
|
|
2289
|
-
|
|
2290
|
-
|
|
2291
|
-
|
|
2292
|
-
|
|
2293
|
-
|
|
3070
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
|
|
3071
|
+
this.activityState === ActivityState.Active ||
|
|
3072
|
+
this.activityState === ActivityState.Starting
|
|
3073
|
+
) {
|
|
3074
|
+
const reason =
|
|
3075
|
+
<span class="cstat-no" title="statement not covered" > 'OpenReplay: trying to call `start()` on the instance that has been started already.'</span>
|
|
3076
|
+
<span class="cstat-no" title="statement not covered" > this.signalError(reason, [])</span>
|
|
3077
|
+
<span class="cstat-no" title="statement not covered" > return Promise.resolve(UnsuccessfulStart(reason))</span>
|
|
2294
3078
|
}
|
|
2295
3079
|
<span class="cstat-no" title="statement not covered" > this.activityState = ActivityState.Starting</span>
|
|
2296
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3080
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!isColdStart) {</span>
|
|
3081
|
+
<span class="cstat-no" title="statement not covered" > adjustTimeOrigin()</span>
|
|
3082
|
+
}
|
|
2297
3083
|
|
|
2298
3084
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (startOpts.sessionHash) {</span>
|
|
2299
3085
|
<span class="cstat-no" title="statement not covered" > this.session.applySessionHash(startOpts.sessionHash)</span>
|
|
@@ -2320,15 +3106,13 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2320
3106
|
tabId: this.session.getTabId(),
|
|
2321
3107
|
})
|
|
2322
3108
|
|
|
2323
|
-
const lsReset = <span class="cstat-no" title="statement not covered" >this.sessionStorage.getItem(this.options.session_reset_key) !== null</span>
|
|
2324
|
-
<span class="cstat-no" title="statement not covered" > this.sessionStorage.removeItem(this.options.session_reset_key)</span>
|
|
2325
|
-
const needNewSessionID = <span class="cstat-no" title="statement not covered" >startOpts.forceNew || lsReset || resetByWorker</span>
|
|
2326
3109
|
const sessionToken = <span class="cstat-no" title="statement not covered" >this.session.getSessionToken()</span>
|
|
2327
|
-
const isNewSession = <span class="cstat-no" title="statement not covered" >
|
|
3110
|
+
const isNewSession = <span class="cstat-no" title="statement not covered" >this.checkSessionToken(startOpts.forceNew)</span>
|
|
3111
|
+
<span class="cstat-no" title="statement not covered" > this.sessionStorage.removeItem(this.options.session_reset_key)</span>
|
|
2328
3112
|
|
|
2329
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3113
|
+
<span class="cstat-no" title="statement not covered" > this.debug.log(</span>
|
|
2330
3114
|
'OpenReplay: starting session; need new session id?',
|
|
2331
|
-
|
|
3115
|
+
isNewSession,
|
|
2332
3116
|
'session token: ',
|
|
2333
3117
|
sessionToken,
|
|
2334
3118
|
)
|
|
@@ -2341,11 +3125,14 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2341
3125
|
body: JSON.stringify({
|
|
2342
3126
|
...this.getTrackerInfo(),
|
|
2343
3127
|
timestamp,
|
|
3128
|
+
doNotRecord: false,
|
|
3129
|
+
bufferDiff: timestamp - this.coldStartTs,
|
|
2344
3130
|
userID: this.session.getInfo().userID,
|
|
2345
3131
|
token: isNewSession ? undefined : sessionToken,
|
|
2346
3132
|
deviceMemory,
|
|
2347
3133
|
jsHeapSizeLimit,
|
|
2348
3134
|
timezone: getTimezone(),
|
|
3135
|
+
condition: conditionName,
|
|
2349
3136
|
}),
|
|
2350
3137
|
})
|
|
2351
3138
|
.then(<span class="fstat-no" title="function not covered" >(r</span>) => {
|
|
@@ -2363,10 +3150,14 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2363
3150
|
})
|
|
2364
3151
|
.then(<span class="fstat-no" title="function not covered" >(r</span>) => {
|
|
2365
3152
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!this.worker) {</span>
|
|
2366
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3153
|
+
const reason = <span class="cstat-no" title="statement not covered" >'no worker found after start request (this might not happen)'</span>
|
|
3154
|
+
<span class="cstat-no" title="statement not covered" > this.signalError(reason, [])</span>
|
|
3155
|
+
<span class="cstat-no" title="statement not covered" > return Promise.reject(reason)</span>
|
|
2367
3156
|
}
|
|
2368
3157
|
<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" >
|
|
3158
|
+
const reason = <span class="cstat-no" title="statement not covered" >'Tracker stopped during authorization'</span>
|
|
3159
|
+
<span class="cstat-no" title="statement not covered" > this.signalError(reason, [])</span>
|
|
3160
|
+
<span class="cstat-no" title="statement not covered" > return Promise.reject(reason)</span>
|
|
2370
3161
|
}
|
|
2371
3162
|
const {
|
|
2372
3163
|
token,
|
|
@@ -2395,7 +3186,9 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2395
3186
|
typeof delay !== 'number' ||
|
|
2396
3187
|
(typeof beaconSizeLimit !== 'number' && typeof beaconSizeLimit !== 'undefined')
|
|
2397
3188
|
) {
|
|
2398
|
-
<span class="cstat-no" title="statement not covered"
|
|
3189
|
+
const reason = <span class="cstat-no" title="statement not covered" >`Incorrect server response: ${JSON.stringify(r)}`</span>
|
|
3190
|
+
<span class="cstat-no" title="statement not covered" > this.signalError(reason, [])</span>
|
|
3191
|
+
<span class="cstat-no" title="statement not covered" > return Promise.reject(reason)</span>
|
|
2399
3192
|
}
|
|
2400
3193
|
<span class="cstat-no" title="statement not covered" > this.delay = delay</span>
|
|
2401
3194
|
<span class="cstat-no" title="statement not covered" > this.session.setSessionToken(token)</span>
|
|
@@ -2413,7 +3206,7 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2413
3206
|
projectID,
|
|
2414
3207
|
})
|
|
2415
3208
|
<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>
|
|
2416
|
-
<span class="cstat-no" title="statement not covered" >
|
|
3209
|
+
<span class="cstat-no" title="statement not covered" > this.debug.log('continuing session on new tab', this.session.getTabId())</span>
|
|
2417
3210
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
2418
3211
|
<span class="cstat-no" title="statement not covered" > this.send(TabChange(this.session.getTabId()))</span>
|
|
2419
3212
|
}
|
|
@@ -2432,10 +3225,39 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2432
3225
|
<span class="cstat-no" title="statement not covered" > this.compressionThreshold = compressionThreshold</span>
|
|
2433
3226
|
const onStartInfo = <span class="cstat-no" title="statement not covered" >{ sessionToken: token, userUUID, sessionID }</span>
|
|
2434
3227
|
|
|
3228
|
+
const flushBuffer = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(b</span>uffer: Message[]) => {</span>
|
|
3229
|
+
let ended = <span class="cstat-no" title="statement not covered" >false</span>
|
|
3230
|
+
const messagesBatch: Message[] = <span class="cstat-no" title="statement not covered" >[buffer.shift() as unknown as Message]</span>
|
|
3231
|
+
<span class="cstat-no" title="statement not covered" > while (!ended) {</span>
|
|
3232
|
+
const nextMsg = <span class="cstat-no" title="statement not covered" >buffer[0]</span>
|
|
3233
|
+
<span class="cstat-no" title="statement not covered" > if (!nextMsg || nextMsg[0] === MType.Timestamp) {</span>
|
|
3234
|
+
<span class="cstat-no" title="statement not covered" > ended = true</span>
|
|
3235
|
+
} else {
|
|
3236
|
+
<span class="cstat-no" title="statement not covered" > messagesBatch.push(buffer.shift() as unknown as Message)</span>
|
|
3237
|
+
}
|
|
3238
|
+
}
|
|
3239
|
+
<span class="cstat-no" title="statement not covered" > this.postToWorker(messagesBatch)</span>
|
|
3240
|
+
}
|
|
2435
3241
|
// TODO: start as early as possible (before receiving the token)
|
|
2436
3242
|
<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)
|
|
2437
|
-
<span class="cstat-no" title="statement not covered" > this.
|
|
2438
|
-
|
|
3243
|
+
<span class="cstat-no" title="statement not covered" > void this.featureFlags.reloadFlags()</span>
|
|
3244
|
+
/** --------------- COLD START BUFFER ------------------*/
|
|
3245
|
+
<span class="cstat-no" title="statement not covered" > this.activityState = ActivityState.Active</span>
|
|
3246
|
+
<span class="cstat-no" title="statement not covered" > if (isColdStart) {</span>
|
|
3247
|
+
const biggestBurger =
|
|
3248
|
+
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1.length > this.bufferedMessages2.length</span>
|
|
3249
|
+
? this.bufferedMessages1
|
|
3250
|
+
: this.bufferedMessages2
|
|
3251
|
+
<span class="cstat-no" title="statement not covered" > while (biggestBurger.length > 0) {</span>
|
|
3252
|
+
<span class="cstat-no" title="statement not covered" > flushBuffer(biggestBurger)</span>
|
|
3253
|
+
}
|
|
3254
|
+
<span class="cstat-no" title="statement not covered" > this.clearBuffers()</span>
|
|
3255
|
+
<span class="cstat-no" title="statement not covered" > this.commit()</span>
|
|
3256
|
+
/** --------------- COLD START BUFFER ------------------*/
|
|
3257
|
+
} else {
|
|
3258
|
+
<span class="cstat-no" title="statement not covered" > this.observer.observe()</span>
|
|
3259
|
+
<span class="cstat-no" title="statement not covered" > this.ticker.start()</span>
|
|
3260
|
+
}
|
|
2439
3261
|
|
|
2440
3262
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (canvasEnabled) {</span>
|
|
2441
3263
|
<span class="cstat-no" title="statement not covered" > this.canvasRecorder =</span>
|
|
@@ -2443,7 +3265,6 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2443
3265
|
new CanvasRecorder(this, { fps: canvasFPS, quality: canvasQuality })
|
|
2444
3266
|
<span class="cstat-no" title="statement not covered" > this.canvasRecorder.startTracking()</span>
|
|
2445
3267
|
}
|
|
2446
|
-
<span class="cstat-no" title="statement not covered" > this.activityState = ActivityState.Active</span>
|
|
2447
3268
|
|
|
2448
3269
|
<span class="cstat-no" title="statement not covered" > this.notify.log('OpenReplay tracking started.')</span>
|
|
2449
3270
|
// get rid of onStart ?
|
|
@@ -2488,11 +3309,13 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2488
3309
|
<span class="cstat-no" title="statement not covered" > this.stop()</span>
|
|
2489
3310
|
<span class="cstat-no" title="statement not covered" > this.session.reset()</span>
|
|
2490
3311
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (reason === CANCELED) {</span>
|
|
3312
|
+
<span class="cstat-no" title="statement not covered" > this.signalError(CANCELED, [])</span>
|
|
2491
3313
|
<span class="cstat-no" title="statement not covered" > return UnsuccessfulStart(CANCELED)</span>
|
|
2492
3314
|
}
|
|
2493
3315
|
|
|
2494
3316
|
<span class="cstat-no" title="statement not covered" > this.notify.log('OpenReplay was unable to start. ', reason)</span>
|
|
2495
3317
|
<span class="cstat-no" title="statement not covered" > this._debug('session_start', reason)</span>
|
|
3318
|
+
<span class="cstat-no" title="statement not covered" > this.signalError(START_ERROR, [])</span>
|
|
2496
3319
|
<span class="cstat-no" title="statement not covered" > return UnsuccessfulStart(START_ERROR)</span>
|
|
2497
3320
|
})
|
|
2498
3321
|
}
|
|
@@ -2542,6 +3365,11 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2542
3365
|
<span class="cstat-no" title="statement not covered" > return this.session.getTabId()</span>
|
|
2543
3366
|
}
|
|
2544
3367
|
|
|
3368
|
+
<span class="fstat-no" title="function not covered" > clearBuffers(</span>) {
|
|
3369
|
+
<span class="cstat-no" title="statement not covered" > this.bufferedMessages1.length = 0</span>
|
|
3370
|
+
<span class="cstat-no" title="statement not covered" > this.bufferedMessages2.length = 0</span>
|
|
3371
|
+
}
|
|
3372
|
+
|
|
2545
3373
|
<span class="fstat-no" title="function not covered" > stop(</span>stopWorker = <span class="branch-0 cbranch-no" title="branch not covered" >true)</span>: void {
|
|
2546
3374
|
<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>
|
|
2547
3375
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
@@ -2569,7 +3397,7 @@ function <span class="fstat-no" title="function not covered" >getTimezone(</span
|
|
|
2569
3397
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
2570
3398
|
Code coverage generated by
|
|
2571
3399
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2572
|
-
at 2023-12-
|
|
3400
|
+
at 2023-12-21T16:07:43.444Z
|
|
2573
3401
|
</div>
|
|
2574
3402
|
<script src="../../prettify.js"></script>
|
|
2575
3403
|
<script>
|