@openreplay/tracker 10.0.2 → 10.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/cjs/app/index.js +1 -1
  3. package/cjs/index.js +1 -1
  4. package/cjs/modules/Network/fetchProxy.js +4 -2
  5. package/cjs/utils.js +16 -2
  6. package/coverage/clover.xml +1575 -733
  7. package/coverage/coverage-final.json +22 -14
  8. package/coverage/lcov-report/index.html +60 -45
  9. package/coverage/lcov-report/main/app/canvas.ts.html +475 -0
  10. package/coverage/lcov-report/main/app/guards.ts.html +5 -2
  11. package/coverage/lcov-report/main/app/index.html +34 -19
  12. package/coverage/lcov-report/main/app/index.ts.html +1086 -45
  13. package/coverage/lcov-report/main/app/logger.ts.html +1 -1
  14. package/coverage/lcov-report/main/app/messages.gen.ts.html +179 -146
  15. package/coverage/lcov-report/main/app/nodes.ts.html +1 -1
  16. package/coverage/lcov-report/main/app/observer/iframe_observer.ts.html +1 -1
  17. package/coverage/lcov-report/main/app/observer/iframe_offsets.ts.html +1 -1
  18. package/coverage/lcov-report/main/app/observer/index.html +1 -1
  19. package/coverage/lcov-report/main/app/observer/shadow_root_observer.ts.html +1 -1
  20. package/coverage/lcov-report/main/app/observer/top_observer.ts.html +1 -1
  21. package/coverage/lcov-report/main/app/sanitizer.ts.html +1 -1
  22. package/coverage/lcov-report/main/app/session.ts.html +1 -1
  23. package/coverage/lcov-report/main/app/ticker.ts.html +1 -1
  24. package/coverage/lcov-report/main/index.html +20 -20
  25. package/coverage/lcov-report/main/index.ts.html +274 -100
  26. package/coverage/lcov-report/main/modules/Network/beaconProxy.ts.html +19 -19
  27. package/coverage/lcov-report/main/modules/Network/fetchProxy.ts.html +97 -97
  28. package/coverage/lcov-report/main/modules/Network/index.html +65 -65
  29. package/coverage/lcov-report/main/modules/Network/index.ts.html +33 -33
  30. package/coverage/lcov-report/main/modules/Network/networkMessage.ts.html +82 -73
  31. package/coverage/lcov-report/main/modules/Network/utils.ts.html +34 -34
  32. package/coverage/lcov-report/main/modules/Network/xhrProxy.ts.html +13 -13
  33. package/coverage/lcov-report/main/modules/attributeSender.ts.html +1 -1
  34. package/coverage/lcov-report/main/modules/axiosSpy.ts.html +1 -1
  35. package/coverage/lcov-report/main/modules/conditionsManager.ts.html +799 -0
  36. package/coverage/lcov-report/main/modules/connection.ts.html +1 -1
  37. package/coverage/lcov-report/main/modules/console.ts.html +1 -1
  38. package/coverage/lcov-report/main/modules/constructedStyleSheets.ts.html +1 -1
  39. package/coverage/lcov-report/main/modules/cssrules.ts.html +1 -1
  40. package/coverage/lcov-report/main/modules/exception.ts.html +1 -1
  41. package/coverage/lcov-report/main/modules/featureFlags.ts.html +10 -7
  42. package/coverage/lcov-report/main/modules/focus.ts.html +1 -1
  43. package/coverage/lcov-report/main/modules/fonts.ts.html +1 -1
  44. package/coverage/lcov-report/main/modules/img.ts.html +1 -1
  45. package/coverage/lcov-report/main/modules/index.html +27 -12
  46. package/coverage/lcov-report/main/modules/input.ts.html +1 -1
  47. package/coverage/lcov-report/main/modules/mouse.ts.html +1 -1
  48. package/coverage/lcov-report/main/modules/network.ts.html +2 -2
  49. package/coverage/lcov-report/main/modules/performance.ts.html +1 -1
  50. package/coverage/lcov-report/main/modules/scroll.ts.html +1 -1
  51. package/coverage/lcov-report/main/modules/selection.ts.html +1 -1
  52. package/coverage/lcov-report/main/modules/tabs.ts.html +1 -1
  53. package/coverage/lcov-report/main/modules/timing.ts.html +1 -1
  54. package/coverage/lcov-report/main/modules/userTesting/SignalManager.ts.html +370 -0
  55. package/coverage/lcov-report/main/modules/userTesting/dnd.ts.html +10 -22
  56. package/coverage/lcov-report/main/modules/userTesting/index.html +57 -27
  57. package/coverage/lcov-report/main/modules/userTesting/index.ts.html +814 -115
  58. package/coverage/lcov-report/main/modules/userTesting/recorder.ts.html +136 -67
  59. package/coverage/lcov-report/main/modules/userTesting/styles.ts.html +111 -39
  60. package/coverage/lcov-report/main/modules/userTesting/utils.ts.html +364 -0
  61. package/coverage/lcov-report/main/modules/viewport.ts.html +1 -1
  62. package/coverage/lcov-report/main/utils.ts.html +101 -59
  63. package/coverage/lcov-report/webworker/BatchWriter.ts.html +1 -1
  64. package/coverage/lcov-report/webworker/MessageEncoder.gen.ts.html +17 -5
  65. package/coverage/lcov-report/webworker/PrimitiveEncoder.ts.html +1 -1
  66. package/coverage/lcov-report/webworker/QueueSender.ts.html +1 -1
  67. package/coverage/lcov-report/webworker/index.html +9 -9
  68. package/coverage/lcov-report/webworker/index.ts.html +15 -9
  69. package/coverage/lcov.info +2699 -1150
  70. package/lib/app/index.js +1 -1
  71. package/lib/common/tsconfig.tsbuildinfo +1 -1
  72. package/lib/index.js +1 -1
  73. package/lib/modules/Network/fetchProxy.js +4 -2
  74. package/lib/utils.js +16 -2
  75. package/package.json +1 -1
@@ -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">&nbsp;</span>
197
+ <span class="cline-any cline-no">&nbsp;</span>
198
+ <span class="cline-any cline-no">&nbsp;</span>
199
+ <span class="cline-any cline-neutral">&nbsp;</span>
200
+ <span class="cline-any cline-neutral">&nbsp;</span>
201
+ <span class="cline-any cline-neutral">&nbsp;</span>
202
+ <span class="cline-any cline-neutral">&nbsp;</span>
203
+ <span class="cline-any cline-neutral">&nbsp;</span>
204
+ <span class="cline-any cline-neutral">&nbsp;</span>
205
+ <span class="cline-any cline-neutral">&nbsp;</span>
206
+ <span class="cline-any cline-neutral">&nbsp;</span>
207
+ <span class="cline-any cline-neutral">&nbsp;</span>
208
+ <span class="cline-any cline-neutral">&nbsp;</span>
209
+ <span class="cline-any cline-neutral">&nbsp;</span>
210
+ <span class="cline-any cline-neutral">&nbsp;</span>
211
+ <span class="cline-any cline-no">&nbsp;</span>
212
+ <span class="cline-any cline-no">&nbsp;</span>
213
+ <span class="cline-any cline-neutral">&nbsp;</span>
214
+ <span class="cline-any cline-neutral">&nbsp;</span>
215
+ <span class="cline-any cline-neutral">&nbsp;</span>
216
+ <span class="cline-any cline-no">&nbsp;</span>
217
+ <span class="cline-any cline-no">&nbsp;</span>
218
+ <span class="cline-any cline-neutral">&nbsp;</span>
219
+ <span class="cline-any cline-no">&nbsp;</span>
220
+ <span class="cline-any cline-neutral">&nbsp;</span>
221
+ <span class="cline-any cline-neutral">&nbsp;</span>
222
+ <span class="cline-any cline-neutral">&nbsp;</span>
223
+ <span class="cline-any cline-no">&nbsp;</span>
224
+ <span class="cline-any cline-no">&nbsp;</span>
225
+ <span class="cline-any cline-no">&nbsp;</span>
226
+ <span class="cline-any cline-no">&nbsp;</span>
227
+ <span class="cline-any cline-neutral">&nbsp;</span>
228
+ <span class="cline-any cline-no">&nbsp;</span>
229
+ <span class="cline-any cline-no">&nbsp;</span>
230
+ <span class="cline-any cline-neutral">&nbsp;</span>
231
+ <span class="cline-any cline-neutral">&nbsp;</span>
232
+ <span class="cline-any cline-neutral">&nbsp;</span>
233
+ <span class="cline-any cline-no">&nbsp;</span>
234
+ <span class="cline-any cline-no">&nbsp;</span>
235
+ <span class="cline-any cline-no">&nbsp;</span>
236
+ <span class="cline-any cline-no">&nbsp;</span>
237
+ <span class="cline-any cline-no">&nbsp;</span>
238
+ <span class="cline-any cline-no">&nbsp;</span>
239
+ <span class="cline-any cline-no">&nbsp;</span>
240
+ <span class="cline-any cline-no">&nbsp;</span>
241
+ <span class="cline-any cline-neutral">&nbsp;</span>
242
+ <span class="cline-any cline-no">&nbsp;</span>
243
+ <span class="cline-any cline-no">&nbsp;</span>
244
+ <span class="cline-any cline-no">&nbsp;</span>
245
+ <span class="cline-any cline-no">&nbsp;</span>
246
+ <span class="cline-any cline-no">&nbsp;</span>
247
+ <span class="cline-any cline-neutral">&nbsp;</span>
248
+ <span class="cline-any cline-neutral">&nbsp;</span>
249
+ <span class="cline-any cline-neutral">&nbsp;</span>
250
+ <span class="cline-any cline-no">&nbsp;</span>
251
+ <span class="cline-any cline-neutral">&nbsp;</span>
252
+ <span class="cline-any cline-neutral">&nbsp;</span>
253
+ <span class="cline-any cline-neutral">&nbsp;</span>
254
+ <span class="cline-any cline-neutral">&nbsp;</span>
255
+ <span class="cline-any cline-no">&nbsp;</span>
256
+ <span class="cline-any cline-no">&nbsp;</span>
257
+ <span class="cline-any cline-no">&nbsp;</span>
258
+ <span class="cline-any cline-neutral">&nbsp;</span>
259
+ <span class="cline-any cline-no">&nbsp;</span>
260
+ <span class="cline-any cline-no">&nbsp;</span>
261
+ <span class="cline-any cline-no">&nbsp;</span>
262
+ <span class="cline-any cline-no">&nbsp;</span>
263
+ <span class="cline-any cline-neutral">&nbsp;</span>
264
+ <span class="cline-any cline-neutral">&nbsp;</span>
265
+ <span class="cline-any cline-neutral">&nbsp;</span>
266
+ <span class="cline-any cline-no">&nbsp;</span>
267
+ <span class="cline-any cline-neutral">&nbsp;</span>
268
+ <span class="cline-any cline-neutral">&nbsp;</span>
269
+ <span class="cline-any cline-neutral">&nbsp;</span>
270
+ <span class="cline-any cline-neutral">&nbsp;</span>
271
+ <span class="cline-any cline-neutral">&nbsp;</span>
272
+ <span class="cline-any cline-neutral">&nbsp;</span>
273
+ <span class="cline-any cline-neutral">&nbsp;</span>
274
+ <span class="cline-any cline-no">&nbsp;</span>
275
+ <span class="cline-any cline-neutral">&nbsp;</span>
276
+ <span class="cline-any cline-neutral">&nbsp;</span>
277
+ <span class="cline-any cline-no">&nbsp;</span>
278
+ <span class="cline-any cline-neutral">&nbsp;</span>
279
+ <span class="cline-any cline-neutral">&nbsp;</span>
280
+ <span class="cline-any cline-neutral">&nbsp;</span>
281
+ <span class="cline-any cline-neutral">&nbsp;</span>
282
+ <span class="cline-any cline-no">&nbsp;</span>
283
+ <span class="cline-any cline-no">&nbsp;</span>
284
+ <span class="cline-any cline-no">&nbsp;</span>
285
+ <span class="cline-any cline-neutral">&nbsp;</span>
286
+ <span class="cline-any cline-neutral">&nbsp;</span>
287
+ <span class="cline-any cline-neutral">&nbsp;</span>
288
+ <span class="cline-any cline-no">&nbsp;</span>
289
+ <span class="cline-any cline-neutral">&nbsp;</span>
290
+ <span class="cline-any cline-neutral">&nbsp;</span>
291
+ <span class="cline-any cline-neutral">&nbsp;</span>
292
+ <span class="cline-any cline-neutral">&nbsp;</span>
293
+ <span class="cline-any cline-neutral">&nbsp;</span>
294
+ <span class="cline-any cline-neutral">&nbsp;</span>
295
+ <span class="cline-any cline-no">&nbsp;</span>
296
+ <span class="cline-any cline-no">&nbsp;</span>
297
+ <span class="cline-any cline-neutral">&nbsp;</span>
298
+ <span class="cline-any cline-neutral">&nbsp;</span>
299
+ <span class="cline-any cline-neutral">&nbsp;</span>
300
+ <span class="cline-any cline-no">&nbsp;</span>
301
+ <span class="cline-any cline-neutral">&nbsp;</span>
302
+ <span class="cline-any cline-no">&nbsp;</span>
303
+ <span class="cline-any cline-no">&nbsp;</span>
304
+ <span class="cline-any cline-no">&nbsp;</span>
305
+ <span class="cline-any cline-no">&nbsp;</span>
306
+ <span class="cline-any cline-neutral">&nbsp;</span>
307
+ <span class="cline-any cline-no">&nbsp;</span>
308
+ <span class="cline-any cline-no">&nbsp;</span>
309
+ <span class="cline-any cline-neutral">&nbsp;</span>
310
+ <span class="cline-any cline-neutral">&nbsp;</span>
311
+ <span class="cline-any cline-no">&nbsp;</span>
312
+ <span class="cline-any cline-neutral">&nbsp;</span>
313
+ <span class="cline-any cline-neutral">&nbsp;</span>
314
+ <span class="cline-any cline-neutral">&nbsp;</span>
315
+ <span class="cline-any cline-no">&nbsp;</span>
316
+ <span class="cline-any cline-no">&nbsp;</span>
317
+ <span class="cline-any cline-no">&nbsp;</span>
318
+ <span class="cline-any cline-no">&nbsp;</span>
319
+ <span class="cline-any cline-neutral">&nbsp;</span>
320
+ <span class="cline-any cline-no">&nbsp;</span>
321
+ <span class="cline-any cline-no">&nbsp;</span>
322
+ <span class="cline-any cline-no">&nbsp;</span>
323
+ <span class="cline-any cline-neutral">&nbsp;</span>
324
+ <span class="cline-any cline-neutral">&nbsp;</span>
325
+ <span class="cline-any cline-no">&nbsp;</span>
326
+ <span class="cline-any cline-neutral">&nbsp;</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
+ &nbsp;
330
+ interface CanvasSnapshot {
331
+ images: { data: string; id: number }[]
332
+ createdAt: number
333
+ }
334
+ &nbsp;
335
+ interface Options {
336
+ fps: number
337
+ quality: 'low' | 'medium' | 'high'
338
+ }
339
+ &nbsp;
340
+ class CanvasRecorder {
341
+ private <span class="cstat-no" title="statement not covered" >snapshots: Record&lt;number, CanvasSnapshot&gt; = {}</span>
342
+ private readonly <span class="cstat-no" title="statement not covered" >intervals: NodeJS.Timeout[] = []</span>
343
+ private readonly interval: number
344
+ &nbsp;
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
+ &nbsp;
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 =&gt; {</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>&gt; {</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 &gt; 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
+ &nbsp;
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) =&gt; {</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
+ &nbsp;
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>) =&gt; {
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>) =&gt; {
407
+ <span class="cstat-no" title="statement not covered" > console.error('error saving canvas', e)</span>
408
+ })
409
+ }
410
+ &nbsp;
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) =&gt; <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
+ &nbsp;
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
+ &nbsp;
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
+ &nbsp;
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
+ &nbsp;
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
+ &nbsp;
441
+ <span class="cstat-no" title="statement not covered" > return [new Blob([u8arr], { type: mime }), u8arr]</span>
442
+ }
443
+ &nbsp;
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
+ &nbsp;
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
+ &nbsp;
455
+ <span class="cstat-no" title="statement not covered" >export default CanvasRecorder</span>
456
+ &nbsp;</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-12-15T15:55:44.965Z
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
+
@@ -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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
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">&nbsp;</span>
115
116
  <span class="cline-any cline-no">&nbsp;</span>
116
117
  <span class="cline-any cline-no">&nbsp;</span>
117
118
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -152,6 +153,7 @@
152
153
  <span class="cline-any cline-neutral">&nbsp;</span>
153
154
  <span class="cline-any cline-neutral">&nbsp;</span>
154
155
  <span class="cline-any cline-neutral">&nbsp;</span>
156
+ <span class="cline-any cline-neutral">&nbsp;</span>
155
157
  <span class="cline-any cline-no">&nbsp;</span>
156
158
  <span class="cline-any cline-neutral">&nbsp;</span>
157
159
  <span class="cline-any cline-neutral">&nbsp;</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&lt;</span>T extends keyof TagTypeMap&gt;(
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 2023-11-03T09:39:08.430Z
220
+ at 2023-12-15T15:55:44.965Z
218
221
  </div>
219
222
  <script src="../../prettify.js"></script>
220
223
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">10.64% </span>
26
+ <span class="strong">0% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>69/648</span>
28
+ <span class='fraction'>0/872</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
33
  <span class="strong">0% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/240</span>
35
+ <span class='fraction'>0/340</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/190</span>
42
+ <span class='fraction'>0/222</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">10.93% </span>
47
+ <span class="strong">0% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>69/631</span>
49
+ <span class='fraction'>0/851</span>
50
50
  </div>
51
51
 
52
52
 
@@ -79,6 +79,21 @@
79
79
  </tr>
80
80
  </thead>
81
81
  <tbody><tr>
82
+ <td class="file low" data-value="canvas.ts"><a href="canvas.ts.html">canvas.ts</a></td>
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
+ </td>
86
+ <td data-value="0" class="pct low">0%</td>
87
+ <td data-value="60" class="abs low">0/60</td>
88
+ <td data-value="0" class="pct low">0%</td>
89
+ <td data-value="18" class="abs low">0/18</td>
90
+ <td data-value="0" class="pct low">0%</td>
91
+ <td data-value="13" class="abs low">0/13</td>
92
+ <td data-value="0" class="pct low">0%</td>
93
+ <td data-value="59" class="abs low">0/59</td>
94
+ </tr>
95
+
96
+ <tr>
82
97
  <td class="file low" data-value="guards.ts"><a href="guards.ts.html">guards.ts</a></td>
83
98
  <td data-value="0" class="pic low">
84
99
  <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
@@ -99,13 +114,13 @@
99
114
  <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
100
115
  </td>
101
116
  <td data-value="0" class="pct low">0%</td>
102
- <td data-value="290" class="abs low">0/290</td>
117
+ <td data-value="452" class="abs low">0/452</td>
103
118
  <td data-value="0" class="pct low">0%</td>
104
- <td data-value="158" class="abs low">0/158</td>
119
+ <td data-value="240" class="abs low">0/240</td>
105
120
  <td data-value="0" class="pct low">0%</td>
106
- <td data-value="57" class="abs low">0/57</td>
121
+ <td data-value="75" class="abs low">0/75</td>
107
122
  <td data-value="0" class="pct low">0%</td>
108
- <td data-value="282" class="abs low">0/282</td>
123
+ <td data-value="441" class="abs low">0/441</td>
109
124
  </tr>
110
125
 
111
126
  <tr>
@@ -124,18 +139,18 @@
124
139
  </tr>
125
140
 
126
141
  <tr>
127
- <td class="file medium" data-value="messages.gen.ts"><a href="messages.gen.ts.html">messages.gen.ts</a></td>
128
- <td data-value="50" class="pic medium">
129
- <div class="chart"><div class="cover-fill" style="width: 50%"></div><div class="cover-empty" style="width: 50%"></div></div>
142
+ <td class="file low" data-value="messages.gen.ts"><a href="messages.gen.ts.html">messages.gen.ts</a></td>
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>
130
145
  </td>
131
- <td data-value="50" class="pct medium">50%</td>
132
- <td data-value="138" class="abs medium">69/138</td>
146
+ <td data-value="0" class="pct low">0%</td>
147
+ <td data-value="140" class="abs low">0/140</td>
133
148
  <td data-value="100" class="pct high">100%</td>
134
149
  <td data-value="0" class="abs high">0/0</td>
135
150
  <td data-value="0" class="pct low">0%</td>
136
- <td data-value="69" class="abs low">0/69</td>
137
- <td data-value="50" class="pct medium">50%</td>
138
- <td data-value="138" class="abs medium">69/138</td>
151
+ <td data-value="70" class="abs low">0/70</td>
152
+ <td data-value="0" class="pct low">0%</td>
153
+ <td data-value="140" class="abs low">0/140</td>
139
154
  </tr>
140
155
 
141
156
  <tr>
@@ -206,7 +221,7 @@
206
221
  <div class='footer quiet pad2 space-top1 center small'>
207
222
  Code coverage generated by
208
223
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
209
- at 2023-11-03T09:39:08.430Z
224
+ at 2023-12-15T15:55:44.965Z
210
225
  </div>
211
226
  <script src="../../prettify.js"></script>
212
227
  <script>