@openreplay/tracker 7.0.3 → 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 (66) hide show
  1. package/cjs/app/index.d.ts +1 -0
  2. package/cjs/app/index.js +4 -2
  3. package/cjs/common/interaction.d.ts +1 -0
  4. package/cjs/index.js +1 -1
  5. package/coverage/clover.xml +1412 -900
  6. package/coverage/coverage-final.json +22 -16
  7. package/coverage/lcov-report/index.html +58 -43
  8. package/coverage/lcov-report/main/app/guards.ts.html +42 -42
  9. package/coverage/lcov-report/main/app/index.html +46 -46
  10. package/coverage/lcov-report/main/app/index.ts.html +104 -8
  11. package/coverage/lcov-report/main/app/logger.ts.html +1 -1
  12. package/coverage/lcov-report/main/app/messages.gen.ts.html +146 -146
  13. package/coverage/lcov-report/main/app/observer/iframe_observer.ts.html +1 -1
  14. package/coverage/lcov-report/main/app/observer/iframe_offsets.ts.html +1 -1
  15. package/coverage/lcov-report/main/app/observer/index.html +1 -1
  16. package/coverage/lcov-report/main/app/observer/shadow_root_observer.ts.html +1 -1
  17. package/coverage/lcov-report/main/app/observer/top_observer.ts.html +1 -1
  18. package/coverage/lcov-report/main/app/sanitizer.ts.html +98 -98
  19. package/coverage/lcov-report/main/app/session.ts.html +47 -5
  20. package/coverage/lcov-report/main/app/ticker.ts.html +1 -1
  21. package/coverage/lcov-report/main/index.html +24 -24
  22. package/coverage/lcov-report/main/index.ts.html +138 -6
  23. package/coverage/lcov-report/main/modules/Network/fetchProxy.ts.html +949 -0
  24. package/coverage/lcov-report/main/{vendors/finder → modules/Network}/index.html +72 -12
  25. package/coverage/lcov-report/main/modules/Network/index.ts.html +169 -0
  26. package/coverage/lcov-report/main/{app/nodes.ts.html → modules/Network/networkMessage.ts.html} +130 -115
  27. package/coverage/lcov-report/main/modules/Network/utils.ts.html +700 -0
  28. package/coverage/lcov-report/main/modules/Network/xhrProxy.ts.html +823 -0
  29. package/coverage/lcov-report/main/modules/attributeSender.ts.html +217 -0
  30. package/coverage/lcov-report/main/modules/axiosSpy.ts.html +1 -1
  31. package/coverage/lcov-report/main/modules/connection.ts.html +1 -1
  32. package/coverage/lcov-report/main/modules/console.ts.html +174 -147
  33. package/coverage/lcov-report/main/modules/constructedStyleSheets.ts.html +1 -1
  34. package/coverage/lcov-report/main/modules/cssrules.ts.html +1 -1
  35. package/coverage/lcov-report/main/modules/exception.ts.html +1 -1
  36. package/coverage/lcov-report/main/modules/featureFlags.ts.html +415 -0
  37. package/coverage/lcov-report/main/modules/focus.ts.html +1 -1
  38. package/coverage/lcov-report/main/modules/fonts.ts.html +1 -1
  39. package/coverage/lcov-report/main/modules/img.ts.html +6 -6
  40. package/coverage/lcov-report/main/modules/index.html +54 -24
  41. package/coverage/lcov-report/main/modules/input.ts.html +1 -1
  42. package/coverage/lcov-report/main/modules/mouse.ts.html +1 -1
  43. package/coverage/lcov-report/main/modules/network.ts.html +70 -70
  44. package/coverage/lcov-report/main/modules/performance.ts.html +1 -1
  45. package/coverage/lcov-report/main/modules/scroll.ts.html +1 -1
  46. package/coverage/lcov-report/main/modules/selection.ts.html +1 -1
  47. package/coverage/lcov-report/main/modules/tabs.ts.html +1 -1
  48. package/coverage/lcov-report/main/modules/timing.ts.html +1 -1
  49. package/coverage/lcov-report/main/modules/viewport.ts.html +1 -1
  50. package/coverage/lcov-report/main/utils.ts.html +97 -97
  51. package/coverage/lcov-report/webworker/BatchWriter.ts.html +125 -176
  52. package/coverage/lcov-report/webworker/MessageEncoder.gen.ts.html +88 -88
  53. package/coverage/lcov-report/webworker/PrimitiveEncoder.ts.html +110 -110
  54. package/coverage/lcov-report/webworker/QueueSender.ts.html +140 -110
  55. package/coverage/lcov-report/webworker/index.html +56 -71
  56. package/coverage/lcov-report/webworker/index.ts.html +34 -10
  57. package/coverage/lcov.info +2525 -1553
  58. package/lib/app/index.d.ts +1 -0
  59. package/lib/app/index.js +4 -2
  60. package/lib/common/interaction.d.ts +1 -0
  61. package/lib/common/tsconfig.tsbuildinfo +1 -1
  62. package/lib/index.js +1 -1
  63. package/package.json +1 -1
  64. package/coverage/lcov-report/main/app/observer/observer.ts.html +0 -1282
  65. package/coverage/lcov-report/main/vendors/finder/finder.ts.html +0 -1381
  66. package/coverage/lcov-report/webworker/StringDictionary.ts.html +0 -124
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
26
+ <span class="strong">81.48% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/78</span>
28
+ <span class='fraction'>66/81</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
33
+ <span class="strong">53.12% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/31</span>
35
+ <span class='fraction'>17/32</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
40
+ <span class="strong">80% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/15</span>
42
+ <span class='fraction'>12/15</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
47
+ <span class="strong">84.41% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/74</span>
49
+ <span class='fraction'>65/77</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line low'></div>
64
+ <div class='status-line high'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -204,95 +204,103 @@
204
204
  <a name='L139'></a><a href='#L139'>139</a>
205
205
  <a name='L140'></a><a href='#L140'>140</a>
206
206
  <a name='L141'></a><a href='#L141'>141</a>
207
- <a name='L142'></a><a href='#L142'>142</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
208
- <span class="cline-any cline-neutral">&nbsp;</span>
209
- <span class="cline-any cline-no">&nbsp;</span>
210
- <span class="cline-any cline-no">&nbsp;</span>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
217
+ <span class="cline-any cline-yes">1x</span>
218
+ <span class="cline-any cline-yes">1x</span>
211
219
  <span class="cline-any cline-neutral">&nbsp;</span>
212
220
  <span class="cline-any cline-neutral">&nbsp;</span>
213
- <span class="cline-any cline-no">&nbsp;</span>
221
+ <span class="cline-any cline-yes">1x</span>
214
222
  <span class="cline-any cline-no">&nbsp;</span>
215
223
  <span class="cline-any cline-no">&nbsp;</span>
216
224
  <span class="cline-any cline-neutral">&nbsp;</span>
217
225
  <span class="cline-any cline-neutral">&nbsp;</span>
218
- <span class="cline-any cline-no">&nbsp;</span>
226
+ <span class="cline-any cline-yes">7x</span>
219
227
  <span class="cline-any cline-no">&nbsp;</span>
220
228
  <span class="cline-any cline-neutral">&nbsp;</span>
221
- <span class="cline-any cline-no">&nbsp;</span>
229
+ <span class="cline-any cline-yes">7x</span>
222
230
  <span class="cline-any cline-no">&nbsp;</span>
223
231
  <span class="cline-any cline-neutral">&nbsp;</span>
224
- <span class="cline-any cline-no">&nbsp;</span>
232
+ <span class="cline-any cline-yes">7x</span>
225
233
  <span class="cline-any cline-no">&nbsp;</span>
226
234
  <span class="cline-any cline-neutral">&nbsp;</span>
227
- <span class="cline-any cline-no">&nbsp;</span>
235
+ <span class="cline-any cline-yes">7x</span>
228
236
  <span class="cline-any cline-no">&nbsp;</span>
229
237
  <span class="cline-any cline-neutral">&nbsp;</span>
230
- <span class="cline-any cline-no">&nbsp;</span>
238
+ <span class="cline-any cline-yes">7x</span>
231
239
  <span class="cline-any cline-neutral">&nbsp;</span>
232
240
  <span class="cline-any cline-neutral">&nbsp;</span>
233
241
  <span class="cline-any cline-neutral">&nbsp;</span>
234
- <span class="cline-any cline-no">&nbsp;</span>
235
- <span class="cline-any cline-no">&nbsp;</span>
242
+ <span class="cline-any cline-yes">1x</span>
243
+ <span class="cline-any cline-yes">1x</span>
236
244
  <span class="cline-any cline-neutral">&nbsp;</span>
237
245
  <span class="cline-any cline-neutral">&nbsp;</span>
238
246
  <span class="cline-any cline-neutral">&nbsp;</span>
239
- <span class="cline-any cline-no">&nbsp;</span>
240
- <span class="cline-any cline-no">&nbsp;</span>
247
+ <span class="cline-any cline-yes">1x</span>
248
+ <span class="cline-any cline-yes">1x</span>
241
249
  <span class="cline-any cline-neutral">&nbsp;</span>
242
250
  <span class="cline-any cline-neutral">&nbsp;</span>
243
251
  <span class="cline-any cline-neutral">&nbsp;</span>
244
- <span class="cline-any cline-no">&nbsp;</span>
252
+ <span class="cline-any cline-yes">6x</span>
245
253
  <span class="cline-any cline-no">&nbsp;</span>
246
254
  <span class="cline-any cline-neutral">&nbsp;</span>
247
- <span class="cline-any cline-no">&nbsp;</span>
255
+ <span class="cline-any cline-yes">6x</span>
248
256
  <span class="cline-any cline-no">&nbsp;</span>
249
257
  <span class="cline-any cline-neutral">&nbsp;</span>
250
- <span class="cline-any cline-no">&nbsp;</span>
258
+ <span class="cline-any cline-yes">6x</span>
251
259
  <span class="cline-any cline-no">&nbsp;</span>
252
260
  <span class="cline-any cline-neutral">&nbsp;</span>
253
- <span class="cline-any cline-no">&nbsp;</span>
254
- <span class="cline-any cline-no">&nbsp;</span>
255
- <span class="cline-any cline-no">&nbsp;</span>
256
- <span class="cline-any cline-no">&nbsp;</span>
261
+ <span class="cline-any cline-yes">6x</span>
262
+ <span class="cline-any cline-yes">1x</span>
263
+ <span class="cline-any cline-yes">1x</span>
264
+ <span class="cline-any cline-yes">1x</span>
257
265
  <span class="cline-any cline-neutral">&nbsp;</span>
258
- <span class="cline-any cline-no">&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>
266
+ <span class="cline-any cline-yes">5x</span>
267
+ <span class="cline-any cline-yes">2x</span>
268
+ <span class="cline-any cline-yes">2x</span>
269
+ <span class="cline-any cline-yes">2x</span>
270
+ <span class="cline-any cline-yes">3x</span>
263
271
  <span class="cline-any cline-no">&nbsp;</span>
264
272
  <span class="cline-any cline-neutral">&nbsp;</span>
265
- <span class="cline-any cline-no">&nbsp;</span>
266
- <span class="cline-any cline-no">&nbsp;</span>
273
+ <span class="cline-any cline-yes">3x</span>
274
+ <span class="cline-any cline-yes">3x</span>
267
275
  <span class="cline-any cline-neutral">&nbsp;</span>
268
- <span class="cline-any cline-no">&nbsp;</span>
276
+ <span class="cline-any cline-yes">2x</span>
269
277
  <span class="cline-any cline-neutral">&nbsp;</span>
270
- <span class="cline-any cline-no">&nbsp;</span>
278
+ <span class="cline-any cline-yes">3x</span>
271
279
  <span class="cline-any cline-neutral">&nbsp;</span>
272
280
  <span class="cline-any cline-neutral">&nbsp;</span>
273
281
  <span class="cline-any cline-neutral">&nbsp;</span>
274
- <span class="cline-any cline-no">&nbsp;</span>
275
- <span class="cline-any cline-no">&nbsp;</span>
282
+ <span class="cline-any cline-yes">4x</span>
283
+ <span class="cline-any cline-yes">3x</span>
276
284
  <span class="cline-any cline-neutral">&nbsp;</span>
277
- <span class="cline-any cline-no">&nbsp;</span>
278
- <span class="cline-any cline-no">&nbsp;</span>
279
- <span class="cline-any cline-no">&nbsp;</span>
285
+ <span class="cline-any cline-yes">4x</span>
286
+ <span class="cline-any cline-yes">4x</span>
287
+ <span class="cline-any cline-yes">4x</span>
280
288
  <span class="cline-any cline-neutral">&nbsp;</span>
281
- <span class="cline-any cline-no">&nbsp;</span>
289
+ <span class="cline-any cline-yes">1x</span>
282
290
  <span class="cline-any cline-neutral">&nbsp;</span>
283
- <span class="cline-any cline-no">&nbsp;</span>
291
+ <span class="cline-any cline-yes">1x</span>
284
292
  <span class="cline-any cline-neutral">&nbsp;</span>
285
- <span class="cline-any cline-no">&nbsp;</span>
293
+ <span class="cline-any cline-yes">1x</span>
286
294
  <span class="cline-any cline-neutral">&nbsp;</span>
287
295
  <span class="cline-any cline-neutral">&nbsp;</span>
288
- <span class="cline-any cline-no">&nbsp;</span>
296
+ <span class="cline-any cline-yes">1x</span>
289
297
  <span class="cline-any cline-neutral">&nbsp;</span>
290
298
  <span class="cline-any cline-no">&nbsp;</span>
291
299
  <span class="cline-any cline-neutral">&nbsp;</span>
292
300
  <span class="cline-any cline-neutral">&nbsp;</span>
293
301
  <span class="cline-any cline-neutral">&nbsp;</span>
294
302
  <span class="cline-any cline-neutral">&nbsp;</span>
295
- <span class="cline-any cline-no">&nbsp;</span>
303
+ <span class="cline-any cline-yes">4x</span>
296
304
  <span class="cline-any cline-neutral">&nbsp;</span>
297
305
  <span class="cline-any cline-neutral">&nbsp;</span>
298
306
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -300,140 +308,149 @@
300
308
  <span class="cline-any cline-neutral">&nbsp;</span>
301
309
  <span class="cline-any cline-neutral">&nbsp;</span>
302
310
  <span class="cline-any cline-neutral">&nbsp;</span>
303
- <span class="cline-any cline-no">&nbsp;</span>
311
+ <span class="cline-any cline-yes">1x</span>
304
312
  <span class="cline-any cline-neutral">&nbsp;</span>
305
- <span class="cline-any cline-no">&nbsp;</span>
306
- <span class="cline-any cline-no">&nbsp;</span>
313
+ <span class="cline-any cline-yes">1x</span>
314
+ <span class="cline-any cline-yes">7x</span>
307
315
  <span class="cline-any cline-neutral">&nbsp;</span>
308
316
  <span class="cline-any cline-neutral">&nbsp;</span>
309
317
  <span class="cline-any cline-neutral">&nbsp;</span>
310
318
  <span class="cline-any cline-neutral">&nbsp;</span>
311
319
  <span class="cline-any cline-neutral">&nbsp;</span>
312
320
  <span class="cline-any cline-neutral">&nbsp;</span>
313
- <span class="cline-any cline-no">&nbsp;</span>
314
- <span class="cline-any cline-no">&nbsp;</span>
315
321
  <span class="cline-any cline-neutral">&nbsp;</span>
322
+ <span class="cline-any cline-yes">7x</span>
323
+ <span class="cline-any cline-yes">2x</span>
316
324
  <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
325
  <span class="cline-any cline-neutral">&nbsp;</span>
326
+ <span class="cline-any cline-yes">5x</span>
327
+ <span class="cline-any cline-yes">4x</span>
320
328
  <span class="cline-any cline-neutral">&nbsp;</span>
321
329
  <span class="cline-any cline-neutral">&nbsp;</span>
322
- <span class="cline-any cline-no">&nbsp;</span>
330
+ <span class="cline-any cline-yes">5x</span>
331
+ <span class="cline-any cline-yes">5x</span>
323
332
  <span class="cline-any cline-no">&nbsp;</span>
324
333
  <span class="cline-any cline-neutral">&nbsp;</span>
325
- <span class="cline-any cline-no">&nbsp;</span>
326
- <span class="cline-any cline-no">&nbsp;</span>
334
+ <span class="cline-any cline-yes">5x</span>
335
+ <span class="cline-any cline-yes">5x</span>
327
336
  <span class="cline-any cline-neutral">&nbsp;</span>
328
- <span class="cline-any cline-no">&nbsp;</span>
329
- <span class="cline-any cline-no">&nbsp;</span>
330
- <span class="cline-any cline-no">&nbsp;</span>
331
- <span class="cline-any cline-no">&nbsp;</span>
332
- <span class="cline-any cline-no">&nbsp;</span>
337
+ <span class="cline-any cline-yes">5x</span>
338
+ <span class="cline-any cline-yes">5x</span>
333
339
  <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-no">&nbsp;</span>
338
- <span class="cline-any cline-no">&nbsp;</span>
340
+ <span class="cline-any cline-yes">7x</span>
341
+ <span class="cline-any cline-yes">7x</span>
342
+ <span class="cline-any cline-yes">7x</span>
343
+ <span class="cline-any cline-yes">3x</span>
339
344
  <span class="cline-any cline-neutral">&nbsp;</span>
340
- <span class="cline-any cline-no">&nbsp;</span>
345
+ <span class="cline-any cline-yes">4x</span>
341
346
  <span class="cline-any cline-neutral">&nbsp;</span>
342
347
  <span class="cline-any cline-neutral">&nbsp;</span>
343
- <span class="cline-any cline-no">&nbsp;</span>
344
348
  <span class="cline-any cline-neutral">&nbsp;</span>
345
- <span class="cline-any cline-no">&nbsp;</span>
346
- <span class="cline-any cline-no">&nbsp;</span>
349
+ <span class="cline-any cline-neutral">&nbsp;</span>
350
+ <span class="cline-any cline-yes">5x</span>
351
+ <span class="cline-any cline-yes">10x</span>
352
+ <span class="cline-any cline-yes">1x</span>
353
+ <span class="cline-any cline-yes">1x</span>
354
+ <span class="cline-any cline-neutral">&nbsp;</span>
355
+ <span class="cline-any cline-yes">9x</span>
356
+ <span class="cline-any cline-neutral">&nbsp;</span>
357
+ <span class="cline-any cline-yes">9x</span>
358
+ <span class="cline-any cline-neutral">&nbsp;</span>
359
+ <span class="cline-any cline-neutral">&nbsp;</span>
360
+ <span class="cline-any cline-neutral">&nbsp;</span>
361
+ <span class="cline-any cline-yes">5x</span>
362
+ <span class="cline-any cline-neutral">&nbsp;</span>
363
+ <span class="cline-any cline-yes">5x</span>
364
+ <span class="cline-any cline-yes">5x</span>
347
365
  <span class="cline-any cline-neutral">&nbsp;</span>
348
366
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type App from '../app/index.js'
349
- import { hasTag } from '../app/guards.js'
350
- <span class="cstat-no" title="statement not covered" >import { IN_BROWSER } from '../utils.js'</span>
351
- <span class="cstat-no" title="statement not covered" >import { ConsoleLog } from '../app/messages.gen.js'</span>
367
+ import { IN_BROWSER } from '../utils.js'
368
+ import { ConsoleLog } from '../app/messages.gen.js'
352
369
  &nbsp;
353
370
  const printError: (e: Error) =&gt; string =
354
- <span class="cstat-no" title="statement not covered" > IN_BROWSER &amp;&amp; 'InstallTrigger' in window // detect Firefox</span>
355
- ? <span class="fstat-no" title="function not covered" >(e</span>: Error): string =&gt; <span class="cstat-no" title="statement not covered" >e.message + '\n' + e.stack</span>
371
+ IN_BROWSER &amp;&amp; 'InstallTrigger' in window // detect Firefox
372
+ ? <span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >(e</span>: Error): string =&gt; <span class="cstat-no" title="statement not covered" >e.message + '\n' + e.stack</span></span>
356
373
  : <span class="fstat-no" title="function not covered" >(e</span>: Error): string =&gt; <span class="cstat-no" title="statement not covered" >e.stack || e.message</span>
357
374
  &nbsp;
358
- function <span class="fstat-no" title="function not covered" >printString(</span>arg: any): string {
359
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (arg === undefined) {</span>
375
+ function printString(arg: any): string {
376
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (arg === undefined) {
360
377
  <span class="cstat-no" title="statement not covered" > return 'undefined'</span>
361
378
  }
362
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (arg === null) {</span>
379
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (arg === null) {
363
380
  <span class="cstat-no" title="statement not covered" > return 'null'</span>
364
381
  }
365
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (arg instanceof Error) {</span>
382
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (arg instanceof Error) {
366
383
  <span class="cstat-no" title="statement not covered" > return printError(arg)</span>
367
384
  }
368
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (Array.isArray(arg)) {</span>
385
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (Array.isArray(arg)) {
369
386
  <span class="cstat-no" title="statement not covered" > return `Array(${arg.length})`</span>
370
387
  }
371
- <span class="cstat-no" title="statement not covered" > return String(arg)</span>
388
+ return String(arg)
372
389
  }
373
390
  &nbsp;
374
- function <span class="fstat-no" title="function not covered" >printFloat(</span>arg: any): string {
375
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof arg !== 'number') <span class="cstat-no" title="statement not covered" >return 'NaN'</span></span>
376
- <span class="cstat-no" title="statement not covered" > return arg.toString()</span>
391
+ function printFloat(arg: any): string {
392
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof arg !== 'number') <span class="cstat-no" title="statement not covered" >return 'NaN'</span>
393
+ return arg.toString()
377
394
  }
378
395
  &nbsp;
379
- function <span class="fstat-no" title="function not covered" >printInt(</span>arg: any): string {
380
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof arg !== 'number') <span class="cstat-no" title="statement not covered" >return 'NaN'</span></span>
381
- <span class="cstat-no" title="statement not covered" > return Math.floor(arg).toString()</span>
396
+ function printInt(arg: any): string {
397
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof arg !== 'number') <span class="cstat-no" title="statement not covered" >return 'NaN'</span>
398
+ return Math.floor(arg).toString()
382
399
  }
383
400
  &nbsp;
384
- function <span class="fstat-no" title="function not covered" >printObject(</span>arg: any): string {
385
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (arg === undefined) {</span>
401
+ function printObject(arg: any): string {
402
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (arg === undefined) {
386
403
  <span class="cstat-no" title="statement not covered" > return 'undefined'</span>
387
404
  }
388
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (arg === null) {</span>
405
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (arg === null) {
389
406
  <span class="cstat-no" title="statement not covered" > return 'null'</span>
390
407
  }
391
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (arg instanceof Error) {</span>
408
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (arg instanceof Error) {
392
409
  <span class="cstat-no" title="statement not covered" > return printError(arg)</span>
393
410
  }
394
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (Array.isArray(arg)) {</span>
395
- const length = <span class="cstat-no" title="statement not covered" >arg.length</span>
396
- const values = <span class="cstat-no" title="statement not covered" >arg.slice(0, 10).map(printString).join(', ')</span>
397
- <span class="cstat-no" title="statement not covered" > return `Array(${length})[${values}]`</span>
411
+ if (Array.isArray(arg)) {
412
+ const length = arg.length
413
+ const values = arg.slice(0, 10).map(printString).join(', ')
414
+ return `Array(${length})[${values}]`
398
415
  }
399
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof arg === 'object') {</span>
400
- const res = <span class="cstat-no" title="statement not covered" >[]</span>
401
- let i = <span class="cstat-no" title="statement not covered" >0</span>
402
- <span class="cstat-no" title="statement not covered" > for (const k in arg) {</span>
403
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (++i === 10) {</span>
416
+ if (typeof arg === 'object') {
417
+ const res = []
418
+ let i = 0
419
+ for (const k in arg) {
420
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (++i === 10) {
404
421
  <span class="cstat-no" title="statement not covered" > break</span>
405
422
  }
406
- const v = <span class="cstat-no" title="statement not covered" >arg[k]</span>
407
- <span class="cstat-no" title="statement not covered" > res.push(k + ': ' + printString(v))</span>
423
+ const v = arg[k]
424
+ res.push(k + ': ' + printString(v))
408
425
  }
409
- <span class="cstat-no" title="statement not covered" > return '{' + res.join(', ') + '}'</span>
426
+ return '{' + res.join(', ') + '}'
410
427
  }
411
- <span class="cstat-no" title="statement not covered" > return arg.toString()</span>
428
+ return arg.toString()
412
429
  }
413
430
  &nbsp;
414
- function <span class="fstat-no" title="function not covered" >printf(</span>args: any[]): string {
415
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof args[0] === 'string') {</span>
416
- <span class="cstat-no" title="statement not covered" > args.unshift(</span>
417
- args.shift().replace(/%(o|s|f|d|i)/g, <span class="fstat-no" title="function not covered" >(s</span>: string, t: string): string =&gt; {
418
- const arg = <span class="cstat-no" title="statement not covered" >args.shift()</span>
419
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (arg === undefined) <span class="cstat-no" title="statement not covered" >return s</span></span>
420
- <span class="cstat-no" title="statement not covered" > switch (t) {</span>
431
+ function printf(args: any[]): string {
432
+ if (typeof args[0] === 'string') {
433
+ args.unshift(
434
+ args.shift().replace(/%(o|s|f|d|i)/g, (s: string, t: string): string =&gt; {
435
+ const arg = args.shift()
436
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (arg === undefined) <span class="cstat-no" title="statement not covered" >return s</span>
437
+ switch (t) {
421
438
  case 'o':
422
- <span class="cstat-no" title="statement not covered" > return printObject(arg)</span>
439
+ return printObject(arg)
423
440
  case 's':
424
- <span class="cstat-no" title="statement not covered" > return printString(arg)</span>
441
+ return printString(arg)
425
442
  case 'f':
426
- <span class="cstat-no" title="statement not covered" > return printFloat(arg)</span>
443
+ return printFloat(arg)
427
444
  case 'd':
428
445
  case 'i':
429
- <span class="cstat-no" title="statement not covered" > return printInt(arg)</span>
430
- default:
446
+ return printInt(arg)
447
+ <span class="branch-5 cbranch-no" title="branch not covered" > default:</span>
431
448
  <span class="cstat-no" title="statement not covered" > return s</span>
432
449
  }
433
450
  }),
434
451
  )
435
452
  }
436
- <span class="cstat-no" title="statement not covered" > return args.map(printObject).join(' ')</span>
453
+ return args.map(printObject).join(' ')
437
454
  }
438
455
  &nbsp;
439
456
  export interface Options {
@@ -441,50 +458,60 @@ export interface Options {
441
458
  consoleThrottling: number
442
459
  }
443
460
  &nbsp;
444
- const consoleMethods = <span class="cstat-no" title="statement not covered" >['log', 'info', 'warn', 'error', 'debug', 'assert']</span>
461
+ const consoleMethods = ['log', 'info', 'warn', 'error', 'debug', 'assert']
445
462
  &nbsp;
446
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export default function (a</span></span>pp: App, opts: Partial&lt;Options&gt;): void {
447
- const options: Options = <span class="cstat-no" title="statement not covered" >Object.assign(</span>
463
+ export default function (app: App, opts: Partial&lt;Options&gt;): void {
464
+ const options: Options = Object.assign(
448
465
  {
449
466
  consoleMethods,
450
467
  consoleThrottling: 30,
451
468
  },
452
469
  opts,
453
470
  )
454
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!Array.isArray(options.consoleMethods) || options.consoleMethods.length === 0) {</span>
455
- <span class="cstat-no" title="statement not covered" > return</span>
471
+ &nbsp;
472
+ if (!Array.isArray(options.consoleMethods) || options.consoleMethods.length === 0) {
473
+ return
456
474
  }
457
475
  &nbsp;
458
- const sendConsoleLog = <span class="cstat-no" title="statement not covered" >app.safe(<span class="fstat-no" title="function not covered" >(l</span>evel: string, args: unknown[]): void =&gt;</span>
459
- <span class="cstat-no" title="statement not covered" > app.send(ConsoleLog(level, printf(args))),</span>
476
+ const sendConsoleLog = app.safe((level: string, args: unknown[]): void =&gt;
477
+ app.send(ConsoleLog(level, printf(args))),
460
478
  )
461
479
  &nbsp;
462
- let n: number
463
- const reset = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(): void =</span>&gt; {</span>
480
+ let n = 0
481
+ const reset = <span class="fstat-no" title="function not covered" >(): void =</span>&gt; {
464
482
  <span class="cstat-no" title="statement not covered" > n = 0</span>
465
483
  }
466
- <span class="cstat-no" title="statement not covered" > app.attachStartCallback(reset)</span>
467
- <span class="cstat-no" title="statement not covered" > app.ticker.attach(reset, 33, false)</span>
484
+ app.attachStartCallback(reset)
485
+ app.ticker.attach(reset, 33, false)
468
486
  &nbsp;
469
- const patchConsole = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(c</span>onsole: Console) =&gt;</span>
470
- <span class="cstat-no" title="statement not covered" > options.consoleMethods!.forEach(<span class="fstat-no" title="function not covered" >(m</span>ethod) =&gt; {</span>
471
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (consoleMethods.indexOf(method) === -1) {</span>
472
- <span class="cstat-no" title="statement not covered" > app.debug.error(`OpenReplay: unsupported console method "${method}"`)</span>
473
- <span class="cstat-no" title="statement not covered" > return</span>
474
- }
475
- const fn = (<span class="cstat-no" title="statement not covered" >console as any)[method]</span>
476
- ;(<span class="cstat-no" title="statement not covered" >console as any)[method] = <span class="fstat-no" title="function not covered" >function (.</span>..args: unknown[]): void {</span>
477
- <span class="cstat-no" title="statement not covered" > fn.apply(this, args)</span>
478
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (n++ &gt; options.consoleThrottling) {</span>
479
- <span class="cstat-no" title="statement not covered" > return</span>
487
+ const patchConsole = (console: Console, ctx: typeof globalThis) =&gt; {
488
+ const handler = {
489
+ apply: function (target: Console['log'], thisArg: typeof this, argumentsList: unknown[]) {
490
+ Reflect.apply(target, ctx, argumentsList)
491
+ n = n + 1
492
+ if (n &gt; options.consoleThrottling) {
493
+ return
494
+ } else {
495
+ sendConsoleLog(target.name, argumentsList)
480
496
  }
481
- <span class="cstat-no" title="statement not covered" > sendConsoleLog(method, args)</span>
497
+ },
498
+ }
499
+ &nbsp;
500
+ options.consoleMethods!.forEach((method) =&gt; {
501
+ if (consoleMethods.indexOf(method) === -1) {
502
+ app.debug.error(`OpenReplay: unsupported console method "${method}"`)
503
+ return
482
504
  }
505
+ const fn = (ctx.console as any)[method]
506
+ // is there any way to preserve the original console trace?
507
+ ;(console as any)[method] = new Proxy(fn, handler)
483
508
  })
484
- const patchContext = <span class="cstat-no" title="statement not covered" >app.safe(<span class="fstat-no" title="function not covered" >(c</span>ontext: typeof globalThis) =&gt; <span class="cstat-no" title="statement not covered" >patchConsole(context.console))</span></span>
509
+ }
510
+ &nbsp;
511
+ const patchContext = app.safe((context: typeof globalThis) =&gt; patchConsole(context.console, context))
485
512
  &nbsp;
486
- <span class="cstat-no" title="statement not covered" > patchContext(window)</span>
487
- <span class="cstat-no" title="statement not covered" > app.observer.attachContextCallback(patchContext)</span>
513
+ patchContext(window)
514
+ app.observer.attachContextCallback(patchContext)
488
515
  }
489
516
  &nbsp;</pre></td></tr></table></pre>
490
517
 
@@ -493,7 +520,7 @@ const consoleMethods = <span class="cstat-no" title="statement not covered" >['l
493
520
  <div class='footer quiet pad2 space-top1 center small'>
494
521
  Code coverage generated by
495
522
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
496
- at 2023-05-31T15:51:28.464Z
523
+ at 2023-06-28T10:44:28.733Z
497
524
  </div>
498
525
  <script src="../../prettify.js"></script>
499
526
  <script>
@@ -544,7 +544,7 @@ export const <span class="cstat-no" title="statement not covered" >styleSheetIDM
544
544
  <div class='footer quiet pad2 space-top1 center small'>
545
545
  Code coverage generated by
546
546
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
547
- at 2023-05-31T15:51:28.464Z
547
+ at 2023-06-28T10:44:28.733Z
548
548
  </div>
549
549
  <script src="../../prettify.js"></script>
550
550
  <script>
@@ -403,7 +403,7 @@
403
403
  <div class='footer quiet pad2 space-top1 center small'>
404
404
  Code coverage generated by
405
405
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
406
- at 2023-05-31T15:51:28.464Z
406
+ at 2023-06-28T10:44:28.733Z
407
407
  </div>
408
408
  <script src="../../prettify.js"></script>
409
409
  <script>
@@ -370,7 +370,7 @@ function <span class="fstat-no" title="function not covered" >getDefaultStack(</
370
370
  <div class='footer quiet pad2 space-top1 center small'>
371
371
  Code coverage generated by
372
372
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
373
- at 2023-05-31T15:51:28.464Z
373
+ at 2023-06-28T10:44:28.733Z
374
374
  </div>
375
375
  <script src="../../prettify.js"></script>
376
376
  <script>