@adaptivestone/framework 4.8.0 → 4.8.2

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 (75) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/Cli.js +2 -0
  3. package/commands/migration/Create.js +4 -3
  4. package/coverage/clover.xml +2820 -2789
  5. package/coverage/coverage-final.json +43 -43
  6. package/coverage/framework/config/auth.js.html +6 -6
  7. package/coverage/framework/config/http.js.html +10 -10
  8. package/coverage/framework/config/i18n.js.html +13 -13
  9. package/coverage/framework/config/index.html +1 -1
  10. package/coverage/framework/config/log.js.html +23 -23
  11. package/coverage/framework/config/mail.js.html +30 -30
  12. package/coverage/framework/config/mongo.js.html +4 -4
  13. package/coverage/framework/config/rateLimiter.js.html +17 -17
  14. package/coverage/framework/config/redis.js.html +5 -5
  15. package/coverage/framework/config/validate.js.html +4 -4
  16. package/coverage/framework/controllers/Auth.js.html +90 -90
  17. package/coverage/framework/controllers/Home.js.html +39 -39
  18. package/coverage/framework/controllers/index.html +17 -17
  19. package/coverage/framework/controllers/index.js.html +54 -54
  20. package/coverage/framework/controllers/test/SomeController.js.html +106 -106
  21. package/coverage/framework/controllers/test/index.html +19 -19
  22. package/coverage/framework/helpers/files.js.html +66 -66
  23. package/coverage/framework/helpers/index.html +1 -1
  24. package/coverage/framework/helpers/logger.js.html +14 -14
  25. package/coverage/framework/helpers/redis/clearNamespace.js.html +28 -28
  26. package/coverage/framework/helpers/redis/index.html +17 -17
  27. package/coverage/framework/index.html +19 -19
  28. package/coverage/framework/models/Migration.js.html +16 -16
  29. package/coverage/framework/models/Sequence.js.html +39 -39
  30. package/coverage/framework/models/User.js.html +192 -192
  31. package/coverage/framework/models/index.html +28 -28
  32. package/coverage/framework/modules/AbstractController.js.html +478 -478
  33. package/coverage/framework/modules/AbstractModel.js.html +54 -54
  34. package/coverage/framework/modules/Base.js.html +52 -52
  35. package/coverage/framework/modules/index.html +21 -21
  36. package/coverage/framework/server.js.html +478 -385
  37. package/coverage/framework/services/cache/Cache.js.html +216 -216
  38. package/coverage/framework/services/cache/index.html +20 -20
  39. package/coverage/framework/services/documentation/DocumentationGenerator.js.html +17 -17
  40. package/coverage/framework/services/documentation/index.html +1 -1
  41. package/coverage/framework/services/http/HttpServer.js.html +90 -90
  42. package/coverage/framework/services/http/index.html +1 -1
  43. package/coverage/framework/services/http/middleware/AbstractMiddleware.js.html +60 -60
  44. package/coverage/framework/services/http/middleware/Auth.js.html +16 -16
  45. package/coverage/framework/services/http/middleware/GetUserByToken.js.html +60 -60
  46. package/coverage/framework/services/http/middleware/I18n.js.html +129 -129
  47. package/coverage/framework/services/http/middleware/Pagination.js.html +95 -95
  48. package/coverage/framework/services/http/middleware/PrepareAppInfo.js.html +27 -27
  49. package/coverage/framework/services/http/middleware/RateLimiter.js.html +166 -166
  50. package/coverage/framework/services/http/middleware/RequestLogger.js.html +21 -21
  51. package/coverage/framework/services/http/middleware/RequestParser.js.html +47 -47
  52. package/coverage/framework/services/http/middleware/Role.js.html +55 -55
  53. package/coverage/framework/services/http/middleware/index.html +99 -99
  54. package/coverage/framework/services/http/middleware/test/CheckFlag.js.html +36 -36
  55. package/coverage/framework/services/http/middleware/test/index.html +19 -19
  56. package/coverage/framework/services/messaging/email/index.html +1 -1
  57. package/coverage/framework/services/messaging/email/index.js.html +67 -67
  58. package/coverage/framework/services/messaging/index.html +1 -1
  59. package/coverage/framework/services/messaging/index.js.html +6 -6
  60. package/coverage/framework/services/validate/ValidateService.js.html +202 -202
  61. package/coverage/framework/services/validate/drivers/AbstractValidator.js.html +24 -24
  62. package/coverage/framework/services/validate/drivers/CustomValidator.js.html +14 -14
  63. package/coverage/framework/services/validate/drivers/YupValidator.js.html +55 -55
  64. package/coverage/framework/services/validate/drivers/index.html +1 -1
  65. package/coverage/framework/services/validate/index.html +21 -21
  66. package/coverage/index.html +110 -110
  67. package/models/User.test.js +3 -3
  68. package/package.json +2 -1
  69. package/server.d.ts +9 -1
  70. package/server.js +50 -19
  71. package/services/http/middleware/I18n.test.js +1 -1
  72. package/services/http/middleware/RateLimiter.test.js +7 -7
  73. package/services/validate/ValidateService.test.js +3 -3
  74. package/tests/setup.js +3 -1
  75. 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">94.16% </span>
26
+ <span class="strong">14.16% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>113/120</span>
28
+ <span class='fraction'>17/120</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">92.59% </span>
33
+ <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>25/27</span>
35
+ <span class='fraction'>1/1</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
40
+ <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>6/6</span>
42
+ <span class='fraction'>0/6</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">94.16% </span>
47
+ <span class="strong">14.16% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>113/120</span>
49
+ <span class='fraction'>17/120</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 low'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -183,243 +183,243 @@
183
183
  <a name='L118'></a><a href='#L118'>118</a>
184
184
  <a name='L119'></a><a href='#L119'>119</a>
185
185
  <a name='L120'></a><a href='#L120'>120</a>
186
- <a name='L121'></a><a href='#L121'>121</a></td><td class="line-coverage quiet"><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-yes">1x</span>
191
- <span class="cline-any cline-yes">1x</span>
192
- <span class="cline-any cline-yes">1x</span>
193
- <span class="cline-any cline-yes">15x</span>
194
- <span class="cline-any cline-yes">15x</span>
195
- <span class="cline-any cline-yes">1x</span>
196
- <span class="cline-any cline-yes">1x</span>
197
- <span class="cline-any cline-yes">1x</span>
198
- <span class="cline-any cline-yes">1x</span>
199
- <span class="cline-any cline-yes">1x</span>
200
- <span class="cline-any cline-yes">1x</span>
201
- <span class="cline-any cline-yes">1x</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-no">&nbsp;</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">15x</span>
220
- <span class="cline-any cline-yes">15x</span>
221
- <span class="cline-any cline-yes">10x</span>
222
- <span class="cline-any cline-yes">10x</span>
223
- <span class="cline-any cline-yes">15x</span>
224
- <span class="cline-any cline-yes">15x</span>
225
- <span class="cline-any cline-yes">9x</span>
226
- <span class="cline-any cline-yes">9x</span>
227
- <span class="cline-any cline-yes">1x</span>
228
- <span class="cline-any cline-yes">1x</span>
229
- <span class="cline-any cline-yes">9x</span>
230
- <span class="cline-any cline-yes">9x</span>
231
- <span class="cline-any cline-yes">9x</span>
232
- <span class="cline-any cline-yes">9x</span>
233
- <span class="cline-any cline-yes">9x</span>
234
- <span class="cline-any cline-yes">2x</span>
235
- <span class="cline-any cline-yes">2x</span>
236
- <span class="cline-any cline-yes">7x</span>
237
- <span class="cline-any cline-yes">7x</span>
238
- <span class="cline-any cline-yes">7x</span>
239
- <span class="cline-any cline-yes">7x</span>
240
- <span class="cline-any cline-yes">7x</span>
241
- <span class="cline-any cline-yes">7x</span>
242
- <span class="cline-any cline-yes">7x</span>
243
- <span class="cline-any cline-yes">7x</span>
244
- <span class="cline-any cline-yes">7x</span>
245
- <span class="cline-any cline-yes">7x</span>
246
- <span class="cline-any cline-yes">9x</span>
247
- <span class="cline-any cline-yes">5x</span>
248
- <span class="cline-any cline-yes">5x</span>
249
- <span class="cline-any cline-yes">5x</span>
250
- <span class="cline-any cline-yes">5x</span>
251
- <span class="cline-any cline-yes">1x</span>
252
- <span class="cline-any cline-yes">1x</span>
253
- <span class="cline-any cline-yes">1x</span>
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">4x</span>
257
- <span class="cline-any cline-yes">4x</span>
258
- <span class="cline-any cline-yes">4x</span>
259
- <span class="cline-any cline-yes">4x</span>
260
- <span class="cline-any cline-yes">4x</span>
261
- <span class="cline-any cline-yes">4x</span>
262
- <span class="cline-any cline-yes">4x</span>
263
- <span class="cline-any cline-yes">4x</span>
264
- <span class="cline-any cline-yes">9x</span>
186
+ <a name='L121'></a><a href='#L121'>121</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
265
187
  <span class="cline-any cline-yes">2x</span>
266
188
  <span class="cline-any cline-yes">2x</span>
267
189
  <span class="cline-any cline-yes">2x</span>
190
+ <span class="cline-any cline-no">&nbsp;</span>
191
+ <span class="cline-any cline-no">&nbsp;</span>
192
+ <span class="cline-any cline-no">&nbsp;</span>
268
193
  <span class="cline-any cline-yes">2x</span>
269
194
  <span class="cline-any cline-yes">2x</span>
195
+ <span class="cline-any cline-no">&nbsp;</span>
196
+ <span class="cline-any cline-no">&nbsp;</span>
197
+ <span class="cline-any cline-no">&nbsp;</span>
198
+ <span class="cline-any cline-no">&nbsp;</span>
199
+ <span class="cline-any cline-no">&nbsp;</span>
200
+ <span class="cline-any cline-no">&nbsp;</span>
201
+ <span class="cline-any cline-no">&nbsp;</span>
202
+ <span class="cline-any cline-no">&nbsp;</span>
203
+ <span class="cline-any cline-no">&nbsp;</span>
204
+ <span class="cline-any cline-no">&nbsp;</span>
205
+ <span class="cline-any cline-no">&nbsp;</span>
206
+ <span class="cline-any cline-no">&nbsp;</span>
207
+ <span class="cline-any cline-no">&nbsp;</span>
208
+ <span class="cline-any cline-no">&nbsp;</span>
209
+ <span class="cline-any cline-no">&nbsp;</span>
210
+ <span class="cline-any cline-no">&nbsp;</span>
211
+ <span class="cline-any cline-no">&nbsp;</span>
212
+ <span class="cline-any cline-no">&nbsp;</span>
213
+ <span class="cline-any cline-no">&nbsp;</span>
214
+ <span class="cline-any cline-no">&nbsp;</span>
215
+ <span class="cline-any cline-no">&nbsp;</span>
216
+ <span class="cline-any cline-no">&nbsp;</span>
217
+ <span class="cline-any cline-no">&nbsp;</span>
218
+ <span class="cline-any cline-no">&nbsp;</span>
270
219
  <span class="cline-any cline-yes">2x</span>
271
220
  <span class="cline-any cline-yes">2x</span>
221
+ <span class="cline-any cline-no">&nbsp;</span>
222
+ <span class="cline-any cline-no">&nbsp;</span>
272
223
  <span class="cline-any cline-yes">2x</span>
273
224
  <span class="cline-any cline-yes">2x</span>
274
- <span class="cline-any cline-yes">1x</span>
275
- <span class="cline-any cline-yes">1x</span>
276
- <span class="cline-any cline-yes">1x</span>
225
+ <span class="cline-any cline-no">&nbsp;</span>
226
+ <span class="cline-any cline-no">&nbsp;</span>
227
+ <span class="cline-any cline-no">&nbsp;</span>
228
+ <span class="cline-any cline-no">&nbsp;</span>
229
+ <span class="cline-any cline-no">&nbsp;</span>
230
+ <span class="cline-any cline-no">&nbsp;</span>
231
+ <span class="cline-any cline-no">&nbsp;</span>
232
+ <span class="cline-any cline-no">&nbsp;</span>
233
+ <span class="cline-any cline-no">&nbsp;</span>
234
+ <span class="cline-any cline-no">&nbsp;</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-no">&nbsp;</span>
238
+ <span class="cline-any cline-no">&nbsp;</span>
239
+ <span class="cline-any cline-no">&nbsp;</span>
240
+ <span class="cline-any cline-no">&nbsp;</span>
241
+ <span class="cline-any cline-no">&nbsp;</span>
242
+ <span class="cline-any cline-no">&nbsp;</span>
243
+ <span class="cline-any cline-no">&nbsp;</span>
244
+ <span class="cline-any cline-no">&nbsp;</span>
245
+ <span class="cline-any cline-no">&nbsp;</span>
246
+ <span class="cline-any cline-no">&nbsp;</span>
247
+ <span class="cline-any cline-no">&nbsp;</span>
248
+ <span class="cline-any cline-no">&nbsp;</span>
249
+ <span class="cline-any cline-no">&nbsp;</span>
250
+ <span class="cline-any cline-no">&nbsp;</span>
251
+ <span class="cline-any cline-no">&nbsp;</span>
252
+ <span class="cline-any cline-no">&nbsp;</span>
253
+ <span class="cline-any cline-no">&nbsp;</span>
254
+ <span class="cline-any cline-no">&nbsp;</span>
255
+ <span class="cline-any cline-no">&nbsp;</span>
256
+ <span class="cline-any cline-no">&nbsp;</span>
257
+ <span class="cline-any cline-no">&nbsp;</span>
258
+ <span class="cline-any cline-no">&nbsp;</span>
259
+ <span class="cline-any cline-no">&nbsp;</span>
260
+ <span class="cline-any cline-no">&nbsp;</span>
261
+ <span class="cline-any cline-no">&nbsp;</span>
262
+ <span class="cline-any cline-no">&nbsp;</span>
263
+ <span class="cline-any cline-no">&nbsp;</span>
264
+ <span class="cline-any cline-no">&nbsp;</span>
265
+ <span class="cline-any cline-no">&nbsp;</span>
266
+ <span class="cline-any cline-no">&nbsp;</span>
267
+ <span class="cline-any cline-no">&nbsp;</span>
268
+ <span class="cline-any cline-no">&nbsp;</span>
269
+ <span class="cline-any cline-no">&nbsp;</span>
270
+ <span class="cline-any cline-no">&nbsp;</span>
271
+ <span class="cline-any cline-no">&nbsp;</span>
272
+ <span class="cline-any cline-no">&nbsp;</span>
273
+ <span class="cline-any cline-no">&nbsp;</span>
274
+ <span class="cline-any cline-no">&nbsp;</span>
275
+ <span class="cline-any cline-no">&nbsp;</span>
276
+ <span class="cline-any cline-no">&nbsp;</span>
277
+ <span class="cline-any cline-no">&nbsp;</span>
278
+ <span class="cline-any cline-no">&nbsp;</span>
279
+ <span class="cline-any cline-no">&nbsp;</span>
280
+ <span class="cline-any cline-no">&nbsp;</span>
281
+ <span class="cline-any cline-no">&nbsp;</span>
282
+ <span class="cline-any cline-no">&nbsp;</span>
283
+ <span class="cline-any cline-no">&nbsp;</span>
284
+ <span class="cline-any cline-no">&nbsp;</span>
285
+ <span class="cline-any cline-no">&nbsp;</span>
286
+ <span class="cline-any cline-no">&nbsp;</span>
287
+ <span class="cline-any cline-no">&nbsp;</span>
288
+ <span class="cline-any cline-no">&nbsp;</span>
277
289
  <span class="cline-any cline-yes">2x</span>
278
290
  <span class="cline-any cline-yes">2x</span>
279
291
  <span class="cline-any cline-no">&nbsp;</span>
280
292
  <span class="cline-any cline-no">&nbsp;</span>
281
293
  <span class="cline-any cline-no">&nbsp;</span>
282
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-no">&nbsp;</span>
299
+ <span class="cline-any cline-yes">2x</span>
300
+ <span class="cline-any cline-yes">2x</span>
301
+ <span class="cline-any cline-no">&nbsp;</span>
302
+ <span class="cline-any cline-no">&nbsp;</span>
303
+ <span class="cline-any cline-yes">2x</span>
304
+ <span class="cline-any cline-yes">2x</span>
283
305
  <span class="cline-any cline-yes">2x</span>
284
- <span class="cline-any cline-yes">6x</span>
285
- <span class="cline-any cline-yes">6x</span>
286
- <span class="cline-any cline-yes">6x</span>
287
- <span class="cline-any cline-yes">6x</span>
288
- <span class="cline-any cline-yes">9x</span>
289
- <span class="cline-any cline-yes">15x</span>
290
- <span class="cline-any cline-yes">15x</span>
291
- <span class="cline-any cline-yes">1x</span>
292
- <span class="cline-any cline-yes">1x</span>
293
- <span class="cline-any cline-yes">1x</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-yes">1x</span>
297
- <span class="cline-any cline-yes">1x</span>
298
- <span class="cline-any cline-yes">1x</span>
299
- <span class="cline-any cline-yes">15x</span>
300
- <span class="cline-any cline-yes">15x</span>
301
- <span class="cline-any cline-yes">1x</span>
302
- <span class="cline-any cline-yes">1x</span>
303
- <span class="cline-any cline-yes">15x</span>
304
- <span class="cline-any cline-yes">15x</span>
305
- <span class="cline-any cline-yes">15x</span>
306
306
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const Base = require('../../modules/Base');
307
307
  &nbsp;
308
308
  class Cache extends Base {
309
- constructor(app) {
310
- super(app);
311
- this.whenReady = this.#init();
312
- }
313
- &nbsp;
314
- async #init() {
315
- // todo for now only redis. refactor for drives support in future
316
- // at least memory and redis drivers should be presented
317
- // memory drives should works on master process level
318
- // we should support multiple cashe same time
319
- const redis = await import('redis');
320
- const conf = this.app.getConfig('redis');
321
- this.redisClient = redis.createClient({
322
- url: conf.url,
323
- });
324
- &nbsp;
325
- this.redisNamespace = conf.namespace;
309
+ <span class="fstat-no" title="function not covered" > constructor(app) {</span>
310
+ <span class="cstat-no" title="statement not covered" > super(app);</span>
311
+ <span class="cstat-no" title="statement not covered" > this.whenReady = this.#init();</span>
312
+ <span class="cstat-no" title="statement not covered" > }</span>
326
313
  &nbsp;
327
- this.redisClient.on('error', (error, b, c) =&gt; {
314
+ <span class="fstat-no" title="function not covered" > async #init() {</span>
315
+ <span class="cstat-no" title="statement not covered" > // todo for now only redis. refactor for drives support in future</span>
316
+ <span class="cstat-no" title="statement not covered" > // at least memory and redis drivers should be presented</span>
317
+ <span class="cstat-no" title="statement not covered" > // memory drives should works on master process level</span>
318
+ <span class="cstat-no" title="statement not covered" > // we should support multiple cashe same time</span>
319
+ <span class="cstat-no" title="statement not covered" > const redis = await import('redis');</span>
320
+ <span class="cstat-no" title="statement not covered" > const conf = this.app.getConfig('redis');</span>
321
+ <span class="cstat-no" title="statement not covered" > this.redisClient = redis.createClient({</span>
322
+ <span class="cstat-no" title="statement not covered" > url: conf.url,</span>
323
+ <span class="cstat-no" title="statement not covered" > });</span>
324
+ <span class="cstat-no" title="statement not covered" ></span>
325
+ <span class="cstat-no" title="statement not covered" > this.redisNamespace = conf.namespace;</span>
326
+ <span class="cstat-no" title="statement not covered" ></span>
327
+ <span class="cstat-no" title="statement not covered" > this.redisClient.on('error', (error, b, c) =&gt; {</span>
328
328
  <span class="cstat-no" title="statement not covered" > this.logger.error(error, b, c);</span>
329
- });
330
- this.redisClient.on('connect', () =&gt; {
331
- this.logger.info('Redis connection success');
332
- });
333
- this.app.events.on('shutdown', () =&gt; {
334
- this.redisClient.quit();
335
- });
336
- &nbsp;
337
- this.promiseMapping = new Map();
338
- }
339
- &nbsp;
340
- getKeyWithNameSpace(key) {
341
- return `${this.redisNamespace}-${key}`;
342
- }
343
- &nbsp;
344
- async getSetValue(keyValue, onNotFound, storeTime = 60 * 5) {
345
- await this.whenReady;
346
- if (!this.redisClient.isOpen) {
347
- await this.redisClient.connect();
348
- }
349
- const key = this.getKeyWithNameSpace(keyValue);
350
- // 5 mins default
351
- let resolve = null;
352
- let reject = null;
353
- if (this.promiseMapping.has(key)) {
354
- return this.promiseMapping.get(key);
355
- }
356
- &nbsp;
357
- this.promiseMapping.set(
358
- key,
359
- new Promise((res, rej) =&gt; {
360
- resolve = res;
361
- reject = rej;
362
- }),
363
- );
329
+ <span class="cstat-no" title="statement not covered" > });</span>
330
+ <span class="cstat-no" title="statement not covered" > this.redisClient.on('connect', () =&gt; {</span>
331
+ <span class="cstat-no" title="statement not covered" > this.logger.info('Redis connection success');</span>
332
+ <span class="cstat-no" title="statement not covered" > });</span>
333
+ <span class="cstat-no" title="statement not covered" > this.app.events.on('shutdown', () =&gt; {</span>
334
+ <span class="cstat-no" title="statement not covered" > this.redisClient.quit();</span>
335
+ <span class="cstat-no" title="statement not covered" > });</span>
336
+ <span class="cstat-no" title="statement not covered" ></span>
337
+ <span class="cstat-no" title="statement not covered" > this.promiseMapping = new Map();</span>
338
+ <span class="cstat-no" title="statement not covered" > }</span>
364
339
  &nbsp;
365
- let result = await this.redisClient.get(key);
366
- if (!result) {
367
- this.logger.verbose(`getSetValueFromCache not found for key ${key}`);
368
- try {
369
- result = await onNotFound();
370
- } catch (e) {
371
- this.logger.error(`Cache onNotFound for key '${key}' error: ${e}`);
372
- this.promiseMapping.delete(key);
373
- reject(e);
374
- return Promise.reject(e);
375
- }
340
+ <span class="fstat-no" title="function not covered" > getKeyWithNameSpace(key) {</span>
341
+ <span class="cstat-no" title="statement not covered" > return `${this.redisNamespace}-${key}`;</span>
342
+ <span class="cstat-no" title="statement not covered" > }</span>
376
343
  &nbsp;
377
- this.redisClient.setEx(
378
- key,
379
- storeTime,
380
- JSON.stringify(result, (jsonkey, value) =&gt;
381
- typeof value === 'bigint' ? `${value}n` : value,
382
- ),
383
- );
384
- } else {
385
- this.logger.verbose(
386
- `getSetValueFromCache FROM CACHE key ${key}, value ${result.substring(
387
- 0,
388
- 100,
389
- )}`,
390
- );
391
- try {
392
- result = JSON.parse(result, (jsonkey, value) =&gt; {
393
- if (typeof value === 'string' &amp;&amp; /^\d+n$/.test(value)) {
394
- return BigInt(value.slice(0, value.length - 1));
395
- }
396
- return value;
397
- });
398
- } <span class="branch-0 cbranch-no" title="branch not covered" >catch (e) {</span>
344
+ <span class="fstat-no" title="function not covered" > async getSetValue(keyValue, onNotFound, storeTime = 60 * 5) {</span>
345
+ <span class="cstat-no" title="statement not covered" > await this.whenReady;</span>
346
+ <span class="cstat-no" title="statement not covered" > if (!this.redisClient.isOpen) {</span>
347
+ <span class="cstat-no" title="statement not covered" > await this.redisClient.connect();</span>
348
+ <span class="cstat-no" title="statement not covered" > }</span>
349
+ <span class="cstat-no" title="statement not covered" > const key = this.getKeyWithNameSpace(keyValue);</span>
350
+ <span class="cstat-no" title="statement not covered" > // 5 mins default</span>
351
+ <span class="cstat-no" title="statement not covered" > let resolve = null;</span>
352
+ <span class="cstat-no" title="statement not covered" > let reject = null;</span>
353
+ <span class="cstat-no" title="statement not covered" > if (this.promiseMapping.has(key)) {</span>
354
+ <span class="cstat-no" title="statement not covered" > return this.promiseMapping.get(key);</span>
355
+ <span class="cstat-no" title="statement not covered" > }</span>
356
+ <span class="cstat-no" title="statement not covered" ></span>
357
+ <span class="cstat-no" title="statement not covered" > this.promiseMapping.set(</span>
358
+ <span class="cstat-no" title="statement not covered" > key,</span>
359
+ <span class="cstat-no" title="statement not covered" > new Promise((res, rej) =&gt; {</span>
360
+ <span class="cstat-no" title="statement not covered" > resolve = res;</span>
361
+ <span class="cstat-no" title="statement not covered" > reject = rej;</span>
362
+ <span class="cstat-no" title="statement not covered" > }),</span>
363
+ <span class="cstat-no" title="statement not covered" > );</span>
364
+ <span class="cstat-no" title="statement not covered" ></span>
365
+ <span class="cstat-no" title="statement not covered" > let result = await this.redisClient.get(key);</span>
366
+ <span class="cstat-no" title="statement not covered" > if (!result) {</span>
367
+ <span class="cstat-no" title="statement not covered" > this.logger.verbose(`getSetValueFromCache not found for key ${key}`);</span>
368
+ <span class="cstat-no" title="statement not covered" > try {</span>
369
+ <span class="cstat-no" title="statement not covered" > result = await onNotFound();</span>
370
+ <span class="cstat-no" title="statement not covered" > } catch (e) {</span>
371
+ <span class="cstat-no" title="statement not covered" > this.logger.error(`Cache onNotFound for key '${key}' error: ${e}`);</span>
372
+ <span class="cstat-no" title="statement not covered" > this.promiseMapping.delete(key);</span>
373
+ <span class="cstat-no" title="statement not covered" > reject(e);</span>
374
+ <span class="cstat-no" title="statement not covered" > return Promise.reject(e);</span>
375
+ <span class="cstat-no" title="statement not covered" > }</span>
376
+ <span class="cstat-no" title="statement not covered" ></span>
377
+ <span class="cstat-no" title="statement not covered" > this.redisClient.setEx(</span>
378
+ <span class="cstat-no" title="statement not covered" > key,</span>
379
+ <span class="cstat-no" title="statement not covered" > storeTime,</span>
380
+ <span class="cstat-no" title="statement not covered" > JSON.stringify(result, (jsonkey, value) =&gt;</span>
381
+ <span class="cstat-no" title="statement not covered" > typeof value === 'bigint' ? `${value}n` : value,</span>
382
+ <span class="cstat-no" title="statement not covered" > ),</span>
383
+ <span class="cstat-no" title="statement not covered" > );</span>
384
+ <span class="cstat-no" title="statement not covered" > } else {</span>
385
+ <span class="cstat-no" title="statement not covered" > this.logger.verbose(</span>
386
+ <span class="cstat-no" title="statement not covered" > `getSetValueFromCache FROM CACHE key ${key}, value ${result.substring(</span>
387
+ <span class="cstat-no" title="statement not covered" > 0,</span>
388
+ <span class="cstat-no" title="statement not covered" > 100,</span>
389
+ <span class="cstat-no" title="statement not covered" > )}`,</span>
390
+ <span class="cstat-no" title="statement not covered" > );</span>
391
+ <span class="cstat-no" title="statement not covered" > try {</span>
392
+ <span class="cstat-no" title="statement not covered" > result = JSON.parse(result, (jsonkey, value) =&gt; {</span>
393
+ <span class="cstat-no" title="statement not covered" > if (typeof value === 'string' &amp;&amp; /^\d+n$/.test(value)) {</span>
394
+ <span class="cstat-no" title="statement not covered" > return BigInt(value.slice(0, value.length - 1));</span>
395
+ <span class="cstat-no" title="statement not covered" > }</span>
396
+ <span class="cstat-no" title="statement not covered" > return value;</span>
397
+ <span class="cstat-no" title="statement not covered" > });</span>
398
+ <span class="cstat-no" title="statement not covered" > } catch (e) {</span>
399
399
  <span class="cstat-no" title="statement not covered" > this.logger.warn(</span>
400
400
  <span class="cstat-no" title="statement not covered" > 'Not able to parse json from redis cache. That can be a normal in case you store string here',</span>
401
401
  <span class="cstat-no" title="statement not covered" > );</span>
402
402
  <span class="cstat-no" title="statement not covered" > }</span>
403
- }
404
- &nbsp;
405
- resolve(result);
406
- this.promiseMapping.delete(key);
407
- return result;
408
- }
409
- &nbsp;
410
- async removeKey(keyValue) {
411
- await this.whenReady;
403
+ <span class="cstat-no" title="statement not covered" > }</span>
404
+ <span class="cstat-no" title="statement not covered" ></span>
405
+ <span class="cstat-no" title="statement not covered" > resolve(result);</span>
406
+ <span class="cstat-no" title="statement not covered" > this.promiseMapping.delete(key);</span>
407
+ <span class="cstat-no" title="statement not covered" > return result;</span>
408
+ <span class="cstat-no" title="statement not covered" > }</span>
412
409
  &nbsp;
413
- if (!this.redisClient.isOpen) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
410
+ <span class="fstat-no" title="function not covered" > async removeKey(keyValue) {</span>
411
+ <span class="cstat-no" title="statement not covered" > await this.whenReady;</span>
412
+ <span class="cstat-no" title="statement not covered" ></span>
413
+ <span class="cstat-no" title="statement not covered" > if (!this.redisClient.isOpen) {</span>
414
414
  <span class="cstat-no" title="statement not covered" > await this.redisClient.connect();</span>
415
415
  <span class="cstat-no" title="statement not covered" > }</span>
416
- const key = this.getKeyWithNameSpace(keyValue);
417
- return this.redisClient.del(key);
418
- }
416
+ <span class="cstat-no" title="statement not covered" > const key = this.getKeyWithNameSpace(keyValue);</span>
417
+ <span class="cstat-no" title="statement not covered" > return this.redisClient.del(key);</span>
418
+ <span class="cstat-no" title="statement not covered" > }</span>
419
419
  &nbsp;
420
- static get loggerGroup() {
421
- return 'Cache_';
422
- }
420
+ static <span class="fstat-no" title="function not covered" >get loggerGroup() {</span>
421
+ <span class="cstat-no" title="statement not covered" > return 'Cache_';</span>
422
+ <span class="cstat-no" title="statement not covered" > }</span>
423
423
  }
424
424
  &nbsp;
425
425
  module.exports = Cache;
@@ -430,7 +430,7 @@ module.exports = Cache;
430
430
  <div class='footer quiet pad2 space-top1 center small'>
431
431
  Code coverage generated by
432
432
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
433
- at 2023-09-21T04:47:08.309Z
433
+ at 2023-09-21T12:04:18.148Z
434
434
  </div>
435
435
  <script src="../../../prettify.js"></script>
436
436
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">94.16% </span>
26
+ <span class="strong">14.16% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>113/120</span>
28
+ <span class='fraction'>17/120</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">92.59% </span>
33
+ <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>25/27</span>
35
+ <span class='fraction'>1/1</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
40
+ <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>6/6</span>
42
+ <span class='fraction'>0/6</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">94.16% </span>
47
+ <span class="strong">14.16% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>113/120</span>
49
+ <span class='fraction'>17/120</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 low'></div>
65
65
  <div class="pad1">
66
66
  <table class="coverage-summary">
67
67
  <thead>
@@ -79,18 +79,18 @@
79
79
  </tr>
80
80
  </thead>
81
81
  <tbody><tr>
82
- <td class="file high" data-value="Cache.js"><a href="Cache.js.html">Cache.js</a></td>
83
- <td data-value="94.16" class="pic high">
84
- <div class="chart"><div class="cover-fill" style="width: 94%"></div><div class="cover-empty" style="width: 6%"></div></div>
82
+ <td class="file low" data-value="Cache.js"><a href="Cache.js.html">Cache.js</a></td>
83
+ <td data-value="14.16" class="pic low">
84
+ <div class="chart"><div class="cover-fill" style="width: 14%"></div><div class="cover-empty" style="width: 86%"></div></div>
85
85
  </td>
86
- <td data-value="94.16" class="pct high">94.16%</td>
87
- <td data-value="120" class="abs high">113/120</td>
88
- <td data-value="92.59" class="pct high">92.59%</td>
89
- <td data-value="27" class="abs high">25/27</td>
86
+ <td data-value="14.16" class="pct low">14.16%</td>
87
+ <td data-value="120" class="abs low">17/120</td>
90
88
  <td data-value="100" class="pct high">100%</td>
91
- <td data-value="6" class="abs high">6/6</td>
92
- <td data-value="94.16" class="pct high">94.16%</td>
93
- <td data-value="120" class="abs high">113/120</td>
89
+ <td data-value="1" class="abs high">1/1</td>
90
+ <td data-value="0" class="pct low">0%</td>
91
+ <td data-value="6" class="abs low">0/6</td>
92
+ <td data-value="14.16" class="pct low">14.16%</td>
93
+ <td data-value="120" class="abs low">17/120</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-21T04:47:08.309Z
104
+ at 2023-09-21T12:04:18.148Z
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>