@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.
- package/CHANGELOG.md +10 -0
- package/Cli.js +2 -0
- package/commands/migration/Create.js +4 -3
- package/coverage/clover.xml +2820 -2789
- package/coverage/coverage-final.json +43 -43
- package/coverage/framework/config/auth.js.html +6 -6
- package/coverage/framework/config/http.js.html +10 -10
- package/coverage/framework/config/i18n.js.html +13 -13
- package/coverage/framework/config/index.html +1 -1
- package/coverage/framework/config/log.js.html +23 -23
- package/coverage/framework/config/mail.js.html +30 -30
- package/coverage/framework/config/mongo.js.html +4 -4
- package/coverage/framework/config/rateLimiter.js.html +17 -17
- package/coverage/framework/config/redis.js.html +5 -5
- package/coverage/framework/config/validate.js.html +4 -4
- package/coverage/framework/controllers/Auth.js.html +90 -90
- package/coverage/framework/controllers/Home.js.html +39 -39
- package/coverage/framework/controllers/index.html +17 -17
- package/coverage/framework/controllers/index.js.html +54 -54
- package/coverage/framework/controllers/test/SomeController.js.html +106 -106
- package/coverage/framework/controllers/test/index.html +19 -19
- package/coverage/framework/helpers/files.js.html +66 -66
- package/coverage/framework/helpers/index.html +1 -1
- package/coverage/framework/helpers/logger.js.html +14 -14
- package/coverage/framework/helpers/redis/clearNamespace.js.html +28 -28
- package/coverage/framework/helpers/redis/index.html +17 -17
- package/coverage/framework/index.html +19 -19
- package/coverage/framework/models/Migration.js.html +16 -16
- package/coverage/framework/models/Sequence.js.html +39 -39
- package/coverage/framework/models/User.js.html +192 -192
- package/coverage/framework/models/index.html +28 -28
- package/coverage/framework/modules/AbstractController.js.html +478 -478
- package/coverage/framework/modules/AbstractModel.js.html +54 -54
- package/coverage/framework/modules/Base.js.html +52 -52
- package/coverage/framework/modules/index.html +21 -21
- package/coverage/framework/server.js.html +478 -385
- package/coverage/framework/services/cache/Cache.js.html +216 -216
- package/coverage/framework/services/cache/index.html +20 -20
- package/coverage/framework/services/documentation/DocumentationGenerator.js.html +17 -17
- package/coverage/framework/services/documentation/index.html +1 -1
- package/coverage/framework/services/http/HttpServer.js.html +90 -90
- package/coverage/framework/services/http/index.html +1 -1
- package/coverage/framework/services/http/middleware/AbstractMiddleware.js.html +60 -60
- package/coverage/framework/services/http/middleware/Auth.js.html +16 -16
- package/coverage/framework/services/http/middleware/GetUserByToken.js.html +60 -60
- package/coverage/framework/services/http/middleware/I18n.js.html +129 -129
- package/coverage/framework/services/http/middleware/Pagination.js.html +95 -95
- package/coverage/framework/services/http/middleware/PrepareAppInfo.js.html +27 -27
- package/coverage/framework/services/http/middleware/RateLimiter.js.html +166 -166
- package/coverage/framework/services/http/middleware/RequestLogger.js.html +21 -21
- package/coverage/framework/services/http/middleware/RequestParser.js.html +47 -47
- package/coverage/framework/services/http/middleware/Role.js.html +55 -55
- package/coverage/framework/services/http/middleware/index.html +99 -99
- package/coverage/framework/services/http/middleware/test/CheckFlag.js.html +36 -36
- package/coverage/framework/services/http/middleware/test/index.html +19 -19
- package/coverage/framework/services/messaging/email/index.html +1 -1
- package/coverage/framework/services/messaging/email/index.js.html +67 -67
- package/coverage/framework/services/messaging/index.html +1 -1
- package/coverage/framework/services/messaging/index.js.html +6 -6
- package/coverage/framework/services/validate/ValidateService.js.html +202 -202
- package/coverage/framework/services/validate/drivers/AbstractValidator.js.html +24 -24
- package/coverage/framework/services/validate/drivers/CustomValidator.js.html +14 -14
- package/coverage/framework/services/validate/drivers/YupValidator.js.html +55 -55
- package/coverage/framework/services/validate/drivers/index.html +1 -1
- package/coverage/framework/services/validate/index.html +21 -21
- package/coverage/index.html +110 -110
- package/models/User.test.js +3 -3
- package/package.json +2 -1
- package/server.d.ts +9 -1
- package/server.js +50 -19
- package/services/http/middleware/I18n.test.js +1 -1
- package/services/http/middleware/RateLimiter.test.js +7 -7
- package/services/validate/ValidateService.test.js +3 -3
- package/tests/setup.js +3 -1
- 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">
|
|
26
|
+
<span class="strong">14.16% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
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">
|
|
33
|
+
<span class="strong">100% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
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">
|
|
40
|
+
<span class="strong">0% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
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">
|
|
47
|
+
<span class="strong">14.16% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
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
|
|
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">
|
|
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"> </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"> </span>
|
|
191
|
+
<span class="cline-any cline-no"> </span>
|
|
192
|
+
<span class="cline-any cline-no"> </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"> </span>
|
|
196
|
+
<span class="cline-any cline-no"> </span>
|
|
197
|
+
<span class="cline-any cline-no"> </span>
|
|
198
|
+
<span class="cline-any cline-no"> </span>
|
|
199
|
+
<span class="cline-any cline-no"> </span>
|
|
200
|
+
<span class="cline-any cline-no"> </span>
|
|
201
|
+
<span class="cline-any cline-no"> </span>
|
|
202
|
+
<span class="cline-any cline-no"> </span>
|
|
203
|
+
<span class="cline-any cline-no"> </span>
|
|
204
|
+
<span class="cline-any cline-no"> </span>
|
|
205
|
+
<span class="cline-any cline-no"> </span>
|
|
206
|
+
<span class="cline-any cline-no"> </span>
|
|
207
|
+
<span class="cline-any cline-no"> </span>
|
|
208
|
+
<span class="cline-any cline-no"> </span>
|
|
209
|
+
<span class="cline-any cline-no"> </span>
|
|
210
|
+
<span class="cline-any cline-no"> </span>
|
|
211
|
+
<span class="cline-any cline-no"> </span>
|
|
212
|
+
<span class="cline-any cline-no"> </span>
|
|
213
|
+
<span class="cline-any cline-no"> </span>
|
|
214
|
+
<span class="cline-any cline-no"> </span>
|
|
215
|
+
<span class="cline-any cline-no"> </span>
|
|
216
|
+
<span class="cline-any cline-no"> </span>
|
|
217
|
+
<span class="cline-any cline-no"> </span>
|
|
218
|
+
<span class="cline-any cline-no"> </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"> </span>
|
|
222
|
+
<span class="cline-any cline-no"> </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-
|
|
275
|
-
<span class="cline-any cline-
|
|
276
|
-
<span class="cline-any cline-
|
|
225
|
+
<span class="cline-any cline-no"> </span>
|
|
226
|
+
<span class="cline-any cline-no"> </span>
|
|
227
|
+
<span class="cline-any cline-no"> </span>
|
|
228
|
+
<span class="cline-any cline-no"> </span>
|
|
229
|
+
<span class="cline-any cline-no"> </span>
|
|
230
|
+
<span class="cline-any cline-no"> </span>
|
|
231
|
+
<span class="cline-any cline-no"> </span>
|
|
232
|
+
<span class="cline-any cline-no"> </span>
|
|
233
|
+
<span class="cline-any cline-no"> </span>
|
|
234
|
+
<span class="cline-any cline-no"> </span>
|
|
235
|
+
<span class="cline-any cline-no"> </span>
|
|
236
|
+
<span class="cline-any cline-no"> </span>
|
|
237
|
+
<span class="cline-any cline-no"> </span>
|
|
238
|
+
<span class="cline-any cline-no"> </span>
|
|
239
|
+
<span class="cline-any cline-no"> </span>
|
|
240
|
+
<span class="cline-any cline-no"> </span>
|
|
241
|
+
<span class="cline-any cline-no"> </span>
|
|
242
|
+
<span class="cline-any cline-no"> </span>
|
|
243
|
+
<span class="cline-any cline-no"> </span>
|
|
244
|
+
<span class="cline-any cline-no"> </span>
|
|
245
|
+
<span class="cline-any cline-no"> </span>
|
|
246
|
+
<span class="cline-any cline-no"> </span>
|
|
247
|
+
<span class="cline-any cline-no"> </span>
|
|
248
|
+
<span class="cline-any cline-no"> </span>
|
|
249
|
+
<span class="cline-any cline-no"> </span>
|
|
250
|
+
<span class="cline-any cline-no"> </span>
|
|
251
|
+
<span class="cline-any cline-no"> </span>
|
|
252
|
+
<span class="cline-any cline-no"> </span>
|
|
253
|
+
<span class="cline-any cline-no"> </span>
|
|
254
|
+
<span class="cline-any cline-no"> </span>
|
|
255
|
+
<span class="cline-any cline-no"> </span>
|
|
256
|
+
<span class="cline-any cline-no"> </span>
|
|
257
|
+
<span class="cline-any cline-no"> </span>
|
|
258
|
+
<span class="cline-any cline-no"> </span>
|
|
259
|
+
<span class="cline-any cline-no"> </span>
|
|
260
|
+
<span class="cline-any cline-no"> </span>
|
|
261
|
+
<span class="cline-any cline-no"> </span>
|
|
262
|
+
<span class="cline-any cline-no"> </span>
|
|
263
|
+
<span class="cline-any cline-no"> </span>
|
|
264
|
+
<span class="cline-any cline-no"> </span>
|
|
265
|
+
<span class="cline-any cline-no"> </span>
|
|
266
|
+
<span class="cline-any cline-no"> </span>
|
|
267
|
+
<span class="cline-any cline-no"> </span>
|
|
268
|
+
<span class="cline-any cline-no"> </span>
|
|
269
|
+
<span class="cline-any cline-no"> </span>
|
|
270
|
+
<span class="cline-any cline-no"> </span>
|
|
271
|
+
<span class="cline-any cline-no"> </span>
|
|
272
|
+
<span class="cline-any cline-no"> </span>
|
|
273
|
+
<span class="cline-any cline-no"> </span>
|
|
274
|
+
<span class="cline-any cline-no"> </span>
|
|
275
|
+
<span class="cline-any cline-no"> </span>
|
|
276
|
+
<span class="cline-any cline-no"> </span>
|
|
277
|
+
<span class="cline-any cline-no"> </span>
|
|
278
|
+
<span class="cline-any cline-no"> </span>
|
|
279
|
+
<span class="cline-any cline-no"> </span>
|
|
280
|
+
<span class="cline-any cline-no"> </span>
|
|
281
|
+
<span class="cline-any cline-no"> </span>
|
|
282
|
+
<span class="cline-any cline-no"> </span>
|
|
283
|
+
<span class="cline-any cline-no"> </span>
|
|
284
|
+
<span class="cline-any cline-no"> </span>
|
|
285
|
+
<span class="cline-any cline-no"> </span>
|
|
286
|
+
<span class="cline-any cline-no"> </span>
|
|
287
|
+
<span class="cline-any cline-no"> </span>
|
|
288
|
+
<span class="cline-any cline-no"> </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"> </span>
|
|
280
292
|
<span class="cline-any cline-no"> </span>
|
|
281
293
|
<span class="cline-any cline-no"> </span>
|
|
282
294
|
<span class="cline-any cline-no"> </span>
|
|
295
|
+
<span class="cline-any cline-no"> </span>
|
|
296
|
+
<span class="cline-any cline-no"> </span>
|
|
297
|
+
<span class="cline-any cline-no"> </span>
|
|
298
|
+
<span class="cline-any cline-no"> </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"> </span>
|
|
302
|
+
<span class="cline-any cline-no"> </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"> </span>
|
|
295
|
-
<span class="cline-any cline-no"> </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"> </span></td><td class="text"><pre class="prettyprint lang-js">const Base = require('../../modules/Base');
|
|
307
307
|
|
|
308
308
|
class Cache extends Base {
|
|
309
|
-
constructor(app) {
|
|
310
|
-
super(app)
|
|
311
|
-
this.whenReady = this.#init()
|
|
312
|
-
}
|
|
313
|
-
|
|
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
|
-
|
|
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
|
|
|
327
|
-
|
|
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) => {</span>
|
|
328
328
|
<span class="cstat-no" title="statement not covered" > this.logger.error(error, b, c);</span>
|
|
329
|
-
})
|
|
330
|
-
this.redisClient.on('connect', () => {
|
|
331
|
-
this.logger.info('Redis connection success')
|
|
332
|
-
})
|
|
333
|
-
this.app.events.on('shutdown', () => {
|
|
334
|
-
this.redisClient.quit()
|
|
335
|
-
})
|
|
336
|
-
|
|
337
|
-
this.promiseMapping = new Map()
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
getKeyWithNameSpace(key) {
|
|
341
|
-
return `${this.redisNamespace}-${key}`;
|
|
342
|
-
}
|
|
343
|
-
|
|
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
|
-
|
|
357
|
-
this.promiseMapping.set(
|
|
358
|
-
key,
|
|
359
|
-
new Promise((res, rej) => {
|
|
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', () => {</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', () => {</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
|
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
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
|
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
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) => {</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) =></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) => {</span>
|
|
393
|
+
<span class="cstat-no" title="statement not covered" > if (typeof value === 'string' && /^\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
|
-
|
|
405
|
-
resolve(result)
|
|
406
|
-
this.promiseMapping.delete(key)
|
|
407
|
-
return result
|
|
408
|
-
}
|
|
409
|
-
|
|
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
|
|
|
413
|
-
|
|
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
|
|
|
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
|
|
|
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-
|
|
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">
|
|
26
|
+
<span class="strong">14.16% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
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">
|
|
33
|
+
<span class="strong">100% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
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">
|
|
40
|
+
<span class="strong">0% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
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">
|
|
47
|
+
<span class="strong">14.16% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
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
|
|
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
|
|
83
|
-
<td data-value="
|
|
84
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
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="
|
|
87
|
-
<td data-value="120" class="abs
|
|
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="
|
|
92
|
-
<td data-value="
|
|
93
|
-
<td data-value="
|
|
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-
|
|
104
|
+
at 2023-09-21T12:04:18.148Z
|
|
105
105
|
</div>
|
|
106
106
|
<script src="../../../prettify.js"></script>
|
|
107
107
|
<script>
|