@adaptivestone/framework 4.6.0 → 4.8.0

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 (90) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/Cli.js +1 -0
  3. package/cluster.js +1 -2
  4. package/commands/GetOpenApiJson.js +1 -2
  5. package/commands/SyncIndexes.js +1 -1
  6. package/commands/migration/Migrate.js +2 -2
  7. package/controllers/Auth.js +3 -5
  8. package/controllers/index.js +0 -3
  9. package/coverage/clover.xml +2035 -1926
  10. package/coverage/coverage-final.json +43 -40
  11. package/coverage/framework/config/auth.js.html +6 -6
  12. package/coverage/framework/config/http.js.html +10 -10
  13. package/coverage/framework/config/i18n.js.html +13 -13
  14. package/coverage/framework/config/index.html +1 -1
  15. package/coverage/framework/config/log.js.html +23 -23
  16. package/coverage/framework/config/mail.js.html +30 -30
  17. package/coverage/framework/config/mongo.js.html +4 -4
  18. package/coverage/framework/config/rateLimiter.js.html +17 -17
  19. package/coverage/framework/config/redis.js.html +5 -5
  20. package/coverage/framework/config/validate.js.html +4 -4
  21. package/coverage/framework/controllers/Auth.js.html +97 -103
  22. package/coverage/framework/controllers/Home.js.html +27 -27
  23. package/coverage/framework/controllers/index.html +15 -15
  24. package/coverage/framework/controllers/index.js.html +58 -67
  25. package/coverage/framework/controllers/test/SomeController.js.html +44 -89
  26. package/coverage/framework/controllers/test/index.html +17 -17
  27. package/coverage/framework/helpers/files.js.html +310 -0
  28. package/coverage/framework/helpers/index.html +131 -0
  29. package/coverage/framework/helpers/logger.js.html +142 -0
  30. package/coverage/framework/helpers/redis/clearNamespace.js.html +10 -10
  31. package/coverage/framework/helpers/redis/index.html +1 -1
  32. package/coverage/framework/index.html +19 -19
  33. package/coverage/framework/models/Migration.js.html +130 -0
  34. package/coverage/framework/models/Sequence.js.html +11 -11
  35. package/coverage/framework/models/User.js.html +130 -130
  36. package/coverage/framework/models/index.html +20 -5
  37. package/coverage/framework/modules/AbstractController.js.html +100 -106
  38. package/coverage/framework/modules/AbstractModel.js.html +58 -58
  39. package/coverage/framework/modules/Base.js.html +70 -403
  40. package/coverage/framework/modules/index.html +24 -24
  41. package/coverage/framework/server.js.html +704 -338
  42. package/coverage/framework/services/cache/Cache.js.html +96 -81
  43. package/coverage/framework/services/cache/index.html +19 -19
  44. package/coverage/framework/services/documentation/DocumentationGenerator.js.html +39 -45
  45. package/coverage/framework/services/documentation/index.html +11 -11
  46. package/coverage/framework/services/http/HttpServer.js.html +90 -90
  47. package/coverage/framework/services/http/index.html +1 -1
  48. package/coverage/framework/services/http/middleware/AbstractMiddleware.js.html +45 -45
  49. package/coverage/framework/services/http/middleware/Auth.js.html +19 -19
  50. package/coverage/framework/services/http/middleware/GetUserByToken.js.html +36 -36
  51. package/coverage/framework/services/http/middleware/I18n.js.html +67 -67
  52. package/coverage/framework/services/http/middleware/Pagination.js.html +21 -21
  53. package/coverage/framework/services/http/middleware/PrepareAppInfo.js.html +5 -5
  54. package/coverage/framework/services/http/middleware/RateLimiter.js.html +19 -19
  55. package/coverage/framework/services/http/middleware/RequestLogger.js.html +21 -21
  56. package/coverage/framework/services/http/middleware/RequestParser.js.html +7 -7
  57. package/coverage/framework/services/http/middleware/Role.js.html +43 -43
  58. package/coverage/framework/services/http/middleware/index.html +33 -33
  59. package/coverage/framework/services/http/middleware/test/CheckFlag.js.html +9 -9
  60. package/coverage/framework/services/http/middleware/test/index.html +1 -1
  61. package/coverage/framework/services/messaging/email/index.html +1 -1
  62. package/coverage/framework/services/messaging/email/index.js.html +67 -67
  63. package/coverage/framework/services/messaging/index.html +1 -1
  64. package/coverage/framework/services/messaging/index.js.html +6 -6
  65. package/coverage/framework/services/validate/ValidateService.js.html +155 -167
  66. package/coverage/framework/services/validate/drivers/AbstractValidator.js.html +24 -24
  67. package/coverage/framework/services/validate/drivers/CustomValidator.js.html +14 -14
  68. package/coverage/framework/services/validate/drivers/YupValidator.js.html +41 -41
  69. package/coverage/framework/services/validate/drivers/index.html +1 -1
  70. package/coverage/framework/services/validate/index.html +5 -5
  71. package/coverage/index.html +91 -76
  72. package/helpers/files.js +75 -0
  73. package/helpers/logger.js +19 -0
  74. package/models/Migration.test.js +19 -0
  75. package/modules/AbstractController.js +2 -4
  76. package/modules/Base.js +8 -119
  77. package/modules/BaseCli.js +0 -4
  78. package/package.json +2 -2
  79. package/server.d.ts +14 -1
  80. package/server.js +208 -86
  81. package/services/cache/Cache.js +10 -5
  82. package/services/cache/Cache.test.js +81 -0
  83. package/services/documentation/DocumentationGenerator.js +18 -20
  84. package/services/http/middleware/Auth.test.js +57 -0
  85. package/services/http/middleware/I18n.test.js +15 -3
  86. package/services/http/middleware/PrepareAppInfo.test.js +1 -1
  87. package/services/http/middleware/Role.test.js +93 -0
  88. package/services/validate/ValidateService.js +3 -7
  89. package/tests/setup.js +1 -0
  90. package/tests/setupVitest.js +1 -0
@@ -166,15 +166,15 @@
166
166
  <a name='L101'></a><a href='#L101'>101</a>
167
167
  <a name='L102'></a><a href='#L102'>102</a>
168
168
  <a name='L103'></a><a href='#L103'>103</a>
169
- <a name='L104'></a><a href='#L104'>104</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">11x</span>
170
- <span class="cline-any cline-yes">11x</span>
171
- <span class="cline-any cline-yes">11x</span>
172
- <span class="cline-any cline-yes">11x</span>
173
- <span class="cline-any cline-yes">11x</span>
169
+ <a name='L104'></a><a href='#L104'>104</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">15x</span>
170
+ <span class="cline-any cline-yes">15x</span>
171
+ <span class="cline-any cline-yes">15x</span>
172
+ <span class="cline-any cline-yes">15x</span>
173
+ <span class="cline-any cline-yes">15x</span>
174
174
  <span class="cline-any cline-no">&nbsp;</span>
175
175
  <span class="cline-any cline-no">&nbsp;</span>
176
- <span class="cline-any cline-yes">11x</span>
177
- <span class="cline-any cline-yes">11x</span>
176
+ <span class="cline-any cline-yes">15x</span>
177
+ <span class="cline-any cline-yes">15x</span>
178
178
  <span class="cline-any cline-no">&nbsp;</span>
179
179
  <span class="cline-any cline-no">&nbsp;</span>
180
180
  <span class="cline-any cline-no">&nbsp;</span>
@@ -205,22 +205,22 @@
205
205
  <span class="cline-any cline-no">&nbsp;</span>
206
206
  <span class="cline-any cline-no">&nbsp;</span>
207
207
  <span class="cline-any cline-no">&nbsp;</span>
208
- <span class="cline-any cline-yes">11x</span>
209
- <span class="cline-any cline-yes">11x</span>
210
- <span class="cline-any cline-yes">33x</span>
211
- <span class="cline-any cline-yes">33x</span>
212
- <span class="cline-any cline-yes">33x</span>
213
- <span class="cline-any cline-yes">33x</span>
208
+ <span class="cline-any cline-yes">15x</span>
209
+ <span class="cline-any cline-yes">15x</span>
210
+ <span class="cline-any cline-yes">52x</span>
211
+ <span class="cline-any cline-yes">52x</span>
212
+ <span class="cline-any cline-yes">52x</span>
213
+ <span class="cline-any cline-yes">52x</span>
214
214
  <span class="cline-any cline-no">&nbsp;</span>
215
215
  <span class="cline-any cline-no">&nbsp;</span>
216
- <span class="cline-any cline-yes">33x</span>
217
- <span class="cline-any cline-yes">33x</span>
218
- <span class="cline-any cline-yes">33x</span>
219
- <span class="cline-any cline-yes">33x</span>
220
- <span class="cline-any cline-yes">33x</span>
221
- <span class="cline-any cline-yes">33x</span>
222
- <span class="cline-any cline-yes">33x</span>
223
- <span class="cline-any cline-yes">33x</span>
216
+ <span class="cline-any cline-yes">52x</span>
217
+ <span class="cline-any cline-yes">52x</span>
218
+ <span class="cline-any cline-yes">52x</span>
219
+ <span class="cline-any cline-yes">52x</span>
220
+ <span class="cline-any cline-yes">52x</span>
221
+ <span class="cline-any cline-yes">52x</span>
222
+ <span class="cline-any cline-yes">52x</span>
223
+ <span class="cline-any cline-yes">52x</span>
224
224
  <span class="cline-any cline-yes">2x</span>
225
225
  <span class="cline-any cline-yes">2x</span>
226
226
  <span class="cline-any cline-yes">2x</span>
@@ -248,27 +248,27 @@
248
248
  <span class="cline-any cline-yes">2x</span>
249
249
  <span class="cline-any cline-yes">2x</span>
250
250
  <span class="cline-any cline-yes">2x</span>
251
- <span class="cline-any cline-yes">33x</span>
252
- <span class="cline-any cline-yes">11x</span>
253
- <span class="cline-any cline-yes">11x</span>
254
- <span class="cline-any cline-yes">31x</span>
255
- <span class="cline-any cline-yes">31x</span>
256
- <span class="cline-any cline-yes">31x</span>
257
- <span class="cline-any cline-no">&nbsp;</span>
258
- <span class="cline-any cline-no">&nbsp;</span>
259
- <span class="cline-any cline-yes">31x</span>
260
- <span class="cline-any cline-yes">31x</span>
261
- <span class="cline-any cline-yes">31x</span>
262
- <span class="cline-any cline-yes">31x</span>
263
- <span class="cline-any cline-yes">31x</span>
264
- <span class="cline-any cline-yes">31x</span>
265
- <span class="cline-any cline-yes">31x</span>
266
- <span class="cline-any cline-yes">11x</span>
267
- <span class="cline-any cline-yes">11x</span>
251
+ <span class="cline-any cline-yes">52x</span>
252
+ <span class="cline-any cline-yes">15x</span>
253
+ <span class="cline-any cline-yes">15x</span>
254
+ <span class="cline-any cline-yes">50x</span>
255
+ <span class="cline-any cline-yes">50x</span>
256
+ <span class="cline-any cline-yes">50x</span>
257
+ <span class="cline-any cline-no">&nbsp;</span>
258
+ <span class="cline-any cline-no">&nbsp;</span>
259
+ <span class="cline-any cline-yes">50x</span>
260
+ <span class="cline-any cline-yes">50x</span>
261
+ <span class="cline-any cline-yes">50x</span>
262
+ <span class="cline-any cline-yes">50x</span>
263
+ <span class="cline-any cline-yes">50x</span>
264
+ <span class="cline-any cline-yes">50x</span>
265
+ <span class="cline-any cline-yes">50x</span>
266
+ <span class="cline-any cline-yes">15x</span>
267
+ <span class="cline-any cline-yes">15x</span>
268
268
  <span class="cline-any cline-yes">2x</span>
269
269
  <span class="cline-any cline-yes">2x</span>
270
- <span class="cline-any cline-yes">11x</span>
271
- <span class="cline-any cline-yes">11x</span>
270
+ <span class="cline-any cline-yes">15x</span>
271
+ <span class="cline-any cline-yes">15x</span>
272
272
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const yup = require('yup');
273
273
  const AbstractValidator = require('./AbstractValidator');
274
274
  &nbsp;
@@ -379,7 +379,7 @@ module.exports = YupValidator;
379
379
  <div class='footer quiet pad2 space-top1 center small'>
380
380
  Code coverage generated by
381
381
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
382
- at 2023-09-05T18:04:40.903Z
382
+ at 2023-09-21T04:47:08.309Z
383
383
  </div>
384
384
  <script src="../../../../prettify.js"></script>
385
385
  <script>
@@ -131,7 +131,7 @@
131
131
  <div class='footer quiet pad2 space-top1 center small'>
132
132
  Code coverage generated by
133
133
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
134
- at 2023-09-05T18:04:40.903Z
134
+ at 2023-09-21T04:47:08.309Z
135
135
  </div>
136
136
  <script src="../../../../prettify.js"></script>
137
137
  <script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>161/161</span>
28
+ <span class='fraction'>157/157</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>161/161</span>
49
+ <span class='fraction'>157/157</span>
50
50
  </div>
51
51
 
52
52
 
@@ -84,13 +84,13 @@
84
84
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
85
85
  </td>
86
86
  <td data-value="100" class="pct high">100%</td>
87
- <td data-value="161" class="abs high">161/161</td>
87
+ <td data-value="157" class="abs high">157/157</td>
88
88
  <td data-value="100" class="pct high">100%</td>
89
89
  <td data-value="35" class="abs high">35/35</td>
90
90
  <td data-value="100" class="pct high">100%</td>
91
91
  <td data-value="9" class="abs high">9/9</td>
92
92
  <td data-value="100" class="pct high">100%</td>
93
- <td data-value="161" class="abs high">161/161</td>
93
+ <td data-value="157" class="abs high">157/157</td>
94
94
  </tr>
95
95
 
96
96
  </tbody>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2023-09-05T18:04:40.903Z
104
+ at 2023-09-21T04:47:08.309Z
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">79.22% </span>
26
+ <span class="strong">80.75% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>2582/3259</span>
28
+ <span class='fraction'>2710/3356</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">83.33% </span>
33
+ <span class="strong">84.75% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>365/438</span>
35
+ <span class='fraction'>417/492</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">75.98% </span>
40
+ <span class="strong">78.99% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>155/204</span>
42
+ <span class='fraction'>173/219</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">79.22% </span>
47
+ <span class="strong">80.75% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>2582/3259</span>
49
+ <span class='fraction'>2710/3356</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
  <div class="pad1">
66
66
  <table class="coverage-summary">
67
67
  <thead>
@@ -80,17 +80,17 @@
80
80
  </thead>
81
81
  <tbody><tr>
82
82
  <td class="file high" data-value="framework"><a href="framework/index.html">framework</a></td>
83
- <td data-value="87.34" class="pic high">
84
- <div class="chart"><div class="cover-fill" style="width: 87%"></div><div class="cover-empty" style="width: 13%"></div></div>
83
+ <td data-value="86.64" class="pic high">
84
+ <div class="chart"><div class="cover-fill" style="width: 86%"></div><div class="cover-empty" style="width: 14%"></div></div>
85
85
  </td>
86
- <td data-value="87.34" class="pct high">87.34%</td>
87
- <td data-value="245" class="abs high">214/245</td>
88
- <td data-value="80" class="pct high">80%</td>
89
- <td data-value="20" class="abs high">16/20</td>
90
- <td data-value="91.66" class="pct high">91.66%</td>
91
- <td data-value="12" class="abs high">11/12</td>
92
- <td data-value="87.34" class="pct high">87.34%</td>
93
- <td data-value="245" class="abs high">214/245</td>
86
+ <td data-value="86.64" class="pct high">86.64%</td>
87
+ <td data-value="367" class="abs high">318/367</td>
88
+ <td data-value="78.72" class="pct medium">78.72%</td>
89
+ <td data-value="47" class="abs medium">37/47</td>
90
+ <td data-value="90.9" class="pct high">90.9%</td>
91
+ <td data-value="22" class="abs high">20/22</td>
92
+ <td data-value="86.64" class="pct high">86.64%</td>
93
+ <td data-value="367" class="abs high">318/367</td>
94
94
  </tr>
95
95
 
96
96
  <tr>
@@ -110,32 +110,47 @@
110
110
 
111
111
  <tr>
112
112
  <td class="file high" data-value="framework/controllers"><a href="framework/controllers/index.html">framework/controllers</a></td>
113
- <td data-value="95.01" class="pic high">
114
- <div class="chart"><div class="cover-fill" style="width: 95%"></div><div class="cover-empty" style="width: 5%"></div></div>
113
+ <td data-value="94.93" class="pic high">
114
+ <div class="chart"><div class="cover-fill" style="width: 94%"></div><div class="cover-empty" style="width: 6%"></div></div>
115
115
  </td>
116
- <td data-value="95.01" class="pct high">95.01%</td>
117
- <td data-value="301" class="abs high">286/301</td>
116
+ <td data-value="94.93" class="pct high">94.93%</td>
117
+ <td data-value="296" class="abs high">281/296</td>
118
118
  <td data-value="90.69" class="pct high">90.69%</td>
119
119
  <td data-value="43" class="abs high">39/43</td>
120
120
  <td data-value="100" class="pct high">100%</td>
121
121
  <td data-value="16" class="abs high">16/16</td>
122
- <td data-value="95.01" class="pct high">95.01%</td>
123
- <td data-value="301" class="abs high">286/301</td>
122
+ <td data-value="94.93" class="pct high">94.93%</td>
123
+ <td data-value="296" class="abs high">281/296</td>
124
124
  </tr>
125
125
 
126
126
  <tr>
127
127
  <td class="file high" data-value="framework/controllers/test"><a href="framework/controllers/test/index.html">framework/controllers/test</a></td>
128
- <td data-value="85.87" class="pic high">
128
+ <td data-value="86.41" class="pic high">
129
+ <div class="chart"><div class="cover-fill" style="width: 86%"></div><div class="cover-empty" style="width: 14%"></div></div>
130
+ </td>
131
+ <td data-value="86.41" class="pct high">86.41%</td>
132
+ <td data-value="162" class="abs high">140/162</td>
133
+ <td data-value="100" class="pct high">100%</td>
134
+ <td data-value="11" class="abs high">11/11</td>
135
+ <td data-value="55.55" class="pct medium">55.55%</td>
136
+ <td data-value="18" class="abs medium">10/18</td>
137
+ <td data-value="86.41" class="pct high">86.41%</td>
138
+ <td data-value="162" class="abs high">140/162</td>
139
+ </tr>
140
+
141
+ <tr>
142
+ <td class="file high" data-value="framework/helpers"><a href="framework/helpers/index.html">framework/helpers</a></td>
143
+ <td data-value="85.1" class="pic high">
129
144
  <div class="chart"><div class="cover-fill" style="width: 85%"></div><div class="cover-empty" style="width: 15%"></div></div>
130
145
  </td>
131
- <td data-value="85.87" class="pct high">85.87%</td>
132
- <td data-value="177" class="abs high">152/177</td>
146
+ <td data-value="85.1" class="pct high">85.1%</td>
147
+ <td data-value="94" class="abs high">80/94</td>
148
+ <td data-value="86.36" class="pct high">86.36%</td>
149
+ <td data-value="22" class="abs high">19/22</td>
133
150
  <td data-value="100" class="pct high">100%</td>
134
- <td data-value="12" class="abs high">12/12</td>
135
- <td data-value="50" class="pct medium">50%</td>
136
- <td data-value="20" class="abs medium">10/20</td>
137
- <td data-value="85.87" class="pct high">85.87%</td>
138
- <td data-value="177" class="abs high">152/177</td>
151
+ <td data-value="3" class="abs high">3/3</td>
152
+ <td data-value="85.1" class="pct high">85.1%</td>
153
+ <td data-value="94" class="abs high">80/94</td>
139
154
  </tr>
140
155
 
141
156
  <tr>
@@ -159,58 +174,58 @@
159
174
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
160
175
  </td>
161
176
  <td data-value="100" class="pct high">100%</td>
162
- <td data-value="280" class="abs high">280/280</td>
177
+ <td data-value="295" class="abs high">295/295</td>
163
178
  <td data-value="100" class="pct high">100%</td>
164
- <td data-value="30" class="abs high">30/30</td>
179
+ <td data-value="32" class="abs high">32/32</td>
165
180
  <td data-value="100" class="pct high">100%</td>
166
- <td data-value="18" class="abs high">18/18</td>
181
+ <td data-value="19" class="abs high">19/19</td>
167
182
  <td data-value="100" class="pct high">100%</td>
168
- <td data-value="280" class="abs high">280/280</td>
183
+ <td data-value="295" class="abs high">295/295</td>
169
184
  </tr>
170
185
 
171
186
  <tr>
172
187
  <td class="file medium" data-value="framework/modules"><a href="framework/modules/index.html">framework/modules</a></td>
173
- <td data-value="64.88" class="pic medium">
174
- <div class="chart"><div class="cover-fill" style="width: 64%"></div><div class="cover-empty" style="width: 36%"></div></div>
188
+ <td data-value="62.83" class="pic medium">
189
+ <div class="chart"><div class="cover-fill" style="width: 62%"></div><div class="cover-empty" style="width: 38%"></div></div>
175
190
  </td>
176
- <td data-value="64.88" class="pct medium">64.88%</td>
177
- <td data-value="635" class="abs medium">412/635</td>
178
- <td data-value="79.41" class="pct medium">79.41%</td>
179
- <td data-value="102" class="abs medium">81/102</td>
180
- <td data-value="81.81" class="pct high">81.81%</td>
181
- <td data-value="33" class="abs high">27/33</td>
182
- <td data-value="64.88" class="pct medium">64.88%</td>
183
- <td data-value="635" class="abs medium">412/635</td>
191
+ <td data-value="62.83" class="pct medium">62.83%</td>
192
+ <td data-value="522" class="abs medium">328/522</td>
193
+ <td data-value="78.16" class="pct medium">78.16%</td>
194
+ <td data-value="87" class="abs medium">68/87</td>
195
+ <td data-value="83.87" class="pct high">83.87%</td>
196
+ <td data-value="31" class="abs high">26/31</td>
197
+ <td data-value="62.83" class="pct medium">62.83%</td>
198
+ <td data-value="522" class="abs medium">328/522</td>
184
199
  </tr>
185
200
 
186
201
  <tr>
187
202
  <td class="file high" data-value="framework/services/cache"><a href="framework/services/cache/index.html">framework/services/cache</a></td>
188
- <td data-value="80.86" class="pic high">
189
- <div class="chart"><div class="cover-fill" style="width: 80%"></div><div class="cover-empty" style="width: 20%"></div></div>
203
+ <td data-value="94.16" class="pic high">
204
+ <div class="chart"><div class="cover-fill" style="width: 94%"></div><div class="cover-empty" style="width: 6%"></div></div>
190
205
  </td>
191
- <td data-value="80.86" class="pct high">80.86%</td>
192
- <td data-value="115" class="abs high">93/115</td>
193
- <td data-value="72.22" class="pct medium">72.22%</td>
194
- <td data-value="18" class="abs medium">13/18</td>
195
- <td data-value="80" class="pct high">80%</td>
196
- <td data-value="5" class="abs high">4/5</td>
197
- <td data-value="80.86" class="pct high">80.86%</td>
198
- <td data-value="115" class="abs high">93/115</td>
206
+ <td data-value="94.16" class="pct high">94.16%</td>
207
+ <td data-value="120" class="abs high">113/120</td>
208
+ <td data-value="92.59" class="pct high">92.59%</td>
209
+ <td data-value="27" class="abs high">25/27</td>
210
+ <td data-value="100" class="pct high">100%</td>
211
+ <td data-value="6" class="abs high">6/6</td>
212
+ <td data-value="94.16" class="pct high">94.16%</td>
213
+ <td data-value="120" class="abs high">113/120</td>
199
214
  </tr>
200
215
 
201
216
  <tr>
202
217
  <td class="file low" data-value="framework/services/documentation"><a href="framework/services/documentation/index.html">framework/services/documentation</a></td>
203
- <td data-value="8.18" class="pic low">
204
- <div class="chart"><div class="cover-fill" style="width: 8%"></div><div class="cover-empty" style="width: 92%"></div></div>
218
+ <td data-value="9.46" class="pic low">
219
+ <div class="chart"><div class="cover-fill" style="width: 9%"></div><div class="cover-empty" style="width: 91%"></div></div>
205
220
  </td>
206
- <td data-value="8.18" class="pct low">8.18%</td>
207
- <td data-value="171" class="abs low">14/171</td>
221
+ <td data-value="9.46" class="pct low">9.46%</td>
222
+ <td data-value="169" class="abs low">16/169</td>
208
223
  <td data-value="100" class="pct high">100%</td>
209
224
  <td data-value="1" class="abs high">1/1</td>
210
225
  <td data-value="0" class="pct low">0%</td>
211
226
  <td data-value="4" class="abs low">0/4</td>
212
- <td data-value="8.18" class="pct low">8.18%</td>
213
- <td data-value="171" class="abs low">14/171</td>
227
+ <td data-value="9.46" class="pct low">9.46%</td>
228
+ <td data-value="169" class="abs low">16/169</td>
214
229
  </tr>
215
230
 
216
231
  <tr>
@@ -230,17 +245,17 @@
230
245
 
231
246
  <tr>
232
247
  <td class="file high" data-value="framework/services/http/middleware"><a href="framework/services/http/middleware/index.html">framework/services/http/middleware</a></td>
233
- <td data-value="86.55" class="pic high">
234
- <div class="chart"><div class="cover-fill" style="width: 86%"></div><div class="cover-empty" style="width: 14%"></div></div>
248
+ <td data-value="88.82" class="pic high">
249
+ <div class="chart"><div class="cover-fill" style="width: 88%"></div><div class="cover-empty" style="width: 12%"></div></div>
235
250
  </td>
236
- <td data-value="86.55" class="pct high">86.55%</td>
237
- <td data-value="528" class="abs high">457/528</td>
238
- <td data-value="79.5" class="pct medium">79.5%</td>
239
- <td data-value="122" class="abs medium">97/122</td>
240
- <td data-value="76.27" class="pct medium">76.27%</td>
241
- <td data-value="59" class="abs medium">45/59</td>
242
- <td data-value="86.55" class="pct high">86.55%</td>
243
- <td data-value="528" class="abs high">457/528</td>
251
+ <td data-value="88.82" class="pct high">88.82%</td>
252
+ <td data-value="528" class="abs high">469/528</td>
253
+ <td data-value="82.57" class="pct high">82.57%</td>
254
+ <td data-value="132" class="abs high">109/132</td>
255
+ <td data-value="77.77" class="pct medium">77.77%</td>
256
+ <td data-value="63" class="abs medium">49/63</td>
257
+ <td data-value="88.82" class="pct high">88.82%</td>
258
+ <td data-value="528" class="abs high">469/528</td>
244
259
  </tr>
245
260
 
246
261
  <tr>
@@ -294,13 +309,13 @@
294
309
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
295
310
  </td>
296
311
  <td data-value="100" class="pct high">100%</td>
297
- <td data-value="161" class="abs high">161/161</td>
312
+ <td data-value="157" class="abs high">157/157</td>
298
313
  <td data-value="100" class="pct high">100%</td>
299
314
  <td data-value="35" class="abs high">35/35</td>
300
315
  <td data-value="100" class="pct high">100%</td>
301
316
  <td data-value="9" class="abs high">9/9</td>
302
317
  <td data-value="100" class="pct high">100%</td>
303
- <td data-value="161" class="abs high">161/161</td>
318
+ <td data-value="157" class="abs high">157/157</td>
304
319
  </tr>
305
320
 
306
321
  <tr>
@@ -326,7 +341,7 @@
326
341
  <div class='footer quiet pad2 space-top1 center small'>
327
342
  Code coverage generated by
328
343
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
329
- at 2023-09-05T18:04:40.903Z
344
+ at 2023-09-21T04:47:08.309Z
330
345
  </div>
331
346
  <script src="prettify.js"></script>
332
347
  <script>
@@ -0,0 +1,75 @@
1
+ const fs = require('node:fs').promises;
2
+ const { join } = require('node:path');
3
+
4
+ const getFilesPathWithInheritance = async ({
5
+ internalFolder,
6
+ externalFolder,
7
+ logger,
8
+ loggerFileType = '',
9
+ filter: { startWithCapital = true, notTests = true, notHidden = true } = {},
10
+ }) => {
11
+ let [internalFiles, externalFiles] = await Promise.all([
12
+ fs.readdir(internalFolder, { recursive: true, withFileTypes: true }),
13
+ fs.readdir(externalFolder, { recursive: true, withFileTypes: true }),
14
+ ]);
15
+
16
+ const filterIndexFile = (fileDirent) => {
17
+ if (!fileDirent.isFile()) {
18
+ return false;
19
+ }
20
+ const fileArray = fileDirent.name.split('/');
21
+ const file = fileArray[fileArray.length - 1];
22
+ if (startWithCapital && file[0] !== file[0].toUpperCase()) {
23
+ // not start with capital
24
+ return false;
25
+ }
26
+ if (notTests && file.endsWith('.test.js')) {
27
+ return false;
28
+ }
29
+ if (notHidden && file[0] === '.') {
30
+ // not start with dot
31
+ return false;
32
+ }
33
+ return true;
34
+ };
35
+
36
+ internalFiles = internalFiles
37
+ .filter(filterIndexFile)
38
+ .map((fileDirent) =>
39
+ join(fileDirent.path, fileDirent.name).replace(`${internalFolder}/`, ''),
40
+ );
41
+ externalFiles = externalFiles
42
+ .filter(filterIndexFile)
43
+ .map((fileDirent) =>
44
+ join(fileDirent.path, fileDirent.name).replace(`${externalFolder}/`, ''),
45
+ );
46
+
47
+ const filesToLoad = [];
48
+ for (const file of internalFiles) {
49
+ if (externalFiles.includes(file)) {
50
+ logger(
51
+ `Skipping register INTERNAL file '${file}' ${
52
+ loggerFileType ? `of type ${loggerFileType}` : ''
53
+ } as it override by EXTERNAL ONE`,
54
+ );
55
+ } else {
56
+ filesToLoad.push({
57
+ path: `${internalFolder}/${file}`,
58
+ file,
59
+ });
60
+ }
61
+ }
62
+
63
+ for (const file of externalFiles) {
64
+ filesToLoad.push({
65
+ path: `${externalFolder}/${file}`,
66
+ file,
67
+ });
68
+ }
69
+ return filesToLoad;
70
+ };
71
+
72
+ module.exports = {
73
+ // eslint-disable-next-line import/prefer-default-export
74
+ getFilesPathWithInheritance,
75
+ };
@@ -0,0 +1,19 @@
1
+ /* eslint-disable no-console */
2
+ const levels = ['error', 'warn', 'info', 'http', 'verbose', 'debug', 'silly'];
3
+
4
+ const consoleLogger = (level, message) => {
5
+ if (
6
+ !process.env.LOGGER_CONSOLE_LEVEL ||
7
+ levels.indexOf(process.env.LOGGER_CONSOLE_LEVEL) >= levels.indexOf(level)
8
+ ) {
9
+ if (console[level]) {
10
+ console[level](message);
11
+ } else {
12
+ console.log(message);
13
+ }
14
+ }
15
+ };
16
+ module.exports = {
17
+ levels,
18
+ consoleLogger,
19
+ };
@@ -0,0 +1,19 @@
1
+ import { describe, it, expect } from 'vitest';
2
+
3
+ describe('migration model', () => {
4
+ it('migrationFile should be uniqe', async () => {
5
+ expect.assertions(1);
6
+ let errorCode;
7
+ const MigrationModel = global.server.app.getModel('Migration');
8
+ await MigrationModel.create({
9
+ migrationFile: 'a',
10
+ });
11
+ await MigrationModel.create({
12
+ migrationFile: 'a',
13
+ }).catch((e) => {
14
+ errorCode = e.code;
15
+ });
16
+
17
+ expect(errorCode).toBe(11000);
18
+ });
19
+ });
@@ -227,9 +227,7 @@ class AbstractController extends Base {
227
227
  });
228
228
  }
229
229
  return routeObject.handler.call(this, req, res, next).catch((e) => {
230
- this.logger.error(e.message);
231
- // eslint-disable-next-line no-console
232
- console.error(e);
230
+ this.logger.error(e);
233
231
  return res.status(500).json({
234
232
  message:
235
233
  'Platform error. Please check later or contact support',
@@ -271,7 +269,7 @@ class AbstractController extends Base {
271
269
  */
272
270
  if (!this.app.httpServer) {
273
271
  this.app.documentation.push(
274
- DocumentationGenerator.convertDataToDocumentationElement(
272
+ new DocumentationGenerator(this.app).convertDataToDocumentationElement(
275
273
  this.getConstructorName(),
276
274
  routesInfo,
277
275
  middlewaresInfo,