@openreplay/tracker 7.0.2 → 7.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 (78) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/cjs/app/index.d.ts +1 -0
  3. package/cjs/app/index.js +4 -2
  4. package/cjs/common/interaction.d.ts +1 -0
  5. package/cjs/index.js +1 -1
  6. package/cjs/modules/network.js +1 -1
  7. package/coverage/clover.xml +2973 -0
  8. package/coverage/coverage-final.json +44 -0
  9. package/coverage/lcov-report/base.css +224 -0
  10. package/coverage/lcov-report/block-navigation.js +87 -0
  11. package/coverage/lcov-report/favicon.png +0 -0
  12. package/coverage/lcov-report/index.html +191 -0
  13. package/coverage/lcov-report/main/app/guards.ts.html +229 -0
  14. package/coverage/lcov-report/main/app/index.html +206 -0
  15. package/coverage/lcov-report/main/app/index.ts.html +2149 -0
  16. package/coverage/lcov-report/main/app/logger.ts.html +277 -0
  17. package/coverage/lcov-report/main/app/messages.gen.ts.html +2752 -0
  18. package/coverage/lcov-report/main/app/observer/iframe_observer.ts.html +148 -0
  19. package/coverage/lcov-report/main/app/observer/iframe_offsets.ts.html +289 -0
  20. package/coverage/lcov-report/main/app/observer/index.html +161 -0
  21. package/coverage/lcov-report/main/app/observer/shadow_root_observer.ts.html +142 -0
  22. package/coverage/lcov-report/main/app/observer/top_observer.ts.html +535 -0
  23. package/coverage/lcov-report/main/app/sanitizer.ts.html +394 -0
  24. package/coverage/lcov-report/main/app/session.ts.html +601 -0
  25. package/coverage/lcov-report/main/app/ticker.ts.html +250 -0
  26. package/coverage/lcov-report/main/index.html +131 -0
  27. package/coverage/lcov-report/main/index.ts.html +1144 -0
  28. package/coverage/lcov-report/main/modules/Network/fetchProxy.ts.html +949 -0
  29. package/coverage/lcov-report/main/modules/Network/index.html +176 -0
  30. package/coverage/lcov-report/main/modules/Network/index.ts.html +169 -0
  31. package/coverage/lcov-report/main/modules/Network/networkMessage.ts.html +382 -0
  32. package/coverage/lcov-report/main/modules/Network/utils.ts.html +700 -0
  33. package/coverage/lcov-report/main/modules/Network/xhrProxy.ts.html +823 -0
  34. package/coverage/lcov-report/main/modules/attributeSender.ts.html +217 -0
  35. package/coverage/lcov-report/main/modules/axiosSpy.ts.html +700 -0
  36. package/coverage/lcov-report/main/modules/connection.ts.html +160 -0
  37. package/coverage/lcov-report/main/modules/console.ts.html +535 -0
  38. package/coverage/lcov-report/main/modules/constructedStyleSheets.ts.html +559 -0
  39. package/coverage/lcov-report/main/modules/cssrules.ts.html +418 -0
  40. package/coverage/lcov-report/main/modules/exception.ts.html +385 -0
  41. package/coverage/lcov-report/main/modules/featureFlags.ts.html +415 -0
  42. package/coverage/lcov-report/main/modules/focus.ts.html +220 -0
  43. package/coverage/lcov-report/main/modules/fonts.ts.html +289 -0
  44. package/coverage/lcov-report/main/modules/img.ts.html +433 -0
  45. package/coverage/lcov-report/main/modules/index.html +401 -0
  46. package/coverage/lcov-report/main/modules/input.ts.html +811 -0
  47. package/coverage/lcov-report/main/modules/mouse.ts.html +826 -0
  48. package/coverage/lcov-report/main/modules/network.ts.html +1129 -0
  49. package/coverage/lcov-report/main/modules/performance.ts.html +367 -0
  50. package/coverage/lcov-report/main/modules/scroll.ts.html +364 -0
  51. package/coverage/lcov-report/main/modules/selection.ts.html +202 -0
  52. package/coverage/lcov-report/main/modules/tabs.ts.html +124 -0
  53. package/coverage/lcov-report/main/modules/timing.ts.html +841 -0
  54. package/coverage/lcov-report/main/modules/viewport.ts.html +250 -0
  55. package/coverage/lcov-report/main/utils.ts.html +406 -0
  56. package/coverage/lcov-report/prettify.css +1 -0
  57. package/coverage/lcov-report/prettify.js +2 -0
  58. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  59. package/coverage/lcov-report/sorter.js +196 -0
  60. package/coverage/lcov-report/webworker/BatchWriter.ts.html +481 -0
  61. package/coverage/lcov-report/webworker/MessageEncoder.gen.ts.html +949 -0
  62. package/coverage/lcov-report/webworker/PrimitiveEncoder.ts.html +436 -0
  63. package/coverage/lcov-report/webworker/QueueSender.ts.html +505 -0
  64. package/coverage/lcov-report/webworker/index.html +176 -0
  65. package/coverage/lcov-report/webworker/index.ts.html +616 -0
  66. package/coverage/lcov.info +5854 -0
  67. package/jest.config.js +2 -0
  68. package/lib/app/index.d.ts +1 -0
  69. package/lib/app/index.js +4 -2
  70. package/lib/common/interaction.d.ts +1 -0
  71. package/lib/common/tsconfig.tsbuildinfo +1 -1
  72. package/lib/index.js +1 -1
  73. package/lib/modules/network.js +1 -1
  74. package/package.json +1 -1
  75. package/cjs/vendors/finder/finder.d.ts +0 -12
  76. package/cjs/vendors/finder/finder.js +0 -352
  77. package/lib/vendors/finder/finder.d.ts +0 -12
  78. package/lib/vendors/finder/finder.js +0 -348
@@ -0,0 +1,535 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for main/app/observer/top_observer.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/observer</a> top_observer.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/67</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/19</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/17</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/62</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-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-neutral">&nbsp;</span>
220
+ <span class="cline-any cline-no">&nbsp;</span>
221
+ <span class="cline-any cline-no">&nbsp;</span>
222
+ <span class="cline-any cline-no">&nbsp;</span>
223
+ <span class="cline-any cline-neutral">&nbsp;</span>
224
+ <span class="cline-any cline-no">&nbsp;</span>
225
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
229
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
234
+ <span class="cline-any cline-neutral">&nbsp;</span>
235
+ <span class="cline-any cline-no">&nbsp;</span>
236
+ <span class="cline-any cline-neutral">&nbsp;</span>
237
+ <span class="cline-any cline-no">&nbsp;</span>
238
+ <span class="cline-any cline-neutral">&nbsp;</span>
239
+ <span class="cline-any cline-no">&nbsp;</span>
240
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
245
+ <span class="cline-any cline-neutral">&nbsp;</span>
246
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
251
+ <span class="cline-any cline-no">&nbsp;</span>
252
+ <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
256
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
260
+ <span class="cline-any cline-neutral">&nbsp;</span>
261
+ <span class="cline-any cline-neutral">&nbsp;</span>
262
+ <span class="cline-any cline-no">&nbsp;</span>
263
+ <span class="cline-any cline-no">&nbsp;</span>
264
+ <span class="cline-any cline-no">&nbsp;</span>
265
+ <span class="cline-any cline-neutral">&nbsp;</span>
266
+ <span class="cline-any cline-neutral">&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-no">&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-no">&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-neutral">&nbsp;</span>
278
+ <span class="cline-any cline-no">&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-no">&nbsp;</span>
282
+ <span class="cline-any cline-neutral">&nbsp;</span>
283
+ <span class="cline-any cline-no">&nbsp;</span>
284
+ <span class="cline-any cline-neutral">&nbsp;</span>
285
+ <span class="cline-any cline-neutral">&nbsp;</span>
286
+ <span class="cline-any cline-no">&nbsp;</span>
287
+ <span class="cline-any cline-no">&nbsp;</span>
288
+ <span class="cline-any cline-no">&nbsp;</span>
289
+ <span class="cline-any cline-no">&nbsp;</span>
290
+ <span class="cline-any cline-neutral">&nbsp;</span>
291
+ <span class="cline-any cline-no">&nbsp;</span>
292
+ <span class="cline-any cline-neutral">&nbsp;</span>
293
+ <span class="cline-any cline-no">&nbsp;</span>
294
+ <span class="cline-any cline-no">&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-no">&nbsp;</span>
298
+ <span class="cline-any cline-no">&nbsp;</span>
299
+ <span class="cline-any cline-no">&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-neutral">&nbsp;</span>
304
+ <span class="cline-any cline-no">&nbsp;</span>
305
+ <span class="cline-any cline-neutral">&nbsp;</span>
306
+ <span class="cline-any cline-neutral">&nbsp;</span>
307
+ <span class="cline-any cline-neutral">&nbsp;</span>
308
+ <span class="cline-any cline-neutral">&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-no">&nbsp;</span>
314
+ <span class="cline-any cline-neutral">&nbsp;</span>
315
+ <span class="cline-any cline-neutral">&nbsp;</span>
316
+ <span class="cline-any cline-neutral">&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-neutral">&nbsp;</span>
321
+ <span class="cline-any cline-no">&nbsp;</span>
322
+ <span class="cline-any cline-neutral">&nbsp;</span>
323
+ <span class="cline-any cline-no">&nbsp;</span>
324
+ <span class="cline-any cline-no">&nbsp;</span>
325
+ <span class="cline-any cline-no">&nbsp;</span>
326
+ <span class="cline-any cline-neutral">&nbsp;</span>
327
+ <span class="cline-any cline-neutral">&nbsp;</span>
328
+ <span class="cline-any cline-neutral">&nbsp;</span>
329
+ <span class="cline-any cline-neutral">&nbsp;</span>
330
+ <span class="cline-any cline-neutral">&nbsp;</span>
331
+ <span class="cline-any cline-no">&nbsp;</span>
332
+ <span class="cline-any cline-no">&nbsp;</span>
333
+ <span class="cline-any cline-neutral">&nbsp;</span>
334
+ <span class="cline-any cline-no">&nbsp;</span>
335
+ <span class="cline-any cline-no">&nbsp;</span>
336
+ <span class="cline-any cline-no">&nbsp;</span>
337
+ <span class="cline-any cline-neutral">&nbsp;</span>
338
+ <span class="cline-any cline-neutral">&nbsp;</span>
339
+ <span class="cline-any cline-neutral">&nbsp;</span>
340
+ <span class="cline-any cline-neutral">&nbsp;</span>
341
+ <span class="cline-any cline-neutral">&nbsp;</span>
342
+ <span class="cline-any cline-neutral">&nbsp;</span>
343
+ <span class="cline-any cline-neutral">&nbsp;</span>
344
+ <span class="cline-any cline-neutral">&nbsp;</span>
345
+ <span class="cline-any cline-no">&nbsp;</span>
346
+ <span class="cline-any cline-neutral">&nbsp;</span>
347
+ <span class="cline-any cline-neutral">&nbsp;</span>
348
+ <span class="cline-any cline-no">&nbsp;</span>
349
+ <span class="cline-any cline-neutral">&nbsp;</span>
350
+ <span class="cline-any cline-no">&nbsp;</span>
351
+ <span class="cline-any cline-neutral">&nbsp;</span>
352
+ <span class="cline-any cline-neutral">&nbsp;</span>
353
+ <span class="cline-any cline-neutral">&nbsp;</span>
354
+ <span class="cline-any cline-neutral">&nbsp;</span>
355
+ <span class="cline-any cline-neutral">&nbsp;</span>
356
+ <span class="cline-any cline-neutral">&nbsp;</span>
357
+ <span class="cline-any cline-no">&nbsp;</span>
358
+ <span class="cline-any cline-no">&nbsp;</span>
359
+ <span class="cline-any cline-no">&nbsp;</span>
360
+ <span class="cline-any cline-no">&nbsp;</span>
361
+ <span class="cline-any cline-no">&nbsp;</span>
362
+ <span class="cline-any cline-no">&nbsp;</span>
363
+ <span class="cline-any cline-no">&nbsp;</span>
364
+ <span class="cline-any cline-neutral">&nbsp;</span>
365
+ <span class="cline-any cline-neutral">&nbsp;</span>
366
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" >import Observer from './observer.js'</span>
367
+ <span class="cstat-no" title="statement not covered" >import { isElementNode, hasTag } from '../guards.js'</span>
368
+ import Network from '../../modules/network.js'
369
+ &nbsp;
370
+ <span class="cstat-no" title="statement not covered" >import IFrameObserver from './iframe_observer.js'</span>
371
+ <span class="cstat-no" title="statement not covered" >import ShadowRootObserver from './shadow_root_observer.js'</span>
372
+ <span class="cstat-no" title="statement not covered" >import IFrameOffsets, { Offset } from './iframe_offsets.js'</span>
373
+ &nbsp;
374
+ <span class="cstat-no" title="statement not covered" >import { CreateDocument } from '../messages.gen.js'</span>
375
+ import App from '../index.js'
376
+ <span class="cstat-no" title="statement not covered" >import { IN_BROWSER, hasOpenreplayAttribute, canAccessIframe } from '../../utils.js'</span>
377
+ &nbsp;
378
+ export interface Options {
379
+ captureIFrames: boolean
380
+ }
381
+ &nbsp;
382
+ type Context = Window &amp; typeof globalThis
383
+ type ContextCallback = (context: Context) =&gt; void
384
+ &nbsp;
385
+ const attachShadowNativeFn = <span class="cstat-no" title="statement not covered" >IN_BROWSER ? Element.prototype.attachShadow : <span class="fstat-no" title="function not covered" >() =</span>&gt; <span class="cstat-no" title="statement not covered" >new ShadowRoot()</span></span>
386
+ &nbsp;
387
+ <span class="cstat-no" title="statement not covered" >export default class T</span>opObserver extends Observer {
388
+ private readonly options: Options
389
+ private readonly <span class="cstat-no" title="statement not covered" >iframeOffsets: IFrameOffsets = new IFrameOffsets()</span>
390
+ &nbsp;
391
+ <span class="fstat-no" title="function not covered" > constructor(a</span>pp: App, options: Partial&lt;Options&gt;) {
392
+ <span class="cstat-no" title="statement not covered" > super(app, true)</span>
393
+ <span class="cstat-no" title="statement not covered" > this.options = Object.assign(</span>
394
+ {
395
+ captureIFrames: true,
396
+ },
397
+ options,
398
+ )
399
+ &nbsp;
400
+ // IFrames
401
+ <span class="cstat-no" title="statement not covered" > this.app.nodes.attachNodeCallback(<span class="fstat-no" title="function not covered" >(n</span>ode) =&gt; {</span>
402
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
403
+ hasTag(node, 'iframe') &amp;&amp;
404
+ ((this.options.captureIFrames &amp;&amp; !hasOpenreplayAttribute(node, 'obscured')) ||
405
+ hasOpenreplayAttribute(node, 'capture'))
406
+ ) {
407
+ <span class="cstat-no" title="statement not covered" > this.handleIframe(node)</span>
408
+ }
409
+ })
410
+ &nbsp;
411
+ // ShadowDOM
412
+ <span class="cstat-no" title="statement not covered" > this.app.nodes.attachNodeCallback(<span class="fstat-no" title="function not covered" >(n</span>ode) =&gt; {</span>
413
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (isElementNode(node) &amp;&amp; node.shadowRoot !== null) {</span>
414
+ <span class="cstat-no" title="statement not covered" > this.handleShadowRoot(node.shadowRoot)</span>
415
+ }
416
+ })
417
+ }
418
+ &nbsp;
419
+ private readonly <span class="cstat-no" title="statement not covered" >contextCallbacks: Array&lt;ContextCallback&gt; = []</span>
420
+ &nbsp;
421
+ // Attached once per Tracker instance
422
+ private readonly <span class="cstat-no" title="statement not covered" >contextsSet: Set&lt;Window&gt; = new Set()</span>
423
+ <span class="fstat-no" title="function not covered" > attachContextCallback(</span>cb: ContextCallback) {
424
+ <span class="cstat-no" title="statement not covered" > this.contextCallbacks.push(cb)</span>
425
+ }
426
+ &nbsp;
427
+ <span class="fstat-no" title="function not covered" > getDocumentOffset(</span>doc: Document): Offset {
428
+ <span class="cstat-no" title="statement not covered" > return this.iframeOffsets.getDocumentOffset(doc)</span>
429
+ }
430
+ &nbsp;
431
+ private <span class="cstat-no" title="statement not covered" >iframeObservers: IFrameObserver[] = []</span>
432
+ private <span class="fstat-no" title="function not covered" >handleIframe(</span>iframe: HTMLIFrameElement): void {
433
+ let doc: Document | null = <span class="cstat-no" title="statement not covered" >null</span>
434
+ // setTimeout is required. Otherwise some event listeners (scroll, mousemove) applied in modules
435
+ // do not work on the iframe document when it 've been loaded dynamically ((why?))
436
+ const handle = <span class="cstat-no" title="statement not covered" >this.app.safe(<span class="fstat-no" title="function not covered" >() =</span>&gt;</span>
437
+ <span class="cstat-no" title="statement not covered" > setTimeout(<span class="fstat-no" title="function not covered" >() =</span>&gt; {</span>
438
+ const id = <span class="cstat-no" title="statement not covered" >this.app.nodes.getID(iframe)</span>
439
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (id === undefined) {</span>
440
+ //log
441
+ <span class="cstat-no" title="statement not covered" > return</span>
442
+ }
443
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!canAccessIframe(iframe)) <span class="cstat-no" title="statement not covered" >return</span></span>
444
+ const currentWin = <span class="cstat-no" title="statement not covered" >iframe.contentWindow</span>
445
+ const currentDoc = <span class="cstat-no" title="statement not covered" >iframe.contentDocument</span>
446
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (currentDoc &amp;&amp; currentDoc !== doc) {</span>
447
+ const observer = <span class="cstat-no" title="statement not covered" >new IFrameObserver(this.app)</span>
448
+ <span class="cstat-no" title="statement not covered" > this.iframeObservers.push(observer)</span>
449
+ <span class="cstat-no" title="statement not covered" > observer.observe(iframe) /</span>/ TODO: call unregisterNode for the previous doc if present (incapsulate: one iframe - one observer)
450
+ <span class="cstat-no" title="statement not covered" > doc = currentDoc</span>
451
+ &nbsp;
452
+ <span class="cstat-no" title="statement not covered" > this.iframeOffsets.observe(iframe)</span>
453
+ }
454
+ <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (</span>
455
+ currentWin &amp;&amp;
456
+ // Sometimes currentWin.window is null (not in specification). Such window object is not functional
457
+ currentWin === currentWin.window &amp;&amp;
458
+ !this.contextsSet.has(currentWin) // for each context callbacks called once per Tracker (TopObserver) instance
459
+ //TODO: more explicit logic
460
+ ) {
461
+ <span class="cstat-no" title="statement not covered" > this.contextsSet.add(currentWin)</span>
462
+ //@ts-ignore https://github.com/microsoft/TypeScript/issues/41684
463
+ <span class="cstat-no" title="statement not covered" > this.contextCallbacks.forEach(<span class="fstat-no" title="function not covered" >(c</span>b) =&gt; <span class="cstat-no" title="statement not covered" >cb(currentWin))</span></span>
464
+ }
465
+ }, 0),
466
+ )
467
+ <span class="cstat-no" title="statement not covered" > iframe.addEventListener('load', handle) /</span>/ why app.attachEventListener not working?
468
+ <span class="cstat-no" title="statement not covered" > handle()</span>
469
+ }
470
+ &nbsp;
471
+ private <span class="cstat-no" title="statement not covered" >shadowRootObservers: ShadowRootObserver[] = []</span>
472
+ private <span class="fstat-no" title="function not covered" >handleShadowRoot(</span>shRoot: ShadowRoot) {
473
+ const observer = <span class="cstat-no" title="statement not covered" >new ShadowRootObserver(this.app)</span>
474
+ <span class="cstat-no" title="statement not covered" > this.shadowRootObservers.push(observer)</span>
475
+ <span class="cstat-no" title="statement not covered" > observer.observe(shRoot.host)</span>
476
+ }
477
+ &nbsp;
478
+ <span class="fstat-no" title="function not covered" > observe(</span>): void {
479
+ // Protection from several subsequent calls?
480
+ &nbsp;
481
+ const observer = <span class="cstat-no" title="statement not covered" >this</span>
482
+ <span class="cstat-no" title="statement not covered" > Element.prototype.attachShadow = <span class="fstat-no" title="function not covered" >function () {</span></span>
483
+ // eslint-disable-next-line
484
+ const shadow = <span class="cstat-no" title="statement not covered" >attachShadowNativeFn.apply(this, arguments)</span>
485
+ <span class="cstat-no" title="statement not covered" > observer.handleShadowRoot(shadow)</span>
486
+ <span class="cstat-no" title="statement not covered" > return shadow</span>
487
+ }
488
+ &nbsp;
489
+ // Can observe documentElement (&lt;html&gt;) here, because it is not supposed to be changing.
490
+ // However, it is possible in some exotic cases and may cause an ignorance of the newly created &lt;html&gt;
491
+ // In this case context.document have to be observed, but this will cause
492
+ // the change in the re-player behaviour caused by CreateDocument message:
493
+ // the 0-node ("fRoot") will become #document rather than documentElement as it is now.
494
+ // Alternatively - observe(#document) then bindNode(documentElement)
495
+ <span class="cstat-no" title="statement not covered" > this.observeRoot(</span>
496
+ window.document,
497
+ <span class="fstat-no" title="function not covered" > () =</span>&gt; {
498
+ <span class="cstat-no" title="statement not covered" > this.app.send(CreateDocument())</span>
499
+ // it has no node_id here
500
+ <span class="cstat-no" title="statement not covered" > this.app.nodes.callNodeCallbacks(document, true)</span>
501
+ },
502
+ window.document.documentElement,
503
+ )
504
+ }
505
+ &nbsp;
506
+ <span class="fstat-no" title="function not covered" > disconnect(</span>) {
507
+ <span class="cstat-no" title="statement not covered" > this.iframeOffsets.clear()</span>
508
+ <span class="cstat-no" title="statement not covered" > Element.prototype.attachShadow = attachShadowNativeFn</span>
509
+ <span class="cstat-no" title="statement not covered" > this.iframeObservers.forEach(<span class="fstat-no" title="function not covered" >(o</span>) =&gt; <span class="cstat-no" title="statement not covered" >o.disconnect())</span></span>
510
+ <span class="cstat-no" title="statement not covered" > this.iframeObservers = []</span>
511
+ <span class="cstat-no" title="statement not covered" > this.shadowRootObservers.forEach(<span class="fstat-no" title="function not covered" >(o</span>) =&gt; <span class="cstat-no" title="statement not covered" >o.disconnect())</span></span>
512
+ <span class="cstat-no" title="statement not covered" > this.shadowRootObservers = []</span>
513
+ <span class="cstat-no" title="statement not covered" > super.disconnect()</span>
514
+ }
515
+ }
516
+ &nbsp;</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 2023-06-28T10:44:28.733Z
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
+