@adaptivestone/framework 4.8.0 → 4.8.1

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 (74) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/commands/migration/Create.js +4 -3
  3. package/coverage/clover.xml +2820 -2789
  4. package/coverage/coverage-final.json +43 -43
  5. package/coverage/framework/config/auth.js.html +6 -6
  6. package/coverage/framework/config/http.js.html +10 -10
  7. package/coverage/framework/config/i18n.js.html +13 -13
  8. package/coverage/framework/config/index.html +1 -1
  9. package/coverage/framework/config/log.js.html +23 -23
  10. package/coverage/framework/config/mail.js.html +30 -30
  11. package/coverage/framework/config/mongo.js.html +4 -4
  12. package/coverage/framework/config/rateLimiter.js.html +17 -17
  13. package/coverage/framework/config/redis.js.html +5 -5
  14. package/coverage/framework/config/validate.js.html +4 -4
  15. package/coverage/framework/controllers/Auth.js.html +90 -90
  16. package/coverage/framework/controllers/Home.js.html +39 -39
  17. package/coverage/framework/controllers/index.html +17 -17
  18. package/coverage/framework/controllers/index.js.html +54 -54
  19. package/coverage/framework/controllers/test/SomeController.js.html +106 -106
  20. package/coverage/framework/controllers/test/index.html +19 -19
  21. package/coverage/framework/helpers/files.js.html +66 -66
  22. package/coverage/framework/helpers/index.html +1 -1
  23. package/coverage/framework/helpers/logger.js.html +14 -14
  24. package/coverage/framework/helpers/redis/clearNamespace.js.html +28 -28
  25. package/coverage/framework/helpers/redis/index.html +17 -17
  26. package/coverage/framework/index.html +19 -19
  27. package/coverage/framework/models/Migration.js.html +16 -16
  28. package/coverage/framework/models/Sequence.js.html +39 -39
  29. package/coverage/framework/models/User.js.html +192 -192
  30. package/coverage/framework/models/index.html +28 -28
  31. package/coverage/framework/modules/AbstractController.js.html +478 -478
  32. package/coverage/framework/modules/AbstractModel.js.html +54 -54
  33. package/coverage/framework/modules/Base.js.html +52 -52
  34. package/coverage/framework/modules/index.html +21 -21
  35. package/coverage/framework/server.js.html +478 -385
  36. package/coverage/framework/services/cache/Cache.js.html +216 -216
  37. package/coverage/framework/services/cache/index.html +20 -20
  38. package/coverage/framework/services/documentation/DocumentationGenerator.js.html +17 -17
  39. package/coverage/framework/services/documentation/index.html +1 -1
  40. package/coverage/framework/services/http/HttpServer.js.html +90 -90
  41. package/coverage/framework/services/http/index.html +1 -1
  42. package/coverage/framework/services/http/middleware/AbstractMiddleware.js.html +60 -60
  43. package/coverage/framework/services/http/middleware/Auth.js.html +16 -16
  44. package/coverage/framework/services/http/middleware/GetUserByToken.js.html +60 -60
  45. package/coverage/framework/services/http/middleware/I18n.js.html +129 -129
  46. package/coverage/framework/services/http/middleware/Pagination.js.html +95 -95
  47. package/coverage/framework/services/http/middleware/PrepareAppInfo.js.html +27 -27
  48. package/coverage/framework/services/http/middleware/RateLimiter.js.html +166 -166
  49. package/coverage/framework/services/http/middleware/RequestLogger.js.html +21 -21
  50. package/coverage/framework/services/http/middleware/RequestParser.js.html +47 -47
  51. package/coverage/framework/services/http/middleware/Role.js.html +55 -55
  52. package/coverage/framework/services/http/middleware/index.html +99 -99
  53. package/coverage/framework/services/http/middleware/test/CheckFlag.js.html +36 -36
  54. package/coverage/framework/services/http/middleware/test/index.html +19 -19
  55. package/coverage/framework/services/messaging/email/index.html +1 -1
  56. package/coverage/framework/services/messaging/email/index.js.html +67 -67
  57. package/coverage/framework/services/messaging/index.html +1 -1
  58. package/coverage/framework/services/messaging/index.js.html +6 -6
  59. package/coverage/framework/services/validate/ValidateService.js.html +202 -202
  60. package/coverage/framework/services/validate/drivers/AbstractValidator.js.html +24 -24
  61. package/coverage/framework/services/validate/drivers/CustomValidator.js.html +14 -14
  62. package/coverage/framework/services/validate/drivers/YupValidator.js.html +55 -55
  63. package/coverage/framework/services/validate/drivers/index.html +1 -1
  64. package/coverage/framework/services/validate/index.html +21 -21
  65. package/coverage/index.html +110 -110
  66. package/models/User.test.js +3 -3
  67. package/package.json +2 -1
  68. package/server.d.ts +9 -1
  69. package/server.js +50 -19
  70. package/services/http/middleware/I18n.test.js +1 -1
  71. package/services/http/middleware/RateLimiter.test.js +7 -7
  72. package/services/validate/ValidateService.test.js +3 -3
  73. package/tests/setup.js +3 -1
  74. package/tests/setupVitest.js +3 -5
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">53.92% </span>
26
+ <span class="strong">82.59% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>220/408</span>
28
+ <span class='fraction'>337/408</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">71.64% </span>
33
+ <span class="strong">78.26% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>48/67</span>
35
+ <span class='fraction'>36/46</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">81.25% </span>
40
+ <span class="strong">66.66% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>13/16</span>
42
+ <span class='fraction'>6/9</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">53.92% </span>
47
+ <span class="strong">82.59% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>220/408</span>
49
+ <span class='fraction'>337/408</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 medium'></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>
@@ -471,75 +471,7 @@
471
471
  <a name='L406'></a><a href='#L406'>406</a>
472
472
  <a name='L407'></a><a href='#L407'>407</a>
473
473
  <a name='L408'></a><a href='#L408'>408</a>
474
- <a name='L409'></a><a href='#L409'>409</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">15x</span>
475
- <span class="cline-any cline-yes">15x</span>
476
- <span class="cline-any cline-yes">15x</span>
477
- <span class="cline-any cline-yes">15x</span>
478
- <span class="cline-any cline-yes">15x</span>
479
- <span class="cline-any cline-yes">15x</span>
480
- <span class="cline-any cline-yes">15x</span>
481
- <span class="cline-any cline-yes">15x</span>
482
- <span class="cline-any cline-yes">15x</span>
483
- <span class="cline-any cline-yes">15x</span>
484
- <span class="cline-any cline-yes">15x</span>
485
- <span class="cline-any cline-yes">15x</span>
486
- <span class="cline-any cline-yes">15x</span>
487
- <span class="cline-any cline-yes">46x</span>
488
- <span class="cline-any cline-yes">46x</span>
489
- <span class="cline-any cline-yes">46x</span>
490
- <span class="cline-any cline-yes">46x</span>
491
- <span class="cline-any cline-yes">1x</span>
492
- <span class="cline-any cline-yes">1x</span>
493
- <span class="cline-any cline-yes">1x</span>
494
- <span class="cline-any cline-yes">1x</span>
495
- <span class="cline-any cline-yes">1x</span>
496
- <span class="cline-any cline-yes">1x</span>
497
- <span class="cline-any cline-yes">1x</span>
498
- <span class="cline-any cline-yes">1x</span>
499
- <span class="cline-any cline-yes">1x</span>
500
- <span class="cline-any cline-yes">1x</span>
501
- <span class="cline-any cline-no">&nbsp;</span>
502
- <span class="cline-any cline-no">&nbsp;</span>
503
- <span class="cline-any cline-no">&nbsp;</span>
504
- <span class="cline-any cline-yes">94x</span>
505
- <span class="cline-any cline-yes">94x</span>
506
- <span class="cline-any cline-yes">94x</span>
507
- <span class="cline-any cline-yes">94x</span>
508
- <span class="cline-any cline-yes">94x</span>
509
- <span class="cline-any cline-yes">280x</span>
510
- <span class="cline-any cline-yes">280x</span>
511
- <span class="cline-any cline-yes">80x</span>
512
- <span class="cline-any cline-no">&nbsp;</span>
513
- <span class="cline-any cline-no">&nbsp;</span>
514
- <span class="cline-any cline-no">&nbsp;</span>
515
- <span class="cline-any cline-no">&nbsp;</span>
516
- <span class="cline-any cline-no">&nbsp;</span>
517
- <span class="cline-any cline-no">&nbsp;</span>
518
- <span class="cline-any cline-no">&nbsp;</span>
519
- <span class="cline-any cline-no">&nbsp;</span>
520
- <span class="cline-any cline-no">&nbsp;</span>
521
- <span class="cline-any cline-no">&nbsp;</span>
522
- <span class="cline-any cline-no">&nbsp;</span>
523
- <span class="cline-any cline-no">&nbsp;</span>
524
- <span class="cline-any cline-no">&nbsp;</span>
525
- <span class="cline-any cline-no">&nbsp;</span>
526
- <span class="cline-any cline-yes">1x</span>
527
- <span class="cline-any cline-yes">1x</span>
528
- <span class="cline-any cline-yes">1x</span>
529
- <span class="cline-any cline-yes">1x</span>
530
- <span class="cline-any cline-yes">1x</span>
531
- <span class="cline-any cline-yes">1x</span>
532
- <span class="cline-any cline-yes">1x</span>
533
- <span class="cline-any cline-yes">1x</span>
534
- <span class="cline-any cline-yes">1x</span>
535
- <span class="cline-any cline-yes">1x</span>
536
- <span class="cline-any cline-yes">1x</span>
537
- <span class="cline-any cline-yes">1x</span>
538
- <span class="cline-any cline-yes">1x</span>
539
- <span class="cline-any cline-yes">1x</span>
540
- <span class="cline-any cline-yes">1x</span>
541
- <span class="cline-any cline-yes">1x</span>
542
- <span class="cline-any cline-yes">1x</span>
474
+ <a name='L409'></a><a href='#L409'>409</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
543
475
  <span class="cline-any cline-yes">2x</span>
544
476
  <span class="cline-any cline-yes">2x</span>
545
477
  <span class="cline-any cline-yes">2x</span>
@@ -548,106 +480,217 @@
548
480
  <span class="cline-any cline-yes">2x</span>
549
481
  <span class="cline-any cline-yes">2x</span>
550
482
  <span class="cline-any cline-yes">2x</span>
551
- <span class="cline-any cline-yes">1x</span>
552
- <span class="cline-any cline-yes">1x</span>
553
- <span class="cline-any cline-yes">1x</span>
554
- <span class="cline-any cline-yes">1x</span>
555
- <span class="cline-any cline-yes">1x</span>
556
- <span class="cline-any cline-no">&nbsp;</span>
557
- <span class="cline-any cline-no">&nbsp;</span>
558
- <span class="cline-any cline-no">&nbsp;</span>
559
- <span class="cline-any cline-no">&nbsp;</span>
560
- <span class="cline-any cline-no">&nbsp;</span>
561
- <span class="cline-any cline-yes">1120x</span>
562
- <span class="cline-any cline-yes">112x</span>
563
- <span class="cline-any cline-no">&nbsp;</span>
564
- <span class="cline-any cline-no">&nbsp;</span>
565
- <span class="cline-any cline-no">&nbsp;</span>
566
- <span class="cline-any cline-no">&nbsp;</span>
567
- <span class="cline-any cline-no">&nbsp;</span>
568
- <span class="cline-any cline-no">&nbsp;</span>
569
- <span class="cline-any cline-no">&nbsp;</span>
570
- <span class="cline-any cline-no">&nbsp;</span>
571
- <span class="cline-any cline-no">&nbsp;</span>
572
- <span class="cline-any cline-no">&nbsp;</span>
573
- <span class="cline-any cline-no">&nbsp;</span>
574
- <span class="cline-any cline-no">&nbsp;</span>
575
- <span class="cline-any cline-no">&nbsp;</span>
576
- <span class="cline-any cline-no">&nbsp;</span>
577
- <span class="cline-any cline-no">&nbsp;</span>
578
- <span class="cline-any cline-no">&nbsp;</span>
579
- <span class="cline-any cline-no">&nbsp;</span>
580
- <span class="cline-any cline-no">&nbsp;</span>
581
- <span class="cline-any cline-no">&nbsp;</span>
582
- <span class="cline-any cline-no">&nbsp;</span>
583
- <span class="cline-any cline-no">&nbsp;</span>
584
- <span class="cline-any cline-no">&nbsp;</span>
585
- <span class="cline-any cline-no">&nbsp;</span>
586
- <span class="cline-any cline-no">&nbsp;</span>
587
- <span class="cline-any cline-no">&nbsp;</span>
588
- <span class="cline-any cline-no">&nbsp;</span>
589
- <span class="cline-any cline-no">&nbsp;</span>
590
- <span class="cline-any cline-no">&nbsp;</span>
591
- <span class="cline-any cline-no">&nbsp;</span>
592
- <span class="cline-any cline-no">&nbsp;</span>
593
- <span class="cline-any cline-no">&nbsp;</span>
594
- <span class="cline-any cline-no">&nbsp;</span>
595
- <span class="cline-any cline-no">&nbsp;</span>
596
- <span class="cline-any cline-no">&nbsp;</span>
597
- <span class="cline-any cline-no">&nbsp;</span>
598
- <span class="cline-any cline-no">&nbsp;</span>
599
- <span class="cline-any cline-no">&nbsp;</span>
600
- <span class="cline-any cline-no">&nbsp;</span>
601
- <span class="cline-any cline-no">&nbsp;</span>
602
- <span class="cline-any cline-no">&nbsp;</span>
603
- <span class="cline-any cline-no">&nbsp;</span>
604
- <span class="cline-any cline-no">&nbsp;</span>
605
- <span class="cline-any cline-no">&nbsp;</span>
606
- <span class="cline-any cline-no">&nbsp;</span>
607
- <span class="cline-any cline-no">&nbsp;</span>
608
- <span class="cline-any cline-no">&nbsp;</span>
609
- <span class="cline-any cline-no">&nbsp;</span>
610
- <span class="cline-any cline-no">&nbsp;</span>
611
- <span class="cline-any cline-no">&nbsp;</span>
612
- <span class="cline-any cline-no">&nbsp;</span>
613
- <span class="cline-any cline-no">&nbsp;</span>
614
- <span class="cline-any cline-yes">112x</span>
615
- <span class="cline-any cline-yes">112x</span>
616
- <span class="cline-any cline-no">&nbsp;</span>
617
- <span class="cline-any cline-no">&nbsp;</span>
618
- <span class="cline-any cline-no">&nbsp;</span>
619
- <span class="cline-any cline-no">&nbsp;</span>
620
- <span class="cline-any cline-yes">48x</span>
621
- <span class="cline-any cline-yes">48x</span>
622
- <span class="cline-any cline-yes">48x</span>
623
- <span class="cline-any cline-yes">48x</span>
624
- <span class="cline-any cline-yes">48x</span>
625
- <span class="cline-any cline-yes">48x</span>
626
- <span class="cline-any cline-yes">48x</span>
627
- <span class="cline-any cline-no">&nbsp;</span>
628
- <span class="cline-any cline-no">&nbsp;</span>
629
- <span class="cline-any cline-no">&nbsp;</span>
630
- <span class="cline-any cline-no">&nbsp;</span>
631
- <span class="cline-any cline-no">&nbsp;</span>
632
- <span class="cline-any cline-no">&nbsp;</span>
633
- <span class="cline-any cline-no">&nbsp;</span>
634
- <span class="cline-any cline-no">&nbsp;</span>
635
- <span class="cline-any cline-no">&nbsp;</span>
636
- <span class="cline-any cline-no">&nbsp;</span>
637
- <span class="cline-any cline-no">&nbsp;</span>
638
- <span class="cline-any cline-no">&nbsp;</span>
639
- <span class="cline-any cline-no">&nbsp;</span>
640
- <span class="cline-any cline-no">&nbsp;</span>
641
- <span class="cline-any cline-no">&nbsp;</span>
642
- <span class="cline-any cline-no">&nbsp;</span>
643
- <span class="cline-any cline-no">&nbsp;</span>
644
- <span class="cline-any cline-no">&nbsp;</span>
483
+ <span class="cline-any cline-yes">2x</span>
484
+ <span class="cline-any cline-yes">2x</span>
485
+ <span class="cline-any cline-yes">2x</span>
486
+ <span class="cline-any cline-yes">2x</span>
487
+ <span class="cline-any cline-yes">2x</span>
488
+ <span class="cline-any cline-yes">2x</span>
489
+ <span class="cline-any cline-yes">2x</span>
490
+ <span class="cline-any cline-yes">2x</span>
491
+ <span class="cline-any cline-yes">6x</span>
492
+ <span class="cline-any cline-yes">6x</span>
493
+ <span class="cline-any cline-yes">6x</span>
494
+ <span class="cline-any cline-yes">6x</span>
495
+ <span class="cline-any cline-yes">6x</span>
496
+ <span class="cline-any cline-yes">6x</span>
497
+ <span class="cline-any cline-yes">6x</span>
498
+ <span class="cline-any cline-yes">6x</span>
499
+ <span class="cline-any cline-yes">6x</span>
500
+ <span class="cline-any cline-yes">6x</span>
501
+ <span class="cline-any cline-no">&nbsp;</span>
502
+ <span class="cline-any cline-no">&nbsp;</span>
503
+ <span class="cline-any cline-no">&nbsp;</span>
504
+ <span class="cline-any cline-no">&nbsp;</span>
505
+ <span class="cline-any cline-no">&nbsp;</span>
506
+ <span class="cline-any cline-yes">6x</span>
507
+ <span class="cline-any cline-yes">6x</span>
508
+ <span class="cline-any cline-yes">6x</span>
509
+ <span class="cline-any cline-yes">6x</span>
510
+ <span class="cline-any cline-yes">6x</span>
511
+ <span class="cline-any cline-yes">6x</span>
512
+ <span class="cline-any cline-yes">12x</span>
513
+ <span class="cline-any cline-yes">36x</span>
514
+ <span class="cline-any cline-yes">10x</span>
515
+ <span class="cline-any cline-yes">10x</span>
516
+ <span class="cline-any cline-yes">10x</span>
517
+ <span class="cline-any cline-yes">10x</span>
518
+ <span class="cline-any cline-yes">10x</span>
519
+ <span class="cline-any cline-yes">10x</span>
520
+ <span class="cline-any cline-yes">10x</span>
521
+ <span class="cline-any cline-yes">10x</span>
522
+ <span class="cline-any cline-yes">10x</span>
523
+ <span class="cline-any cline-yes">10x</span>
524
+ <span class="cline-any cline-yes">10x</span>
525
+ <span class="cline-any cline-yes">12x</span>
526
+ <span class="cline-any cline-yes">6x</span>
527
+ <span class="cline-any cline-yes">6x</span>
528
+ <span class="cline-any cline-yes">6x</span>
529
+ <span class="cline-any cline-yes">6x</span>
530
+ <span class="cline-any cline-yes">6x</span>
531
+ <span class="cline-any cline-yes">6x</span>
532
+ <span class="cline-any cline-yes">6x</span>
533
+ <span class="cline-any cline-yes">6x</span>
534
+ <span class="cline-any cline-yes">6x</span>
535
+ <span class="cline-any cline-yes">6x</span>
536
+ <span class="cline-any cline-yes">6x</span>
537
+ <span class="cline-any cline-yes">6x</span>
538
+ <span class="cline-any cline-yes">6x</span>
539
+ <span class="cline-any cline-yes">6x</span>
540
+ <span class="cline-any cline-yes">6x</span>
541
+ <span class="cline-any cline-yes">6x</span>
542
+ <span class="cline-any cline-yes">6x</span>
543
+ <span class="cline-any cline-yes">14x</span>
544
+ <span class="cline-any cline-yes">14x</span>
545
+ <span class="cline-any cline-yes">14x</span>
546
+ <span class="cline-any cline-yes">14x</span>
547
+ <span class="cline-any cline-yes">14x</span>
548
+ <span class="cline-any cline-yes">14x</span>
549
+ <span class="cline-any cline-yes">14x</span>
550
+ <span class="cline-any cline-yes">14x</span>
551
+ <span class="cline-any cline-yes">6x</span>
552
+ <span class="cline-any cline-yes">6x</span>
553
+ <span class="cline-any cline-yes">6x</span>
554
+ <span class="cline-any cline-yes">6x</span>
555
+ <span class="cline-any cline-yes">6x</span>
556
+ <span class="cline-any cline-yes">12x</span>
557
+ <span class="cline-any cline-no">&nbsp;</span>
558
+ <span class="cline-any cline-no">&nbsp;</span>
559
+ <span class="cline-any cline-no">&nbsp;</span>
560
+ <span class="cline-any cline-no">&nbsp;</span>
561
+ <span class="cline-any cline-no">&nbsp;</span>
562
+ <span class="cline-any cline-no">&nbsp;</span>
563
+ <span class="cline-any cline-yes">12x</span>
564
+ <span class="cline-any cline-yes">36x</span>
565
+ <span class="cline-any cline-yes">36x</span>
566
+ <span class="cline-any cline-yes">36x</span>
567
+ <span class="cline-any cline-yes">36x</span>
568
+ <span class="cline-any cline-yes">36x</span>
569
+ <span class="cline-any cline-yes">36x</span>
570
+ <span class="cline-any cline-yes">36x</span>
571
+ <span class="cline-any cline-yes">6x</span>
572
+ <span class="cline-any cline-yes">6x</span>
573
+ <span class="cline-any cline-yes">6x</span>
574
+ <span class="cline-any cline-yes">6x</span>
575
+ <span class="cline-any cline-yes">6x</span>
576
+ <span class="cline-any cline-yes">6x</span>
577
+ <span class="cline-any cline-yes">6x</span>
578
+ <span class="cline-any cline-yes">6x</span>
579
+ <span class="cline-any cline-no">&nbsp;</span>
580
+ <span class="cline-any cline-no">&nbsp;</span>
581
+ <span class="cline-any cline-no">&nbsp;</span>
582
+ <span class="cline-any cline-no">&nbsp;</span>
583
+ <span class="cline-any cline-no">&nbsp;</span>
584
+ <span class="cline-any cline-no">&nbsp;</span>
585
+ <span class="cline-any cline-no">&nbsp;</span>
586
+ <span class="cline-any cline-no">&nbsp;</span>
587
+ <span class="cline-any cline-yes">6x</span>
588
+ <span class="cline-any cline-yes">36x</span>
589
+ <span class="cline-any cline-yes">36x</span>
590
+ <span class="cline-any cline-yes">36x</span>
591
+ <span class="cline-any cline-yes">36x</span>
592
+ <span class="cline-any cline-yes">36x</span>
593
+ <span class="cline-any cline-yes">36x</span>
594
+ <span class="cline-any cline-yes">36x</span>
595
+ <span class="cline-any cline-yes">36x</span>
596
+ <span class="cline-any cline-yes">36x</span>
597
+ <span class="cline-any cline-yes">36x</span>
598
+ <span class="cline-any cline-yes">36x</span>
599
+ <span class="cline-any cline-yes">36x</span>
600
+ <span class="cline-any cline-yes">36x</span>
601
+ <span class="cline-any cline-yes">36x</span>
602
+ <span class="cline-any cline-yes">36x</span>
603
+ <span class="cline-any cline-yes">36x</span>
604
+ <span class="cline-any cline-yes">36x</span>
605
+ <span class="cline-any cline-yes">36x</span>
606
+ <span class="cline-any cline-yes">36x</span>
607
+ <span class="cline-any cline-yes">36x</span>
608
+ <span class="cline-any cline-yes">36x</span>
609
+ <span class="cline-any cline-yes">36x</span>
610
+ <span class="cline-any cline-yes">36x</span>
611
+ <span class="cline-any cline-yes">36x</span>
612
+ <span class="cline-any cline-yes">36x</span>
613
+ <span class="cline-any cline-yes">36x</span>
614
+ <span class="cline-any cline-yes">36x</span>
615
+ <span class="cline-any cline-yes">36x</span>
616
+ <span class="cline-any cline-yes">10x</span>
617
+ <span class="cline-any cline-yes">10x</span>
618
+ <span class="cline-any cline-yes">10x</span>
619
+ <span class="cline-any cline-yes">10x</span>
620
+ <span class="cline-any cline-yes">10x</span>
621
+ <span class="cline-any cline-yes">10x</span>
622
+ <span class="cline-any cline-yes">36x</span>
623
+ <span class="cline-any cline-yes">36x</span>
624
+ <span class="cline-any cline-yes">36x</span>
625
+ <span class="cline-any cline-yes">36x</span>
626
+ <span class="cline-any cline-yes">36x</span>
627
+ <span class="cline-any cline-yes">29x</span>
628
+ <span class="cline-any cline-yes">29x</span>
629
+ <span class="cline-any cline-yes">29x</span>
630
+ <span class="cline-any cline-yes">29x</span>
631
+ <span class="cline-any cline-yes">29x</span>
632
+ <span class="cline-any cline-yes">29x</span>
633
+ <span class="cline-any cline-yes">29x</span>
634
+ <span class="cline-any cline-yes">29x</span>
635
+ <span class="cline-any cline-yes">29x</span>
636
+ <span class="cline-any cline-yes">29x</span>
637
+ <span class="cline-any cline-yes">29x</span>
638
+ <span class="cline-any cline-yes">29x</span>
639
+ <span class="cline-any cline-yes">29x</span>
640
+ <span class="cline-any cline-yes">29x</span>
641
+ <span class="cline-any cline-yes">29x</span>
642
+ <span class="cline-any cline-yes">29x</span>
643
+ <span class="cline-any cline-yes">29x</span>
644
+ <span class="cline-any cline-yes">29x</span>
645
+ <span class="cline-any cline-yes">29x</span>
646
+ <span class="cline-any cline-yes">29x</span>
647
+ <span class="cline-any cline-yes">29x</span>
648
+ <span class="cline-any cline-yes">28x</span>
649
+ <span class="cline-any cline-yes">28x</span>
650
+ <span class="cline-any cline-yes">29x</span>
651
+ <span class="cline-any cline-yes">29x</span>
652
+ <span class="cline-any cline-yes">29x</span>
653
+ <span class="cline-any cline-yes">29x</span>
654
+ <span class="cline-any cline-yes">29x</span>
655
+ <span class="cline-any cline-yes">29x</span>
656
+ <span class="cline-any cline-yes">29x</span>
657
+ <span class="cline-any cline-yes">29x</span>
658
+ <span class="cline-any cline-yes">29x</span>
659
+ <span class="cline-any cline-yes">29x</span>
660
+ <span class="cline-any cline-yes">29x</span>
661
+ <span class="cline-any cline-yes">29x</span>
662
+ <span class="cline-any cline-yes">29x</span>
663
+ <span class="cline-any cline-yes">29x</span>
664
+ <span class="cline-any cline-yes">1x</span>
665
+ <span class="cline-any cline-yes">1x</span>
666
+ <span class="cline-any cline-yes">1x</span>
667
+ <span class="cline-any cline-yes">1x</span>
668
+ <span class="cline-any cline-yes">28x</span>
669
+ <span class="cline-any cline-yes">28x</span>
670
+ <span class="cline-any cline-no">&nbsp;</span>
671
+ <span class="cline-any cline-no">&nbsp;</span>
672
+ <span class="cline-any cline-no">&nbsp;</span>
673
+ <span class="cline-any cline-no">&nbsp;</span>
674
+ <span class="cline-any cline-yes">28x</span>
675
+ <span class="cline-any cline-yes">28x</span>
676
+ <span class="cline-any cline-yes">28x</span>
677
+ <span class="cline-any cline-yes">28x</span>
678
+ <span class="cline-any cline-yes">2x</span>
679
+ <span class="cline-any cline-yes">2x</span>
680
+ <span class="cline-any cline-yes">2x</span>
681
+ <span class="cline-any cline-yes">2x</span>
682
+ <span class="cline-any cline-yes">28x</span>
683
+ <span class="cline-any cline-yes">28x</span>
684
+ <span class="cline-any cline-yes">28x</span>
685
+ <span class="cline-any cline-yes">29x</span>
645
686
  <span class="cline-any cline-no">&nbsp;</span>
646
687
  <span class="cline-any cline-no">&nbsp;</span>
647
688
  <span class="cline-any cline-no">&nbsp;</span>
648
689
  <span class="cline-any cline-no">&nbsp;</span>
649
690
  <span class="cline-any cline-no">&nbsp;</span>
650
691
  <span class="cline-any cline-no">&nbsp;</span>
692
+ <span class="cline-any cline-yes">28x</span>
693
+ <span class="cline-any cline-yes">29x</span>
651
694
  <span class="cline-any cline-no">&nbsp;</span>
652
695
  <span class="cline-any cline-no">&nbsp;</span>
653
696
  <span class="cline-any cline-no">&nbsp;</span>
@@ -656,11 +699,48 @@
656
699
  <span class="cline-any cline-no">&nbsp;</span>
657
700
  <span class="cline-any cline-no">&nbsp;</span>
658
701
  <span class="cline-any cline-no">&nbsp;</span>
702
+ <span class="cline-any cline-yes">28x</span>
659
703
  <span class="cline-any cline-no">&nbsp;</span>
660
704
  <span class="cline-any cline-no">&nbsp;</span>
661
705
  <span class="cline-any cline-no">&nbsp;</span>
662
706
  <span class="cline-any cline-no">&nbsp;</span>
663
707
  <span class="cline-any cline-no">&nbsp;</span>
708
+ <span class="cline-any cline-yes">28x</span>
709
+ <span class="cline-any cline-yes">36x</span>
710
+ <span class="cline-any cline-yes">36x</span>
711
+ <span class="cline-any cline-yes">36x</span>
712
+ <span class="cline-any cline-yes">12x</span>
713
+ <span class="cline-any cline-yes">6x</span>
714
+ <span class="cline-any cline-yes">6x</span>
715
+ <span class="cline-any cline-yes">6x</span>
716
+ <span class="cline-any cline-yes">6x</span>
717
+ <span class="cline-any cline-yes">6x</span>
718
+ <span class="cline-any cline-yes">6x</span>
719
+ <span class="cline-any cline-yes">6x</span>
720
+ <span class="cline-any cline-yes">6x</span>
721
+ <span class="cline-any cline-yes">6x</span>
722
+ <span class="cline-any cline-yes">6x</span>
723
+ <span class="cline-any cline-yes">6x</span>
724
+ <span class="cline-any cline-yes">6x</span>
725
+ <span class="cline-any cline-yes">18x</span>
726
+ <span class="cline-any cline-yes">18x</span>
727
+ <span class="cline-any cline-yes">64x</span>
728
+ <span class="cline-any cline-yes">64x</span>
729
+ <span class="cline-any cline-yes">64x</span>
730
+ <span class="cline-any cline-yes">64x</span>
731
+ <span class="cline-any cline-yes">64x</span>
732
+ <span class="cline-any cline-yes">64x</span>
733
+ <span class="cline-any cline-yes">18x</span>
734
+ <span class="cline-any cline-yes">6x</span>
735
+ <span class="cline-any cline-yes">6x</span>
736
+ <span class="cline-any cline-yes">6x</span>
737
+ <span class="cline-any cline-yes">6x</span>
738
+ <span class="cline-any cline-yes">6x</span>
739
+ <span class="cline-any cline-yes">6x</span>
740
+ <span class="cline-any cline-yes">6x</span>
741
+ <span class="cline-any cline-yes">6x</span>
742
+ <span class="cline-any cline-yes">6x</span>
743
+ <span class="cline-any cline-yes">6x</span>
664
744
  <span class="cline-any cline-no">&nbsp;</span>
665
745
  <span class="cline-any cline-no">&nbsp;</span>
666
746
  <span class="cline-any cline-no">&nbsp;</span>
@@ -669,122 +749,90 @@
669
749
  <span class="cline-any cline-no">&nbsp;</span>
670
750
  <span class="cline-any cline-no">&nbsp;</span>
671
751
  <span class="cline-any cline-no">&nbsp;</span>
752
+ <span class="cline-any cline-yes">6x</span>
753
+ <span class="cline-any cline-yes">6x</span>
754
+ <span class="cline-any cline-yes">6x</span>
755
+ <span class="cline-any cline-yes">6x</span>
672
756
  <span class="cline-any cline-yes">2x</span>
673
757
  <span class="cline-any cline-yes">2x</span>
674
758
  <span class="cline-any cline-yes">2x</span>
675
759
  <span class="cline-any cline-yes">2x</span>
676
760
  <span class="cline-any cline-yes">2x</span>
677
- <span class="cline-any cline-yes">2x</span>
678
- <span class="cline-any cline-no">&nbsp;</span>
679
- <span class="cline-any cline-no">&nbsp;</span>
680
- <span class="cline-any cline-no">&nbsp;</span>
681
- <span class="cline-any cline-no">&nbsp;</span>
682
- <span class="cline-any cline-no">&nbsp;</span>
683
- <span class="cline-any cline-no">&nbsp;</span>
761
+ <span class="cline-any cline-yes">12x</span>
762
+ <span class="cline-any cline-yes">12x</span>
763
+ <span class="cline-any cline-yes">12x</span>
764
+ <span class="cline-any cline-yes">20x</span>
684
765
  <span class="cline-any cline-no">&nbsp;</span>
685
766
  <span class="cline-any cline-no">&nbsp;</span>
767
+ <span class="cline-any cline-yes">20x</span>
768
+ <span class="cline-any cline-yes">28x</span>
769
+ <span class="cline-any cline-yes">28x</span>
770
+ <span class="cline-any cline-yes">28x</span>
686
771
  <span class="cline-any cline-no">&nbsp;</span>
687
772
  <span class="cline-any cline-no">&nbsp;</span>
688
773
  <span class="cline-any cline-no">&nbsp;</span>
689
774
  <span class="cline-any cline-no">&nbsp;</span>
775
+ <span class="cline-any cline-yes">28x</span>
776
+ <span class="cline-any cline-yes">20x</span>
777
+ <span class="cline-any cline-yes">20x</span>
690
778
  <span class="cline-any cline-no">&nbsp;</span>
691
779
  <span class="cline-any cline-no">&nbsp;</span>
692
780
  <span class="cline-any cline-no">&nbsp;</span>
693
781
  <span class="cline-any cline-no">&nbsp;</span>
782
+ <span class="cline-any cline-yes">20x</span>
783
+ <span class="cline-any cline-yes">20x</span>
784
+ <span class="cline-any cline-yes">28x</span>
694
785
  <span class="cline-any cline-no">&nbsp;</span>
695
786
  <span class="cline-any cline-no">&nbsp;</span>
696
787
  <span class="cline-any cline-no">&nbsp;</span>
697
788
  <span class="cline-any cline-no">&nbsp;</span>
698
789
  <span class="cline-any cline-no">&nbsp;</span>
699
790
  <span class="cline-any cline-no">&nbsp;</span>
700
- <span class="cline-any cline-no">&nbsp;</span>
701
- <span class="cline-any cline-no">&nbsp;</span>
702
- <span class="cline-any cline-no">&nbsp;</span>
703
- <span class="cline-any cline-no">&nbsp;</span>
704
- <span class="cline-any cline-no">&nbsp;</span>
705
- <span class="cline-any cline-no">&nbsp;</span>
706
- <span class="cline-any cline-no">&nbsp;</span>
707
- <span class="cline-any cline-no">&nbsp;</span>
708
- <span class="cline-any cline-no">&nbsp;</span>
709
- <span class="cline-any cline-no">&nbsp;</span>
710
- <span class="cline-any cline-no">&nbsp;</span>
711
- <span class="cline-any cline-no">&nbsp;</span>
712
- <span class="cline-any cline-no">&nbsp;</span>
713
- <span class="cline-any cline-yes">1x</span>
714
- <span class="cline-any cline-yes">1x</span>
715
- <span class="cline-any cline-yes">1x</span>
716
- <span class="cline-any cline-yes">1x</span>
717
- <span class="cline-any cline-yes">1x</span>
718
- <span class="cline-any cline-yes">1x</span>
719
- <span class="cline-any cline-yes">1x</span>
720
- <span class="cline-any cline-yes">1x</span>
721
- <span class="cline-any cline-yes">1x</span>
722
- <span class="cline-any cline-yes">1x</span>
723
- <span class="cline-any cline-yes">1x</span>
724
- <span class="cline-any cline-yes">1x</span>
725
- <span class="cline-any cline-yes">3x</span>
726
- <span class="cline-any cline-yes">3x</span>
791
+ <span class="cline-any cline-yes">28x</span>
792
+ <span class="cline-any cline-yes">28x</span>
793
+ <span class="cline-any cline-yes">28x</span>
794
+ <span class="cline-any cline-yes">28x</span>
795
+ <span class="cline-any cline-yes">28x</span>
796
+ <span class="cline-any cline-yes">28x</span>
797
+ <span class="cline-any cline-yes">28x</span>
798
+ <span class="cline-any cline-yes">28x</span>
799
+ <span class="cline-any cline-yes">6x</span>
800
+ <span class="cline-any cline-yes">6x</span>
801
+ <span class="cline-any cline-yes">28x</span>
802
+ <span class="cline-any cline-yes">28x</span>
803
+ <span class="cline-any cline-yes">28x</span>
804
+ <span class="cline-any cline-yes">28x</span>
805
+ <span class="cline-any cline-yes">28x</span>
806
+ <span class="cline-any cline-yes">28x</span>
807
+ <span class="cline-any cline-yes">28x</span>
808
+ <span class="cline-any cline-yes">28x</span>
809
+ <span class="cline-any cline-yes">28x</span>
810
+ <span class="cline-any cline-yes">28x</span>
811
+ <span class="cline-any cline-yes">28x</span>
812
+ <span class="cline-any cline-yes">28x</span>
813
+ <span class="cline-any cline-yes">28x</span>
814
+ <span class="cline-any cline-yes">28x</span>
815
+ <span class="cline-any cline-yes">28x</span>
816
+ <span class="cline-any cline-yes">28x</span>
817
+ <span class="cline-any cline-yes">20x</span>
818
+ <span class="cline-any cline-yes">12x</span>
819
+ <span class="cline-any cline-yes">12x</span>
820
+ <span class="cline-any cline-yes">2x</span>
821
+ <span class="cline-any cline-yes">2x</span>
727
822
  <span class="cline-any cline-yes">2x</span>
728
823
  <span class="cline-any cline-yes">2x</span>
729
824
  <span class="cline-any cline-yes">2x</span>
730
825
  <span class="cline-any cline-yes">2x</span>
731
826
  <span class="cline-any cline-yes">2x</span>
732
827
  <span class="cline-any cline-yes">2x</span>
733
- <span class="cline-any cline-yes">3x</span>
734
- <span class="cline-any cline-yes">1x</span>
735
- <span class="cline-any cline-yes">1x</span>
736
- <span class="cline-any cline-yes">1x</span>
737
- <span class="cline-any cline-yes">1x</span>
738
- <span class="cline-any cline-yes">1x</span>
739
- <span class="cline-any cline-yes">1x</span>
740
- <span class="cline-any cline-yes">1x</span>
741
- <span class="cline-any cline-yes">1x</span>
742
- <span class="cline-any cline-yes">1x</span>
743
- <span class="cline-any cline-yes">1x</span>
744
- <span class="cline-any cline-no">&nbsp;</span>
745
- <span class="cline-any cline-no">&nbsp;</span>
746
- <span class="cline-any cline-no">&nbsp;</span>
747
- <span class="cline-any cline-no">&nbsp;</span>
748
- <span class="cline-any cline-no">&nbsp;</span>
749
- <span class="cline-any cline-no">&nbsp;</span>
750
- <span class="cline-any cline-yes">92x</span>
751
- <span class="cline-any cline-yes">92x</span>
752
- <span class="cline-any cline-yes">92x</span>
753
- <span class="cline-any cline-yes">92x</span>
754
- <span class="cline-any cline-yes">92x</span>
755
- <span class="cline-any cline-yes">92x</span>
756
- <span class="cline-any cline-yes">92x</span>
757
- <span class="cline-any cline-yes">92x</span>
758
- <span class="cline-any cline-yes">92x</span>
759
- <span class="cline-any cline-yes">158x</span>
760
- <span class="cline-any cline-yes">158x</span>
761
828
  <span class="cline-any cline-yes">2x</span>
762
829
  <span class="cline-any cline-yes">2x</span>
763
830
  <span class="cline-any cline-yes">2x</span>
764
- <span class="cline-any cline-yes">1x</span>
765
- <span class="cline-any cline-no">&nbsp;</span>
766
- <span class="cline-any cline-no">&nbsp;</span>
767
- <span class="cline-any cline-yes">1x</span>
768
831
  <span class="cline-any cline-yes">2x</span>
769
832
  <span class="cline-any cline-yes">2x</span>
770
833
  <span class="cline-any cline-yes">2x</span>
771
- <span class="cline-any cline-no">&nbsp;</span>
772
- <span class="cline-any cline-no">&nbsp;</span>
773
- <span class="cline-any cline-no">&nbsp;</span>
774
- <span class="cline-any cline-no">&nbsp;</span>
775
834
  <span class="cline-any cline-yes">2x</span>
776
- <span class="cline-any cline-no">&nbsp;</span>
777
- <span class="cline-any cline-no">&nbsp;</span>
778
- <span class="cline-any cline-no">&nbsp;</span>
779
- <span class="cline-any cline-no">&nbsp;</span>
780
- <span class="cline-any cline-no">&nbsp;</span>
781
- <span class="cline-any cline-no">&nbsp;</span>
782
- <span class="cline-any cline-no">&nbsp;</span>
783
- <span class="cline-any cline-no">&nbsp;</span>
784
835
  <span class="cline-any cline-yes">2x</span>
785
- <span class="cline-any cline-no">&nbsp;</span>
786
- <span class="cline-any cline-no">&nbsp;</span>
787
- <span class="cline-any cline-no">&nbsp;</span>
788
836
  <span class="cline-any cline-no">&nbsp;</span>
789
837
  <span class="cline-any cline-no">&nbsp;</span>
790
838
  <span class="cline-any cline-no">&nbsp;</span>
@@ -796,8 +844,6 @@
796
844
  <span class="cline-any cline-yes">2x</span>
797
845
  <span class="cline-any cline-yes">2x</span>
798
846
  <span class="cline-any cline-yes">2x</span>
799
- <span class="cline-any cline-no">&nbsp;</span>
800
- <span class="cline-any cline-no">&nbsp;</span>
801
847
  <span class="cline-any cline-yes">2x</span>
802
848
  <span class="cline-any cline-yes">2x</span>
803
849
  <span class="cline-any cline-yes">2x</span>
@@ -805,80 +851,34 @@
805
851
  <span class="cline-any cline-yes">2x</span>
806
852
  <span class="cline-any cline-yes">2x</span>
807
853
  <span class="cline-any cline-yes">2x</span>
854
+ <span class="cline-any cline-no">&nbsp;</span>
855
+ <span class="cline-any cline-no">&nbsp;</span>
808
856
  <span class="cline-any cline-yes">2x</span>
809
857
  <span class="cline-any cline-yes">2x</span>
810
858
  <span class="cline-any cline-yes">2x</span>
811
859
  <span class="cline-any cline-yes">2x</span>
812
860
  <span class="cline-any cline-yes">2x</span>
861
+ <span class="cline-any cline-yes">16x</span>
862
+ <span class="cline-any cline-yes">6x</span>
863
+ <span class="cline-any cline-yes">6x</span>
864
+ <span class="cline-any cline-yes">6x</span>
865
+ <span class="cline-any cline-yes">6x</span>
866
+ <span class="cline-any cline-yes">10x</span>
867
+ <span class="cline-any cline-yes">16x</span>
813
868
  <span class="cline-any cline-yes">2x</span>
814
869
  <span class="cline-any cline-yes">2x</span>
815
870
  <span class="cline-any cline-yes">2x</span>
816
871
  <span class="cline-any cline-yes">2x</span>
817
- <span class="cline-any cline-yes">1x</span>
872
+ <span class="cline-any cline-yes">2x</span>
873
+ <span class="cline-any cline-yes">4x</span>
874
+ <span class="cline-any cline-yes">4x</span>
875
+ <span class="cline-any cline-yes">2x</span>
876
+ <span class="cline-any cline-yes">2x</span>
877
+ <span class="cline-any cline-yes">6x</span>
878
+ <span class="cline-any cline-yes">6x</span>
879
+ <span class="cline-any cline-yes">2x</span>
818
880
  <span class="cline-any cline-yes">2x</span>
819
881
  <span class="cline-any cline-yes">2x</span>
820
- <span class="cline-any cline-yes">15x</span>
821
- <span class="cline-any cline-yes">15x</span>
822
- <span class="cline-any cline-yes">15x</span>
823
- <span class="cline-any cline-yes">15x</span>
824
- <span class="cline-any cline-yes">15x</span>
825
- <span class="cline-any cline-yes">15x</span>
826
- <span class="cline-any cline-yes">15x</span>
827
- <span class="cline-any cline-no">&nbsp;</span>
828
- <span class="cline-any cline-no">&nbsp;</span>
829
- <span class="cline-any cline-yes">15x</span>
830
- <span class="cline-any cline-yes">15x</span>
831
- <span class="cline-any cline-yes">15x</span>
832
- <span class="cline-any cline-yes">15x</span>
833
- <span class="cline-any cline-yes">15x</span>
834
- <span class="cline-any cline-yes">15x</span>
835
- <span class="cline-any cline-yes">15x</span>
836
- <span class="cline-any cline-yes">2x</span>
837
- <span class="cline-any cline-yes">2x</span>
838
- <span class="cline-any cline-yes">2x</span>
839
- <span class="cline-any cline-yes">15x</span>
840
- <span class="cline-any cline-yes">15x</span>
841
- <span class="cline-any cline-yes">15x</span>
842
- <span class="cline-any cline-yes">15x</span>
843
- <span class="cline-any cline-yes">15x</span>
844
- <span class="cline-any cline-yes">15x</span>
845
- <span class="cline-any cline-yes">15x</span>
846
- <span class="cline-any cline-yes">15x</span>
847
- <span class="cline-any cline-yes">15x</span>
848
- <span class="cline-any cline-yes">15x</span>
849
- <span class="cline-any cline-yes">15x</span>
850
- <span class="cline-any cline-yes">15x</span>
851
- <span class="cline-any cline-yes">123x</span>
852
- <span class="cline-any cline-yes">123x</span>
853
- <span class="cline-any cline-yes">123x</span>
854
- <span class="cline-any cline-yes">1x</span>
855
- <span class="cline-any cline-yes">1x</span>
856
- <span class="cline-any cline-yes">45x</span>
857
- <span class="cline-any cline-yes">45x</span>
858
- <span class="cline-any cline-yes">123x</span>
859
- <span class="cline-any cline-yes">78x</span>
860
- <span class="cline-any cline-yes">78x</span>
861
- <span class="cline-any cline-yes">3x</span>
862
- <span class="cline-any cline-no">&nbsp;</span>
863
- <span class="cline-any cline-yes">31x</span>
864
- <span class="cline-any cline-yes">31x</span>
865
- <span class="cline-any cline-yes">31x</span>
866
- <span class="cline-any cline-yes">3x</span>
867
- <span class="cline-any cline-yes">46x</span>
868
- <span class="cline-any cline-yes">46x</span>
869
- <span class="cline-any cline-yes">46x</span>
870
- <span class="cline-any cline-yes">15x</span>
871
- <span class="cline-any cline-yes">15x</span>
872
- <span class="cline-any cline-yes">1x</span>
873
- <span class="cline-any cline-yes">1x</span>
874
- <span class="cline-any cline-yes">1x</span>
875
- <span class="cline-any cline-yes">1x</span>
876
- <span class="cline-any cline-yes">1x</span>
877
- <span class="cline-any cline-yes">1x</span>
878
- <span class="cline-any cline-yes">1x</span>
879
- <span class="cline-any cline-yes">1x</span>
880
- <span class="cline-any cline-yes">1x</span>
881
- <span class="cline-any cline-yes">1x</span>
882
882
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/* eslint-disable no-restricted-syntax */
883
883
  /* eslint-disable guard-for-in */
884
884
  const express = require('express');
@@ -898,7 +898,7 @@ class AbstractController extends Base {
898
898
  constructor(app, prefix, isExpressMergeParams = false) {
899
899
  const time = Date.now();
900
900
  super(app);
901
- this.prefix = <span class="branch-0 cbranch-no" title="branch not covered" >prefix;</span>
901
+ this.prefix = prefix;
902
902
  this.router = express.Router({
903
903
  mergeParams: isExpressMergeParams,
904
904
  });
@@ -909,28 +909,28 @@ class AbstractController extends Base {
909
909
  <span class="cstat-no" title="statement not covered" > this.logger.warn(</span>
910
910
  <span class="cstat-no" title="statement not covered" > `getExpressPath deprecated. Please use getHttpPath instead. Will be removed on v5`,</span>
911
911
  <span class="cstat-no" title="statement not covered" > );</span>
912
- httpPath = this.getExpressPath();
913
- }
912
+ <span class="cstat-no" title="statement not covered" > httpPath = this.getExpressPath();</span>
913
+ <span class="cstat-no" title="statement not covered" > }</span>
914
914
  &nbsp;
915
915
  /**
916
916
  * Grab route middleware onlo one Map
917
917
  */
918
918
  const routeMiddlewares = new Map();
919
919
  Object.entries(routes).forEach(([method, methodRoutes]) =&gt; {
920
- <span class="cstat-no" title="statement not covered" > Object.entries(methodRoutes).forEach(([route, routeParam]) =&gt; {</span>
921
- <span class="cstat-no" title="statement not covered" > if (routeParam?.middleware) {</span>
922
- <span class="cstat-no" title="statement not covered" > const fullRoute = method.toUpperCase() + route;</span>
923
- <span class="cstat-no" title="statement not covered" ></span>
924
- <span class="cstat-no" title="statement not covered" > if (!routeMiddlewares.has(fullRoute)) {</span>
925
- <span class="cstat-no" title="statement not covered" > routeMiddlewares.set(fullRoute, []);</span>
926
- <span class="cstat-no" title="statement not covered" > }</span>
927
- <span class="cstat-no" title="statement not covered" ></span>
928
- <span class="cstat-no" title="statement not covered" > routeMiddlewares.set(fullRoute, [</span>
929
- <span class="cstat-no" title="statement not covered" > ...routeMiddlewares.get(fullRoute),</span>
930
- <span class="cstat-no" title="statement not covered" > ...routeParam.middleware,</span>
931
- <span class="cstat-no" title="statement not covered" > ]);</span>
932
- <span class="cstat-no" title="statement not covered" > }</span>
933
- <span class="cstat-no" title="statement not covered" > });</span>
920
+ Object.entries(methodRoutes).forEach(([route, routeParam]) =&gt; {
921
+ if (routeParam?.middleware) {
922
+ const fullRoute = method.toUpperCase() + route;
923
+ &nbsp;
924
+ if (!routeMiddlewares.has(fullRoute)) {
925
+ routeMiddlewares.set(fullRoute, []);
926
+ }
927
+ &nbsp;
928
+ routeMiddlewares.set(fullRoute, [
929
+ ...routeMiddlewares.get(fullRoute),
930
+ ...routeParam.middleware,
931
+ ]);
932
+ }
933
+ });
934
934
  });
935
935
  &nbsp;
936
936
  const routeMiddlewaresReg = this.parseMiddlewares(
@@ -952,7 +952,7 @@ class AbstractController extends Base {
952
952
  middleware.path,
953
953
  new middleware.MiddlewareFunction(
954
954
  this.app,
955
- <span class="branch-0 cbranch-no" title="branch not covered" > middleware.params,</span>
955
+ middleware.params,
956
956
  ).getMiddleware(),
957
957
  );
958
958
  }
@@ -960,30 +960,30 @@ class AbstractController extends Base {
960
960
  /**
961
961
  * Register routes itself
962
962
  */
963
- for (const verb in routes) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
964
- <span class="cstat-no" title="statement not covered" > if (typeof this.router[verb] !== 'function') {</span>
963
+ for (const verb in routes) {
964
+ if (typeof this.router[verb] !== 'function') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
965
965
  <span class="cstat-no" title="statement not covered" > this.logger.error(</span>
966
966
  <span class="cstat-no" title="statement not covered" > `Method ${verb} not exist for router. Please check your codebase`,</span>
967
967
  <span class="cstat-no" title="statement not covered" > );</span>
968
968
  <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-continue</span>
969
- continue;
970
- }
971
- <span class="cstat-no" title="statement not covered" > for (const path in routes[verb]) {</span>
972
- <span class="cstat-no" title="statement not covered" > const routeAdditionalMiddlewares = routeMiddlewaresReg.filter(</span>
973
- <span class="cstat-no" title="statement not covered" > (middleware) =&gt;</span>
974
- <span class="cstat-no" title="statement not covered" > middleware.path === path &amp;&amp; middleware.method === verb,</span>
975
- <span class="cstat-no" title="statement not covered" > );</span>
976
- <span class="cstat-no" title="statement not covered" ></span>
977
- <span class="cstat-no" title="statement not covered" > let routeObject = routes[verb][path];</span>
978
- <span class="cstat-no" title="statement not covered" > if (Object.prototype.toString.call(routeObject) !== '[object Object]') {</span>
979
- <span class="cstat-no" title="statement not covered" > routeObject = {</span>
980
- <span class="cstat-no" title="statement not covered" ><span class="branch-0 cbranch-no" title="branch not covered" > handler: routeObject,</span></span>
981
- <span class="cstat-no" title="statement not covered" > request: null,</span>
982
- <span class="cstat-no" title="statement not covered" > query: null,</span>
983
- <span class="cstat-no" title="statement not covered" > middleware: null,</span>
984
- <span class="cstat-no" title="statement not covered" > };</span>
985
- <span class="cstat-no" title="statement not covered" ></span>
986
- <span class="cstat-no" title="statement not covered" > if (typeof routeObject.handler !== 'function') {</span>
969
+ <span class="cstat-no" title="statement not covered" > continue;</span>
970
+ <span class="cstat-no" title="statement not covered" > }</span>
971
+ for (const path in routes[verb]) {
972
+ const routeAdditionalMiddlewares = routeMiddlewaresReg.filter(
973
+ (middleware) =&gt;
974
+ middleware.path === path &amp;&amp; middleware.method === verb,
975
+ );
976
+ &nbsp;
977
+ let routeObject = routes[verb][path];
978
+ if (Object.prototype.toString.call(routeObject) !== '[object Object]') {
979
+ routeObject = {
980
+ handler: routeObject,
981
+ request: null,
982
+ query: null,
983
+ middleware: null,
984
+ };
985
+ &nbsp;
986
+ if (typeof routeObject.handler !== 'function') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
987
987
  <span class="cstat-no" title="statement not covered" > this.logger.error(</span>
988
988
  <span class="cstat-no" title="statement not covered" > `Can't resolve function '${</span>
989
989
  <span class="cstat-no" title="statement not covered" > routeObject.handler</span>
@@ -992,39 +992,39 @@ class AbstractController extends Base {
992
992
  <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-continue</span>
993
993
  <span class="cstat-no" title="statement not covered" > continue;</span>
994
994
  <span class="cstat-no" title="statement not covered" > }</span>
995
- <span class="cstat-no" title="statement not covered" > }</span>
996
- <span class="cstat-no" title="statement not covered" ></span>
997
- <span class="cstat-no" title="statement not covered" > let fnName = routeObject.handler;</span>
998
- <span class="cstat-no" title="statement not covered" > if (typeof fnName === 'function') {</span>
999
- <span class="cstat-no" title="statement not covered" > fnName = fnName.name;</span>
1000
- <span class="cstat-no" title="statement not covered" > }</span>
1001
- <span class="cstat-no" title="statement not covered" ></span>
1002
- <span class="cstat-no" title="statement not covered" > const fullPath = `/${httpPath}/${path}`</span>
1003
- <span class="cstat-no" title="statement not covered" > .split('//')</span>
1004
- <span class="cstat-no" title="statement not covered" > .join('/')</span>
1005
- <span class="cstat-no" title="statement not covered" > .split('//')</span>
1006
- <span class="cstat-no" title="statement not covered" > .join('/');</span>
1007
- <span class="cstat-no" title="statement not covered" ></span>
1008
- <span class="cstat-no" title="statement not covered" > routesInfo.push({</span>
1009
- <span class="cstat-no" title="statement not covered" > name: fnName,</span>
1010
- <span class="cstat-no" title="statement not covered" > description: routeObject?.description,</span>
1011
- <span class="cstat-no" title="statement not covered" > method: verb.toUpperCase(),</span>
1012
- <span class="cstat-no" title="statement not covered" > fields: routeObject?.request?.fields,</span>
1013
- <span class="cstat-no" title="statement not covered" > queryFields: routeObject?.query?.fields,</span>
1014
- <span class="cstat-no" title="statement not covered" > path,</span>
1015
- <span class="cstat-no" title="statement not covered" > fullPath,</span>
1016
- <span class="cstat-no" title="statement not covered" > });</span>
1017
- <span class="cstat-no" title="statement not covered" > // this.logger.verbose(</span>
1018
- <span class="cstat-no" title="statement not covered" > // `Controller '${this.getConstructorName()}' register function '${fnName}' for method '${verb}' and path '${path}' Full path '${fullPath}'`,</span>
1019
- <span class="cstat-no" title="statement not covered" > // );</span>
1020
- <span class="cstat-no" title="statement not covered" ></span>
1021
- <span class="cstat-no" title="statement not covered" > let additionalMiddlewares;</span>
995
+ }
996
+ &nbsp;
997
+ let fnName = routeObject.handler;
998
+ if (typeof fnName === 'function') {
999
+ fnName = fnName.name;
1000
+ }
1001
+ &nbsp;
1002
+ const fullPath = `/${httpPath}/${path}`
1003
+ .split('//')
1004
+ .join('/')
1005
+ .split('//')
1006
+ .join('/');
1007
+ &nbsp;
1008
+ routesInfo.push({
1009
+ name: fnName,
1010
+ description: routeObject?.description,
1011
+ method: verb.toUpperCase(),
1012
+ fields: routeObject?.request?.fields,
1013
+ queryFields: routeObject?.query?.fields,
1014
+ path,
1015
+ fullPath,
1016
+ });
1017
+ // this.logger.verbose(
1018
+ // `Controller '${this.getConstructorName()}' register function '${fnName}' for method '${verb}' and path '${path}' Full path '${fullPath}'`,
1019
+ // );
1020
+ &nbsp;
1021
+ let additionalMiddlewares;
1022
1022
  &nbsp;
1023
1023
  if (routeAdditionalMiddlewares.length &gt; 0) {
1024
- <span class="cstat-no" title="statement not covered" > additionalMiddlewares = Array.from(</span>
1025
- <span class="cstat-no" title="statement not covered" > routeAdditionalMiddlewares,</span>
1026
- <span class="cstat-no" title="statement not covered" > ({ MiddlewareFunction, params }) =&gt;</span>
1027
- <span class="cstat-no" title="statement not covered" > new MiddlewareFunction(this.app, params).getMiddleware(),</span>
1024
+ additionalMiddlewares = Array.from(
1025
+ routeAdditionalMiddlewares,
1026
+ ({ MiddlewareFunction, params }) =&gt;
1027
+ new MiddlewareFunction(this.app, params).getMiddleware(),
1028
1028
  );
1029
1029
  }
1030
1030
  &nbsp;
@@ -1032,73 +1032,73 @@ class AbstractController extends Base {
1032
1032
  path,
1033
1033
  additionalMiddlewares || [],
1034
1034
  async (req, res, next) =&gt; {
1035
- <span class="cstat-no" title="statement not covered" > const requestObj = {</span>
1036
- <span class="cstat-no" title="statement not covered" > query: req.query,</span>
1037
- <span class="cstat-no" title="statement not covered" > body: req.body,</span>
1038
- <span class="cstat-no" title="statement not covered" > appInfo: req.appInfo,</span>
1039
- <span class="cstat-no" title="statement not covered" > };</span>
1040
- <span class="cstat-no" title="statement not covered" > try {</span>
1041
- <span class="cstat-no" title="statement not covered" > req.appInfo.request = await new ValidateService(</span>
1042
- <span class="cstat-no" title="statement not covered" > this.app,</span>
1043
- <span class="cstat-no" title="statement not covered" > routeObject?.request,</span>
1044
- <span class="cstat-no" title="statement not covered" > ).validateReqData(requestObj, {</span>
1045
- <span class="cstat-no" title="statement not covered" > selectedReqData: req.body,</span>
1046
- <span class="cstat-no" title="statement not covered" > additionalMiddlewareFieldsData: {</span>
1047
- <span class="cstat-no" title="statement not covered" > middlewaresInfo,</span>
1048
- <span class="cstat-no" title="statement not covered" > routeMiddlewaresReg,</span>
1049
- <span class="cstat-no" title="statement not covered" > options: {</span>
1050
- <span class="cstat-no" title="statement not covered" > method: verb,</span>
1051
- <span class="cstat-no" title="statement not covered" > path: fullPath,</span>
1052
- <span class="cstat-no" title="statement not covered" > prefix: 'request',</span>
1053
- <span class="cstat-no" title="statement not covered" > },</span>
1054
- <span class="cstat-no" title="statement not covered" > },</span>
1055
- <span class="cstat-no" title="statement not covered" > });</span>
1056
- <span class="cstat-no" title="statement not covered" > req.appInfo.query = await new ValidateService(</span>
1057
- <span class="cstat-no" title="statement not covered" > this.app,</span>
1058
- <span class="cstat-no" title="statement not covered" > routeObject?.query,</span>
1059
- <span class="cstat-no" title="statement not covered" > ).validateReqData(requestObj, {</span>
1060
- <span class="cstat-no" title="statement not covered" > selectedReqData: req.query,</span>
1061
- <span class="cstat-no" title="statement not covered" > additionalMiddlewareFieldsData: {</span>
1062
- <span class="cstat-no" title="statement not covered" > middlewaresInfo,</span>
1063
- <span class="cstat-no" title="statement not covered" > routeMiddlewaresReg,</span>
1064
- <span class="cstat-no" title="statement not covered" > options: {</span>
1065
- <span class="cstat-no" title="statement not covered" > method: verb,</span>
1066
- <span class="cstat-no" title="statement not covered" > path: fullPath,</span>
1067
- <span class="cstat-no" title="statement not covered" > prefix: 'query',</span>
1068
- <span class="cstat-no" title="statement not covered" > },</span>
1069
- <span class="cstat-no" title="statement not covered" > },</span>
1070
- <span class="cstat-no" title="statement not covered" > });</span>
1071
- <span class="cstat-no" title="statement not covered" > } catch <span class="fstat-no" title="function not covered" >(err) {</span></span>
1072
- <span class="cstat-no" title="statement not covered" > return res.status(400).json({</span>
1073
- <span class="cstat-no" title="statement not covered" > errors: err.message,</span>
1074
- <span class="cstat-no" title="statement not covered" > });</span>
1075
- <span class="cstat-no" title="statement not covered" > }</span>
1076
- <span class="cstat-no" title="statement not covered" > req.body = new Proxy(req.body, {</span>
1077
- <span class="cstat-no" title="statement not covered" > get: (target, prop) =&gt; {</span>
1035
+ const requestObj = {
1036
+ query: req.query,
1037
+ body: req.body,
1038
+ appInfo: req.appInfo,
1039
+ };
1040
+ try {
1041
+ req.appInfo.request = await new ValidateService(
1042
+ this.app,
1043
+ routeObject?.request,
1044
+ ).validateReqData(requestObj, {
1045
+ selectedReqData: req.body,
1046
+ additionalMiddlewareFieldsData: {
1047
+ middlewaresInfo,
1048
+ routeMiddlewaresReg,
1049
+ options: {
1050
+ method: verb,
1051
+ path: fullPath,
1052
+ prefix: 'request',
1053
+ },
1054
+ },
1055
+ });
1056
+ req.appInfo.query = await new ValidateService(
1057
+ this.app,
1058
+ routeObject?.query,
1059
+ ).validateReqData(requestObj, {
1060
+ selectedReqData: req.query,
1061
+ additionalMiddlewareFieldsData: {
1062
+ middlewaresInfo,
1063
+ routeMiddlewaresReg,
1064
+ options: {
1065
+ method: verb,
1066
+ path: fullPath,
1067
+ prefix: 'query',
1068
+ },
1069
+ },
1070
+ });
1071
+ } catch (err) {
1072
+ return res.status(400).json({
1073
+ errors: err.message,
1074
+ });
1075
+ }
1076
+ req.body = new Proxy(req.body, {
1077
+ get: <span class="fstat-no" title="function not covered" >(target, prop) =&gt; {</span>
1078
1078
  <span class="cstat-no" title="statement not covered" > this.logger.warn(</span>
1079
1079
  <span class="cstat-no" title="statement not covered" > 'Please not use "req.body" directly. Implement "request" and use "req.appInfo.request" ',</span>
1080
- );
1081
- return target[prop];
1080
+ <span class="cstat-no" title="statement not covered" > );</span>
1081
+ <span class="cstat-no" title="statement not covered" > return target[prop];</span>
1082
1082
  },
1083
1083
  });
1084
1084
  req.query = new Proxy(req.query, {
1085
1085
  get: (target, prop) =&gt; {
1086
- <span class="cstat-no" title="statement not covered" > this.logger.warn(</span>
1087
- <span class="cstat-no" title="statement not covered" > 'Please not use "req.query" <span class="branch-0 cbranch-no" title="branch not covered" >directly. Implement "query" and use "req.appInfo.query" ',</span></span>
1088
- <span class="cstat-no" title="statement not covered" > );</span>
1089
- <span class="cstat-no" title="statement not covered" > return target[prop];</span>
1090
- <span class="cstat-no" title="statement not covered" > },</span>
1091
- <span class="cstat-no" title="statement not covered" > });</span>
1092
- <span class="cstat-no" title="statement not covered" ></span>
1093
- <span class="cstat-no" title="statement not covered" > if (!routeObject.handler) {</span>
1086
+ this.logger.warn(
1087
+ 'Please not use "req.query" directly. Implement "query" and use "req.appInfo.query" ',
1088
+ );
1089
+ return target[prop];
1090
+ },
1091
+ });
1092
+ &nbsp;
1093
+ if (!routeObject.handler) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
1094
1094
  <span class="cstat-no" title="statement not covered" > this.logger.error(`Route object have no handler defined`);</span>
1095
1095
  <span class="cstat-no" title="statement not covered" > return res.status(500).json({</span>
1096
1096
  <span class="cstat-no" title="statement not covered" > message:</span>
1097
- <span class="cstat-no" title="statement not covered" ><span class="branch-0 cbranch-no" title="branch not covered" > 'Platform error 2. Please check later or contact support',</span></span>
1097
+ <span class="cstat-no" title="statement not covered" > 'Platform error 2. Please check later or contact support',</span>
1098
1098
  <span class="cstat-no" title="statement not covered" > });</span>
1099
1099
  <span class="cstat-no" title="statement not covered" > }</span>
1100
- <span class="cstat-no" title="statement not covered" ></span>
1101
- <span class="cstat-no" title="statement not covered" > if (routeObject.handler.constructor.name !== 'AsyncFunction') {</span>
1100
+ &nbsp;
1101
+ if (routeObject.handler.constructor.name !== 'AsyncFunction') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
1102
1102
  <span class="cstat-no" title="statement not covered" > const error =</span>
1103
1103
  <span class="cstat-no" title="statement not covered" > "Handler should be AsyncFunction. Perhabs you miss 'async' of function declaration?";</span>
1104
1104
  <span class="cstat-no" title="statement not covered" > this.logger.error(error);</span>
@@ -1107,17 +1107,17 @@ class AbstractController extends Base {
1107
1107
  <span class="cstat-no" title="statement not covered" > 'Platform error. Please check later or contact support',</span>
1108
1108
  <span class="cstat-no" title="statement not covered" > });</span>
1109
1109
  <span class="cstat-no" title="statement not covered" > }</span>
1110
- <span class="cstat-no" title="statement not covered" > return routeObject.handler.call(this, req, res, next).catch((e) =&gt; {</span>
1110
+ return routeObject.handler.call(this, req, res, next).catch((e) =&gt; {
1111
1111
  <span class="cstat-no" title="statement not covered" > this.logger.error(e);</span>
1112
1112
  <span class="cstat-no" title="statement not covered" > return res.status(500).json({</span>
1113
1113
  <span class="cstat-no" title="statement not covered" > message:</span>
1114
1114
  <span class="cstat-no" title="statement not covered" > 'Platform error. Please check later or contact support',</span>
1115
1115
  <span class="cstat-no" title="statement not covered" > });</span>
1116
- <span class="cstat-no" title="statement not covered" > });</span>
1117
- <span class="cstat-no" title="statement not covered" > },</span>
1118
- <span class="cstat-no" title="statement not covered" > );</span>
1119
- <span class="cstat-no" title="statement not covered" > }</span>
1120
- <span class="cstat-no" title="statement not covered" > }</span>
1116
+ });
1117
+ },
1118
+ );
1119
+ }
1120
+ }
1121
1121
  &nbsp;
1122
1122
  /**
1123
1123
  * Generate text info
@@ -1140,7 +1140,7 @@ class AbstractController extends Base {
1140
1140
  }
1141
1141
  }
1142
1142
  &nbsp;
1143
- text.push(`Time: ${<span class="branch-0 cbranch-no" title="branch not covered" >Date.now() - time} ms`);</span>
1143
+ text.push(`Time: ${Date.now() - time} ms`);
1144
1144
  &nbsp;
1145
1145
  this.logger.verbose(text.join('\n'));
1146
1146
  this.loadedTime = Date.now() - time;
@@ -1155,8 +1155,8 @@ class AbstractController extends Base {
1155
1155
  <span class="cstat-no" title="statement not covered" > routesInfo,</span>
1156
1156
  <span class="cstat-no" title="statement not covered" > middlewaresInfo,</span>
1157
1157
  <span class="cstat-no" title="statement not covered" > routeMiddlewaresReg,</span>
1158
- ),
1159
- );
1158
+ <span class="cstat-no" title="statement not covered" > ),</span>
1159
+ <span class="cstat-no" title="statement not covered" > );</span>
1160
1160
  } else {
1161
1161
  this.app.httpServer.express.use(httpPath, this.router);
1162
1162
  }
@@ -1165,11 +1165,11 @@ class AbstractController extends Base {
1165
1165
  /**
1166
1166
  * Parse middlewares to be an object.
1167
1167
  */
1168
- parseMiddlewares(<span class="branch-0 cbranch-no" title="branch not covered" >middlewareMap, httpPath) {</span>
1168
+ parseMiddlewares(middlewareMap, httpPath) {
1169
1169
  const middlewaresInfo = [];
1170
1170
  // eslint-disable-next-line prefer-const
1171
1171
  for (let [path, middleware] of middlewareMap) {
1172
- if (!Array.isArray(<span class="branch-0 cbranch-no" title="branch not covered" >middleware)) <span class="branch-0 cbranch-no" title="branch not covered" >{</span></span>
1172
+ if (!Array.isArray(middleware)) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
1173
1173
  <span class="cstat-no" title="statement not covered" > middleware = [middleware];</span>
1174
1174
  <span class="cstat-no" title="statement not covered" > }</span>
1175
1175
  for (const M of middleware) {
@@ -1177,18 +1177,18 @@ class AbstractController extends Base {
1177
1177
  let realPath = path;
1178
1178
  if (typeof realPath !== 'string') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
1179
1179
  <span class="cstat-no" title="statement not covered" > this.logger.error(`Path not a string ${realPath}. Please check it`);</span>
1180
- <span class="cstat-no" title="statement not covered" > // <span class="branch-0 cbranch-no" title="branch not covered" >eslint-disable-next-line no-continue</span></span>
1180
+ <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-continue</span>
1181
1181
  <span class="cstat-no" title="statement not covered" > continue;</span>
1182
1182
  <span class="cstat-no" title="statement not covered" > }</span>
1183
- if (!realPath.startsWith('/')) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
1184
- <span class="cstat-no" title="statement not covered" > method = realPath.split('/')[0]?.toLowerCase();</span>
1185
- <span class="cstat-no" title="statement not covered" > if (!method) {</span>
1183
+ if (!realPath.startsWith('/')) {
1184
+ method = realPath.split('/')[0]?.toLowerCase();
1185
+ if (!method) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
1186
1186
  <span class="cstat-no" title="statement not covered" > this.logger.error(`Method not found for ${realPath}`);</span>
1187
- <span class="cstat-no" title="statement not covered" > // eslint-<span class="branch-0 cbranch-no" title="branch not covered" >disable-next-line no-continue</span></span>
1187
+ <span class="cstat-no" title="statement not covered" > // eslint-disable-next-line no-continue</span>
1188
1188
  <span class="cstat-no" title="statement not covered" > continue;</span>
1189
1189
  <span class="cstat-no" title="statement not covered" > }</span>
1190
- <span class="cstat-no" title="statement not covered" > realPath = realPath.substring(method.length);</span>
1191
- <span class="cstat-no" title="statement not covered" > }</span>
1190
+ realPath = realPath.substring(method.length);
1191
+ }
1192
1192
  if (typeof this.router[method] !== 'function') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
1193
1193
  <span class="cstat-no" title="statement not covered" > this.logger.error(</span>
1194
1194
  <span class="cstat-no" title="statement not covered" > `Method ${method} not exist for middleware. Please check your codebase`,</span>
@@ -1203,9 +1203,9 @@ class AbstractController extends Base {
1203
1203
  .join('/');
1204
1204
  let MiddlewareFunction = M;
1205
1205
  let middlewareParams = {};
1206
- if (Array.isArray(M)) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
1207
- <span class="cstat-no" title="statement not covered" > [MiddlewareFunction, middlewareParams] = M;</span>
1208
- <span class="cstat-no" title="statement not covered" > }</span>
1206
+ if (Array.isArray(M)) {
1207
+ [MiddlewareFunction, middlewareParams] = M;
1208
+ }
1209
1209
  &nbsp;
1210
1210
  middlewaresInfo.push({
1211
1211
  name: MiddlewareFunction.name,
@@ -1231,19 +1231,19 @@ class AbstractController extends Base {
1231
1231
  * @example
1232
1232
  * return {
1233
1233
  * post: {
1234
- * "/someUrl": <span class="fstat-no" title="function not covered" >{</span>
1235
- <span class="cstat-no" title="statement not covered" > * handler: this.postSomeUrl,</span>
1236
- <span class="cstat-no" title="statement not covered" > * request: yup.object().shape({</span>
1234
+ * "/someUrl": {
1235
+ * handler: this.postSomeUrl,
1236
+ * request: yup.object().shape({
1237
1237
  * count: yup.number().max(100)required(),
1238
1238
  * })
1239
1239
  * }
1240
1240
  * },
1241
1241
  * };
1242
1242
  */
1243
- get routes() {
1244
- this.logger.warn('Please implement "routes" method on controller.');
1245
- return {};
1246
- }
1243
+ <span class="fstat-no" title="function not covered" > get routes() {</span>
1244
+ <span class="cstat-no" title="statement not covered" > this.logger.warn('Please implement "routes" method on controller.');</span>
1245
+ <span class="cstat-no" title="statement not covered" > return {};</span>
1246
+ <span class="cstat-no" title="statement not covered" > }</span>
1247
1247
  &nbsp;
1248
1248
  /**
1249
1249
  * Array of middlewares to append for route
@@ -1254,20 +1254,20 @@ class AbstractController extends Base {
1254
1254
  * return new Map([
1255
1255
  * ['/*', [GetUserByToken]] // for any method for this controller
1256
1256
  * ['POST/', [Auth]] // for POST method
1257
- <span class="fstat-no" title="function not covered" > * ['/superSecretMethod', [OnlySuperSecretUsers]] // route with ANY method</span>
1257
+ * ['/superSecretMethod', [OnlySuperSecretUsers]] // route with ANY method
1258
1258
  * ['PUT/superSecretMathod', [OnlySuperSecretAdmin]] // route with PUT method
1259
1259
  * ]);
1260
1260
  */
1261
- static get middleware() {
1262
- return new Map([['/*', [GetUserByToken, Auth]]]);
1263
- }
1261
+ static <span class="fstat-no" title="function not covered" >get middleware() {</span>
1262
+ <span class="cstat-no" title="statement not covered" > return new Map([['/*', [GetUserByToken, Auth]]]);</span>
1263
+ <span class="cstat-no" title="statement not covered" > }</span>
1264
1264
  &nbsp;
1265
1265
  /**
1266
1266
  * Get constructor name that can include preix
1267
1267
  */
1268
1268
  getConstructorName() {
1269
- if (this.prefix) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
1270
- <span class="cstat-no" title="statement not covered" > return `${this.prefix.charAt(0).toUpperCase()}${this.prefix.slice(1)}/${</span>
1269
+ if (this.prefix) {
1270
+ return `${this.prefix.charAt(0).toUpperCase()}${this.prefix.slice(1)}/${
1271
1271
  this.constructor.name
1272
1272
  }`;
1273
1273
  }
@@ -1294,7 +1294,7 @@ module.exports = AbstractController;
1294
1294
  <div class='footer quiet pad2 space-top1 center small'>
1295
1295
  Code coverage generated by
1296
1296
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1297
- at 2023-09-21T04:47:08.309Z
1297
+ at 2023-09-21T12:04:18.148Z
1298
1298
  </div>
1299
1299
  <script src="../../prettify.js"></script>
1300
1300
  <script>