@openreplay/tracker 10.0.2 → 10.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 +4 -0
- package/cjs/app/index.js +1 -1
- package/cjs/index.js +1 -1
- package/cjs/utils.js +16 -2
- package/coverage/clover.xml +508 -435
- package/coverage/coverage-final.json +12 -11
- package/coverage/lcov-report/index.html +40 -40
- package/coverage/lcov-report/main/app/canvas.ts.html +475 -0
- package/coverage/lcov-report/main/app/guards.ts.html +46 -43
- package/coverage/lcov-report/main/app/index.html +40 -25
- package/coverage/lcov-report/main/app/index.ts.html +58 -7
- package/coverage/lcov-report/main/app/logger.ts.html +1 -1
- package/coverage/lcov-report/main/app/messages.gen.ts.html +179 -146
- 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 +15 -15
- package/coverage/lcov-report/main/index.ts.html +1 -1
- package/coverage/lcov-report/main/modules/Network/beaconProxy.ts.html +19 -19
- package/coverage/lcov-report/main/modules/Network/fetchProxy.ts.html +97 -97
- package/coverage/lcov-report/main/modules/Network/index.html +65 -65
- 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 +13 -13
- 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/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 +1 -1
- 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 +1 -1
- 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/timing.ts.html +1 -1
- package/coverage/lcov-report/main/modules/viewport.ts.html +1 -1
- package/coverage/lcov-report/main/utils.ts.html +57 -57
- package/coverage/lcov-report/webworker/BatchWriter.ts.html +1 -1
- package/coverage/lcov-report/webworker/MessageEncoder.gen.ts.html +17 -5
- package/coverage/lcov-report/webworker/PrimitiveEncoder.ts.html +1 -1
- package/coverage/lcov-report/webworker/QueueSender.ts.html +1 -1
- package/coverage/lcov-report/webworker/index.html +7 -7
- package/coverage/lcov-report/webworker/index.ts.html +1 -1
- package/coverage/lcov.info +819 -676
- package/lib/app/index.js +1 -1
- package/lib/common/tsconfig.tsbuildinfo +1 -1
- package/lib/index.js +1 -1
- package/lib/utils.js +16 -2
- package/package.json +1 -1
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">0.5% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>16/3187</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">0.24% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>4/1647</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">1.
|
|
40
|
+
<span class="strong">1.27% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>8/629</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">0.51% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>16/3102</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -80,32 +80,32 @@
|
|
|
80
80
|
</thead>
|
|
81
81
|
<tbody><tr>
|
|
82
82
|
<td class="file low" data-value="main"><a href="main/index.html">main</a></td>
|
|
83
|
-
<td data-value="
|
|
84
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
83
|
+
<td data-value="0" class="pic low">
|
|
84
|
+
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
|
|
85
85
|
</td>
|
|
86
|
-
<td data-value="
|
|
87
|
-
<td data-value="248" class="abs low">
|
|
88
|
-
<td data-value="
|
|
89
|
-
<td data-value="119" class="abs low">
|
|
86
|
+
<td data-value="0" class="pct low">0%</td>
|
|
87
|
+
<td data-value="248" class="abs low">0/248</td>
|
|
88
|
+
<td data-value="0" class="pct low">0%</td>
|
|
89
|
+
<td data-value="119" class="abs low">0/119</td>
|
|
90
90
|
<td data-value="0" class="pct low">0%</td>
|
|
91
91
|
<td data-value="55" class="abs low">0/55</td>
|
|
92
|
-
<td data-value="
|
|
93
|
-
<td data-value="246" class="abs low">
|
|
92
|
+
<td data-value="0" class="pct low">0%</td>
|
|
93
|
+
<td data-value="246" class="abs low">0/246</td>
|
|
94
94
|
</tr>
|
|
95
95
|
|
|
96
96
|
<tr>
|
|
97
97
|
<td class="file low" data-value="main/app"><a href="main/app/index.html">main/app</a></td>
|
|
98
|
-
<td data-value="
|
|
99
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
98
|
+
<td data-value="2.23" class="pic low">
|
|
99
|
+
<div class="chart"><div class="cover-fill" style="width: 2%"></div><div class="cover-empty" style="width: 98%"></div></div>
|
|
100
100
|
</td>
|
|
101
|
-
<td data-value="
|
|
102
|
-
<td data-value="
|
|
103
|
-
<td data-value="
|
|
104
|
-
<td data-value="
|
|
105
|
-
<td data-value="
|
|
106
|
-
<td data-value="
|
|
107
|
-
<td data-value="
|
|
108
|
-
<td data-value="
|
|
101
|
+
<td data-value="2.23" class="pct low">2.23%</td>
|
|
102
|
+
<td data-value="716" class="abs low">16/716</td>
|
|
103
|
+
<td data-value="1.48" class="pct low">1.48%</td>
|
|
104
|
+
<td data-value="270" class="abs low">4/270</td>
|
|
105
|
+
<td data-value="3.92" class="pct low">3.92%</td>
|
|
106
|
+
<td data-value="204" class="abs low">8/204</td>
|
|
107
|
+
<td data-value="2.29" class="pct low">2.29%</td>
|
|
108
|
+
<td data-value="698" class="abs low">16/698</td>
|
|
109
109
|
</tr>
|
|
110
110
|
|
|
111
111
|
<tr>
|
|
@@ -140,17 +140,17 @@
|
|
|
140
140
|
|
|
141
141
|
<tr>
|
|
142
142
|
<td class="file low" data-value="main/modules/Network"><a href="main/modules/Network/index.html">main/modules/Network</a></td>
|
|
143
|
-
<td data-value="
|
|
144
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
143
|
+
<td data-value="0" class="pic low">
|
|
144
|
+
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
|
|
145
145
|
</td>
|
|
146
|
-
<td data-value="
|
|
147
|
-
<td data-value="
|
|
148
|
-
<td data-value="
|
|
149
|
-
<td data-value="
|
|
150
|
-
<td data-value="
|
|
151
|
-
<td data-value="
|
|
152
|
-
<td data-value="
|
|
153
|
-
<td data-value="
|
|
146
|
+
<td data-value="0" class="pct low">0%</td>
|
|
147
|
+
<td data-value="504" class="abs low">0/504</td>
|
|
148
|
+
<td data-value="0" class="pct low">0%</td>
|
|
149
|
+
<td data-value="265" class="abs low">0/265</td>
|
|
150
|
+
<td data-value="0" class="pct low">0%</td>
|
|
151
|
+
<td data-value="71" class="abs low">0/71</td>
|
|
152
|
+
<td data-value="0" class="pct low">0%</td>
|
|
153
|
+
<td data-value="491" class="abs low">0/491</td>
|
|
154
154
|
</tr>
|
|
155
155
|
|
|
156
156
|
<tr>
|
|
@@ -159,13 +159,13 @@
|
|
|
159
159
|
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
|
|
160
160
|
</td>
|
|
161
161
|
<td data-value="0" class="pct low">0%</td>
|
|
162
|
-
<td data-value="
|
|
162
|
+
<td data-value="445" class="abs low">0/445</td>
|
|
163
163
|
<td data-value="0" class="pct low">0%</td>
|
|
164
|
-
<td data-value="
|
|
164
|
+
<td data-value="364" class="abs low">0/364</td>
|
|
165
165
|
<td data-value="0" class="pct low">0%</td>
|
|
166
166
|
<td data-value="54" class="abs low">0/54</td>
|
|
167
167
|
<td data-value="0" class="pct low">0%</td>
|
|
168
|
-
<td data-value="
|
|
168
|
+
<td data-value="438" class="abs low">0/438</td>
|
|
169
169
|
</tr>
|
|
170
170
|
|
|
171
171
|
</tbody>
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
177
177
|
Code coverage generated by
|
|
178
178
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
179
|
-
at 2023-11-
|
|
179
|
+
at 2023-11-21T10:02:27.844Z
|
|
180
180
|
</div>
|
|
181
181
|
<script src="prettify.js"></script>
|
|
182
182
|
<script>
|
|
@@ -0,0 +1,475 @@
|
|
|
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/60</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/18</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/13</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/59</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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
197
|
+
<span class="cline-any cline-no"> </span>
|
|
198
|
+
<span class="cline-any cline-no"> </span>
|
|
199
|
+
<span class="cline-any cline-neutral"> </span>
|
|
200
|
+
<span class="cline-any cline-neutral"> </span>
|
|
201
|
+
<span class="cline-any cline-neutral"> </span>
|
|
202
|
+
<span class="cline-any cline-neutral"> </span>
|
|
203
|
+
<span class="cline-any cline-neutral"> </span>
|
|
204
|
+
<span class="cline-any cline-neutral"> </span>
|
|
205
|
+
<span class="cline-any cline-neutral"> </span>
|
|
206
|
+
<span class="cline-any cline-neutral"> </span>
|
|
207
|
+
<span class="cline-any cline-neutral"> </span>
|
|
208
|
+
<span class="cline-any cline-neutral"> </span>
|
|
209
|
+
<span class="cline-any cline-neutral"> </span>
|
|
210
|
+
<span class="cline-any cline-neutral"> </span>
|
|
211
|
+
<span class="cline-any cline-no"> </span>
|
|
212
|
+
<span class="cline-any cline-no"> </span>
|
|
213
|
+
<span class="cline-any cline-neutral"> </span>
|
|
214
|
+
<span class="cline-any cline-neutral"> </span>
|
|
215
|
+
<span class="cline-any cline-neutral"> </span>
|
|
216
|
+
<span class="cline-any cline-no"> </span>
|
|
217
|
+
<span class="cline-any cline-no"> </span>
|
|
218
|
+
<span class="cline-any cline-neutral"> </span>
|
|
219
|
+
<span class="cline-any cline-no"> </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-no"> </span>
|
|
224
|
+
<span class="cline-any cline-no"> </span>
|
|
225
|
+
<span class="cline-any cline-no"> </span>
|
|
226
|
+
<span class="cline-any cline-no"> </span>
|
|
227
|
+
<span class="cline-any cline-neutral"> </span>
|
|
228
|
+
<span class="cline-any cline-no"> </span>
|
|
229
|
+
<span class="cline-any cline-no"> </span>
|
|
230
|
+
<span class="cline-any cline-neutral"> </span>
|
|
231
|
+
<span class="cline-any cline-neutral"> </span>
|
|
232
|
+
<span class="cline-any cline-neutral"> </span>
|
|
233
|
+
<span class="cline-any cline-no"> </span>
|
|
234
|
+
<span class="cline-any cline-no"> </span>
|
|
235
|
+
<span class="cline-any cline-no"> </span>
|
|
236
|
+
<span class="cline-any cline-no"> </span>
|
|
237
|
+
<span class="cline-any cline-no"> </span>
|
|
238
|
+
<span class="cline-any cline-no"> </span>
|
|
239
|
+
<span class="cline-any cline-no"> </span>
|
|
240
|
+
<span class="cline-any cline-no"> </span>
|
|
241
|
+
<span class="cline-any cline-neutral"> </span>
|
|
242
|
+
<span class="cline-any cline-no"> </span>
|
|
243
|
+
<span class="cline-any cline-no"> </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-neutral"> </span>
|
|
248
|
+
<span class="cline-any cline-neutral"> </span>
|
|
249
|
+
<span class="cline-any cline-neutral"> </span>
|
|
250
|
+
<span class="cline-any cline-no"> </span>
|
|
251
|
+
<span class="cline-any cline-neutral"> </span>
|
|
252
|
+
<span class="cline-any cline-neutral"> </span>
|
|
253
|
+
<span class="cline-any cline-neutral"> </span>
|
|
254
|
+
<span class="cline-any cline-neutral"> </span>
|
|
255
|
+
<span class="cline-any cline-no"> </span>
|
|
256
|
+
<span class="cline-any cline-no"> </span>
|
|
257
|
+
<span class="cline-any cline-no"> </span>
|
|
258
|
+
<span class="cline-any cline-neutral"> </span>
|
|
259
|
+
<span class="cline-any cline-no"> </span>
|
|
260
|
+
<span class="cline-any cline-no"> </span>
|
|
261
|
+
<span class="cline-any cline-no"> </span>
|
|
262
|
+
<span class="cline-any cline-no"> </span>
|
|
263
|
+
<span class="cline-any cline-neutral"> </span>
|
|
264
|
+
<span class="cline-any cline-neutral"> </span>
|
|
265
|
+
<span class="cline-any cline-neutral"> </span>
|
|
266
|
+
<span class="cline-any cline-no"> </span>
|
|
267
|
+
<span class="cline-any cline-neutral"> </span>
|
|
268
|
+
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
273
|
+
<span class="cline-any cline-neutral"> </span>
|
|
274
|
+
<span class="cline-any cline-no"> </span>
|
|
275
|
+
<span class="cline-any cline-neutral"> </span>
|
|
276
|
+
<span class="cline-any cline-neutral"> </span>
|
|
277
|
+
<span class="cline-any cline-no"> </span>
|
|
278
|
+
<span class="cline-any cline-neutral"> </span>
|
|
279
|
+
<span class="cline-any cline-neutral"> </span>
|
|
280
|
+
<span class="cline-any cline-neutral"> </span>
|
|
281
|
+
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
286
|
+
<span class="cline-any cline-neutral"> </span>
|
|
287
|
+
<span class="cline-any cline-neutral"> </span>
|
|
288
|
+
<span class="cline-any cline-no"> </span>
|
|
289
|
+
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
294
|
+
<span class="cline-any cline-neutral"> </span>
|
|
295
|
+
<span class="cline-any cline-no"> </span>
|
|
296
|
+
<span class="cline-any cline-no"> </span>
|
|
297
|
+
<span class="cline-any cline-neutral"> </span>
|
|
298
|
+
<span class="cline-any cline-neutral"> </span>
|
|
299
|
+
<span class="cline-any cline-neutral"> </span>
|
|
300
|
+
<span class="cline-any cline-no"> </span>
|
|
301
|
+
<span class="cline-any cline-neutral"> </span>
|
|
302
|
+
<span class="cline-any cline-no"> </span>
|
|
303
|
+
<span class="cline-any cline-no"> </span>
|
|
304
|
+
<span class="cline-any cline-no"> </span>
|
|
305
|
+
<span class="cline-any cline-no"> </span>
|
|
306
|
+
<span class="cline-any cline-neutral"> </span>
|
|
307
|
+
<span class="cline-any cline-no"> </span>
|
|
308
|
+
<span class="cline-any cline-no"> </span>
|
|
309
|
+
<span class="cline-any cline-neutral"> </span>
|
|
310
|
+
<span class="cline-any cline-neutral"> </span>
|
|
311
|
+
<span class="cline-any cline-no"> </span>
|
|
312
|
+
<span class="cline-any cline-neutral"> </span>
|
|
313
|
+
<span class="cline-any cline-neutral"> </span>
|
|
314
|
+
<span class="cline-any cline-neutral"> </span>
|
|
315
|
+
<span class="cline-any cline-no"> </span>
|
|
316
|
+
<span class="cline-any cline-no"> </span>
|
|
317
|
+
<span class="cline-any cline-no"> </span>
|
|
318
|
+
<span class="cline-any cline-no"> </span>
|
|
319
|
+
<span class="cline-any cline-neutral"> </span>
|
|
320
|
+
<span class="cline-any cline-no"> </span>
|
|
321
|
+
<span class="cline-any cline-no"> </span>
|
|
322
|
+
<span class="cline-any cline-no"> </span>
|
|
323
|
+
<span class="cline-any cline-neutral"> </span>
|
|
324
|
+
<span class="cline-any cline-neutral"> </span>
|
|
325
|
+
<span class="cline-any cline-no"> </span>
|
|
326
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import App from '../app/index.js'
|
|
327
|
+
<span class="cstat-no" title="statement not covered" >import { hasTag } from './guards.js'</span>
|
|
328
|
+
<span class="cstat-no" title="statement not covered" >import Message, { CanvasNode } from './messages.gen.js'</span>
|
|
329
|
+
|
|
330
|
+
interface CanvasSnapshot {
|
|
331
|
+
images: { data: string; id: number }[]
|
|
332
|
+
createdAt: number
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
interface Options {
|
|
336
|
+
fps: number
|
|
337
|
+
quality: 'low' | 'medium' | 'high'
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
class CanvasRecorder {
|
|
341
|
+
private <span class="cstat-no" title="statement not covered" >snapshots: Record<number, CanvasSnapshot> = {}</span>
|
|
342
|
+
private readonly <span class="cstat-no" title="statement not covered" >intervals: NodeJS.Timeout[] = []</span>
|
|
343
|
+
private readonly interval: number
|
|
344
|
+
|
|
345
|
+
<span class="fstat-no" title="function not covered" > constructor(</span>
|
|
346
|
+
private readonly <span class="cstat-no" title="statement not covered" >app: App,</span>
|
|
347
|
+
private readonly <span class="cstat-no" title="statement not covered" >options: Options,</span>
|
|
348
|
+
) {
|
|
349
|
+
<span class="cstat-no" title="statement not covered" > this.interval = 1000 / options.fps</span>
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
<span class="fstat-no" title="function not covered" > startTracking(</span>) {
|
|
353
|
+
<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>
|
|
354
|
+
const id = <span class="cstat-no" title="statement not covered" >this.app.nodes.getID(node)</span>
|
|
355
|
+
<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') || this.snapshots[id]) {</span>
|
|
356
|
+
<span class="cstat-no" title="statement not covered" > return</span>
|
|
357
|
+
}
|
|
358
|
+
const ts = <span class="cstat-no" title="statement not covered" >this.app.timestamp()</span>
|
|
359
|
+
<span class="cstat-no" title="statement not covered" > this.snapshots[id] = {</span>
|
|
360
|
+
images: [],
|
|
361
|
+
createdAt: ts,
|
|
362
|
+
}
|
|
363
|
+
const canvasMsg = <span class="cstat-no" title="statement not covered" >CanvasNode(id.toString(), ts)</span>
|
|
364
|
+
<span class="cstat-no" title="statement not covered" > this.app.send(canvasMsg as Message)</span>
|
|
365
|
+
const int = <span class="cstat-no" title="statement not covered" >setInterval(<span class="fstat-no" title="function not covered" >() =</span>> {</span>
|
|
366
|
+
const cid = <span class="cstat-no" title="statement not covered" >this.app.nodes.getID(node)</span>
|
|
367
|
+
const canvas = <span class="cstat-no" title="statement not covered" >cid ? this.app.nodes.getNode(cid) : undefined</span>
|
|
368
|
+
<span class="cstat-no" title="statement not covered" > if (!canvas || !hasTag(canvas, 'canvas') || canvas !== node) {</span>
|
|
369
|
+
<span class="cstat-no" title="statement not covered" > console.log('Canvas element not in sync')</span>
|
|
370
|
+
<span class="cstat-no" title="statement not covered" > clearInterval(int)</span>
|
|
371
|
+
} else {
|
|
372
|
+
const snapshot = <span class="cstat-no" title="statement not covered" >captureSnapshot(canvas, this.options.quality)</span>
|
|
373
|
+
<span class="cstat-no" title="statement not covered" > this.snapshots[id].images.push({ id: this.app.timestamp(), data: snapshot })</span>
|
|
374
|
+
<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>
|
|
375
|
+
<span class="cstat-no" title="statement not covered" > this.sendSnaps(this.snapshots[id].images, id, this.snapshots[id].createdAt)</span>
|
|
376
|
+
<span class="cstat-no" title="statement not covered" > this.snapshots[id].images = []</span>
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}, this.interval)
|
|
380
|
+
<span class="cstat-no" title="statement not covered" > this.intervals.push(int)</span>
|
|
381
|
+
})
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
<span class="fstat-no" title="function not covered" > sendSnaps(</span>images: { data: string; id: number }[], canvasId: number, createdAt: number) {
|
|
385
|
+
<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>
|
|
386
|
+
<span class="cstat-no" title="statement not covered" > console.log(this.snapshots)</span>
|
|
387
|
+
<span class="cstat-no" title="statement not covered" > return</span>
|
|
388
|
+
}
|
|
389
|
+
const formData = <span class="cstat-no" title="statement not covered" >new FormData()</span>
|
|
390
|
+
<span class="cstat-no" title="statement not covered" > images.forEach(<span class="fstat-no" title="function not covered" >(s</span>napshot) => {</span>
|
|
391
|
+
const blob = <span class="cstat-no" title="statement not covered" >dataUrlToBlob(snapshot.data)[0]</span>
|
|
392
|
+
<span class="cstat-no" title="statement not covered" > formData.append('snapshot', blob, `${createdAt}_${canvasId}_${snapshot.id}.jpeg`)</span>
|
|
393
|
+
// saveImageData(snapshot.data, `${createdAt}_${canvasId}_${snapshot.id}.jpeg`)
|
|
394
|
+
})
|
|
395
|
+
|
|
396
|
+
<span class="cstat-no" title="statement not covered" > fetch(this.app.options.ingestPoint + '/v1/web/images', {</span>
|
|
397
|
+
method: 'POST',
|
|
398
|
+
headers: {
|
|
399
|
+
Authorization: `Bearer ${this.app.session.getSessionToken() ?? ''}`,
|
|
400
|
+
},
|
|
401
|
+
body: formData,
|
|
402
|
+
})
|
|
403
|
+
.then(<span class="fstat-no" title="function not covered" >(r</span>) => {
|
|
404
|
+
<span class="cstat-no" title="statement not covered" > console.log('done', r)</span>
|
|
405
|
+
})
|
|
406
|
+
.catch(<span class="fstat-no" title="function not covered" >(e</span>) => {
|
|
407
|
+
<span class="cstat-no" title="statement not covered" > console.error('error saving canvas', e)</span>
|
|
408
|
+
})
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
<span class="fstat-no" title="function not covered" > clear(</span>) {
|
|
412
|
+
<span class="cstat-no" title="statement not covered" > console.log('cleaning up')</span>
|
|
413
|
+
<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>
|
|
414
|
+
<span class="cstat-no" title="statement not covered" > this.snapshots = {}</span>
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
const qualityInt = <span class="cstat-no" title="statement not covered" >{</span>
|
|
419
|
+
low: 0.33,
|
|
420
|
+
medium: 0.55,
|
|
421
|
+
high: 0.8,
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
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> {
|
|
425
|
+
const imageFormat = <span class="cstat-no" title="statement not covered" >'image/jpeg' </span>// or /png'
|
|
426
|
+
<span class="cstat-no" title="statement not covered" > return canvas.toDataURL(imageFormat, qualityInt[quality])</span>
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
function <span class="fstat-no" title="function not covered" >dataUrlToBlob(</span>dataUrl: string): [Blob, Uint8Array] {
|
|
430
|
+
const [header, base64] = <span class="cstat-no" title="statement not covered" >dataUrl.split(',')</span>
|
|
431
|
+
// @ts-ignore
|
|
432
|
+
const mime = <span class="cstat-no" title="statement not covered" >header.match(/:(.*?);/)[1]</span>
|
|
433
|
+
const blobStr = <span class="cstat-no" title="statement not covered" >atob(base64)</span>
|
|
434
|
+
let n = <span class="cstat-no" title="statement not covered" >blobStr.length</span>
|
|
435
|
+
const u8arr = <span class="cstat-no" title="statement not covered" >new Uint8Array(n)</span>
|
|
436
|
+
|
|
437
|
+
<span class="cstat-no" title="statement not covered" > while (n--) {</span>
|
|
438
|
+
<span class="cstat-no" title="statement not covered" > u8arr[n] = blobStr.charCodeAt(n)</span>
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
<span class="cstat-no" title="statement not covered" > return [new Blob([u8arr], { type: mime }), u8arr]</span>
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
function <span class="fstat-no" title="function not covered" >saveImageData(</span>imageDataUrl: string, name: string) {
|
|
445
|
+
const link = <span class="cstat-no" title="statement not covered" >document.createElement('a')</span>
|
|
446
|
+
<span class="cstat-no" title="statement not covered" > link.href = imageDataUrl</span>
|
|
447
|
+
<span class="cstat-no" title="statement not covered" > link.download = name</span>
|
|
448
|
+
<span class="cstat-no" title="statement not covered" > link.style.display = 'none'</span>
|
|
449
|
+
|
|
450
|
+
<span class="cstat-no" title="statement not covered" > document.body.appendChild(link)</span>
|
|
451
|
+
<span class="cstat-no" title="statement not covered" > link.click()</span>
|
|
452
|
+
<span class="cstat-no" title="statement not covered" > document.body.removeChild(link)</span>
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
<span class="cstat-no" title="statement not covered" >export default CanvasRecorder</span>
|
|
456
|
+
</pre></td></tr></table></pre>
|
|
457
|
+
|
|
458
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
459
|
+
</div><!-- /wrapper -->
|
|
460
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
461
|
+
Code coverage generated by
|
|
462
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
463
|
+
at 2023-11-21T10:02:27.844Z
|
|
464
|
+
</div>
|
|
465
|
+
<script src="../../prettify.js"></script>
|
|
466
|
+
<script>
|
|
467
|
+
window.onload = function () {
|
|
468
|
+
prettyPrint();
|
|
469
|
+
};
|
|
470
|
+
</script>
|
|
471
|
+
<script src="../../sorter.js"></script>
|
|
472
|
+
<script src="../../block-navigation.js"></script>
|
|
473
|
+
</body>
|
|
474
|
+
</html>
|
|
475
|
+
|