@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.
- package/CHANGELOG.md +6 -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,16 +23,16 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">76.08% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
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">
|
|
33
|
+
<span class="strong">50% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
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">
|
|
47
|
+
<span class="strong">76.08% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
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
|
|
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">
|
|
113
|
-
<span class="cline-any cline-yes">
|
|
114
|
-
<span class="cline-any cline-yes">
|
|
115
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
117
117
|
<span class="cline-any cline-no"> </span>
|
|
118
|
-
<span class="cline-any cline-yes">
|
|
119
|
-
<span class="cline-any cline-yes">
|
|
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">
|
|
136
|
-
<span class="cline-any cline-yes">
|
|
137
|
-
<span class="cline-any cline-yes">
|
|
138
|
-
<span class="cline-any cline-yes">
|
|
139
|
-
<span class="cline-any cline-yes">
|
|
140
|
-
<span class="cline-any cline-yes">
|
|
141
|
-
<span class="cline-any cline-yes">
|
|
142
|
-
<span class="cline-any cline-yes">
|
|
143
|
-
<span class="cline-any cline-yes">
|
|
144
|
-
<span class="cline-any cline-
|
|
145
|
-
<span class="cline-any cline-
|
|
146
|
-
<span class="cline-any cline-
|
|
147
|
-
<span class="cline-any cline-yes">
|
|
148
|
-
<span class="cline-any cline-yes">
|
|
149
|
-
<span class="cline-any cline-yes">
|
|
150
|
-
<span class="cline-any cline-yes">
|
|
151
|
-
<span class="cline-any cline-yes">
|
|
152
|
-
<span class="cline-any cline-yes">
|
|
153
|
-
<span class="cline-any cline-yes">
|
|
154
|
-
<span class="cline-any cline-yes">
|
|
155
|
-
<span class="cline-any cline-yes">
|
|
156
|
-
<span class="cline-any cline-yes">
|
|
157
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
133
|
+
<span class="cline-any cline-no"> </span>
|
|
134
|
+
<span class="cline-any cline-no"> </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"> </span>
|
|
149
|
+
<span class="cline-any cline-no"> </span>
|
|
150
|
+
<span class="cline-any cline-no"> </span>
|
|
151
|
+
<span class="cline-any cline-no"> </span>
|
|
152
|
+
<span class="cline-any cline-no"> </span>
|
|
153
|
+
<span class="cline-any cline-no"> </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"> </span></td><td class="text"><pre class="prettyprint lang-js">const AbstractMiddleware = require('./AbstractMiddleware');
|
|
159
159
|
|
|
160
160
|
class GetUserByToken extends AbstractMiddleware {
|
|
@@ -174,10 +174,10 @@ class GetUserByToken extends AbstractMiddleware {
|
|
|
174
174
|
}
|
|
175
175
|
|
|
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
|
|
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
|
|
|
@@ -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-
|
|
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">
|
|
26
|
+
<span class="strong">89.91% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
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">
|
|
33
|
+
<span class="strong">68.75% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
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">
|
|
40
|
+
<span class="strong">80% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
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">
|
|
47
|
+
<span class="strong">89.91% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
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">
|
|
186
|
-
<span class="cline-any cline-yes">
|
|
187
|
-
<span class="cline-any cline-yes">
|
|
188
|
-
<span class="cline-any cline-yes">
|
|
189
|
-
<span class="cline-any cline-yes">
|
|
190
|
-
<span class="cline-any cline-
|
|
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"> </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"> </span>
|
|
236
|
+
<span class="cline-any cline-no"> </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"> </span>
|
|
261
|
+
<span class="cline-any cline-no"> </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">
|
|
258
|
-
<span class="cline-any cline-yes">
|
|
259
|
-
<span class="cline-any cline-yes">
|
|
260
|
-
<span class="cline-any cline-yes">
|
|
261
|
-
<span class="cline-any cline-yes">
|
|
262
|
-
<span class="cline-any cline-yes">
|
|
263
|
-
<span class="cline-any cline-yes">
|
|
264
|
-
<span class="cline-any cline-yes">
|
|
265
|
-
<span class="cline-any cline-yes">
|
|
266
|
-
<span class="cline-any cline-yes">2x</span>
|
|
267
|
-
<span class="cline-any cline-yes">
|
|
268
|
-
<span class="cline-any cline-yes">
|
|
269
|
-
<span class="cline-any cline-yes">
|
|
270
|
-
<span class="cline-any cline-yes">
|
|
271
|
-
<span class="cline-any cline-yes">
|
|
272
|
-
<span class="cline-any cline-yes">
|
|
273
|
-
<span class="cline-any cline-yes">
|
|
274
|
-
<span class="cline-any cline-yes">
|
|
275
|
-
<span class="cline-any cline-yes">
|
|
276
|
-
<span class="cline-any cline-yes">
|
|
277
|
-
<span class="cline-any cline-yes">
|
|
278
|
-
<span class="cline-any cline-yes">
|
|
279
|
-
<span class="cline-any cline-
|
|
280
|
-
<span class="cline-any cline-
|
|
281
|
-
<span class="cline-any cline-
|
|
282
|
-
<span class="cline-any cline-
|
|
283
|
-
<span class="cline-any cline-
|
|
284
|
-
<span class="cline-any cline-
|
|
285
|
-
<span class="cline-any cline-
|
|
286
|
-
<span class="cline-any cline-
|
|
287
|
-
<span class="cline-any cline-yes">
|
|
288
|
-
<span class="cline-any cline-yes">
|
|
289
|
-
<span class="cline-any cline-yes">
|
|
290
|
-
<span class="cline-any cline-yes">
|
|
291
|
-
<span class="cline-any cline-yes">
|
|
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"> </span>
|
|
291
|
+
<span class="cline-any cline-no"> </span>
|
|
292
|
+
<span class="cline-any cline-no"> </span>
|
|
293
|
+
<span class="cline-any cline-no"> </span>
|
|
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-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"> </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
|
|
|
308
|
-
const AbstractMiddleware = require('
|
|
309
|
-
|
|
308
|
+
const AbstractMiddleware = require('./AbstractMiddleware');
|
|
309
|
+
|
|
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) => text
|
|
315
|
+
t: <span class="fstat-no" title="function not covered" >(text) => 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
|
|
|
347
|
-
this.enabled =
|
|
348
|
-
|
|
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
|
|
|
353
|
-
static get description() {
|
|
354
|
-
<span class="
|
|
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
|
|
|
357
357
|
async middleware(req, res, next) {
|
|
358
358
|
let i18n;
|
|
359
359
|
|
|
360
360
|
if (this.enabled) {
|
|
361
361
|
let lang = this.detectLang(req);
|
|
362
|
-
if (!lang
|
|
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
|
|
|
369
|
-
if (!this.cache[
|
|
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
|
|
|
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
|
|
|
382
382
|
req.appInfo.i18n = i18n;
|
|
383
383
|
req.i18n = new Proxy(req.appInfo.i18n, {
|
|
384
384
|
get: (target, prop) => {
|
|
385
385
|
this.logger.warn('Please not use "req.i18n" Use "req.appInfo.i18n"');
|
|
386
386
|
return target[prop];
|
|
387
|
-
|
|
387
|
+
},
|
|
388
388
|
});
|
|
389
389
|
|
|
390
390
|
return next();
|
|
391
391
|
}
|
|
392
392
|
|
|
393
393
|
detectors = {
|
|
394
|
-
|
|
395
|
-
query: (req) => (req.query ? req.query[this.lookupQuerystring]
|
|
396
|
-
user: (req) => req.appInfo?.user
|
|
394
|
+
XLang: (req) => req.get('X-Lang'), // grab from header
|
|
395
|
+
query: (req) => (req.query ? req.query[this.lookupQuerystring] <span class="branch-0 cbranch-no" title="branch not covered" >: false)</span>, // grab from query
|
|
396
|
+
user: (req) => 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
|
|
|
399
399
|
detectorOrder = ['XLang', 'query', 'user'];
|
|
400
400
|
|
|
401
401
|
detectLang(req, isUseShortCode = true) {
|
|
402
402
|
let lang = '';
|
|
403
|
-
for (
|
|
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-
|
|
430
|
+
at 2023-09-21T12:04:18.148Z
|
|
431
431
|
</div>
|
|
432
432
|
<script src="../../../../prettify.js"></script>
|
|
433
433
|
<script>
|