@openreplay/tracker 11.0.2 → 11.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -1
- package/cjs/app/canvas.js +4 -6
- package/cjs/app/index.js +7 -6
- package/cjs/app/observer/iframe_observer.js +1 -1
- package/cjs/app/observer/shadow_root_observer.js +1 -1
- package/cjs/index.js +1 -1
- package/cjs/modules/Network/xhrProxy.js +1 -1
- package/coverage/clover.xml +267 -220
- package/coverage/coverage-final.json +2 -2
- package/coverage/lcov-report/index.html +22 -22
- package/coverage/lcov-report/main/app/canvas.ts.html +1 -1
- package/coverage/lcov-report/main/app/guards.ts.html +1 -1
- package/coverage/lcov-report/main/app/index.html +7 -7
- package/coverage/lcov-report/main/app/index.ts.html +17 -11
- package/coverage/lcov-report/main/app/logger.ts.html +1 -1
- package/coverage/lcov-report/main/app/messages.gen.ts.html +1 -1
- package/coverage/lcov-report/main/app/nodes.ts.html +1 -1
- package/coverage/lcov-report/main/app/observer/iframe_observer.ts.html +1 -1
- package/coverage/lcov-report/main/app/observer/iframe_offsets.ts.html +1 -1
- package/coverage/lcov-report/main/app/observer/index.html +1 -1
- package/coverage/lcov-report/main/app/observer/shadow_root_observer.ts.html +1 -1
- package/coverage/lcov-report/main/app/observer/top_observer.ts.html +1 -1
- package/coverage/lcov-report/main/app/sanitizer.ts.html +1 -1
- package/coverage/lcov-report/main/app/session.ts.html +1 -1
- package/coverage/lcov-report/main/app/ticker.ts.html +1 -1
- package/coverage/lcov-report/main/index.html +1 -1
- package/coverage/lcov-report/main/index.ts.html +1 -1
- package/coverage/lcov-report/main/modules/Network/beaconProxy.ts.html +1 -1
- package/coverage/lcov-report/main/modules/Network/fetchProxy.ts.html +1 -1
- package/coverage/lcov-report/main/modules/Network/index.html +1 -1
- package/coverage/lcov-report/main/modules/Network/index.ts.html +1 -1
- package/coverage/lcov-report/main/modules/Network/networkMessage.ts.html +1 -1
- package/coverage/lcov-report/main/modules/Network/utils.ts.html +1 -1
- package/coverage/lcov-report/main/modules/Network/xhrProxy.ts.html +1 -1
- package/coverage/lcov-report/main/modules/attributeSender.ts.html +1 -1
- package/coverage/lcov-report/main/modules/axiosSpy.ts.html +1 -1
- package/coverage/lcov-report/main/modules/conditionsManager.ts.html +680 -179
- package/coverage/lcov-report/main/modules/connection.ts.html +1 -1
- package/coverage/lcov-report/main/modules/console.ts.html +1 -1
- package/coverage/lcov-report/main/modules/constructedStyleSheets.ts.html +1 -1
- package/coverage/lcov-report/main/modules/cssrules.ts.html +1 -1
- package/coverage/lcov-report/main/modules/exception.ts.html +1 -1
- package/coverage/lcov-report/main/modules/featureFlags.ts.html +1 -1
- package/coverage/lcov-report/main/modules/focus.ts.html +1 -1
- package/coverage/lcov-report/main/modules/fonts.ts.html +1 -1
- package/coverage/lcov-report/main/modules/img.ts.html +1 -1
- package/coverage/lcov-report/main/modules/index.html +20 -20
- package/coverage/lcov-report/main/modules/input.ts.html +1 -1
- package/coverage/lcov-report/main/modules/mouse.ts.html +1 -1
- package/coverage/lcov-report/main/modules/network.ts.html +1 -1
- package/coverage/lcov-report/main/modules/performance.ts.html +1 -1
- package/coverage/lcov-report/main/modules/scroll.ts.html +1 -1
- package/coverage/lcov-report/main/modules/selection.ts.html +1 -1
- package/coverage/lcov-report/main/modules/tabs.ts.html +1 -1
- package/coverage/lcov-report/main/modules/timing.ts.html +1 -1
- package/coverage/lcov-report/main/modules/userTesting/SignalManager.ts.html +1 -1
- package/coverage/lcov-report/main/modules/userTesting/dnd.ts.html +1 -1
- package/coverage/lcov-report/main/modules/userTesting/index.html +1 -1
- package/coverage/lcov-report/main/modules/userTesting/index.ts.html +1 -1
- package/coverage/lcov-report/main/modules/userTesting/recorder.ts.html +1 -1
- package/coverage/lcov-report/main/modules/userTesting/styles.ts.html +1 -1
- package/coverage/lcov-report/main/modules/userTesting/utils.ts.html +1 -1
- package/coverage/lcov-report/main/modules/viewport.ts.html +1 -1
- package/coverage/lcov-report/main/utils.ts.html +1 -1
- package/coverage/lcov-report/webworker/BatchWriter.ts.html +1 -1
- package/coverage/lcov-report/webworker/MessageEncoder.gen.ts.html +1 -1
- package/coverage/lcov-report/webworker/PrimitiveEncoder.ts.html +1 -1
- package/coverage/lcov-report/webworker/QueueSender.ts.html +1 -1
- package/coverage/lcov-report/webworker/index.html +1 -1
- package/coverage/lcov-report/webworker/index.ts.html +1 -1
- package/coverage/lcov.info +502 -421
- package/lib/app/canvas.js +4 -6
- package/lib/app/index.js +7 -6
- package/lib/app/observer/iframe_observer.js +1 -1
- package/lib/app/observer/shadow_root_observer.js +1 -1
- package/lib/index.js +1 -1
- package/lib/modules/Network/xhrProxy.js +1 -1
- package/package.json +1 -1
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">7.59% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>12/158</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">0% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>0/60</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">4.08% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>2/49</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">8.21% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>12/146</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
|
|
64
|
+
<div class='status-line low'></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>
|
|
@@ -301,7 +301,177 @@
|
|
|
301
301
|
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
302
|
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
303
|
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
-
<a name='L239'></a><a href='#L239'>239</a
|
|
304
|
+
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
+
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
+
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
+
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
+
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
+
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
+
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
+
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
+
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
+
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
+
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
+
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
+
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
+
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
+
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
+
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
+
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
+
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
+
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
+
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
+
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
+
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
+
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
+
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
+
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
+
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
+
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
+
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
+
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
+
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
+
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
+
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
+
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
+
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
+
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
+
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
+
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
+
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
+
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
+
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
+
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
+
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
+
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
+
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
+
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
+
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
+
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
+
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
+
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
+
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
+
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
+
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
+
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
+
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
+
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
+
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
+
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
+
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
+
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
+
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
+
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
+
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
+
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
+
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
+
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
+
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
+
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
+
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
+
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
+
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
+
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
+
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
+
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
+
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
+
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
+
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
+
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
+
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
+
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
+
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
+
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
+
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
+
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
+
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
+
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
+
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
+
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
+
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
+
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
+
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
+
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
+
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
+
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
+
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
+
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
+
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
+
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
+
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
+
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
+
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
+
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
+
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
+
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
+
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
+
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
+
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
+
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
+
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
+
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
+
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
+
<a name='L349'></a><a href='#L349'>349</a>
|
|
415
|
+
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
+
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
+
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
+
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
+
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
+
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
+
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
+
<a name='L357'></a><a href='#L357'>357</a>
|
|
423
|
+
<a name='L358'></a><a href='#L358'>358</a>
|
|
424
|
+
<a name='L359'></a><a href='#L359'>359</a>
|
|
425
|
+
<a name='L360'></a><a href='#L360'>360</a>
|
|
426
|
+
<a name='L361'></a><a href='#L361'>361</a>
|
|
427
|
+
<a name='L362'></a><a href='#L362'>362</a>
|
|
428
|
+
<a name='L363'></a><a href='#L363'>363</a>
|
|
429
|
+
<a name='L364'></a><a href='#L364'>364</a>
|
|
430
|
+
<a name='L365'></a><a href='#L365'>365</a>
|
|
431
|
+
<a name='L366'></a><a href='#L366'>366</a>
|
|
432
|
+
<a name='L367'></a><a href='#L367'>367</a>
|
|
433
|
+
<a name='L368'></a><a href='#L368'>368</a>
|
|
434
|
+
<a name='L369'></a><a href='#L369'>369</a>
|
|
435
|
+
<a name='L370'></a><a href='#L370'>370</a>
|
|
436
|
+
<a name='L371'></a><a href='#L371'>371</a>
|
|
437
|
+
<a name='L372'></a><a href='#L372'>372</a>
|
|
438
|
+
<a name='L373'></a><a href='#L373'>373</a>
|
|
439
|
+
<a name='L374'></a><a href='#L374'>374</a>
|
|
440
|
+
<a name='L375'></a><a href='#L375'>375</a>
|
|
441
|
+
<a name='L376'></a><a href='#L376'>376</a>
|
|
442
|
+
<a name='L377'></a><a href='#L377'>377</a>
|
|
443
|
+
<a name='L378'></a><a href='#L378'>378</a>
|
|
444
|
+
<a name='L379'></a><a href='#L379'>379</a>
|
|
445
|
+
<a name='L380'></a><a href='#L380'>380</a>
|
|
446
|
+
<a name='L381'></a><a href='#L381'>381</a>
|
|
447
|
+
<a name='L382'></a><a href='#L382'>382</a>
|
|
448
|
+
<a name='L383'></a><a href='#L383'>383</a>
|
|
449
|
+
<a name='L384'></a><a href='#L384'>384</a>
|
|
450
|
+
<a name='L385'></a><a href='#L385'>385</a>
|
|
451
|
+
<a name='L386'></a><a href='#L386'>386</a>
|
|
452
|
+
<a name='L387'></a><a href='#L387'>387</a>
|
|
453
|
+
<a name='L388'></a><a href='#L388'>388</a>
|
|
454
|
+
<a name='L389'></a><a href='#L389'>389</a>
|
|
455
|
+
<a name='L390'></a><a href='#L390'>390</a>
|
|
456
|
+
<a name='L391'></a><a href='#L391'>391</a>
|
|
457
|
+
<a name='L392'></a><a href='#L392'>392</a>
|
|
458
|
+
<a name='L393'></a><a href='#L393'>393</a>
|
|
459
|
+
<a name='L394'></a><a href='#L394'>394</a>
|
|
460
|
+
<a name='L395'></a><a href='#L395'>395</a>
|
|
461
|
+
<a name='L396'></a><a href='#L396'>396</a>
|
|
462
|
+
<a name='L397'></a><a href='#L397'>397</a>
|
|
463
|
+
<a name='L398'></a><a href='#L398'>398</a>
|
|
464
|
+
<a name='L399'></a><a href='#L399'>399</a>
|
|
465
|
+
<a name='L400'></a><a href='#L400'>400</a>
|
|
466
|
+
<a name='L401'></a><a href='#L401'>401</a>
|
|
467
|
+
<a name='L402'></a><a href='#L402'>402</a>
|
|
468
|
+
<a name='L403'></a><a href='#L403'>403</a>
|
|
469
|
+
<a name='L404'></a><a href='#L404'>404</a>
|
|
470
|
+
<a name='L405'></a><a href='#L405'>405</a>
|
|
471
|
+
<a name='L406'></a><a href='#L406'>406</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
472
|
+
<span class="cline-any cline-neutral"> </span>
|
|
473
|
+
<span class="cline-any cline-neutral"> </span>
|
|
474
|
+
<span class="cline-any cline-neutral"> </span>
|
|
305
475
|
<span class="cline-any cline-neutral"> </span>
|
|
306
476
|
<span class="cline-any cline-neutral"> </span>
|
|
307
477
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -312,105 +482,152 @@
|
|
|
312
482
|
<span class="cline-any cline-neutral"> </span>
|
|
313
483
|
<span class="cline-any cline-neutral"> </span>
|
|
314
484
|
<span class="cline-any cline-neutral"> </span>
|
|
315
|
-
<span class="cline-any cline-yes">1x</span>
|
|
316
|
-
<span class="cline-any cline-yes">11x</span>
|
|
317
|
-
<span class="cline-any cline-yes">11x</span>
|
|
318
485
|
<span class="cline-any cline-neutral"> </span>
|
|
319
|
-
<span class="cline-any cline-yes">11x</span>
|
|
320
486
|
<span class="cline-any cline-neutral"> </span>
|
|
321
487
|
<span class="cline-any cline-neutral"> </span>
|
|
322
|
-
<span class="cline-any cline-yes">6x</span>
|
|
323
488
|
<span class="cline-any cline-neutral"> </span>
|
|
324
489
|
<span class="cline-any cline-neutral"> </span>
|
|
325
490
|
<span class="cline-any cline-neutral"> </span>
|
|
326
|
-
<span class="cline-any cline-yes">1x</span>
|
|
327
|
-
<span class="cline-any cline-yes">1x</span>
|
|
328
491
|
<span class="cline-any cline-neutral"> </span>
|
|
329
492
|
<span class="cline-any cline-neutral"> </span>
|
|
330
493
|
<span class="cline-any cline-neutral"> </span>
|
|
331
494
|
<span class="cline-any cline-neutral"> </span>
|
|
332
495
|
<span class="cline-any cline-neutral"> </span>
|
|
496
|
+
<span class="cline-any cline-neutral"> </span>
|
|
497
|
+
<span class="cline-any cline-neutral"> </span>
|
|
498
|
+
<span class="cline-any cline-neutral"> </span>
|
|
499
|
+
<span class="cline-any cline-neutral"> </span>
|
|
500
|
+
<span class="cline-any cline-yes">1x</span>
|
|
333
501
|
<span class="cline-any cline-yes">1x</span>
|
|
334
502
|
<span class="cline-any cline-yes">1x</span>
|
|
335
503
|
<span class="cline-any cline-neutral"> </span>
|
|
504
|
+
<span class="cline-any cline-neutral"> </span>
|
|
505
|
+
<span class="cline-any cline-yes">1x</span>
|
|
506
|
+
<span class="cline-any cline-yes">1x</span>
|
|
507
|
+
<span class="cline-any cline-neutral"> </span>
|
|
508
|
+
<span class="cline-any cline-neutral"> </span>
|
|
509
|
+
<span class="cline-any cline-neutral"> </span>
|
|
510
|
+
<span class="cline-any cline-no"> </span>
|
|
511
|
+
<span class="cline-any cline-neutral"> </span>
|
|
512
|
+
<span class="cline-any cline-neutral"> </span>
|
|
513
|
+
<span class="cline-any cline-neutral"> </span>
|
|
514
|
+
<span class="cline-any cline-no"> </span>
|
|
336
515
|
<span class="cline-any cline-no"> </span>
|
|
337
516
|
<span class="cline-any cline-neutral"> </span>
|
|
338
517
|
<span class="cline-any cline-neutral"> </span>
|
|
339
518
|
<span class="cline-any cline-neutral"> </span>
|
|
340
519
|
<span class="cline-any cline-neutral"> </span>
|
|
341
|
-
<span class="cline-any cline-yes">9x</span>
|
|
342
|
-
<span class="cline-any cline-yes">8x</span>
|
|
343
|
-
<span class="cline-any cline-yes">8x</span>
|
|
344
|
-
<span class="cline-any cline-yes">8x</span>
|
|
345
520
|
<span class="cline-any cline-neutral"> </span>
|
|
346
521
|
<span class="cline-any cline-no"> </span>
|
|
522
|
+
<span class="cline-any cline-no"> </span>
|
|
523
|
+
<span class="cline-any cline-no"> </span>
|
|
524
|
+
<span class="cline-any cline-no"> </span>
|
|
525
|
+
<span class="cline-any cline-no"> </span>
|
|
526
|
+
<span class="cline-any cline-no"> </span>
|
|
527
|
+
<span class="cline-any cline-no"> </span>
|
|
347
528
|
<span class="cline-any cline-neutral"> </span>
|
|
348
529
|
<span class="cline-any cline-neutral"> </span>
|
|
349
530
|
<span class="cline-any cline-neutral"> </span>
|
|
531
|
+
<span class="cline-any cline-no"> </span>
|
|
532
|
+
<span class="cline-any cline-no"> </span>
|
|
533
|
+
<span class="cline-any cline-no"> </span>
|
|
534
|
+
<span class="cline-any cline-no"> </span>
|
|
535
|
+
<span class="cline-any cline-no"> </span>
|
|
536
|
+
<span class="cline-any cline-no"> </span>
|
|
537
|
+
<span class="cline-any cline-no"> </span>
|
|
538
|
+
<span class="cline-any cline-no"> </span>
|
|
350
539
|
<span class="cline-any cline-neutral"> </span>
|
|
351
|
-
<span class="cline-any cline-yes">6x</span>
|
|
352
540
|
<span class="cline-any cline-neutral"> </span>
|
|
353
|
-
<span class="cline-any cline-yes">6x</span>
|
|
354
541
|
<span class="cline-any cline-neutral"> </span>
|
|
355
|
-
<span class="cline-any cline-
|
|
356
|
-
<span class="cline-any cline-
|
|
542
|
+
<span class="cline-any cline-no"> </span>
|
|
543
|
+
<span class="cline-any cline-no"> </span>
|
|
544
|
+
<span class="cline-any cline-no"> </span>
|
|
545
|
+
<span class="cline-any cline-no"> </span>
|
|
546
|
+
<span class="cline-any cline-neutral"> </span>
|
|
547
|
+
<span class="cline-any cline-no"> </span>
|
|
548
|
+
<span class="cline-any cline-neutral"> </span>
|
|
549
|
+
<span class="cline-any cline-neutral"> </span>
|
|
550
|
+
<span class="cline-any cline-neutral"> </span>
|
|
551
|
+
<span class="cline-any cline-neutral"> </span>
|
|
552
|
+
<span class="cline-any cline-no"> </span>
|
|
553
|
+
<span class="cline-any cline-neutral"> </span>
|
|
554
|
+
<span class="cline-any cline-no"> </span>
|
|
555
|
+
<span class="cline-any cline-neutral"> </span>
|
|
556
|
+
<span class="cline-any cline-neutral"> </span>
|
|
357
557
|
<span class="cline-any cline-neutral"> </span>
|
|
358
|
-
<span class="cline-any cline-yes">1x</span>
|
|
359
|
-
<span class="cline-any cline-yes">1x</span>
|
|
360
558
|
<span class="cline-any cline-neutral"> </span>
|
|
361
559
|
<span class="cline-any cline-yes">1x</span>
|
|
362
560
|
<span class="cline-any cline-yes">1x</span>
|
|
363
|
-
<span class="cline-any cline-neutral"> </span>
|
|
364
561
|
<span class="cline-any cline-yes">1x</span>
|
|
365
562
|
<span class="cline-any cline-yes">1x</span>
|
|
366
563
|
<span class="cline-any cline-neutral"> </span>
|
|
367
|
-
<span class="cline-any cline-
|
|
368
|
-
<span class="cline-any cline-
|
|
564
|
+
<span class="cline-any cline-no"> </span>
|
|
565
|
+
<span class="cline-any cline-neutral"> </span>
|
|
566
|
+
<span class="cline-any cline-neutral"> </span>
|
|
567
|
+
<span class="cline-any cline-neutral"> </span>
|
|
369
568
|
<span class="cline-any cline-neutral"> </span>
|
|
370
569
|
<span class="cline-any cline-no"> </span>
|
|
371
570
|
<span class="cline-any cline-neutral"> </span>
|
|
571
|
+
<span class="cline-any cline-no"> </span>
|
|
372
572
|
<span class="cline-any cline-neutral"> </span>
|
|
573
|
+
<span class="cline-any cline-no"> </span>
|
|
574
|
+
<span class="cline-any cline-no"> </span>
|
|
373
575
|
<span class="cline-any cline-neutral"> </span>
|
|
576
|
+
<span class="cline-any cline-no"> </span>
|
|
577
|
+
<span class="cline-any cline-no"> </span>
|
|
374
578
|
<span class="cline-any cline-neutral"> </span>
|
|
375
579
|
<span class="cline-any cline-no"> </span>
|
|
376
580
|
<span class="cline-any cline-no"> </span>
|
|
377
581
|
<span class="cline-any cline-neutral"> </span>
|
|
378
582
|
<span class="cline-any cline-no"> </span>
|
|
379
583
|
<span class="cline-any cline-no"> </span>
|
|
584
|
+
<span class="cline-any cline-neutral"> </span>
|
|
380
585
|
<span class="cline-any cline-no"> </span>
|
|
381
586
|
<span class="cline-any cline-no"> </span>
|
|
587
|
+
<span class="cline-any cline-neutral"> </span>
|
|
382
588
|
<span class="cline-any cline-no"> </span>
|
|
383
589
|
<span class="cline-any cline-neutral"> </span>
|
|
384
590
|
<span class="cline-any cline-neutral"> </span>
|
|
385
591
|
<span class="cline-any cline-neutral"> </span>
|
|
386
592
|
<span class="cline-any cline-neutral"> </span>
|
|
593
|
+
<span class="cline-any cline-no"> </span>
|
|
594
|
+
<span class="cline-any cline-no"> </span>
|
|
595
|
+
<span class="cline-any cline-neutral"> </span>
|
|
596
|
+
<span class="cline-any cline-no"> </span>
|
|
597
|
+
<span class="cline-any cline-no"> </span>
|
|
598
|
+
<span class="cline-any cline-no"> </span>
|
|
599
|
+
<span class="cline-any cline-no"> </span>
|
|
600
|
+
<span class="cline-any cline-no"> </span>
|
|
601
|
+
<span class="cline-any cline-neutral"> </span>
|
|
602
|
+
<span class="cline-any cline-neutral"> </span>
|
|
387
603
|
<span class="cline-any cline-neutral"> </span>
|
|
388
|
-
<span class="cline-any cline-yes">11x</span>
|
|
389
604
|
<span class="cline-any cline-neutral"> </span>
|
|
390
605
|
<span class="cline-any cline-neutral"> </span>
|
|
391
606
|
<span class="cline-any cline-yes">1x</span>
|
|
392
|
-
<span class="cline-any cline-yes">6x</span>
|
|
393
|
-
<span class="cline-any cline-yes">6x</span>
|
|
394
|
-
<span class="cline-any cline-yes">1x</span>
|
|
395
607
|
<span class="cline-any cline-neutral"> </span>
|
|
396
608
|
<span class="cline-any cline-neutral"> </span>
|
|
609
|
+
<span class="cline-any cline-no"> </span>
|
|
610
|
+
<span class="cline-any cline-no"> </span>
|
|
611
|
+
<span class="cline-any cline-no"> </span>
|
|
612
|
+
<span class="cline-any cline-no"> </span>
|
|
613
|
+
<span class="cline-any cline-neutral"> </span>
|
|
614
|
+
<span class="cline-any cline-neutral"> </span>
|
|
615
|
+
<span class="cline-any cline-no"> </span>
|
|
616
|
+
<span class="cline-any cline-no"> </span>
|
|
617
|
+
<span class="cline-any cline-no"> </span>
|
|
397
618
|
<span class="cline-any cline-neutral"> </span>
|
|
398
619
|
<span class="cline-any cline-neutral"> </span>
|
|
399
620
|
<span class="cline-any cline-neutral"> </span>
|
|
400
621
|
<span class="cline-any cline-neutral"> </span>
|
|
401
|
-
<span class="cline-any cline-yes">2x</span>
|
|
402
|
-
<span class="cline-any cline-yes">4x</span>
|
|
403
622
|
<span class="cline-any cline-neutral"> </span>
|
|
404
|
-
<span class="cline-any cline-yes">2x</span>
|
|
405
|
-
<span class="cline-any cline-yes">2x</span>
|
|
406
623
|
<span class="cline-any cline-neutral"> </span>
|
|
407
|
-
<span class="cline-any cline-
|
|
624
|
+
<span class="cline-any cline-no"> </span>
|
|
625
|
+
<span class="cline-any cline-no"> </span>
|
|
408
626
|
<span class="cline-any cline-neutral"> </span>
|
|
409
|
-
<span class="cline-any cline-
|
|
410
|
-
<span class="cline-any cline-
|
|
627
|
+
<span class="cline-any cline-no"> </span>
|
|
628
|
+
<span class="cline-any cline-no"> </span>
|
|
411
629
|
<span class="cline-any cline-neutral"> </span>
|
|
412
|
-
<span class="cline-any cline-
|
|
413
|
-
<span class="cline-any cline-yes">2x</span>
|
|
630
|
+
<span class="cline-any cline-no"> </span>
|
|
414
631
|
<span class="cline-any cline-neutral"> </span>
|
|
415
632
|
<span class="cline-any cline-no"> </span>
|
|
416
633
|
<span class="cline-any cline-no"> </span>
|
|
@@ -419,77 +636,78 @@
|
|
|
419
636
|
<span class="cline-any cline-no"> </span>
|
|
420
637
|
<span class="cline-any cline-neutral"> </span>
|
|
421
638
|
<span class="cline-any cline-no"> </span>
|
|
639
|
+
<span class="cline-any cline-no"> </span>
|
|
422
640
|
<span class="cline-any cline-neutral"> </span>
|
|
423
|
-
<span class="cline-any cline-
|
|
641
|
+
<span class="cline-any cline-no"> </span>
|
|
642
|
+
<span class="cline-any cline-no"> </span>
|
|
424
643
|
<span class="cline-any cline-neutral"> </span>
|
|
425
|
-
<span class="cline-any cline-
|
|
426
|
-
<span class="cline-any cline-yes">2x</span>
|
|
644
|
+
<span class="cline-any cline-no"> </span>
|
|
427
645
|
<span class="cline-any cline-neutral"> </span>
|
|
646
|
+
<span class="cline-any cline-no"> </span>
|
|
428
647
|
<span class="cline-any cline-neutral"> </span>
|
|
648
|
+
<span class="cline-any cline-no"> </span>
|
|
649
|
+
<span class="cline-any cline-no"> </span>
|
|
429
650
|
<span class="cline-any cline-neutral"> </span>
|
|
430
651
|
<span class="cline-any cline-neutral"> </span>
|
|
431
652
|
<span class="cline-any cline-neutral"> </span>
|
|
432
653
|
<span class="cline-any cline-neutral"> </span>
|
|
433
654
|
<span class="cline-any cline-neutral"> </span>
|
|
434
|
-
<span class="cline-any cline-yes">1x</span>
|
|
435
|
-
<span class="cline-any cline-yes">1x</span>
|
|
436
|
-
<span class="cline-any cline-yes">1x</span>
|
|
437
|
-
<span class="cline-any cline-yes">1x</span>
|
|
438
|
-
<span class="cline-any cline-yes">1x</span>
|
|
439
|
-
<span class="cline-any cline-yes">1x</span>
|
|
440
655
|
<span class="cline-any cline-neutral"> </span>
|
|
441
656
|
<span class="cline-any cline-neutral"> </span>
|
|
657
|
+
<span class="cline-any cline-no"> </span>
|
|
658
|
+
<span class="cline-any cline-no"> </span>
|
|
659
|
+
<span class="cline-any cline-no"> </span>
|
|
660
|
+
<span class="cline-any cline-no"> </span>
|
|
661
|
+
<span class="cline-any cline-no"> </span>
|
|
662
|
+
<span class="cline-any cline-no"> </span>
|
|
442
663
|
<span class="cline-any cline-neutral"> </span>
|
|
443
664
|
<span class="cline-any cline-neutral"> </span>
|
|
444
665
|
<span class="cline-any cline-neutral"> </span>
|
|
445
666
|
<span class="cline-any cline-neutral"> </span>
|
|
446
667
|
<span class="cline-any cline-neutral"> </span>
|
|
447
|
-
<span class="cline-any cline-yes">1x</span>
|
|
448
|
-
<span class="cline-any cline-yes">1x</span>
|
|
449
668
|
<span class="cline-any cline-neutral"> </span>
|
|
450
|
-
<span class="cline-any cline-
|
|
451
|
-
<span class="cline-any cline-
|
|
669
|
+
<span class="cline-any cline-neutral"> </span>
|
|
670
|
+
<span class="cline-any cline-no"> </span>
|
|
671
|
+
<span class="cline-any cline-no"> </span>
|
|
672
|
+
<span class="cline-any cline-no"> </span>
|
|
452
673
|
<span class="cline-any cline-no"> </span>
|
|
453
674
|
<span class="cline-any cline-no"> </span>
|
|
454
675
|
<span class="cline-any cline-no"> </span>
|
|
455
676
|
<span class="cline-any cline-neutral"> </span>
|
|
456
677
|
<span class="cline-any cline-neutral"> </span>
|
|
457
678
|
<span class="cline-any cline-neutral"> </span>
|
|
458
|
-
<span class="cline-any cline-yes">1x</span>
|
|
459
|
-
<span class="cline-any cline-yes">1x</span>
|
|
460
|
-
<span class="cline-any cline-yes">1x</span>
|
|
461
|
-
<span class="cline-any cline-yes">1x</span>
|
|
462
|
-
<span class="cline-any cline-yes">1x</span>
|
|
463
|
-
<span class="cline-any cline-yes">1x</span>
|
|
464
679
|
<span class="cline-any cline-neutral"> </span>
|
|
465
680
|
<span class="cline-any cline-neutral"> </span>
|
|
466
681
|
<span class="cline-any cline-neutral"> </span>
|
|
467
682
|
<span class="cline-any cline-neutral"> </span>
|
|
683
|
+
<span class="cline-any cline-no"> </span>
|
|
684
|
+
<span class="cline-any cline-no"> </span>
|
|
685
|
+
<span class="cline-any cline-no"> </span>
|
|
686
|
+
<span class="cline-any cline-no"> </span>
|
|
687
|
+
<span class="cline-any cline-no"> </span>
|
|
688
|
+
<span class="cline-any cline-no"> </span>
|
|
468
689
|
<span class="cline-any cline-neutral"> </span>
|
|
469
690
|
<span class="cline-any cline-neutral"> </span>
|
|
470
691
|
<span class="cline-any cline-neutral"> </span>
|
|
471
|
-
<span class="cline-any cline-yes">1x</span>
|
|
472
|
-
<span class="cline-any cline-yes">1x</span>
|
|
473
|
-
<span class="cline-any cline-yes">1x</span>
|
|
474
|
-
<span class="cline-any cline-yes">1x</span>
|
|
475
|
-
<span class="cline-any cline-yes">1x</span>
|
|
476
|
-
<span class="cline-any cline-yes">1x</span>
|
|
477
692
|
<span class="cline-any cline-neutral"> </span>
|
|
478
693
|
<span class="cline-any cline-neutral"> </span>
|
|
479
694
|
<span class="cline-any cline-neutral"> </span>
|
|
480
695
|
<span class="cline-any cline-neutral"> </span>
|
|
696
|
+
<span class="cline-any cline-no"> </span>
|
|
697
|
+
<span class="cline-any cline-no"> </span>
|
|
698
|
+
<span class="cline-any cline-no"> </span>
|
|
699
|
+
<span class="cline-any cline-neutral"> </span>
|
|
700
|
+
<span class="cline-any cline-no"> </span>
|
|
701
|
+
<span class="cline-any cline-no"> </span>
|
|
702
|
+
<span class="cline-any cline-no"> </span>
|
|
703
|
+
<span class="cline-any cline-no"> </span>
|
|
704
|
+
<span class="cline-any cline-no"> </span>
|
|
705
|
+
<span class="cline-any cline-neutral"> </span>
|
|
706
|
+
<span class="cline-any cline-neutral"> </span>
|
|
481
707
|
<span class="cline-any cline-neutral"> </span>
|
|
482
708
|
<span class="cline-any cline-neutral"> </span>
|
|
483
709
|
<span class="cline-any cline-neutral"> </span>
|
|
484
|
-
<span class="cline-any cline-yes">1x</span>
|
|
485
|
-
<span class="cline-any cline-yes">1x</span>
|
|
486
|
-
<span class="cline-any cline-yes">1x</span>
|
|
487
710
|
<span class="cline-any cline-neutral"> </span>
|
|
488
|
-
<span class="cline-any cline-yes">1x</span>
|
|
489
|
-
<span class="cline-any cline-yes">1x</span>
|
|
490
|
-
<span class="cline-any cline-yes">1x</span>
|
|
491
|
-
<span class="cline-any cline-yes">1x</span>
|
|
492
|
-
<span class="cline-any cline-yes">1x</span>
|
|
493
711
|
<span class="cline-any cline-neutral"> </span>
|
|
494
712
|
<span class="cline-any cline-neutral"> </span>
|
|
495
713
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -529,14 +747,130 @@
|
|
|
529
747
|
<span class="cline-any cline-neutral"> </span>
|
|
530
748
|
<span class="cline-any cline-neutral"> </span>
|
|
531
749
|
<span class="cline-any cline-yes">1x</span>
|
|
532
|
-
<span class="cline-any cline-yes">5x</span>
|
|
533
750
|
<span class="cline-any cline-no"> </span>
|
|
751
|
+
<span class="cline-any cline-no"> </span>
|
|
752
|
+
<span class="cline-any cline-no"> </span>
|
|
753
|
+
<span class="cline-any cline-no"> </span>
|
|
754
|
+
<span class="cline-any cline-no"> </span>
|
|
755
|
+
<span class="cline-any cline-no"> </span>
|
|
756
|
+
<span class="cline-any cline-no"> </span>
|
|
757
|
+
<span class="cline-any cline-no"> </span>
|
|
758
|
+
<span class="cline-any cline-no"> </span>
|
|
759
|
+
<span class="cline-any cline-no"> </span>
|
|
760
|
+
<span class="cline-any cline-no"> </span>
|
|
761
|
+
<span class="cline-any cline-neutral"> </span>
|
|
762
|
+
<span class="cline-any cline-neutral"> </span>
|
|
534
763
|
<span class="cline-any cline-yes">1x</span>
|
|
535
764
|
<span class="cline-any cline-no"> </span>
|
|
765
|
+
<span class="cline-any cline-neutral"> </span>
|
|
766
|
+
<span class="cline-any cline-neutral"> </span>
|
|
767
|
+
<span class="cline-any cline-neutral"> </span>
|
|
768
|
+
<span class="cline-any cline-neutral"> </span>
|
|
769
|
+
<span class="cline-any cline-neutral"> </span>
|
|
770
|
+
<span class="cline-any cline-neutral"> </span>
|
|
771
|
+
<span class="cline-any cline-neutral"> </span>
|
|
772
|
+
<span class="cline-any cline-neutral"> </span>
|
|
773
|
+
<span class="cline-any cline-neutral"> </span>
|
|
774
|
+
<span class="cline-any cline-no"> </span>
|
|
775
|
+
<span class="cline-any cline-no"> </span>
|
|
776
|
+
<span class="cline-any cline-neutral"> </span>
|
|
777
|
+
<span class="cline-any cline-no"> </span>
|
|
778
|
+
<span class="cline-any cline-neutral"> </span>
|
|
779
|
+
<span class="cline-any cline-neutral"> </span>
|
|
780
|
+
<span class="cline-any cline-no"> </span>
|
|
781
|
+
<span class="cline-any cline-neutral"> </span>
|
|
782
|
+
<span class="cline-any cline-neutral"> </span>
|
|
783
|
+
<span class="cline-any cline-neutral"> </span>
|
|
784
|
+
<span class="cline-any cline-neutral"> </span>
|
|
785
|
+
<span class="cline-any cline-neutral"> </span>
|
|
786
|
+
<span class="cline-any cline-no"> </span>
|
|
787
|
+
<span class="cline-any cline-neutral"> </span>
|
|
788
|
+
<span class="cline-any cline-no"> </span>
|
|
789
|
+
<span class="cline-any cline-neutral"> </span>
|
|
790
|
+
<span class="cline-any cline-neutral"> </span>
|
|
791
|
+
<span class="cline-any cline-neutral"> </span>
|
|
792
|
+
<span class="cline-any cline-neutral"> </span>
|
|
793
|
+
<span class="cline-any cline-neutral"> </span>
|
|
794
|
+
<span class="cline-any cline-no"> </span>
|
|
795
|
+
<span class="cline-any cline-neutral"> </span>
|
|
796
|
+
<span class="cline-any cline-no"> </span>
|
|
797
|
+
<span class="cline-any cline-neutral"> </span>
|
|
798
|
+
<span class="cline-any cline-neutral"> </span>
|
|
799
|
+
<span class="cline-any cline-neutral"> </span>
|
|
800
|
+
<span class="cline-any cline-neutral"> </span>
|
|
801
|
+
<span class="cline-any cline-neutral"> </span>
|
|
802
|
+
<span class="cline-any cline-neutral"> </span>
|
|
803
|
+
<span class="cline-any cline-no"> </span>
|
|
804
|
+
<span class="cline-any cline-neutral"> </span>
|
|
805
|
+
<span class="cline-any cline-no"> </span>
|
|
806
|
+
<span class="cline-any cline-neutral"> </span>
|
|
807
|
+
<span class="cline-any cline-neutral"> </span>
|
|
808
|
+
<span class="cline-any cline-neutral"> </span>
|
|
809
|
+
<span class="cline-any cline-neutral"> </span>
|
|
810
|
+
<span class="cline-any cline-neutral"> </span>
|
|
811
|
+
<span class="cline-any cline-neutral"> </span>
|
|
812
|
+
<span class="cline-any cline-no"> </span>
|
|
813
|
+
<span class="cline-any cline-neutral"> </span>
|
|
814
|
+
<span class="cline-any cline-no"> </span>
|
|
815
|
+
<span class="cline-any cline-neutral"> </span>
|
|
816
|
+
<span class="cline-any cline-neutral"> </span>
|
|
817
|
+
<span class="cline-any cline-neutral"> </span>
|
|
818
|
+
<span class="cline-any cline-neutral"> </span>
|
|
819
|
+
<span class="cline-any cline-neutral"> </span>
|
|
820
|
+
<span class="cline-any cline-neutral"> </span>
|
|
821
|
+
<span class="cline-any cline-neutral"> </span>
|
|
822
|
+
<span class="cline-any cline-no"> </span>
|
|
823
|
+
<span class="cline-any cline-neutral"> </span>
|
|
824
|
+
<span class="cline-any cline-no"> </span>
|
|
825
|
+
<span class="cline-any cline-neutral"> </span>
|
|
826
|
+
<span class="cline-any cline-neutral"> </span>
|
|
827
|
+
<span class="cline-any cline-neutral"> </span>
|
|
828
|
+
<span class="cline-any cline-neutral"> </span>
|
|
829
|
+
<span class="cline-any cline-neutral"> </span>
|
|
830
|
+
<span class="cline-any cline-neutral"> </span>
|
|
831
|
+
<span class="cline-any cline-no"> </span>
|
|
832
|
+
<span class="cline-any cline-neutral"> </span>
|
|
833
|
+
<span class="cline-any cline-no"> </span>
|
|
834
|
+
<span class="cline-any cline-neutral"> </span>
|
|
835
|
+
<span class="cline-any cline-neutral"> </span>
|
|
836
|
+
<span class="cline-any cline-neutral"> </span>
|
|
837
|
+
<span class="cline-any cline-neutral"> </span>
|
|
838
|
+
<span class="cline-any cline-neutral"> </span>
|
|
839
|
+
<span class="cline-any cline-no"> </span>
|
|
840
|
+
<span class="cline-any cline-neutral"> </span>
|
|
841
|
+
<span class="cline-any cline-no"> </span>
|
|
842
|
+
<span class="cline-any cline-neutral"> </span>
|
|
843
|
+
<span class="cline-any cline-neutral"> </span>
|
|
844
|
+
<span class="cline-any cline-neutral"> </span>
|
|
845
|
+
<span class="cline-any cline-neutral"> </span>
|
|
846
|
+
<span class="cline-any cline-neutral"> </span>
|
|
847
|
+
<span class="cline-any cline-no"> </span>
|
|
848
|
+
<span class="cline-any cline-neutral"> </span>
|
|
536
849
|
<span class="cline-any cline-no"> </span>
|
|
850
|
+
<span class="cline-any cline-neutral"> </span>
|
|
851
|
+
<span class="cline-any cline-neutral"> </span>
|
|
852
|
+
<span class="cline-any cline-neutral"> </span>
|
|
853
|
+
<span class="cline-any cline-neutral"> </span>
|
|
854
|
+
<span class="cline-any cline-neutral"> </span>
|
|
537
855
|
<span class="cline-any cline-no"> </span>
|
|
856
|
+
<span class="cline-any cline-neutral"> </span>
|
|
857
|
+
<span class="cline-any cline-no"> </span>
|
|
858
|
+
<span class="cline-any cline-neutral"> </span>
|
|
859
|
+
<span class="cline-any cline-neutral"> </span>
|
|
860
|
+
<span class="cline-any cline-neutral"> </span>
|
|
861
|
+
<span class="cline-any cline-neutral"> </span>
|
|
862
|
+
<span class="cline-any cline-neutral"> </span>
|
|
863
|
+
<span class="cline-any cline-no"> </span>
|
|
864
|
+
<span class="cline-any cline-neutral"> </span>
|
|
865
|
+
<span class="cline-any cline-no"> </span>
|
|
866
|
+
<span class="cline-any cline-neutral"> </span>
|
|
867
|
+
<span class="cline-any cline-neutral"> </span>
|
|
868
|
+
<span class="cline-any cline-neutral"> </span>
|
|
869
|
+
<span class="cline-any cline-neutral"> </span>
|
|
870
|
+
<span class="cline-any cline-neutral"> </span>
|
|
538
871
|
<span class="cline-any cline-no"> </span>
|
|
539
|
-
<span class="cline-any cline-
|
|
872
|
+
<span class="cline-any cline-neutral"> </span>
|
|
873
|
+
<span class="cline-any cline-neutral"> </span>
|
|
540
874
|
<span class="cline-any cline-no"> </span>
|
|
541
875
|
<span class="cline-any cline-neutral"> </span>
|
|
542
876
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import Message, {
|
|
@@ -550,61 +884,112 @@
|
|
|
550
884
|
import App, { StartOptions } from '../app/index.js'
|
|
551
885
|
import { IFeatureFlag } from './featureFlags.js'
|
|
552
886
|
|
|
887
|
+
interface Filter {
|
|
888
|
+
filters: {
|
|
889
|
+
operator: string
|
|
890
|
+
value: string[]
|
|
891
|
+
type: string
|
|
892
|
+
source?: string
|
|
893
|
+
}[]
|
|
894
|
+
operator: string
|
|
895
|
+
value: string[]
|
|
896
|
+
type: string
|
|
897
|
+
source?: string
|
|
898
|
+
}
|
|
899
|
+
interface ApiResponse {
|
|
900
|
+
capture_rate: number
|
|
901
|
+
name: string
|
|
902
|
+
filters: Filter[]
|
|
903
|
+
}
|
|
904
|
+
|
|
553
905
|
export default class ConditionsManager {
|
|
554
906
|
conditions: Condition[] = []
|
|
555
907
|
hasStarted = false
|
|
556
908
|
|
|
557
|
-
constructor(
|
|
909
|
+
constructor(
|
|
910
|
+
private readonly app: App,
|
|
911
|
+
private readonly startParams: StartOptions,
|
|
912
|
+
) {}
|
|
558
913
|
|
|
559
|
-
setConditions(conditions: Condition[]) {
|
|
560
|
-
this.conditions = conditions
|
|
914
|
+
<span class="fstat-no" title="function not covered" > setConditions(</span>conditions: Condition[]) {
|
|
915
|
+
<span class="cstat-no" title="statement not covered" > this.conditions = conditions</span>
|
|
561
916
|
}
|
|
562
917
|
|
|
563
|
-
async fetchConditions(token: string) {
|
|
564
|
-
try {
|
|
565
|
-
const r = await fetch(`${this.app.options.ingestPoint}/v1/web/conditions`, {
|
|
918
|
+
async <span class="fstat-no" title="function not covered" >fetchConditions(</span>projectId: string, token: string) {
|
|
919
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
920
|
+
const r = <span class="cstat-no" title="statement not covered" >await fetch(`${this.app.options.ingestPoint}/v1/web/conditions/${projectId}`, {</span>
|
|
566
921
|
method: 'GET',
|
|
567
922
|
headers: {
|
|
568
923
|
Authorization: `Bearer ${token}`,
|
|
569
924
|
},
|
|
570
925
|
})
|
|
571
|
-
const { conditions } = await r.json()
|
|
572
|
-
|
|
926
|
+
const { conditions } = (<span class="cstat-no" title="statement not covered" >await r.json())</span> as { conditions: ApiResponse[] }
|
|
927
|
+
const mappedConditions: Condition[] = <span class="cstat-no" title="statement not covered" >[]</span>
|
|
928
|
+
const processFilter = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(f</span>ilter: Filter) => {</span>
|
|
929
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (filter.value.length) {</span>
|
|
930
|
+
const resultCondition = <span class="cstat-no" title="statement not covered" >mapCondition(filter)</span>
|
|
931
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (resultCondition.type) {</span>
|
|
932
|
+
<span class="cstat-no" title="statement not covered" > return resultCondition</span>
|
|
933
|
+
}
|
|
934
|
+
}
|
|
935
|
+
}
|
|
936
|
+
<span class="cstat-no" title="statement not covered" > conditions.forEach(<span class="fstat-no" title="function not covered" >(c</span>) => {</span>
|
|
937
|
+
const filters = <span class="cstat-no" title="statement not covered" >c.filters</span>
|
|
938
|
+
<span class="cstat-no" title="statement not covered" > filters.forEach(<span class="fstat-no" title="function not covered" >(f</span>ilter) => {</span>
|
|
939
|
+
<span class="cstat-no" title="statement not covered" > if (filter.type === 'fetch') {</span>
|
|
940
|
+
<span class="cstat-no" title="statement not covered" > filter.filters.forEach(<span class="fstat-no" title="function not covered" >(f</span>) => {</span>
|
|
941
|
+
const cond = <span class="cstat-no" title="statement not covered" >processFilter(f as unknown as Filter)</span>
|
|
942
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (cond) {</span>
|
|
943
|
+
<span class="cstat-no" title="statement not covered" > mappedConditions.push({ ...cond, name: c.name })</span>
|
|
944
|
+
}
|
|
945
|
+
})
|
|
946
|
+
} else {
|
|
947
|
+
const cond = <span class="cstat-no" title="statement not covered" >processFilter(filter)</span>
|
|
948
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (cond) {</span>
|
|
949
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (cond.type === 'session_duration') {</span>
|
|
950
|
+
<span class="cstat-no" title="statement not covered" > this.processDuration(cond.value[0], c.name)</span>
|
|
951
|
+
}
|
|
952
|
+
<span class="cstat-no" title="statement not covered" > mappedConditions.push({ ...cond, name: c.name })</span>
|
|
953
|
+
}
|
|
954
|
+
}
|
|
955
|
+
})
|
|
956
|
+
})
|
|
957
|
+
<span class="cstat-no" title="statement not covered" > this.conditions = mappedConditions</span>
|
|
573
958
|
} catch (e) {
|
|
574
959
|
<span class="cstat-no" title="statement not covered" > this.app.debug.error('Critical: cannot fetch start conditions')</span>
|
|
575
960
|
}
|
|
576
961
|
}
|
|
577
962
|
|
|
578
|
-
trigger() {
|
|
579
|
-
if (this.hasStarted) return
|
|
963
|
+
trigger(conditionName: string) {
|
|
964
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (this.hasStarted) <span class="cstat-no" title="statement not covered" >return</span>
|
|
580
965
|
try {
|
|
581
966
|
this.hasStarted = true
|
|
582
|
-
void this.app.start(this.startParams)
|
|
967
|
+
void this.app.start(this.startParams, undefined, conditionName)
|
|
583
968
|
} catch (e) {
|
|
584
969
|
<span class="cstat-no" title="statement not covered" > this.app.debug.error(e)</span>
|
|
585
970
|
}
|
|
586
971
|
}
|
|
587
972
|
|
|
588
|
-
processMessage(message: Message) {
|
|
589
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (this.hasStarted) <span class="cstat-no" title="statement not covered" >return</span>
|
|
973
|
+
<span class="fstat-no" title="function not covered" > processMessage(</span>message: Message) {
|
|
974
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.hasStarted) <span class="cstat-no" title="statement not covered" >return</span></span>
|
|
590
975
|
|
|
591
|
-
switch (message[0]) {
|
|
976
|
+
<span class="cstat-no" title="statement not covered" > switch (message[0]) {</span>
|
|
592
977
|
case Type.JSException:
|
|
593
|
-
this.jsExceptionEvent(message)
|
|
594
|
-
break
|
|
978
|
+
<span class="cstat-no" title="statement not covered" > this.jsExceptionEvent(message)</span>
|
|
979
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
595
980
|
case Type.CustomEvent:
|
|
596
|
-
this.customEvent(message)
|
|
597
|
-
break
|
|
981
|
+
<span class="cstat-no" title="statement not covered" > this.customEvent(message)</span>
|
|
982
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
598
983
|
case Type.MouseClick:
|
|
599
|
-
this.clickEvent(message)
|
|
600
|
-
break
|
|
984
|
+
<span class="cstat-no" title="statement not covered" > this.clickEvent(message)</span>
|
|
985
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
601
986
|
case Type.SetPageLocation:
|
|
602
|
-
this.pageLocationEvent(message)
|
|
603
|
-
break
|
|
987
|
+
<span class="cstat-no" title="statement not covered" > this.pageLocationEvent(message)</span>
|
|
988
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
604
989
|
case Type.NetworkRequest:
|
|
605
|
-
this.networkRequest(message)
|
|
606
|
-
break
|
|
607
|
-
|
|
990
|
+
<span class="cstat-no" title="statement not covered" > this.networkRequest(message)</span>
|
|
991
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
992
|
+
default:
|
|
608
993
|
<span class="cstat-no" title="statement not covered" > break</span>
|
|
609
994
|
}
|
|
610
995
|
}
|
|
@@ -616,8 +1001,8 @@ export default class ConditionsManager {
|
|
|
616
1001
|
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (flagConds.length) {</span>
|
|
617
1002
|
<span class="cstat-no" title="statement not covered" > flagConds.forEach(<span class="fstat-no" title="function not covered" >(f</span>lagCond) => {</span>
|
|
618
1003
|
const operator = <span class="cstat-no" title="statement not covered" >operators[flagCond.operator]</span>
|
|
619
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (operator && flag.
|
|
620
|
-
<span class="cstat-no" title="statement not covered" > this.trigger()</span>
|
|
1004
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (operator && flag.find(<span class="fstat-no" title="function not covered" >(f</span>) => <span class="cstat-no" title="statement not covered" >operator(f.key, flagCond.value))</span>) {</span>
|
|
1005
|
+
<span class="cstat-no" title="statement not covered" > this.trigger(flagCond.name)</span>
|
|
621
1006
|
}
|
|
622
1007
|
})
|
|
623
1008
|
}
|
|
@@ -625,109 +1010,103 @@ export default class ConditionsManager {
|
|
|
625
1010
|
|
|
626
1011
|
durationInt: ReturnType<typeof setInterval> | null = null
|
|
627
1012
|
|
|
628
|
-
processDuration(
|
|
629
|
-
this.durationInt = setInterval(()
|
|
630
|
-
const sessionLength = performance.now()
|
|
631
|
-
if (sessionLength >
|
|
632
|
-
this.trigger()
|
|
1013
|
+
<span class="fstat-no" title="function not covered" > processDuration(</span>durationMs: number, condName: string) {
|
|
1014
|
+
<span class="cstat-no" title="statement not covered" > this.durationInt = setInterval(<span class="fstat-no" title="function not covered" >() =</span>> {</span>
|
|
1015
|
+
const sessionLength = <span class="cstat-no" title="statement not covered" >performance.now()</span>
|
|
1016
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (sessionLength > durationMs) {</span>
|
|
1017
|
+
<span class="cstat-no" title="statement not covered" > this.trigger(condName)</span>
|
|
633
1018
|
}
|
|
634
1019
|
}, 1000)
|
|
1020
|
+
<span class="cstat-no" title="statement not covered" > this.app.attachStopCallback(<span class="fstat-no" title="function not covered" >() =</span>> {</span>
|
|
1021
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (this.durationInt) {</span>
|
|
1022
|
+
<span class="cstat-no" title="statement not covered" > clearInterval(this.durationInt)</span>
|
|
1023
|
+
}
|
|
1024
|
+
})
|
|
635
1025
|
}
|
|
636
1026
|
|
|
637
|
-
networkRequest(message: NetworkRequest) {
|
|
1027
|
+
<span class="fstat-no" title="function not covered" > networkRequest(</span>message: NetworkRequest) {
|
|
638
1028
|
// method - 2, url - 3, status - 6, duration - 8
|
|
639
|
-
const reqConds = this.conditions.filter(
|
|
640
|
-
(c) => c.type === 'network_request'
|
|
1029
|
+
const reqConds = <span class="cstat-no" title="statement not covered" >this.conditions.filter(</span>
|
|
1030
|
+
<span class="fstat-no" title="function not covered" > (c</span>) => <span class="cstat-no" title="statement not covered" >c.type === 'network_request',</span>
|
|
641
1031
|
) as NetworkRequestCondition[]
|
|
642
|
-
if (reqConds.length) {
|
|
643
|
-
reqConds.forEach((
|
|
1032
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (reqConds.length) {</span>
|
|
1033
|
+
<span class="cstat-no" title="statement not covered" > reqConds.forEach(<span class="fstat-no" title="function not covered" >(r</span>eqCond) => {</span>
|
|
644
1034
|
let value
|
|
645
|
-
switch (reqCond.key) {
|
|
1035
|
+
<span class="cstat-no" title="statement not covered" > switch (reqCond.key) {</span>
|
|
646
1036
|
case 'url':
|
|
647
|
-
value = message[3]
|
|
648
|
-
break
|
|
1037
|
+
<span class="cstat-no" title="statement not covered" > value = message[3]</span>
|
|
1038
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
649
1039
|
case 'status':
|
|
650
|
-
value = message[6]
|
|
651
|
-
break
|
|
652
|
-
|
|
1040
|
+
<span class="cstat-no" title="statement not covered" > value = message[6]</span>
|
|
1041
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
1042
|
+
case 'method':
|
|
653
1043
|
<span class="cstat-no" title="statement not covered" > value = message[2]</span>
|
|
654
1044
|
<span class="cstat-no" title="statement not covered" > break</span>
|
|
655
|
-
|
|
1045
|
+
case 'duration':
|
|
656
1046
|
<span class="cstat-no" title="statement not covered" > value = message[8]</span>
|
|
657
1047
|
<span class="cstat-no" title="statement not covered" > break</span>
|
|
658
|
-
|
|
1048
|
+
default:
|
|
659
1049
|
<span class="cstat-no" title="statement not covered" > break</span>
|
|
660
1050
|
}
|
|
661
|
-
const operator = operators[reqCond.operator] as (a: string, b: string[]) => boolean
|
|
1051
|
+
const operator = <span class="cstat-no" title="statement not covered" >operators[reqCond.operator] as (a: string, b: string[]) => boolean</span>
|
|
662
1052
|
// @ts-ignore
|
|
663
|
-
if (operator && operator(value, reqCond.value)) {
|
|
664
|
-
this.trigger()
|
|
1053
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (operator && operator(value, reqCond.value)) {</span>
|
|
1054
|
+
<span class="cstat-no" title="statement not covered" > this.trigger(reqCond.name)</span>
|
|
665
1055
|
}
|
|
666
1056
|
})
|
|
667
1057
|
}
|
|
668
1058
|
}
|
|
669
1059
|
|
|
670
|
-
customEvent(message: CustomEvent) {
|
|
1060
|
+
<span class="fstat-no" title="function not covered" > customEvent(</span>message: CustomEvent) {
|
|
671
1061
|
// name - 1
|
|
672
|
-
const evConds = this.conditions.filter((c) => c.type === 'custom_event') as CommonCondition[]
|
|
673
|
-
if (evConds.length) {
|
|
674
|
-
evConds.forEach((
|
|
675
|
-
const operator = operators[evCond.operator] as (a: string, b: string[]) => boolean
|
|
676
|
-
if (operator && operator(message[1], evCond.value)) {
|
|
677
|
-
this.trigger()
|
|
1062
|
+
const evConds = <span class="cstat-no" title="statement not covered" >this.conditions.filter(<span class="fstat-no" title="function not covered" >(c</span>) => <span class="cstat-no" title="statement not covered" >c.type === 'custom_event')</span> as CommonCondition[]</span>
|
|
1063
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (evConds.length) {</span>
|
|
1064
|
+
<span class="cstat-no" title="statement not covered" > evConds.forEach(<span class="fstat-no" title="function not covered" >(e</span>vCond) => {</span>
|
|
1065
|
+
const operator = <span class="cstat-no" title="statement not covered" >operators[evCond.operator] as (a: string, b: string[]) => boolean</span>
|
|
1066
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (operator && operator(message[1], evCond.value)) {</span>
|
|
1067
|
+
<span class="cstat-no" title="statement not covered" > this.trigger(evCond.name)</span>
|
|
678
1068
|
}
|
|
679
1069
|
})
|
|
680
1070
|
}
|
|
681
1071
|
}
|
|
682
1072
|
|
|
683
|
-
clickEvent(message: MouseClick) {
|
|
1073
|
+
<span class="fstat-no" title="function not covered" > clickEvent(</span>message: MouseClick) {
|
|
684
1074
|
// label - 3, selector - 4
|
|
685
|
-
const
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (operator && operator(message[4], selectorCond.value)) {</span>
|
|
692
|
-
<span class="cstat-no" title="statement not covered" > this.trigger()</span>
|
|
693
|
-
}
|
|
694
|
-
})
|
|
695
|
-
}
|
|
696
|
-
const labelConds = this.conditions.filter((c) => c.type === 'click_label') as CommonCondition[]
|
|
697
|
-
if (labelConds) {
|
|
698
|
-
labelConds.forEach((labelCond) => {
|
|
699
|
-
const operator = operators[labelCond.operator] as (a: string, b: string[]) => boolean
|
|
700
|
-
if (operator && operator(message[3], labelCond.value)) {
|
|
701
|
-
this.trigger()
|
|
1075
|
+
const clickCond = <span class="cstat-no" title="statement not covered" >this.conditions.filter(<span class="fstat-no" title="function not covered" >(c</span>) => <span class="cstat-no" title="statement not covered" >c.type === 'click')</span> as CommonCondition[]</span>
|
|
1076
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (clickCond.length) {</span>
|
|
1077
|
+
<span class="cstat-no" title="statement not covered" > clickCond.forEach(<span class="fstat-no" title="function not covered" >(c</span>lick) => {</span>
|
|
1078
|
+
const operator = <span class="cstat-no" title="statement not covered" >operators[click.operator] as (a: string, b: string[]) => boolean</span>
|
|
1079
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (operator && (operator(message[3], click.value) || operator(message[4], click.value))) {</span>
|
|
1080
|
+
<span class="cstat-no" title="statement not covered" > this.trigger(click.name)</span>
|
|
702
1081
|
}
|
|
703
1082
|
})
|
|
704
1083
|
}
|
|
705
1084
|
}
|
|
706
1085
|
|
|
707
|
-
pageLocationEvent(message: SetPageLocation) {
|
|
1086
|
+
<span class="fstat-no" title="function not covered" > pageLocationEvent(</span>message: SetPageLocation) {
|
|
708
1087
|
// url - 1
|
|
709
|
-
const urlConds = this.conditions.filter((c) => c.type === 'visited_url') as CommonCondition[]
|
|
710
|
-
if (urlConds) {
|
|
711
|
-
urlConds.forEach((
|
|
712
|
-
const operator = operators[urlCond.operator] as (a: string, b: string[]) => boolean
|
|
713
|
-
if (operator && operator(message[1], urlCond.value)) {
|
|
714
|
-
this.trigger()
|
|
1088
|
+
const urlConds = <span class="cstat-no" title="statement not covered" >this.conditions.filter(<span class="fstat-no" title="function not covered" >(c</span>) => <span class="cstat-no" title="statement not covered" >c.type === 'visited_url')</span> as CommonCondition[]</span>
|
|
1089
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (urlConds) {</span>
|
|
1090
|
+
<span class="cstat-no" title="statement not covered" > urlConds.forEach(<span class="fstat-no" title="function not covered" >(u</span>rlCond) => {</span>
|
|
1091
|
+
const operator = <span class="cstat-no" title="statement not covered" >operators[urlCond.operator] as (a: string, b: string[]) => boolean</span>
|
|
1092
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (operator && operator(message[1], urlCond.value)) {</span>
|
|
1093
|
+
<span class="cstat-no" title="statement not covered" > this.trigger(urlCond.name)</span>
|
|
715
1094
|
}
|
|
716
1095
|
})
|
|
717
1096
|
}
|
|
718
1097
|
}
|
|
719
1098
|
|
|
720
|
-
jsExceptionEvent(message: JSException) {
|
|
1099
|
+
<span class="fstat-no" title="function not covered" > jsExceptionEvent(</span>message: JSException) {
|
|
721
1100
|
// name - 1, message - 2, payload - 3
|
|
722
|
-
const testedValues = [message[1], message[2], message[3]]
|
|
723
|
-
const exceptionConds = this.conditions.filter(
|
|
724
|
-
(c) => c.type === 'exception'
|
|
1101
|
+
const testedValues = <span class="cstat-no" title="statement not covered" >[message[1], message[2], message[3]]</span>
|
|
1102
|
+
const exceptionConds = <span class="cstat-no" title="statement not covered" >this.conditions.filter(</span>
|
|
1103
|
+
<span class="fstat-no" title="function not covered" > (c</span>) => <span class="cstat-no" title="statement not covered" >c.type === 'exception',</span>
|
|
725
1104
|
) as ExceptionCondition[]
|
|
726
|
-
if (exceptionConds) {
|
|
727
|
-
exceptionConds.forEach((
|
|
728
|
-
const operator = operators[exceptionCond.operator]
|
|
729
|
-
if (operator && testedValues.some((
|
|
730
|
-
this.trigger()
|
|
1105
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (exceptionConds) {</span>
|
|
1106
|
+
<span class="cstat-no" title="statement not covered" > exceptionConds.forEach(<span class="fstat-no" title="function not covered" >(e</span>xceptionCond) => {</span>
|
|
1107
|
+
const operator = <span class="cstat-no" title="statement not covered" >operators[exceptionCond.operator]</span>
|
|
1108
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (operator && testedValues.some(<span class="fstat-no" title="function not covered" >(v</span>al) => <span class="cstat-no" title="statement not covered" >operator(val, exceptionCond.value))</span>) {</span>
|
|
1109
|
+
<span class="cstat-no" title="statement not covered" > this.trigger(exceptionCond.name)</span>
|
|
731
1110
|
}
|
|
732
1111
|
})
|
|
733
1112
|
}
|
|
@@ -735,29 +1114,35 @@ export default class ConditionsManager {
|
|
|
735
1114
|
}
|
|
736
1115
|
// duration,
|
|
737
1116
|
type CommonCondition = {
|
|
738
|
-
type: 'visited_url' | '
|
|
739
|
-
operator: keyof typeof operators
|
|
740
|
-
value: string[]
|
|
741
|
-
}
|
|
742
|
-
type NetworkRequestCondition = {
|
|
743
|
-
type: 'network_request'
|
|
744
|
-
key: 'url' | 'status' | 'method' | 'duration'
|
|
1117
|
+
type: 'visited_url' | 'click' | 'custom_event'
|
|
745
1118
|
operator: keyof typeof operators
|
|
746
1119
|
value: string[]
|
|
1120
|
+
name: string
|
|
747
1121
|
}
|
|
1122
|
+
|
|
748
1123
|
type ExceptionCondition = {
|
|
749
1124
|
type: 'exception'
|
|
750
1125
|
operator: 'contains' | 'startsWith' | 'endsWith'
|
|
751
1126
|
value: string[]
|
|
1127
|
+
name: string
|
|
752
1128
|
}
|
|
753
1129
|
type FeatureFlagCondition = {
|
|
754
1130
|
type: 'feature_flag'
|
|
755
1131
|
operator: 'is'
|
|
756
1132
|
value: string[]
|
|
1133
|
+
name: string
|
|
757
1134
|
}
|
|
758
1135
|
type SessionDurationCondition = {
|
|
759
1136
|
type: 'session_duration'
|
|
760
1137
|
value: number[]
|
|
1138
|
+
name: string
|
|
1139
|
+
}
|
|
1140
|
+
type NetworkRequestCondition = {
|
|
1141
|
+
type: 'network_request'
|
|
1142
|
+
key: 'url' | 'status' | 'method' | 'duration'
|
|
1143
|
+
operator: keyof typeof operators
|
|
1144
|
+
value: string[]
|
|
1145
|
+
name: string
|
|
761
1146
|
}
|
|
762
1147
|
type Condition =
|
|
763
1148
|
| CommonCondition
|
|
@@ -767,16 +1152,132 @@ type Condition =
|
|
|
767
1152
|
| NetworkRequestCondition
|
|
768
1153
|
|
|
769
1154
|
const operators = {
|
|
770
|
-
is: (
|
|
1155
|
+
is: <span class="fstat-no" title="function not covered" >(v</span>al: string, target: string[]) => <span class="cstat-no" title="statement not covered" >target.includes(val),</span>
|
|
1156
|
+
isAny: <span class="fstat-no" title="function not covered" >() =</span>> <span class="cstat-no" title="statement not covered" >true,</span>
|
|
771
1157
|
isNot: <span class="fstat-no" title="function not covered" >(v</span>al: string, target: string[]) => <span class="cstat-no" title="statement not covered" >!target.includes(val),</span>
|
|
772
|
-
contains: (
|
|
1158
|
+
contains: <span class="fstat-no" title="function not covered" >(v</span>al: string, target: string[]) => <span class="cstat-no" title="statement not covered" >target.some(<span class="fstat-no" title="function not covered" >(t</span>) => <span class="cstat-no" title="statement not covered" >val.includes(t))</span>,</span>
|
|
773
1159
|
notContains: <span class="fstat-no" title="function not covered" >(v</span>al: string, target: string[]) => <span class="cstat-no" title="statement not covered" >!target.some(<span class="fstat-no" title="function not covered" >(t</span>) => <span class="cstat-no" title="statement not covered" >val.includes(t))</span>,</span>
|
|
774
1160
|
startsWith: <span class="fstat-no" title="function not covered" >(v</span>al: string, target: string[]) => <span class="cstat-no" title="statement not covered" >target.some(<span class="fstat-no" title="function not covered" >(t</span>) => <span class="cstat-no" title="statement not covered" >val.startsWith(t))</span>,</span>
|
|
775
1161
|
endsWith: <span class="fstat-no" title="function not covered" >(v</span>al: string, target: string[]) => <span class="cstat-no" title="statement not covered" >target.some(<span class="fstat-no" title="function not covered" >(t</span>) => <span class="cstat-no" title="statement not covered" >val.endsWith(t))</span>,</span>
|
|
776
|
-
|
|
777
|
-
|
|
1162
|
+
greaterThan: <span class="fstat-no" title="function not covered" >(v</span>al: number, target: number) => <span class="cstat-no" title="statement not covered" >val > target,</span>
|
|
1163
|
+
greaterOrEqual: <span class="fstat-no" title="function not covered" >(v</span>al: number, target: number) => <span class="cstat-no" title="statement not covered" >val >= target,</span>
|
|
1164
|
+
lessOrEqual: <span class="fstat-no" title="function not covered" >(v</span>al: number, target: number) => <span class="cstat-no" title="statement not covered" >val <= target,</span>
|
|
778
1165
|
lessThan: <span class="fstat-no" title="function not covered" >(v</span>al: number, target: number) => <span class="cstat-no" title="statement not covered" >val < target,</span>
|
|
779
1166
|
}
|
|
1167
|
+
|
|
1168
|
+
const mapCondition = <span class="fstat-no" title="function not covered" >(c</span>ondition: Filter): Condition => {
|
|
1169
|
+
const opMap = <span class="cstat-no" title="statement not covered" >{</span>
|
|
1170
|
+
on: 'is',
|
|
1171
|
+
notOn: 'isNot',
|
|
1172
|
+
'\u003e': 'greaterThan',
|
|
1173
|
+
'\u003c': 'lessThan',
|
|
1174
|
+
'\u003d': 'is',
|
|
1175
|
+
'\u003c=': 'lessOrEqual',
|
|
1176
|
+
'\u003e=': 'greaterOrEqual',
|
|
1177
|
+
}
|
|
1178
|
+
|
|
1179
|
+
const mapOperator = <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >(o</span>perator: string) => {</span>
|
|
1180
|
+
const keys = <span class="cstat-no" title="statement not covered" >Object.keys(opMap)</span>
|
|
1181
|
+
// @ts-ignore
|
|
1182
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (keys.includes(operator)) <span class="cstat-no" title="statement not covered" >return opMap[operator]</span></span>
|
|
1183
|
+
}
|
|
1184
|
+
|
|
1185
|
+
let con = <span class="cstat-no" title="statement not covered" >{</span>
|
|
1186
|
+
type: '',
|
|
1187
|
+
operator: '',
|
|
1188
|
+
value: condition.value,
|
|
1189
|
+
key: '',
|
|
1190
|
+
}
|
|
1191
|
+
<span class="cstat-no" title="statement not covered" > switch (condition.type) {</span>
|
|
1192
|
+
case 'click':
|
|
1193
|
+
<span class="cstat-no" title="statement not covered" > con = {</span>
|
|
1194
|
+
type: 'click',
|
|
1195
|
+
operator: mapOperator(condition.operator),
|
|
1196
|
+
value: condition.value,
|
|
1197
|
+
key: '',
|
|
1198
|
+
}
|
|
1199
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
1200
|
+
case 'location':
|
|
1201
|
+
<span class="cstat-no" title="statement not covered" > con = {</span>
|
|
1202
|
+
type: 'visited_url',
|
|
1203
|
+
// @ts-ignore
|
|
1204
|
+
operator: condition.operator,
|
|
1205
|
+
value: condition.value,
|
|
1206
|
+
key: '',
|
|
1207
|
+
}
|
|
1208
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
1209
|
+
case 'custom':
|
|
1210
|
+
<span class="cstat-no" title="statement not covered" > con = {</span>
|
|
1211
|
+
type: 'custom_event',
|
|
1212
|
+
// @ts-ignore
|
|
1213
|
+
operator: condition.operator,
|
|
1214
|
+
value: condition.value,
|
|
1215
|
+
key: '',
|
|
1216
|
+
}
|
|
1217
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
1218
|
+
case 'metadata':
|
|
1219
|
+
<span class="cstat-no" title="statement not covered" > con = {</span>
|
|
1220
|
+
// @ts-ignore
|
|
1221
|
+
type: condition.source === 'featureFlag' ? 'feature_flag' : condition.type,
|
|
1222
|
+
// @ts-ignore
|
|
1223
|
+
operator: condition.operator,
|
|
1224
|
+
value: condition.value,
|
|
1225
|
+
key: '',
|
|
1226
|
+
}
|
|
1227
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
1228
|
+
case 'error':
|
|
1229
|
+
<span class="cstat-no" title="statement not covered" > con = {</span>
|
|
1230
|
+
type: 'exception',
|
|
1231
|
+
// @ts-ignore
|
|
1232
|
+
operator: condition.operator,
|
|
1233
|
+
value: condition.value,
|
|
1234
|
+
key: '',
|
|
1235
|
+
}
|
|
1236
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
1237
|
+
case 'duration':
|
|
1238
|
+
<span class="cstat-no" title="statement not covered" > con = {</span>
|
|
1239
|
+
type: 'session_duration',
|
|
1240
|
+
// @ts-ignore
|
|
1241
|
+
value: condition.value[0],
|
|
1242
|
+
key: '',
|
|
1243
|
+
}
|
|
1244
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
1245
|
+
case 'fetchUrl':
|
|
1246
|
+
<span class="cstat-no" title="statement not covered" > con = {</span>
|
|
1247
|
+
type: 'network_request',
|
|
1248
|
+
key: 'url',
|
|
1249
|
+
operator: condition.operator,
|
|
1250
|
+
value: condition.value,
|
|
1251
|
+
}
|
|
1252
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
1253
|
+
case 'fetchStatusCode':
|
|
1254
|
+
<span class="cstat-no" title="statement not covered" > con = {</span>
|
|
1255
|
+
type: 'network_request',
|
|
1256
|
+
key: 'status',
|
|
1257
|
+
operator: mapOperator(condition.operator),
|
|
1258
|
+
value: condition.value,
|
|
1259
|
+
}
|
|
1260
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
1261
|
+
case 'fetchMethod':
|
|
1262
|
+
<span class="cstat-no" title="statement not covered" > con = {</span>
|
|
1263
|
+
type: 'network_request',
|
|
1264
|
+
key: 'method',
|
|
1265
|
+
operator: mapOperator(condition.operator),
|
|
1266
|
+
value: condition.value,
|
|
1267
|
+
}
|
|
1268
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
1269
|
+
case 'fetchDuration':
|
|
1270
|
+
<span class="cstat-no" title="statement not covered" > con = {</span>
|
|
1271
|
+
type: 'network_request',
|
|
1272
|
+
key: 'duration',
|
|
1273
|
+
operator: mapOperator(condition.operator),
|
|
1274
|
+
value: condition.value,
|
|
1275
|
+
}
|
|
1276
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
1277
|
+
}
|
|
1278
|
+
// @ts-ignore
|
|
1279
|
+
<span class="cstat-no" title="statement not covered" > return con</span>
|
|
1280
|
+
}
|
|
780
1281
|
</pre></td></tr></table></pre>
|
|
781
1282
|
|
|
782
1283
|
<div class='push'></div><!-- for sticky footer -->
|
|
@@ -784,7 +1285,7 @@ const operators = {
|
|
|
784
1285
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
785
1286
|
Code coverage generated by
|
|
786
1287
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
787
|
-
at 2023-12-
|
|
1288
|
+
at 2023-12-21T16:07:43.444Z
|
|
788
1289
|
</div>
|
|
789
1290
|
<script src="../../prettify.js"></script>
|
|
790
1291
|
<script>
|