@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,16 +23,16 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">95.65% </span>
26
+ <span class="strong">76.08% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>44/46</span>
28
+ <span class='fraction'>35/46</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
33
+ <span class="strong">50% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>8/8</span>
35
+ <span class='fraction'>3/6</span>
36
36
  </div>
37
37
 
38
38
 
@@ -44,9 +44,9 @@
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">95.65% </span>
47
+ <span class="strong">76.08% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>44/46</span>
49
+ <span class='fraction'>35/46</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 high'></div>
64
+ <div class='status-line medium'></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>
@@ -109,52 +109,52 @@
109
109
  <a name='L44'></a><a href='#L44'>44</a>
110
110
  <a name='L45'></a><a href='#L45'>45</a>
111
111
  <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">15x</span>
113
- <span class="cline-any cline-yes">15x</span>
114
- <span class="cline-any cline-yes">15x</span>
115
- <span class="cline-any cline-yes">15x</span>
112
+ <a name='L47'></a><a href='#L47'>47</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
113
+ <span class="cline-any cline-yes">2x</span>
114
+ <span class="cline-any cline-yes">2x</span>
115
+ <span class="cline-any cline-yes">2x</span>
116
116
  <span class="cline-any cline-no">&nbsp;</span>
117
117
  <span class="cline-any cline-no">&nbsp;</span>
118
- <span class="cline-any cline-yes">15x</span>
119
- <span class="cline-any cline-yes">15x</span>
120
- <span class="cline-any cline-yes">63x</span>
121
- <span class="cline-any cline-yes">63x</span>
122
- <span class="cline-any cline-yes">63x</span>
123
- <span class="cline-any cline-yes">63x</span>
124
- <span class="cline-any cline-yes">63x</span>
125
- <span class="cline-any cline-yes">63x</span>
126
- <span class="cline-any cline-yes">63x</span>
127
- <span class="cline-any cline-yes">63x</span>
128
- <span class="cline-any cline-yes">63x</span>
129
- <span class="cline-any cline-yes">15x</span>
130
- <span class="cline-any cline-yes">15x</span>
131
- <span class="cline-any cline-yes">79x</span>
118
+ <span class="cline-any cline-yes">2x</span>
119
+ <span class="cline-any cline-yes">2x</span>
132
120
  <span class="cline-any cline-yes">8x</span>
133
121
  <span class="cline-any cline-yes">8x</span>
134
122
  <span class="cline-any cline-yes">8x</span>
135
- <span class="cline-any cline-yes">71x</span>
136
- <span class="cline-any cline-yes">71x</span>
137
- <span class="cline-any cline-yes">71x</span>
138
- <span class="cline-any cline-yes">71x</span>
139
- <span class="cline-any cline-yes">71x</span>
140
- <span class="cline-any cline-yes">71x</span>
141
- <span class="cline-any cline-yes">71x</span>
142
- <span class="cline-any cline-yes">71x</span>
143
- <span class="cline-any cline-yes">71x</span>
144
- <span class="cline-any cline-yes">64x</span>
145
- <span class="cline-any cline-yes">64x</span>
146
- <span class="cline-any cline-yes">64x</span>
147
- <span class="cline-any cline-yes">71x</span>
148
- <span class="cline-any cline-yes">7x</span>
149
- <span class="cline-any cline-yes">7x</span>
150
- <span class="cline-any cline-yes">7x</span>
151
- <span class="cline-any cline-yes">7x</span>
152
- <span class="cline-any cline-yes">7x</span>
153
- <span class="cline-any cline-yes">7x</span>
154
- <span class="cline-any cline-yes">79x</span>
155
- <span class="cline-any cline-yes">15x</span>
156
- <span class="cline-any cline-yes">15x</span>
157
- <span class="cline-any cline-yes">15x</span>
123
+ <span class="cline-any cline-yes">8x</span>
124
+ <span class="cline-any cline-yes">8x</span>
125
+ <span class="cline-any cline-yes">8x</span>
126
+ <span class="cline-any cline-yes">8x</span>
127
+ <span class="cline-any cline-yes">8x</span>
128
+ <span class="cline-any cline-yes">8x</span>
129
+ <span class="cline-any cline-yes">2x</span>
130
+ <span class="cline-any cline-yes">2x</span>
131
+ <span class="cline-any cline-yes">30x</span>
132
+ <span class="cline-any cline-no">&nbsp;</span>
133
+ <span class="cline-any cline-no">&nbsp;</span>
134
+ <span class="cline-any cline-no">&nbsp;</span>
135
+ <span class="cline-any cline-yes">30x</span>
136
+ <span class="cline-any cline-yes">30x</span>
137
+ <span class="cline-any cline-yes">30x</span>
138
+ <span class="cline-any cline-yes">30x</span>
139
+ <span class="cline-any cline-yes">30x</span>
140
+ <span class="cline-any cline-yes">30x</span>
141
+ <span class="cline-any cline-yes">30x</span>
142
+ <span class="cline-any cline-yes">30x</span>
143
+ <span class="cline-any cline-yes">30x</span>
144
+ <span class="cline-any cline-yes">30x</span>
145
+ <span class="cline-any cline-yes">30x</span>
146
+ <span class="cline-any cline-yes">30x</span>
147
+ <span class="cline-any cline-yes">30x</span>
148
+ <span class="cline-any cline-no">&nbsp;</span>
149
+ <span class="cline-any cline-no">&nbsp;</span>
150
+ <span class="cline-any cline-no">&nbsp;</span>
151
+ <span class="cline-any cline-no">&nbsp;</span>
152
+ <span class="cline-any cline-no">&nbsp;</span>
153
+ <span class="cline-any cline-no">&nbsp;</span>
154
+ <span class="cline-any cline-yes">30x</span>
155
+ <span class="cline-any cline-yes">2x</span>
156
+ <span class="cline-any cline-yes">2x</span>
157
+ <span class="cline-any cline-yes">2x</span>
158
158
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const AbstractMiddleware = require('./AbstractMiddleware');
159
159
  &nbsp;
160
160
  class GetUserByToken extends AbstractMiddleware {
@@ -174,10 +174,10 @@ class GetUserByToken extends AbstractMiddleware {
174
174
  }
175
175
  &nbsp;
176
176
  async middleware(req, res, next) {
177
- if (req.appInfo.user) {
178
- this.logger.warn('You call GetUserByToken more then once');
179
- return next();
180
- }
177
+ if (req.appInfo.user) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
178
+ <span class="cstat-no" title="statement not covered" > this.logger.warn('You call GetUserByToken more then once');</span>
179
+ <span class="cstat-no" title="statement not covered" > return next();</span>
180
+ <span class="cstat-no" title="statement not covered" > }</span>
181
181
  let { token } = req.body;
182
182
  this.logger.verbose(
183
183
  `GetUserByToken token in BODY ${token}. Token if Authorization header ${req.get(
@@ -186,17 +186,17 @@ class GetUserByToken extends AbstractMiddleware {
186
186
  );
187
187
  if (!token) {
188
188
  token = req.get('Authorization');
189
- if (!token || token === 'null') {
189
+ if (!token <span class="branch-0 cbranch-no" title="branch not covered" >|| token === 'null')</span> {
190
190
  // is null express bug*
191
191
  return next();
192
192
  }
193
193
  }
194
- const User = this.app.getModel('User');
195
- const user = await User.getUserByToken(token);
196
- if (user) {
197
- req.appInfo.user = user;
198
- }
199
- return next();
194
+ <span class="cstat-no" title="statement not covered" ><span class="branch-0 cbranch-no" title="branch not covered" > const User = this.app.getModel('User');</span></span>
195
+ <span class="cstat-no" title="statement not covered" > const user = await User.getUserByToken(token);</span>
196
+ <span class="cstat-no" title="statement not covered" > if (user) {</span>
197
+ <span class="cstat-no" title="statement not covered" > req.appInfo.user = user;</span>
198
+ <span class="cstat-no" title="statement not covered" > }</span>
199
+ <span class="cstat-no" title="statement not covered" > return next();</span>
200
200
  }
201
201
  }
202
202
  &nbsp;
@@ -208,7 +208,7 @@ module.exports = GetUserByToken;
208
208
  <div class='footer quiet pad2 space-top1 center small'>
209
209
  Code coverage generated by
210
210
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
211
- at 2023-09-21T04:47:08.309Z
211
+ at 2023-09-21T12:04:18.148Z
212
212
  </div>
213
213
  <script src="../../../../prettify.js"></script>
214
214
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">98.31% </span>
26
+ <span class="strong">89.91% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>117/119</span>
28
+ <span class='fraction'>107/119</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">86.84% </span>
33
+ <span class="strong">68.75% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>33/38</span>
35
+ <span class='fraction'>11/16</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">90% </span>
40
+ <span class="strong">80% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>18/20</span>
42
+ <span class='fraction'>8/10</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">98.31% </span>
47
+ <span class="strong">89.91% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>117/119</span>
49
+ <span class='fraction'>107/119</span>
50
50
  </div>
51
51
 
52
52
 
@@ -182,12 +182,27 @@
182
182
  <a name='L117'></a><a href='#L117'>117</a>
183
183
  <a name='L118'></a><a href='#L118'>118</a>
184
184
  <a name='L119'></a><a href='#L119'>119</a>
185
- <a name='L120'></a><a href='#L120'>120</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">15x</span>
186
- <span class="cline-any cline-yes">15x</span>
187
- <span class="cline-any cline-yes">15x</span>
188
- <span class="cline-any cline-yes">15x</span>
189
- <span class="cline-any cline-yes">15x</span>
190
- <span class="cline-any cline-no">&nbsp;</span>
185
+ <a name='L120'></a><a href='#L120'>120</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
186
+ <span class="cline-any cline-yes">2x</span>
187
+ <span class="cline-any cline-yes">2x</span>
188
+ <span class="cline-any cline-yes">2x</span>
189
+ <span class="cline-any cline-yes">2x</span>
190
+ <span class="cline-any cline-yes">2x</span>
191
+ <span class="cline-any cline-yes">2x</span>
192
+ <span class="cline-any cline-yes">2x</span>
193
+ <span class="cline-any cline-yes">2x</span>
194
+ <span class="cline-any cline-yes">2x</span>
195
+ <span class="cline-any cline-yes">2x</span>
196
+ <span class="cline-any cline-yes">2x</span>
197
+ <span class="cline-any cline-yes">2x</span>
198
+ <span class="cline-any cline-yes">2x</span>
199
+ <span class="cline-any cline-yes">2x</span>
200
+ <span class="cline-any cline-yes">2x</span>
201
+ <span class="cline-any cline-yes">2x</span>
202
+ <span class="cline-any cline-yes">2x</span>
203
+ <span class="cline-any cline-yes">2x</span>
204
+ <span class="cline-any cline-yes">2x</span>
205
+ <span class="cline-any cline-yes">2x</span>
191
206
  <span class="cline-any cline-yes">2x</span>
192
207
  <span class="cline-any cline-yes">2x</span>
193
208
  <span class="cline-any cline-yes">2x</span>
@@ -199,120 +214,105 @@
199
214
  <span class="cline-any cline-yes">2x</span>
200
215
  <span class="cline-any cline-yes">2x</span>
201
216
  <span class="cline-any cline-yes">2x</span>
202
- <span class="cline-any cline-yes">1x</span>
203
- <span class="cline-any cline-yes">1x</span>
204
- <span class="cline-any cline-yes">1x</span>
205
- <span class="cline-any cline-yes">1x</span>
206
- <span class="cline-any cline-yes">1x</span>
207
- <span class="cline-any cline-yes">1x</span>
208
- <span class="cline-any cline-yes">1x</span>
209
- <span class="cline-any cline-yes">1x</span>
210
- <span class="cline-any cline-yes">1x</span>
211
- <span class="cline-any cline-yes">1x</span>
212
- <span class="cline-any cline-yes">1x</span>
213
- <span class="cline-any cline-yes">1x</span>
214
- <span class="cline-any cline-yes">1x</span>
215
- <span class="cline-any cline-yes">1x</span>
216
- <span class="cline-any cline-yes">1x</span>
217
- <span class="cline-any cline-yes">1x</span>
218
- <span class="cline-any cline-yes">1x</span>
219
- <span class="cline-any cline-yes">1x</span>
220
- <span class="cline-any cline-yes">1x</span>
221
- <span class="cline-any cline-yes">1x</span>
222
- <span class="cline-any cline-yes">1x</span>
223
- <span class="cline-any cline-yes">1x</span>
224
- <span class="cline-any cline-yes">1x</span>
225
- <span class="cline-any cline-yes">1x</span>
226
- <span class="cline-any cline-yes">1x</span>
227
217
  <span class="cline-any cline-yes">2x</span>
228
218
  <span class="cline-any cline-yes">2x</span>
229
- <span class="cline-any cline-no">&nbsp;</span>
230
219
  <span class="cline-any cline-yes">2x</span>
231
- <span class="cline-any cline-yes">54x</span>
232
- <span class="cline-any cline-yes">54x</span>
233
- <span class="cline-any cline-yes">54x</span>
234
- <span class="cline-any cline-yes">54x</span>
235
- <span class="cline-any cline-yes">1x</span>
236
- <span class="cline-any cline-yes">1x</span>
237
- <span class="cline-any cline-yes">54x</span>
238
- <span class="cline-any cline-yes">54x</span>
239
- <span class="cline-any cline-yes">3x</span>
240
- <span class="cline-any cline-yes">3x</span>
241
- <span class="cline-any cline-yes">3x</span>
242
220
  <span class="cline-any cline-yes">2x</span>
243
221
  <span class="cline-any cline-yes">2x</span>
244
- <span class="cline-any cline-yes">1x</span>
245
- <span class="cline-any cline-yes">1x</span>
246
- <span class="cline-any cline-yes">1x</span>
247
- <span class="cline-any cline-yes">1x</span>
248
- <span class="cline-any cline-yes">1x</span>
249
222
  <span class="cline-any cline-yes">2x</span>
250
223
  <span class="cline-any cline-yes">2x</span>
224
+ <span class="cline-any cline-yes">2x</span>
225
+ <span class="cline-any cline-yes">2x</span>
226
+ <span class="cline-any cline-yes">2x</span>
227
+ <span class="cline-any cline-yes">2x</span>
228
+ <span class="cline-any cline-yes">2x</span>
229
+ <span class="cline-any cline-yes">2x</span>
230
+ <span class="cline-any cline-yes">2x</span>
231
+ <span class="cline-any cline-yes">2x</span>
232
+ <span class="cline-any cline-yes">2x</span>
233
+ <span class="cline-any cline-yes">2x</span>
234
+ <span class="cline-any cline-yes">2x</span>
235
+ <span class="cline-any cline-no">&nbsp;</span>
236
+ <span class="cline-any cline-no">&nbsp;</span>
237
+ <span class="cline-any cline-yes">2x</span>
238
+ <span class="cline-any cline-yes">2x</span>
239
+ <span class="cline-any cline-yes">30x</span>
240
+ <span class="cline-any cline-yes">30x</span>
241
+ <span class="cline-any cline-yes">30x</span>
242
+ <span class="cline-any cline-yes">30x</span>
243
+ <span class="cline-any cline-yes">30x</span>
244
+ <span class="cline-any cline-yes">30x</span>
245
+ <span class="cline-any cline-yes">30x</span>
246
+ <span class="cline-any cline-yes">30x</span>
247
+ <span class="cline-any cline-yes">30x</span>
248
+ <span class="cline-any cline-yes">30x</span>
249
+ <span class="cline-any cline-yes">30x</span>
250
+ <span class="cline-any cline-yes">30x</span>
251
251
  <span class="cline-any cline-yes">1x</span>
252
252
  <span class="cline-any cline-yes">1x</span>
253
253
  <span class="cline-any cline-yes">1x</span>
254
254
  <span class="cline-any cline-yes">1x</span>
255
+ <span class="cline-any cline-yes">1x</span>
256
+ <span class="cline-any cline-yes">30x</span>
257
+ <span class="cline-any cline-yes">30x</span>
258
+ <span class="cline-any cline-yes">30x</span>
259
+ <span class="cline-any cline-yes">30x</span>
260
+ <span class="cline-any cline-no">&nbsp;</span>
261
+ <span class="cline-any cline-no">&nbsp;</span>
262
+ <span class="cline-any cline-yes">30x</span>
263
+ <span class="cline-any cline-yes">30x</span>
264
+ <span class="cline-any cline-yes">30x</span>
265
+ <span class="cline-any cline-yes">30x</span>
255
266
  <span class="cline-any cline-yes">22x</span>
256
267
  <span class="cline-any cline-yes">22x</span>
257
- <span class="cline-any cline-yes">22x</span>
258
- <span class="cline-any cline-yes">22x</span>
259
- <span class="cline-any cline-yes">22x</span>
260
- <span class="cline-any cline-yes">22x</span>
261
- <span class="cline-any cline-yes">22x</span>
262
- <span class="cline-any cline-yes">22x</span>
263
- <span class="cline-any cline-yes">22x</span>
264
- <span class="cline-any cline-yes">3x</span>
265
- <span class="cline-any cline-yes">3x</span>
266
- <span class="cline-any cline-yes">2x</span>
267
- <span class="cline-any cline-yes">54x</span>
268
- <span class="cline-any cline-yes">3x</span>
269
- <span class="cline-any cline-yes">3x</span>
270
- <span class="cline-any cline-yes">3x</span>
271
- <span class="cline-any cline-yes">3x</span>
272
- <span class="cline-any cline-yes">3x</span>
273
- <span class="cline-any cline-yes">54x</span>
274
- <span class="cline-any cline-yes">54x</span>
275
- <span class="cline-any cline-yes">2x</span>
276
- <span class="cline-any cline-yes">2x</span>
277
- <span class="cline-any cline-yes">54x</span>
278
- <span class="cline-any cline-yes">162x</span>
279
- <span class="cline-any cline-yes">162x</span>
280
- <span class="cline-any cline-yes">162x</span>
281
- <span class="cline-any cline-yes">162x</span>
282
- <span class="cline-any cline-yes">162x</span>
283
- <span class="cline-any cline-yes">8x</span>
284
- <span class="cline-any cline-yes">8x</span>
285
- <span class="cline-any cline-yes">13x</span>
286
- <span class="cline-any cline-yes">13x</span>
287
- <span class="cline-any cline-yes">5x</span>
288
- <span class="cline-any cline-yes">5x</span>
289
- <span class="cline-any cline-yes">5x</span>
290
- <span class="cline-any cline-yes">8x</span>
291
- <span class="cline-any cline-yes">8x</span>
292
- <span class="cline-any cline-yes">7x</span>
293
- <span class="cline-any cline-yes">8x</span>
294
- <span class="cline-any cline-yes">1x</span>
295
- <span class="cline-any cline-yes">1x</span>
296
- <span class="cline-any cline-yes">8x</span>
297
- <span class="cline-any cline-yes">8x</span>
298
- <span class="cline-any cline-yes">13x</span>
299
- <span class="cline-any cline-yes">8x</span>
300
- <span class="cline-any cline-yes">8x</span>
268
+ <span class="cline-any cline-yes">30x</span>
269
+ <span class="cline-any cline-yes">30x</span>
270
+ <span class="cline-any cline-yes">30x</span>
271
+ <span class="cline-any cline-yes">30x</span>
272
+ <span class="cline-any cline-yes">30x</span>
273
+ <span class="cline-any cline-yes">2x</span>
274
+ <span class="cline-any cline-yes">2x</span>
275
+ <span class="cline-any cline-yes">2x</span>
276
+ <span class="cline-any cline-yes">2x</span>
277
+ <span class="cline-any cline-yes">2x</span>
278
+ <span class="cline-any cline-yes">2x</span>
279
+ <span class="cline-any cline-yes">2x</span>
280
+ <span class="cline-any cline-yes">2x</span>
281
+ <span class="cline-any cline-yes">2x</span>
282
+ <span class="cline-any cline-yes">2x</span>
283
+ <span class="cline-any cline-yes">30x</span>
284
+ <span class="cline-any cline-yes">30x</span>
285
+ <span class="cline-any cline-yes">90x</span>
286
+ <span class="cline-any cline-yes">90x</span>
287
+ <span class="cline-any cline-yes">90x</span>
288
+ <span class="cline-any cline-yes">90x</span>
289
+ <span class="cline-any cline-yes">90x</span>
290
+ <span class="cline-any cline-no">&nbsp;</span>
291
+ <span class="cline-any cline-no">&nbsp;</span>
292
+ <span class="cline-any cline-no">&nbsp;</span>
293
+ <span class="cline-any cline-no">&nbsp;</span>
294
+ <span class="cline-any cline-no">&nbsp;</span>
295
+ <span class="cline-any cline-no">&nbsp;</span>
296
+ <span class="cline-any cline-no">&nbsp;</span>
297
+ <span class="cline-any cline-no">&nbsp;</span>
298
+ <span class="cline-any cline-yes">90x</span>
299
+ <span class="cline-any cline-yes">30x</span>
300
+ <span class="cline-any cline-yes">30x</span>
301
+ <span class="cline-any cline-yes">2x</span>
302
+ <span class="cline-any cline-yes">2x</span>
301
303
  <span class="cline-any cline-yes">2x</span>
302
- <span class="cline-any cline-yes">1x</span>
303
- <span class="cline-any cline-yes">1x</span>
304
304
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const i18next = require('i18next');
305
305
  const BackendFS = require('i18next-fs-backend');
306
306
  const Backend = require('i18next-chained-backend');
307
307
  &nbsp;
308
- const AbstractMiddleware = require('./<span class="fstat-no" title="function not covered" >AbstractMiddleware');</span>
309
- <span class="cstat-no" title="statement not covered" ></span>
308
+ const AbstractMiddleware = require('./AbstractMiddleware');
309
+ &nbsp;
310
310
  class I18n extends AbstractMiddleware {
311
311
  constructor(app, params) {
312
312
  super(app, params);
313
313
  const I18NConfig = this.app.getConfig('i18n');
314
314
  this.i18n = {
315
- t: (text) =&gt; text,
315
+ t: <span class="fstat-no" title="function not covered" >(text) =&gt; text,</span>
316
316
  language: I18NConfig.fallbackLng,
317
317
  };
318
318
  this.cache = {};
@@ -344,29 +344,29 @@ class I18n extends AbstractMiddleware {
344
344
  });
345
345
  }
346
346
  &nbsp;
347
- this.enabled = <span class="fstat-no" title="function not covered" >I18NConfig.enabled;</span>
348
- <span class="cstat-no" title="statement not covered" > this.lookupQuerystring = I18NConfig.lookupQuerystring;</span>
347
+ this.enabled = I18NConfig.enabled;
348
+ this.lookupQuerystring = I18NConfig.lookupQuerystring;
349
349
  this.supportedLngs = I18NConfig.supportedLngs;
350
350
  this.fallbackLng = I18NConfig.fallbackLng;
351
351
  }
352
352
  &nbsp;
353
- static get description() {
354
- <span class="branch-0 cbranch-no" title="branch not covered" > return 'Provide language detection and translation'</span>;
355
- }
353
+ static <span class="fstat-no" title="function not covered" >get description() {</span>
354
+ <span class="cstat-no" title="statement not covered" > return 'Provide language detection and translation';</span>
355
+ <span class="cstat-no" title="statement not covered" > }</span>
356
356
  &nbsp;
357
357
  async middleware(req, res, next) {
358
358
  let i18n;
359
359
  &nbsp;
360
360
  if (this.enabled) {
361
361
  let lang = this.detectLang(req);
362
- if (!lang || this.supportedLngs.indexOf(lang) === -1) {
362
+ if (!lang <span class="branch-0 cbranch-no" title="branch not covered" >|| this.supportedLngs.indexOf(lang) === -1)</span> {
363
363
  this.logger.verbose(
364
364
  `Language "${lang}" is not supported or not detected. Using fallback on ${this.fallbackLng}`,
365
365
  );
366
366
  lang = this.fallbackLng;
367
367
  }
368
368
  &nbsp;
369
- if (!this.cache[<span class="branch-0 cbranch-no" title="branch not covered" >lang]) {</span>
369
+ if (!this.cache[lang]) {
370
370
  this.cache[lang] = i18next.cloneInstance({
371
371
  initImmediate: false,
372
372
  lng: lang,
@@ -375,45 +375,45 @@ class I18n extends AbstractMiddleware {
375
375
  i18n = this.cache[lang];
376
376
  }
377
377
  &nbsp;
378
- if (!i18n) {
379
- i18n = this.i18n;
380
- }
378
+ if (!i18n) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
379
+ <span class="cstat-no" title="statement not covered" > i18n = this.i18n;</span>
380
+ <span class="cstat-no" title="statement not covered" > }</span>
381
381
  &nbsp;
382
382
  req.appInfo.i18n = i18n;
383
383
  req.i18n = new Proxy(req.appInfo.i18n, {
384
384
  get: (target, prop) =&gt; {
385
385
  this.logger.warn('Please not use "req.i18n" Use "req.appInfo.i18n"');
386
386
  return target[prop];
387
- <span class="branch-0 cbranch-no" title="branch not covered" > }</span>,
387
+ },
388
388
  });
389
389
  &nbsp;
390
390
  return next();
391
391
  }
392
392
  &nbsp;
393
393
  detectors = {
394
- <span class="branch-0 cbranch-no" title="branch not covered" > XLang: (req)</span> =&gt; req.get('X-Lang'), // grab from header
395
- query: (req) =&gt; (req.query ? req.query[this.lookupQuerystring] : false), // grab from query
396
- user: (req) =&gt; req.appInfo?.user?.locale, // what if we have a user and user have a defined locale?
394
+ XLang: (req) =&gt; req.get('X-Lang'), // grab from header
395
+ query: (req) =&gt; (req.query ? req.query[this.lookupQuerystring] <span class="branch-0 cbranch-no" title="branch not covered" >: false)</span>, // grab from query
396
+ user: (req) =&gt; req.appInfo?.user<span class="branch-0 cbranch-no" title="branch not covered" >?.locale,</span> // what if we have a user and user have a defined locale?
397
397
  };
398
398
  &nbsp;
399
399
  detectorOrder = ['XLang', 'query', 'user'];
400
400
  &nbsp;
401
401
  detectLang(req, isUseShortCode = true) {
402
402
  let lang = '';
403
- for (<span class="branch-0 cbranch-no" title="branch not covered" >const detectorName of this.detectorOrder) {</span>
403
+ for (const detectorName of this.detectorOrder) {
404
404
  const lng = this.detectors[detectorName](req);
405
405
  if (!lng) {
406
406
  // eslint-disable-next-line no-continue
407
407
  continue;
408
408
  }
409
- if (i18next.services.languageUtils.isSupportedCode(lng)) {
410
- if (isUseShortCode) {
411
- lang = i18next.services.languageUtils.getLanguagePartFromCode(lng);
412
- } else {
413
- lang = lng;
414
- }
415
- break;
416
- }
409
+ <span class="cstat-no" title="statement not covered" ><span class="branch-0 cbranch-no" title="branch not covered" > if (i18next.services.languageUtils.isSupportedCode(lng)) {</span></span>
410
+ <span class="cstat-no" title="statement not covered" > if (isUseShortCode) {</span>
411
+ <span class="cstat-no" title="statement not covered" > lang = i18next.services.languageUtils.getLanguagePartFromCode(lng);</span>
412
+ <span class="cstat-no" title="statement not covered" > } else {</span>
413
+ <span class="cstat-no" title="statement not covered" > lang = lng;</span>
414
+ <span class="cstat-no" title="statement not covered" > }</span>
415
+ <span class="cstat-no" title="statement not covered" > break;</span>
416
+ <span class="cstat-no" title="statement not covered" > }</span>
417
417
  }
418
418
  return lang;
419
419
  }
@@ -427,7 +427,7 @@ module.exports = I18n;
427
427
  <div class='footer quiet pad2 space-top1 center small'>
428
428
  Code coverage generated by
429
429
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
430
- at 2023-09-21T04:47:08.309Z
430
+ at 2023-09-21T12:04:18.148Z
431
431
  </div>
432
432
  <script src="../../../../prettify.js"></script>
433
433
  <script>