@adaptivestone/framework 4.11.4 → 5.0.0-alpha.10

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 (83) hide show
  1. package/.eslintrc.cjs +41 -0
  2. package/CHANGELOG.md +52 -0
  3. package/Cli.js +5 -5
  4. package/cluster.js +5 -3
  5. package/commands/CreateUser.js +5 -3
  6. package/commands/Documentation.js +3 -3
  7. package/commands/DropIndex.js +2 -2
  8. package/commands/Generate.js +2 -2
  9. package/commands/GetOpenApiJson.js +3 -3
  10. package/commands/SyncIndexes.js +6 -4
  11. package/commands/migration/Create.js +4 -7
  12. package/commands/migration/Migrate.js +8 -4
  13. package/config/auth.js +3 -2
  14. package/config/http.js +1 -1
  15. package/config/i18n.js +1 -1
  16. package/config/ipDetector.js +14 -0
  17. package/config/log.js +1 -1
  18. package/config/mail.js +2 -2
  19. package/config/mongo.js +1 -1
  20. package/config/rateLimiter.js +1 -1
  21. package/config/redis.js +1 -1
  22. package/config/validate.js +1 -1
  23. package/controllers/Auth.js +5 -5
  24. package/controllers/Home.js +3 -3
  25. package/controllers/index.js +6 -4
  26. package/folderConfig.js +2 -3
  27. package/helpers/files.js +11 -7
  28. package/helpers/logger.js +2 -4
  29. package/helpers/redis/clearNamespace.js +1 -1
  30. package/helpers/yup.js +4 -5
  31. package/index.js +2 -2
  32. package/jsconfig.json +9 -0
  33. package/models/Migration.js +2 -2
  34. package/models/Sequence.js +2 -2
  35. package/models/User.js +5 -6
  36. package/modules/AbstractCommand.js +4 -3
  37. package/modules/AbstractConnector.js +2 -2
  38. package/modules/AbstractController.js +12 -7
  39. package/modules/AbstractModel.js +8 -5
  40. package/modules/Base.d.ts +4 -3
  41. package/modules/Base.js +2 -2
  42. package/modules/BaseCli.js +6 -4
  43. package/modules/Modules.test.js +2 -2
  44. package/package.json +16 -16
  45. package/server.d.ts +7 -5
  46. package/server.js +24 -17
  47. package/services/cache/Cache.d.ts +2 -2
  48. package/services/cache/Cache.js +6 -4
  49. package/services/documentation/DocumentationGenerator.js +3 -3
  50. package/services/http/HttpServer.js +16 -24
  51. package/services/http/middleware/AbstractMiddleware.js +3 -3
  52. package/services/http/middleware/Auth.js +2 -2
  53. package/services/http/middleware/Auth.test.js +1 -1
  54. package/services/http/middleware/Cors.js +2 -2
  55. package/services/http/middleware/Cors.test.js +1 -1
  56. package/services/http/middleware/GetUserByToken.js +3 -3
  57. package/services/http/middleware/GetUserByToken.test.js +1 -1
  58. package/services/http/middleware/I18n.js +5 -6
  59. package/services/http/middleware/I18n.test.js +1 -1
  60. package/services/http/middleware/IpDetector.js +59 -0
  61. package/services/http/middleware/IpDetector.test.js +143 -0
  62. package/services/http/middleware/Pagination.js +3 -3
  63. package/services/http/middleware/PrepareAppInfo.js +2 -2
  64. package/services/http/middleware/PrepareAppInfo.test.js +1 -1
  65. package/services/http/middleware/RateLimiter.js +14 -9
  66. package/services/http/middleware/RateLimiter.test.js +5 -3
  67. package/services/http/middleware/RequestLogger.js +2 -2
  68. package/services/http/middleware/RequestParser.js +7 -5
  69. package/services/http/middleware/RequestParser.test.js +17 -10
  70. package/services/http/middleware/Role.js +2 -2
  71. package/services/http/middleware/Role.test.js +1 -1
  72. package/services/messaging/email/index.js +28 -29
  73. package/services/messaging/index.js +2 -4
  74. package/services/validate/ValidateService.js +5 -5
  75. package/services/validate/ValidateService.test.js +4 -4
  76. package/services/validate/drivers/AbstractValidator.js +2 -2
  77. package/services/validate/drivers/CustomValidator.js +3 -4
  78. package/services/validate/drivers/YupValidator.js +3 -3
  79. package/tests/globalSetupVitest.js +1 -1
  80. package/tests/setup.js +10 -9
  81. package/tests/setupVitest.js +6 -7
  82. package/types/TFoldersConfig.d.ts +0 -2
  83. package/services/http/middleware/StaticFiles.js +0 -60
@@ -2,24 +2,23 @@ import path from 'node:path';
2
2
  import crypto from 'node:crypto';
3
3
  import { beforeAll, beforeEach, afterEach, afterAll } from 'vitest';
4
4
 
5
- const mongoose = require('mongoose');
5
+ import mongoose from 'mongoose'; // we do not need create indexes on tests
6
6
 
7
- mongoose.set('autoIndex', false); // we do not need create indexes щт еуыеы
7
+ import redis from 'redis';
8
+ import clearRedisNamespace from '../helpers/redis/clearNamespace.js';
9
+ import Server from '../server.js';
8
10
 
9
- const redis = require('redis');
10
- const Server = require('../server');
11
-
12
- const clearRedisNamespace = require('../helpers/redis/clearNamespace');
11
+ mongoose.set('autoIndex', false);
13
12
 
14
13
  beforeAll(async () => {
15
14
  process.env.LOGGER_CONSOLE_LEVEL = 'error';
15
+ process.env.AUTH_SALT = crypto.randomBytes(16).toString('hex');
16
16
  global.server = new Server({
17
17
  folders: {
18
18
  config: process.env.TEST_FOLDER_CONFIG || path.resolve('./config'),
19
19
  controllers:
20
20
  process.env.TEST_FOLDER_CONTROLLERS || path.resolve('./controllers'),
21
21
  views: process.env.TEST_FOLDER_VIEWS || path.resolve('./views'),
22
- public: process.env.TEST_FOLDER_PUBLIC || path.resolve('./public'),
23
22
  models: process.env.TEST_FOLDER_MODELS || path.resolve('./models'),
24
23
  emails:
25
24
  process.env.TEST_FOLDER_EMAIL ||
@@ -3,7 +3,6 @@
3
3
  * @param models path to folder with moidels files
4
4
  * @param controllers path to folder with controllers files
5
5
  * @param views path to folder with view files
6
- * @param public path to folder with public files
7
6
  * @param locales path to folder with locales files
8
7
  * @param emails path to folder with emails files
9
8
  */
@@ -12,7 +11,6 @@ type FolderConfig = {
12
11
  models: string;
13
12
  controllers: string;
14
13
  views: string;
15
- public: string;
16
14
  emails: string;
17
15
  };
18
16
 
@@ -1,60 +0,0 @@
1
- const fsPromises = require('node:fs/promises');
2
- const fs = require('node:fs');
3
- const path = require('node:path');
4
- const mime = require('mime');
5
-
6
- const AbstractMiddleware = require('./AbstractMiddleware');
7
- /**
8
- * Middleware for static files
9
- */
10
- class StaticFiles extends AbstractMiddleware {
11
- constructor(app, params) {
12
- super(app);
13
- this.params = params;
14
- if (!params || !params.folders || !params.folders.length) {
15
- throw new Error('StaticFiles inited without folders config');
16
- }
17
- }
18
-
19
- static get description() {
20
- return 'Static file server middleware. Host you static files from public foolder. Mostly for dev.';
21
- }
22
-
23
- async middleware(req, res, next) {
24
- if (req.method !== 'GET') {
25
- // only get supported
26
- return next();
27
- }
28
- const { folders } = this.params;
29
-
30
- const promises = [];
31
-
32
- for (const f of folders) {
33
- const filePath = path.join(f, req.url);
34
- promises.push(
35
- fsPromises
36
- .stat(filePath)
37
- .catch(() => {
38
- // nothing there, file just not exists
39
- })
40
- .then((stats) => ({ stats, file: filePath })),
41
- );
42
- }
43
-
44
- const fileStats = await Promise.all(promises);
45
-
46
- for (const fileStat of fileStats) {
47
- if (fileStat.stats && fileStat.stats.isFile()) {
48
- const contentType = mime.getType(fileStat.file);
49
- const fileStream = fs.createReadStream(fileStat.file);
50
- res.set('Content-Type', contentType);
51
- fileStream.pipe(res);
52
- return null;
53
- }
54
- }
55
-
56
- return next();
57
- }
58
- }
59
-
60
- module.exports = StaticFiles;