@openreplay/tracker 9.0.13 → 9.0.14
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/cjs/app/index.js +2 -2
- package/cjs/index.js +3 -2
- package/cjs/modules/mouse.js +1 -0
- package/cjs/modules/network.js +1 -0
- package/coverage/clover.xml +1802 -779
- package/coverage/coverage-final.json +27 -18
- package/coverage/lcov-report/index.html +60 -45
- package/coverage/lcov-report/main/app/canvas.ts.html +535 -0
- package/coverage/lcov-report/main/app/guards.ts.html +5 -2
- package/coverage/lcov-report/main/app/index.html +38 -23
- package/coverage/lcov-report/main/app/index.ts.html +1578 -108
- package/coverage/lcov-report/main/app/logger.ts.html +25 -91
- package/coverage/lcov-report/main/app/messages.gen.ts.html +263 -146
- package/coverage/lcov-report/main/app/nodes.ts.html +17 -5
- 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 +20 -20
- package/coverage/lcov-report/main/index.ts.html +464 -98
- package/coverage/lcov-report/main/modules/Network/beaconProxy.ts.html +19 -19
- package/coverage/lcov-report/main/modules/Network/fetchProxy.ts.html +114 -99
- package/coverage/lcov-report/main/modules/Network/index.html +66 -66
- package/coverage/lcov-report/main/modules/Network/index.ts.html +33 -33
- package/coverage/lcov-report/main/modules/Network/networkMessage.ts.html +82 -73
- package/coverage/lcov-report/main/modules/Network/utils.ts.html +34 -34
- package/coverage/lcov-report/main/modules/Network/xhrProxy.ts.html +15 -15
- 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 +1399 -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 +42 -12
- 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 +2 -2
- 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 +334 -0
- package/coverage/lcov-report/main/modules/timing.ts.html +1 -1
- package/coverage/lcov-report/main/modules/userTesting/SignalManager.ts.html +370 -0
- package/coverage/lcov-report/main/modules/userTesting/dnd.ts.html +10 -22
- package/coverage/lcov-report/main/modules/userTesting/index.html +57 -27
- package/coverage/lcov-report/main/modules/userTesting/index.ts.html +814 -115
- package/coverage/lcov-report/main/modules/userTesting/recorder.ts.html +136 -67
- package/coverage/lcov-report/main/modules/userTesting/styles.ts.html +111 -39
- package/coverage/lcov-report/main/modules/userTesting/utils.ts.html +364 -0
- package/coverage/lcov-report/main/modules/viewport.ts.html +1 -1
- package/coverage/lcov-report/main/utils.ts.html +101 -59
- package/coverage/lcov-report/webworker/BatchWriter.ts.html +23 -5
- package/coverage/lcov-report/webworker/MessageEncoder.gen.ts.html +41 -5
- package/coverage/lcov-report/webworker/PrimitiveEncoder.ts.html +1 -1
- package/coverage/lcov-report/webworker/QueueSender.ts.html +18 -6
- package/coverage/lcov-report/webworker/index.html +17 -17
- package/coverage/lcov-report/webworker/index.ts.html +24 -15
- package/coverage/lcov.info +3267 -1349
- package/lib/app/index.js +2 -2
- package/lib/common/tsconfig.tsbuildinfo +1 -1
- package/lib/index.js +3 -2
- package/lib/modules/mouse.js +1 -0
- package/lib/modules/network.js +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,535 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for main/app/canvas.ts</title>
|
|
7
|
+
<meta charset="utf-8" />
|
|
8
|
+
<link rel="stylesheet" href="../../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
|
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
+
<style type='text/css'>
|
|
13
|
+
.coverage-summary .sorter {
|
|
14
|
+
background-image: url(../../sort-arrow-sprite.png);
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
|
|
19
|
+
<body>
|
|
20
|
+
<div class='wrapper'>
|
|
21
|
+
<div class='pad1'>
|
|
22
|
+
<h1><a href="../../index.html">All files</a> / <a href="index.html">main/app</a> canvas.ts</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">0% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>0/75</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">0% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>0/26</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">0% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>0/16</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">0% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>0/72</span>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
</div>
|
|
54
|
+
<p class="quiet">
|
|
55
|
+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
+
</p>
|
|
57
|
+
<template id="filterTemplate">
|
|
58
|
+
<div class="quiet">
|
|
59
|
+
Filter:
|
|
60
|
+
<input oninput="onInput()" type="search" id="fileSearch">
|
|
61
|
+
</div>
|
|
62
|
+
</template>
|
|
63
|
+
</div>
|
|
64
|
+
<div class='status-line low'></div>
|
|
65
|
+
<pre><table class="coverage">
|
|
66
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
+
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
+
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
+
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
+
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
+
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
+
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
+
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
+
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
+
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
+
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
+
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
+
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
+
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
+
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
+
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
+
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
+
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
+
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
+
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
+
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
+
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
+
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
+
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
+
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
+
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
+
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
+
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
+
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
+
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
+
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
+
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
+
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
+
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
+
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
+
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
+
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
+
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
+
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
+
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
+
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
+
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
+
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
+
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
+
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
+
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
+
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
+
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
+
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
+
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
+
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
+
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
+
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
+
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
+
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
+
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
+
<a name='L151'></a><a href='#L151'>151</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
217
|
+
<span class="cline-any cline-no"> </span>
|
|
218
|
+
<span class="cline-any cline-no"> </span>
|
|
219
|
+
<span class="cline-any cline-neutral"> </span>
|
|
220
|
+
<span class="cline-any cline-neutral"> </span>
|
|
221
|
+
<span class="cline-any cline-neutral"> </span>
|
|
222
|
+
<span class="cline-any cline-neutral"> </span>
|
|
223
|
+
<span class="cline-any cline-neutral"> </span>
|
|
224
|
+
<span class="cline-any cline-neutral"> </span>
|
|
225
|
+
<span class="cline-any cline-neutral"> </span>
|
|
226
|
+
<span class="cline-any cline-neutral"> </span>
|
|
227
|
+
<span class="cline-any cline-neutral"> </span>
|
|
228
|
+
<span class="cline-any cline-neutral"> </span>
|
|
229
|
+
<span class="cline-any cline-neutral"> </span>
|
|
230
|
+
<span class="cline-any cline-neutral"> </span>
|
|
231
|
+
<span class="cline-any cline-neutral"> </span>
|
|
232
|
+
<span class="cline-any cline-no"> </span>
|
|
233
|
+
<span class="cline-any cline-no"> </span>
|
|
234
|
+
<span class="cline-any cline-neutral"> </span>
|
|
235
|
+
<span class="cline-any cline-neutral"> </span>
|
|
236
|
+
<span class="cline-any cline-neutral"> </span>
|
|
237
|
+
<span class="cline-any cline-no"> </span>
|
|
238
|
+
<span class="cline-any cline-no"> </span>
|
|
239
|
+
<span class="cline-any cline-neutral"> </span>
|
|
240
|
+
<span class="cline-any cline-no"> </span>
|
|
241
|
+
<span class="cline-any cline-neutral"> </span>
|
|
242
|
+
<span class="cline-any cline-neutral"> </span>
|
|
243
|
+
<span class="cline-any cline-neutral"> </span>
|
|
244
|
+
<span class="cline-any cline-no"> </span>
|
|
245
|
+
<span class="cline-any cline-no"> </span>
|
|
246
|
+
<span class="cline-any cline-no"> </span>
|
|
247
|
+
<span class="cline-any cline-no"> </span>
|
|
248
|
+
<span class="cline-any cline-neutral"> </span>
|
|
249
|
+
<span class="cline-any cline-neutral"> </span>
|
|
250
|
+
<span class="cline-any cline-neutral"> </span>
|
|
251
|
+
<span class="cline-any cline-neutral"> </span>
|
|
252
|
+
<span class="cline-any cline-no"> </span>
|
|
253
|
+
<span class="cline-any cline-no"> </span>
|
|
254
|
+
<span class="cline-any cline-no"> </span>
|
|
255
|
+
<span class="cline-any cline-neutral"> </span>
|
|
256
|
+
<span class="cline-any cline-neutral"> </span>
|
|
257
|
+
<span class="cline-any cline-no"> </span>
|
|
258
|
+
<span class="cline-any cline-no"> </span>
|
|
259
|
+
<span class="cline-any cline-no"> </span>
|
|
260
|
+
<span class="cline-any cline-no"> </span>
|
|
261
|
+
<span class="cline-any cline-neutral"> </span>
|
|
262
|
+
<span class="cline-any cline-neutral"> </span>
|
|
263
|
+
<span class="cline-any cline-no"> </span>
|
|
264
|
+
<span class="cline-any cline-no"> </span>
|
|
265
|
+
<span class="cline-any cline-no"> </span>
|
|
266
|
+
<span class="cline-any cline-neutral"> </span>
|
|
267
|
+
<span class="cline-any cline-no"> </span>
|
|
268
|
+
<span class="cline-any cline-no"> </span>
|
|
269
|
+
<span class="cline-any cline-neutral"> </span>
|
|
270
|
+
<span class="cline-any cline-neutral"> </span>
|
|
271
|
+
<span class="cline-any cline-neutral"> </span>
|
|
272
|
+
<span class="cline-any cline-no"> </span>
|
|
273
|
+
<span class="cline-any cline-no"> </span>
|
|
274
|
+
<span class="cline-any cline-no"> </span>
|
|
275
|
+
<span class="cline-any cline-no"> </span>
|
|
276
|
+
<span class="cline-any cline-no"> </span>
|
|
277
|
+
<span class="cline-any cline-no"> </span>
|
|
278
|
+
<span class="cline-any cline-no"> </span>
|
|
279
|
+
<span class="cline-any cline-no"> </span>
|
|
280
|
+
<span class="cline-any cline-neutral"> </span>
|
|
281
|
+
<span class="cline-any cline-no"> </span>
|
|
282
|
+
<span class="cline-any cline-no"> </span>
|
|
283
|
+
<span class="cline-any cline-no"> </span>
|
|
284
|
+
<span class="cline-any cline-no"> </span>
|
|
285
|
+
<span class="cline-any cline-no"> </span>
|
|
286
|
+
<span class="cline-any cline-neutral"> </span>
|
|
287
|
+
<span class="cline-any cline-neutral"> </span>
|
|
288
|
+
<span class="cline-any cline-neutral"> </span>
|
|
289
|
+
<span class="cline-any cline-no"> </span>
|
|
290
|
+
<span class="cline-any cline-neutral"> </span>
|
|
291
|
+
<span class="cline-any cline-neutral"> </span>
|
|
292
|
+
<span class="cline-any cline-neutral"> </span>
|
|
293
|
+
<span class="cline-any cline-no"> </span>
|
|
294
|
+
<span class="cline-any cline-no"> </span>
|
|
295
|
+
<span class="cline-any cline-neutral"> </span>
|
|
296
|
+
<span class="cline-any cline-no"> </span>
|
|
297
|
+
<span class="cline-any cline-no"> </span>
|
|
298
|
+
<span class="cline-any cline-no"> </span>
|
|
299
|
+
<span class="cline-any cline-no"> </span>
|
|
300
|
+
<span class="cline-any cline-no"> </span>
|
|
301
|
+
<span class="cline-any cline-no"> </span>
|
|
302
|
+
<span class="cline-any cline-no"> </span>
|
|
303
|
+
<span class="cline-any cline-neutral"> </span>
|
|
304
|
+
<span class="cline-any cline-neutral"> </span>
|
|
305
|
+
<span class="cline-any cline-neutral"> </span>
|
|
306
|
+
<span class="cline-any cline-no"> </span>
|
|
307
|
+
<span class="cline-any cline-neutral"> </span>
|
|
308
|
+
<span class="cline-any cline-neutral"> </span>
|
|
309
|
+
<span class="cline-any cline-neutral"> </span>
|
|
310
|
+
<span class="cline-any cline-neutral"> </span>
|
|
311
|
+
<span class="cline-any cline-neutral"> </span>
|
|
312
|
+
<span class="cline-any cline-neutral"> </span>
|
|
313
|
+
<span class="cline-any cline-neutral"> </span>
|
|
314
|
+
<span class="cline-any cline-no"> </span>
|
|
315
|
+
<span class="cline-any cline-neutral"> </span>
|
|
316
|
+
<span class="cline-any cline-neutral"> </span>
|
|
317
|
+
<span class="cline-any cline-no"> </span>
|
|
318
|
+
<span class="cline-any cline-neutral"> </span>
|
|
319
|
+
<span class="cline-any cline-neutral"> </span>
|
|
320
|
+
<span class="cline-any cline-neutral"> </span>
|
|
321
|
+
<span class="cline-any cline-neutral"> </span>
|
|
322
|
+
<span class="cline-any cline-no"> </span>
|
|
323
|
+
<span class="cline-any cline-no"> </span>
|
|
324
|
+
<span class="cline-any cline-neutral"> </span>
|
|
325
|
+
<span class="cline-any cline-neutral"> </span>
|
|
326
|
+
<span class="cline-any cline-neutral"> </span>
|
|
327
|
+
<span class="cline-any cline-no"> </span>
|
|
328
|
+
<span class="cline-any cline-neutral"> </span>
|
|
329
|
+
<span class="cline-any cline-neutral"> </span>
|
|
330
|
+
<span class="cline-any cline-neutral"> </span>
|
|
331
|
+
<span class="cline-any cline-neutral"> </span>
|
|
332
|
+
<span class="cline-any cline-neutral"> </span>
|
|
333
|
+
<span class="cline-any cline-neutral"> </span>
|
|
334
|
+
<span class="cline-any cline-no"> </span>
|
|
335
|
+
<span class="cline-any cline-no"> </span>
|
|
336
|
+
<span class="cline-any cline-neutral"> </span>
|
|
337
|
+
<span class="cline-any cline-neutral"> </span>
|
|
338
|
+
<span class="cline-any cline-neutral"> </span>
|
|
339
|
+
<span class="cline-any cline-no"> </span>
|
|
340
|
+
<span class="cline-any cline-no"> </span>
|
|
341
|
+
<span class="cline-any cline-no"> </span>
|
|
342
|
+
<span class="cline-any cline-no"> </span>
|
|
343
|
+
<span class="cline-any cline-no"> </span>
|
|
344
|
+
<span class="cline-any cline-no"> </span>
|
|
345
|
+
<span class="cline-any cline-no"> </span>
|
|
346
|
+
<span class="cline-any cline-neutral"> </span>
|
|
347
|
+
<span class="cline-any cline-no"> </span>
|
|
348
|
+
<span class="cline-any cline-no"> </span>
|
|
349
|
+
<span class="cline-any cline-neutral"> </span>
|
|
350
|
+
<span class="cline-any cline-neutral"> </span>
|
|
351
|
+
<span class="cline-any cline-no"> </span>
|
|
352
|
+
<span class="cline-any cline-neutral"> </span>
|
|
353
|
+
<span class="cline-any cline-neutral"> </span>
|
|
354
|
+
<span class="cline-any cline-neutral"> </span>
|
|
355
|
+
<span class="cline-any cline-no"> </span>
|
|
356
|
+
<span class="cline-any cline-no"> </span>
|
|
357
|
+
<span class="cline-any cline-no"> </span>
|
|
358
|
+
<span class="cline-any cline-no"> </span>
|
|
359
|
+
<span class="cline-any cline-neutral"> </span>
|
|
360
|
+
<span class="cline-any cline-no"> </span>
|
|
361
|
+
<span class="cline-any cline-no"> </span>
|
|
362
|
+
<span class="cline-any cline-no"> </span>
|
|
363
|
+
<span class="cline-any cline-neutral"> </span>
|
|
364
|
+
<span class="cline-any cline-neutral"> </span>
|
|
365
|
+
<span class="cline-any cline-no"> </span>
|
|
366
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import App from '../app/index.js'
|
|
367
|
+
<span class="cstat-no" title="statement not covered" >import { hasTag } from './guards.js'</span>
|
|
368
|
+
<span class="cstat-no" title="statement not covered" >import Message, { CanvasNode } from './messages.gen.js'</span>
|
|
369
|
+
|
|
370
|
+
interface CanvasSnapshot {
|
|
371
|
+
images: { data: string; id: number }[]
|
|
372
|
+
createdAt: number
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
interface Options {
|
|
376
|
+
fps: number
|
|
377
|
+
quality: 'low' | 'medium' | 'high'
|
|
378
|
+
isDebug?: boolean
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
class CanvasRecorder {
|
|
382
|
+
private <span class="cstat-no" title="statement not covered" >snapshots: Record<number, CanvasSnapshot> = {}</span>
|
|
383
|
+
private readonly <span class="cstat-no" title="statement not covered" >intervals: NodeJS.Timeout[] = []</span>
|
|
384
|
+
private readonly interval: number
|
|
385
|
+
|
|
386
|
+
<span class="fstat-no" title="function not covered" > constructor(</span>
|
|
387
|
+
private readonly <span class="cstat-no" title="statement not covered" >app: App,</span>
|
|
388
|
+
private readonly <span class="cstat-no" title="statement not covered" >options: Options,</span>
|
|
389
|
+
) {
|
|
390
|
+
<span class="cstat-no" title="statement not covered" > this.interval = 1000 / options.fps</span>
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
<span class="fstat-no" title="function not covered" > startTracking(</span>) {
|
|
394
|
+
<span class="cstat-no" title="statement not covered" > setTimeout(<span class="fstat-no" title="function not covered" >() =</span>> {</span>
|
|
395
|
+
<span class="cstat-no" title="statement not covered" > this.app.nodes.scanTree(this.handleCanvasEl)</span>
|
|
396
|
+
<span class="cstat-no" title="statement not covered" > this.app.nodes.attachNodeCallback(<span class="fstat-no" title="function not covered" >(n</span>ode: Node): void => {</span>
|
|
397
|
+
<span class="cstat-no" title="statement not covered" > this.handleCanvasEl(node)</span>
|
|
398
|
+
})
|
|
399
|
+
}, 500)
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
<span class="cstat-no" title="statement not covered" > restartTracking = <span class="fstat-no" title="function not covered" >() =</span>> {</span>
|
|
403
|
+
<span class="cstat-no" title="statement not covered" > this.clear()</span>
|
|
404
|
+
<span class="cstat-no" title="statement not covered" > this.app.nodes.scanTree(this.handleCanvasEl)</span>
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
<span class="cstat-no" title="statement not covered" > handleCanvasEl = <span class="fstat-no" title="function not covered" >(n</span>ode: Node) => {</span>
|
|
408
|
+
const id = <span class="cstat-no" title="statement not covered" >this.app.nodes.getID(node)</span>
|
|
409
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!id || !hasTag(node, 'canvas')) {</span>
|
|
410
|
+
<span class="cstat-no" title="statement not covered" > return</span>
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
const isIgnored = <span class="cstat-no" title="statement not covered" >this.app.sanitizer.isObscured(id) || this.app.sanitizer.isHidden(id)</span>
|
|
414
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (isIgnored || !hasTag(node, 'canvas') || this.snapshots[id]) {</span>
|
|
415
|
+
<span class="cstat-no" title="statement not covered" > return</span>
|
|
416
|
+
}
|
|
417
|
+
const ts = <span class="cstat-no" title="statement not covered" >this.app.timestamp()</span>
|
|
418
|
+
<span class="cstat-no" title="statement not covered" > this.snapshots[id] = {</span>
|
|
419
|
+
images: [],
|
|
420
|
+
createdAt: ts,
|
|
421
|
+
}
|
|
422
|
+
const canvasMsg = <span class="cstat-no" title="statement not covered" >CanvasNode(id.toString(), ts)</span>
|
|
423
|
+
<span class="cstat-no" title="statement not covered" > this.app.send(canvasMsg as Message)</span>
|
|
424
|
+
const int = <span class="cstat-no" title="statement not covered" >setInterval(<span class="fstat-no" title="function not covered" >() =</span>> {</span>
|
|
425
|
+
const cid = <span class="cstat-no" title="statement not covered" >this.app.nodes.getID(node)</span>
|
|
426
|
+
const canvas = <span class="cstat-no" title="statement not covered" >cid ? this.app.nodes.getNode(cid) : undefined</span>
|
|
427
|
+
<span class="cstat-no" title="statement not covered" > if (!canvas || !hasTag(canvas, 'canvas') || canvas !== node) {</span>
|
|
428
|
+
<span class="cstat-no" title="statement not covered" > this.app.debug.log('Canvas element not in sync')</span>
|
|
429
|
+
<span class="cstat-no" title="statement not covered" > clearInterval(int)</span>
|
|
430
|
+
} else {
|
|
431
|
+
const snapshot = <span class="cstat-no" title="statement not covered" >captureSnapshot(canvas, this.options.quality)</span>
|
|
432
|
+
<span class="cstat-no" title="statement not covered" > this.snapshots[id].images.push({ id: this.app.timestamp(), data: snapshot })</span>
|
|
433
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.snapshots[id].images.length > 9) {</span>
|
|
434
|
+
<span class="cstat-no" title="statement not covered" > this.sendSnaps(this.snapshots[id].images, id, this.snapshots[id].createdAt)</span>
|
|
435
|
+
<span class="cstat-no" title="statement not covered" > this.snapshots[id].images = []</span>
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}, this.interval)
|
|
439
|
+
<span class="cstat-no" title="statement not covered" > this.intervals.push(int)</span>
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
<span class="fstat-no" title="function not covered" > sendSnaps(</span>images: { data: string; id: number }[], canvasId: number, createdAt: number) {
|
|
443
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (Object.keys(this.snapshots).length === 0) {</span>
|
|
444
|
+
<span class="cstat-no" title="statement not covered" > return</span>
|
|
445
|
+
}
|
|
446
|
+
const formData = <span class="cstat-no" title="statement not covered" >new FormData()</span>
|
|
447
|
+
<span class="cstat-no" title="statement not covered" > images.forEach(<span class="fstat-no" title="function not covered" >(s</span>napshot) => {</span>
|
|
448
|
+
const blob = <span class="cstat-no" title="statement not covered" >dataUrlToBlob(snapshot.data)</span>
|
|
449
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!blob) <span class="cstat-no" title="statement not covered" >return</span></span>
|
|
450
|
+
<span class="cstat-no" title="statement not covered" > formData.append('snapshot', blob[0], `${createdAt}_${canvasId}_${snapshot.id}.jpeg`)</span>
|
|
451
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.options.isDebug) {</span>
|
|
452
|
+
<span class="cstat-no" title="statement not covered" > saveImageData(snapshot.data, `${createdAt}_${canvasId}_${snapshot.id}.jpeg`)</span>
|
|
453
|
+
}
|
|
454
|
+
})
|
|
455
|
+
|
|
456
|
+
<span class="cstat-no" title="statement not covered" > fetch(this.app.options.ingestPoint + '/v1/web/images', {</span>
|
|
457
|
+
method: 'POST',
|
|
458
|
+
headers: {
|
|
459
|
+
Authorization: `Bearer ${this.app.session.getSessionToken() ?? ''}`,
|
|
460
|
+
},
|
|
461
|
+
body: formData,
|
|
462
|
+
})
|
|
463
|
+
.then(<span class="fstat-no" title="function not covered" >() =</span>> {
|
|
464
|
+
<span class="cstat-no" title="statement not covered" > return true</span>
|
|
465
|
+
})
|
|
466
|
+
.catch(<span class="fstat-no" title="function not covered" >(e</span>) => {
|
|
467
|
+
<span class="cstat-no" title="statement not covered" > this.app.debug.error('error saving canvas', e)</span>
|
|
468
|
+
})
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
<span class="fstat-no" title="function not covered" > clear(</span>) {
|
|
472
|
+
<span class="cstat-no" title="statement not covered" > this.intervals.forEach(<span class="fstat-no" title="function not covered" >(i</span>nt) => <span class="cstat-no" title="statement not covered" >clearInterval(int))</span></span>
|
|
473
|
+
<span class="cstat-no" title="statement not covered" > this.snapshots = {}</span>
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
const qualityInt = <span class="cstat-no" title="statement not covered" >{</span>
|
|
478
|
+
low: 0.33,
|
|
479
|
+
medium: 0.55,
|
|
480
|
+
high: 0.8,
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
function <span class="fstat-no" title="function not covered" >captureSnapshot(</span>canvas: HTMLCanvasElement, quality: 'low' | 'medium' | 'high' = <span class="branch-0 cbranch-no" title="branch not covered" >'medium')</span> {
|
|
484
|
+
const imageFormat = <span class="cstat-no" title="statement not covered" >'image/jpeg' </span>// or /png'
|
|
485
|
+
<span class="cstat-no" title="statement not covered" > return canvas.toDataURL(imageFormat, qualityInt[quality])</span>
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
function <span class="fstat-no" title="function not covered" >dataUrlToBlob(</span>dataUrl: string): [Blob, Uint8Array] | null {
|
|
489
|
+
const [header, base64] = <span class="cstat-no" title="statement not covered" >dataUrl.split(',')</span>
|
|
490
|
+
const encParts = <span class="cstat-no" title="statement not covered" >header.match(/:(.*?);/)</span>
|
|
491
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!encParts) <span class="cstat-no" title="statement not covered" >return null</span></span>
|
|
492
|
+
const mime = <span class="cstat-no" title="statement not covered" >encParts[1]</span>
|
|
493
|
+
const blobStr = <span class="cstat-no" title="statement not covered" >atob(base64)</span>
|
|
494
|
+
let n = <span class="cstat-no" title="statement not covered" >blobStr.length</span>
|
|
495
|
+
const u8arr = <span class="cstat-no" title="statement not covered" >new Uint8Array(n)</span>
|
|
496
|
+
|
|
497
|
+
<span class="cstat-no" title="statement not covered" > while (n--) {</span>
|
|
498
|
+
<span class="cstat-no" title="statement not covered" > u8arr[n] = blobStr.charCodeAt(n)</span>
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
<span class="cstat-no" title="statement not covered" > return [new Blob([u8arr], { type: mime }), u8arr]</span>
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
function <span class="fstat-no" title="function not covered" >saveImageData(</span>imageDataUrl: string, name: string) {
|
|
505
|
+
const link = <span class="cstat-no" title="statement not covered" >document.createElement('a')</span>
|
|
506
|
+
<span class="cstat-no" title="statement not covered" > link.href = imageDataUrl</span>
|
|
507
|
+
<span class="cstat-no" title="statement not covered" > link.download = name</span>
|
|
508
|
+
<span class="cstat-no" title="statement not covered" > link.style.display = 'none'</span>
|
|
509
|
+
|
|
510
|
+
<span class="cstat-no" title="statement not covered" > document.body.appendChild(link)</span>
|
|
511
|
+
<span class="cstat-no" title="statement not covered" > link.click()</span>
|
|
512
|
+
<span class="cstat-no" title="statement not covered" > document.body.removeChild(link)</span>
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
<span class="cstat-no" title="statement not covered" >export default CanvasRecorder</span>
|
|
516
|
+
</pre></td></tr></table></pre>
|
|
517
|
+
|
|
518
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
519
|
+
</div><!-- /wrapper -->
|
|
520
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
521
|
+
Code coverage generated by
|
|
522
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
523
|
+
at 2024-01-23T12:19:37.435Z
|
|
524
|
+
</div>
|
|
525
|
+
<script src="../../prettify.js"></script>
|
|
526
|
+
<script>
|
|
527
|
+
window.onload = function () {
|
|
528
|
+
prettyPrint();
|
|
529
|
+
};
|
|
530
|
+
</script>
|
|
531
|
+
<script src="../../sorter.js"></script>
|
|
532
|
+
<script src="../../block-navigation.js"></script>
|
|
533
|
+
</body>
|
|
534
|
+
</html>
|
|
535
|
+
|
|
@@ -111,7 +111,8 @@
|
|
|
111
111
|
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
112
|
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
113
|
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
-
<a name='L49'></a><a href='#L49'>49</a
|
|
114
|
+
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
+
<a name='L50'></a><a href='#L50'>50</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
115
116
|
<span class="cline-any cline-no"> </span>
|
|
116
117
|
<span class="cline-any cline-no"> </span>
|
|
117
118
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -152,6 +153,7 @@
|
|
|
152
153
|
<span class="cline-any cline-neutral"> </span>
|
|
153
154
|
<span class="cline-any cline-neutral"> </span>
|
|
154
155
|
<span class="cline-any cline-neutral"> </span>
|
|
156
|
+
<span class="cline-any cline-neutral"> </span>
|
|
155
157
|
<span class="cline-any cline-no"> </span>
|
|
156
158
|
<span class="cline-any cline-neutral"> </span>
|
|
157
159
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -199,6 +201,7 @@ type TagTypeMap = {
|
|
|
199
201
|
iframe: HTMLIFrameElement
|
|
200
202
|
style: HTMLStyleElement | SVGStyleElement
|
|
201
203
|
link: HTMLLinkElement
|
|
204
|
+
canvas: HTMLCanvasElement
|
|
202
205
|
}
|
|
203
206
|
<span class="cstat-no" title="statement not covered" >export function <span class="fstat-no" title="function not covered" >h</span>asTag<</span>T extends keyof TagTypeMap>(
|
|
204
207
|
el: Node,
|
|
@@ -214,7 +217,7 @@ type TagTypeMap = {
|
|
|
214
217
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
215
218
|
Code coverage generated by
|
|
216
219
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
217
|
-
at
|
|
220
|
+
at 2024-01-23T12:19:37.435Z
|
|
218
221
|
</div>
|
|
219
222
|
<script src="../../prettify.js"></script>
|
|
220
223
|
<script>
|