@adaptivestone/framework 5.0.0-alpha.20 → 5.0.0-alpha.22
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 +12 -0
- package/controllers/Auth.js +1 -1
- package/controllers/Home.js +1 -1
- package/models/User.js +7 -1
- package/modules/AbstractController.js +2 -2
- package/package.json +2 -2
- package/services/http/HttpServer.js +1 -1
- package/services/http/middleware/GetUserByToken.js +1 -1
- package/services/http/middleware/RequestLogger.js +3 -3
- package/services/http/middleware/RequestParser.js +1 -1
- package/services/validate/ValidateService.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
### 5.0.0-alpha.22
|
|
2
|
+
|
|
3
|
+
[UPDATE] update deps
|
|
4
|
+
[FIX] fix optional routing parameters
|
|
5
|
+
|
|
6
|
+
### 5.0.0-alpha.21
|
|
7
|
+
|
|
8
|
+
[BREAKING] possible breaking. Framework start using express 5 instead of express 4. Please follow express migration guide too https://expressjs.com/en/guide/migrating-5.html.
|
|
9
|
+
[BREAKING] AS part of express 5 migration _ in rotes (middlewares) should have perameter. please replace _ to \*splat
|
|
10
|
+
[UPDATE] update deps
|
|
11
|
+
[UPDATE] Mailer uses await import() for startup speedup
|
|
12
|
+
|
|
1
13
|
### 5.0.0-alpha.20
|
|
2
14
|
|
|
3
15
|
[UPDATE] update deps
|
package/controllers/Auth.js
CHANGED
package/controllers/Home.js
CHANGED
package/models/User.js
CHANGED
|
@@ -4,7 +4,6 @@ import { scrypt } from 'node:crypto';
|
|
|
4
4
|
|
|
5
5
|
import { promisify } from 'node:util';
|
|
6
6
|
import AbstractModel from '../modules/AbstractModel.js';
|
|
7
|
-
import Mailer from '../services/messaging/email/index.js';
|
|
8
7
|
|
|
9
8
|
class User extends AbstractModel {
|
|
10
9
|
constructor(app) {
|
|
@@ -175,6 +174,10 @@ class User extends AbstractModel {
|
|
|
175
174
|
async sendPasswordRecoveryEmail(i18n) {
|
|
176
175
|
const passwordRecoveryToken =
|
|
177
176
|
await User.generateUserPasswordRecoveryToken(this);
|
|
177
|
+
// speed optimisation
|
|
178
|
+
const Mailer = (await import('../services/messaging/email/index.js'))
|
|
179
|
+
.default;
|
|
180
|
+
|
|
178
181
|
const mail = new Mailer(
|
|
179
182
|
this.getSuper().app,
|
|
180
183
|
'recovery',
|
|
@@ -241,6 +244,9 @@ class User extends AbstractModel {
|
|
|
241
244
|
|
|
242
245
|
async sendVerificationEmail(i18n) {
|
|
243
246
|
const verificationToken = await User.generateUserVerificationToken(this);
|
|
247
|
+
// speed optimisation
|
|
248
|
+
const Mailer = (await import('../services/messaging/email/index.js'))
|
|
249
|
+
.default;
|
|
244
250
|
const mail = new Mailer(
|
|
245
251
|
this.getSuper().app,
|
|
246
252
|
'verification',
|
|
@@ -376,14 +376,14 @@ class AbstractController extends Base {
|
|
|
376
376
|
* @returns {Map<string, Array<typeof import('../services/http/middleware/AbstractMiddleware.js').default | [Function, ...any]>>}
|
|
377
377
|
* @example
|
|
378
378
|
* return new Map([
|
|
379
|
-
* ['
|
|
379
|
+
* ['/{*splat}', [GetUserByToken]] // for any method for this controller
|
|
380
380
|
* ['POST/', [Auth]] // for POST method
|
|
381
381
|
* ['/superSecretMethod', [OnlySuperSecretUsers]] // route with ANY method
|
|
382
382
|
* ['PUT/superSecretMathod', [OnlySuperSecretAdmin]] // route with PUT method
|
|
383
383
|
* ]);
|
|
384
384
|
*/
|
|
385
385
|
static get middleware() {
|
|
386
|
-
return new Map([['
|
|
386
|
+
return new Map([['/{*splat}', [GetUserByToken, Auth]]]);
|
|
387
387
|
}
|
|
388
388
|
|
|
389
389
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adaptivestone/framework",
|
|
3
|
-
"version": "5.0.0-alpha.
|
|
3
|
+
"version": "5.0.0-alpha.22",
|
|
4
4
|
"description": "Adaptive stone node js framework",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"license": "MIT",
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"deepmerge": "^4.2.2",
|
|
34
|
-
"express": "^
|
|
34
|
+
"express": "^5.0.1",
|
|
35
35
|
"formidable": "^3.5.1",
|
|
36
36
|
"html-to-text": "^9.0.3",
|
|
37
37
|
"i18next": "^23.2.8",
|
|
@@ -25,9 +25,9 @@ class HttpServer extends Base {
|
|
|
25
25
|
// ]);
|
|
26
26
|
// this.express.set('view engine', 'pug');
|
|
27
27
|
|
|
28
|
+
this.express.use(new RequestLoggerMiddleware(this.app).getMiddleware());
|
|
28
29
|
this.express.use(new PrepareAppInfoMiddleware(this.app).getMiddleware());
|
|
29
30
|
this.express.use(new IpDetector(this.app).getMiddleware());
|
|
30
|
-
this.express.use(new RequestLoggerMiddleware(this.app).getMiddleware());
|
|
31
31
|
this.express.use(new I18nMiddleware(this.app).getMiddleware());
|
|
32
32
|
|
|
33
33
|
const httpConfig = this.app.getConfig('http');
|
|
@@ -22,7 +22,7 @@ class GetUserByToken extends AbstractMiddleware {
|
|
|
22
22
|
this.logger.warn('You call GetUserByToken more then once');
|
|
23
23
|
return next();
|
|
24
24
|
}
|
|
25
|
-
let { token } = req.body;
|
|
25
|
+
let { token } = req.body || {};
|
|
26
26
|
this.logger.verbose(
|
|
27
27
|
`GetUserByToken token in BODY ${token}. Token in Authorization header ${req.get(
|
|
28
28
|
'Authorization',
|
|
@@ -6,13 +6,13 @@ class RequestLogger extends AbstractMiddleware {
|
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
async middleware(req, res, next) {
|
|
9
|
-
const startTime =
|
|
9
|
+
const startTime = performance.now();
|
|
10
10
|
const text = `Request is [${req.method}] ${req.url}`;
|
|
11
11
|
this.logger.info(text);
|
|
12
12
|
res.on('finish', () => {
|
|
13
|
-
const
|
|
13
|
+
const end = performance.now();
|
|
14
14
|
this.logger.info(
|
|
15
|
-
`Finished ${text}. Status: ${res.statusCode}.
|
|
15
|
+
`Finished ${text}. Status: ${res.statusCode}. [${(end - startTime).toFixed(2)} ms]`,
|
|
16
16
|
);
|
|
17
17
|
});
|
|
18
18
|
next();
|