@adaptivestone/framework 4.11.4 → 5.0.0-alpha.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/.eslintrc.cjs +41 -0
- package/CHANGELOG.md +10 -0
- package/Cli.js +5 -5
- package/cluster.js +5 -3
- package/commands/CreateUser.js +2 -2
- package/commands/Documentation.js +3 -3
- package/commands/DropIndex.js +2 -2
- package/commands/Generate.js +2 -2
- package/commands/GetOpenApiJson.js +3 -3
- package/commands/SyncIndexes.js +6 -4
- package/commands/migration/Create.js +4 -7
- package/commands/migration/Migrate.js +7 -3
- package/config/auth.js +1 -1
- package/config/http.js +1 -1
- package/config/i18n.js +1 -1
- package/config/log.js +1 -1
- package/config/mail.js +2 -2
- package/config/mongo.js +1 -1
- package/config/rateLimiter.js +1 -1
- package/config/redis.js +1 -1
- package/config/validate.js +1 -1
- package/controllers/Auth.js +5 -5
- package/controllers/Home.js +3 -3
- package/controllers/index.js +6 -4
- package/folderConfig.js +2 -2
- package/helpers/files.js +11 -7
- package/helpers/logger.js +2 -4
- package/helpers/redis/clearNamespace.js +1 -1
- package/helpers/yup.js +4 -5
- package/index.js +2 -2
- package/models/Migration.js +2 -2
- package/models/Sequence.js +2 -2
- package/models/User.js +5 -6
- package/modules/AbstractCommand.js +2 -2
- package/modules/AbstractConnector.js +2 -2
- package/modules/AbstractController.js +8 -7
- package/modules/AbstractModel.js +3 -3
- package/modules/Base.js +2 -2
- package/modules/BaseCli.js +6 -4
- package/modules/Modules.test.js +2 -2
- package/package.json +10 -9
- package/server.js +16 -13
- package/services/cache/Cache.js +2 -2
- package/services/documentation/DocumentationGenerator.js +3 -3
- package/services/http/HttpServer.js +15 -15
- package/services/http/middleware/AbstractMiddleware.js +3 -3
- package/services/http/middleware/Auth.js +2 -2
- package/services/http/middleware/Auth.test.js +1 -1
- package/services/http/middleware/Cors.js +2 -2
- package/services/http/middleware/Cors.test.js +1 -1
- package/services/http/middleware/GetUserByToken.js +2 -2
- package/services/http/middleware/GetUserByToken.test.js +1 -1
- package/services/http/middleware/I18n.js +5 -6
- package/services/http/middleware/I18n.test.js +1 -1
- package/services/http/middleware/Pagination.js +3 -3
- package/services/http/middleware/PrepareAppInfo.js +2 -2
- package/services/http/middleware/PrepareAppInfo.test.js +1 -1
- package/services/http/middleware/RateLimiter.js +7 -8
- package/services/http/middleware/RateLimiter.test.js +1 -1
- package/services/http/middleware/RequestLogger.js +2 -2
- package/services/http/middleware/RequestParser.js +3 -4
- package/services/http/middleware/RequestParser.test.js +3 -5
- package/services/http/middleware/Role.js +2 -2
- package/services/http/middleware/Role.test.js +1 -1
- package/services/http/middleware/StaticFiles.js +6 -7
- package/services/messaging/email/index.js +21 -14
- package/services/messaging/index.js +2 -4
- package/services/validate/ValidateService.js +5 -5
- package/services/validate/ValidateService.test.js +4 -4
- package/services/validate/drivers/AbstractValidator.js +2 -2
- package/services/validate/drivers/CustomValidator.js +3 -4
- package/services/validate/drivers/YupValidator.js +3 -3
- package/tests/globalSetupVitest.js +1 -1
- package/tests/setup.js +7 -8
- package/tests/setupVitest.js +5 -6
package/.eslintrc.cjs
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
env: {
|
|
3
|
+
es2023: true,
|
|
4
|
+
node: true,
|
|
5
|
+
},
|
|
6
|
+
extends: ['airbnb-base', 'prettier'],
|
|
7
|
+
plugins: ['prettier'],
|
|
8
|
+
parserOptions: {
|
|
9
|
+
ecmaVersion: 2023,
|
|
10
|
+
},
|
|
11
|
+
rules: {
|
|
12
|
+
'no-restricted-syntax': [
|
|
13
|
+
'error',
|
|
14
|
+
{
|
|
15
|
+
selector: 'ForInStatement',
|
|
16
|
+
message:
|
|
17
|
+
'for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
selector: 'LabeledStatement',
|
|
21
|
+
message:
|
|
22
|
+
'Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
selector: 'WithStatement',
|
|
26
|
+
message:
|
|
27
|
+
'`with` is disallowed in strict mode because it makes code impossible to predict and optimize.',
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
'prettier/prettier': 'error',
|
|
31
|
+
'import/extensions': 'off', // it have a problem with dynamic imports
|
|
32
|
+
'import/prefer-default-export': 'off', // we want to have signgke default export too
|
|
33
|
+
},
|
|
34
|
+
overrides: [
|
|
35
|
+
{
|
|
36
|
+
files: ['**/*.test.js'],
|
|
37
|
+
extends: ['plugin:vitest/all', 'plugin:vitest/recommended'],
|
|
38
|
+
plugins: ['vitest'],
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
};
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
### 5.0.0-alpha.2
|
|
2
|
+
|
|
3
|
+
[UPDATE] deps update
|
|
4
|
+
|
|
5
|
+
### 5.0.0-alpha.1
|
|
6
|
+
|
|
7
|
+
[BREAKING] Vitest 1.0.0 https://vitest.dev/guide/migration.html#migrating-from-vitest-0-34-6
|
|
8
|
+
[BREAKING] ESM only. No more commonJS. That help to fix a lot of bugs with tests and provides better development expirience
|
|
9
|
+
[BREAKING] Mongoose v8. https://mongoosejs.com/docs/migrating_to_8.html
|
|
10
|
+
|
|
1
11
|
### 4.11.4
|
|
2
12
|
|
|
3
13
|
[UPDATE] deps update
|
package/Cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import parseArgs from 'minimist';
|
|
2
|
+
import mongoose from 'mongoose';
|
|
3
|
+
import BaseCli from './modules/BaseCli.js';
|
|
4
|
+
import Server from './server.js';
|
|
5
5
|
|
|
6
6
|
class Cli extends BaseCli {
|
|
7
7
|
constructor(serverConfig) {
|
|
@@ -19,4 +19,4 @@ class Cli extends BaseCli {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
export default Cli;
|
package/cluster.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import cluster from 'node:cluster';
|
|
2
|
+
import { cpus } from 'node:os';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
const numCPUs = cpus().length;
|
|
5
|
+
|
|
6
|
+
if (cluster.isPrimary) {
|
|
5
7
|
// eslint-disable-next-line no-console
|
|
6
8
|
console.log(`Master ${process.pid} is running`);
|
|
7
9
|
// Fork workers.
|
package/commands/CreateUser.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import AbstractCommand from '../modules/AbstractCommand.js';
|
|
2
2
|
|
|
3
3
|
// Example: node src/cli createuser --email=somemail@gmail.com --password=somePassword --roles=user,admin,someOtherRoles
|
|
4
4
|
class CreateUser extends AbstractCommand {
|
|
@@ -66,4 +66,4 @@ class CreateUser extends AbstractCommand {
|
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
export default CreateUser;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import AbstractCommand from '../modules/AbstractCommand.js';
|
|
2
|
+
import ControllerManager from '../controllers/index.js';
|
|
3
3
|
|
|
4
4
|
class Documentation extends AbstractCommand {
|
|
5
5
|
async run() {
|
|
@@ -10,4 +10,4 @@ class Documentation extends AbstractCommand {
|
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
export default Documentation;
|
package/commands/DropIndex.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import AbstractCommand from '../modules/AbstractCommand.js';
|
|
2
2
|
|
|
3
3
|
class DropIndex extends AbstractCommand {
|
|
4
4
|
static get description() {
|
|
@@ -26,4 +26,4 @@ class DropIndex extends AbstractCommand {
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
export default DropIndex;
|
package/commands/Generate.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import AbstractCommand from '../modules/AbstractCommand.js';
|
|
2
2
|
|
|
3
3
|
class Generate extends AbstractCommand {
|
|
4
4
|
async run() {
|
|
@@ -11,4 +11,4 @@ class Generate extends AbstractCommand {
|
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
export default Generate;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { promises as fs } from 'node:fs';
|
|
2
|
+
import AbstractCommand from '../modules/AbstractCommand.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Command for generate documentation json file openApi
|
|
@@ -318,4 +318,4 @@ class GetOpenApiJson extends AbstractCommand {
|
|
|
318
318
|
}
|
|
319
319
|
}
|
|
320
320
|
|
|
321
|
-
|
|
321
|
+
export default GetOpenApiJson;
|
package/commands/SyncIndexes.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import * as url from 'node:url';
|
|
3
|
+
import AbstractCommand from '../modules/AbstractCommand.js';
|
|
3
4
|
|
|
4
5
|
class SyncIndexes extends AbstractCommand {
|
|
5
6
|
async run() {
|
|
7
|
+
const dirname = url.fileURLToPath(new URL('.', import.meta.url));
|
|
6
8
|
const files = await this.getFilesPathWithInheritance(
|
|
7
|
-
|
|
9
|
+
path.join(dirname, '/../models'),
|
|
8
10
|
this.app.foldersConfig.models,
|
|
9
11
|
);
|
|
10
12
|
let models = [];
|
|
@@ -34,4 +36,4 @@ class SyncIndexes extends AbstractCommand {
|
|
|
34
36
|
}
|
|
35
37
|
}
|
|
36
38
|
|
|
37
|
-
|
|
39
|
+
export default SyncIndexes;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const AbstractCommand = require('../../modules/AbstractCommand');
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { promises as fs } from 'node:fs';
|
|
3
|
+
import AbstractCommand from '../../modules/AbstractCommand.js';
|
|
5
4
|
|
|
6
5
|
class CreateMigration extends AbstractCommand {
|
|
7
6
|
static get description() {
|
|
@@ -41,7 +40,6 @@ class CreateMigration extends AbstractCommand {
|
|
|
41
40
|
static getTemplate(name) {
|
|
42
41
|
return `/* eslint-disable class-methods-use-this */
|
|
43
42
|
|
|
44
|
-
// const Base = require('@adaptivestone/framework/modules/Base');
|
|
45
43
|
import Base from '@adaptivestone/framework/modules/Base.js';
|
|
46
44
|
|
|
47
45
|
class ${name} extends Base {
|
|
@@ -55,10 +53,9 @@ class ${name} extends Base {
|
|
|
55
53
|
}
|
|
56
54
|
}
|
|
57
55
|
|
|
58
|
-
// module.exports = ${name};
|
|
59
56
|
export default ${name};
|
|
60
57
|
`;
|
|
61
58
|
}
|
|
62
59
|
}
|
|
63
60
|
|
|
64
|
-
|
|
61
|
+
export default CreateMigration;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import * as url from 'node:url';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import AbstractCommand from '../../modules/AbstractCommand.js';
|
|
2
4
|
|
|
3
5
|
class Migrate extends AbstractCommand {
|
|
4
6
|
static get description() {
|
|
@@ -6,8 +8,10 @@ class Migrate extends AbstractCommand {
|
|
|
6
8
|
}
|
|
7
9
|
|
|
8
10
|
async run() {
|
|
11
|
+
const dirname = url.fileURLToPath(new URL('.', import.meta.url));
|
|
12
|
+
|
|
9
13
|
const files = await this.getFilesPathWithInheritance(
|
|
10
|
-
|
|
14
|
+
path.join(dirname, '/../../migrations'),
|
|
11
15
|
this.app.foldersConfig.migrations,
|
|
12
16
|
);
|
|
13
17
|
files.sort(
|
|
@@ -48,4 +52,4 @@ class Migrate extends AbstractCommand {
|
|
|
48
52
|
}
|
|
49
53
|
}
|
|
50
54
|
|
|
51
|
-
|
|
55
|
+
export default Migrate;
|
package/config/auth.js
CHANGED
package/config/http.js
CHANGED
package/config/i18n.js
CHANGED
package/config/log.js
CHANGED
package/config/mail.js
CHANGED
package/config/mongo.js
CHANGED
package/config/rateLimiter.js
CHANGED
package/config/redis.js
CHANGED
package/config/validate.js
CHANGED
package/controllers/Auth.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import yup from 'yup';
|
|
2
|
+
import AbstractController from '../modules/AbstractController.js';
|
|
3
|
+
import GetUserByToken from '../services/http/middleware/GetUserByToken.js';
|
|
4
|
+
import RateLimiter from '../services/http/middleware/RateLimiter.js';
|
|
5
5
|
|
|
6
6
|
class Auth extends AbstractController {
|
|
7
7
|
get routes() {
|
|
@@ -207,4 +207,4 @@ class Auth extends AbstractController {
|
|
|
207
207
|
}
|
|
208
208
|
}
|
|
209
209
|
|
|
210
|
-
|
|
210
|
+
export default Auth;
|
package/controllers/Home.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import AbstractController from '../modules/AbstractController.js';
|
|
2
|
+
import GetUserByToken from '../services/http/middleware/GetUserByToken.js';
|
|
3
3
|
|
|
4
4
|
class Home extends AbstractController {
|
|
5
5
|
get routes() {
|
|
@@ -25,4 +25,4 @@ class Home extends AbstractController {
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
export default Home;
|
package/controllers/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import * as url from 'node:url';
|
|
3
|
+
import Base from '../modules/Base.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Class do autoloading a http controllers
|
|
@@ -14,8 +15,9 @@ class ControllerManager extends Base {
|
|
|
14
15
|
* Load controllers
|
|
15
16
|
*/
|
|
16
17
|
async initControllers() {
|
|
18
|
+
const dirname = url.fileURLToPath(new URL('.', import.meta.url));
|
|
17
19
|
const controllersToLoad = await this.getFilesPathWithInheritance(
|
|
18
|
-
|
|
20
|
+
dirname,
|
|
19
21
|
this.app.foldersConfig.controllers,
|
|
20
22
|
);
|
|
21
23
|
|
|
@@ -55,4 +57,4 @@ class ControllerManager extends Base {
|
|
|
55
57
|
}
|
|
56
58
|
}
|
|
57
59
|
|
|
58
|
-
|
|
60
|
+
export default ControllerManager;
|
package/folderConfig.js
CHANGED
package/helpers/files.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { promises as fs } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
3
|
|
|
4
4
|
const getFilesPathWithInheritance = async ({
|
|
5
5
|
internalFolder,
|
|
@@ -36,12 +36,16 @@ const getFilesPathWithInheritance = async ({
|
|
|
36
36
|
internalFiles = internalFiles
|
|
37
37
|
.filter(filterIndexFile)
|
|
38
38
|
.map((fileDirent) =>
|
|
39
|
-
join(fileDirent.path, fileDirent.name)
|
|
39
|
+
join(fileDirent.path, fileDirent.name)
|
|
40
|
+
.replace(`${internalFolder}/`, '')
|
|
41
|
+
.replace(`${internalFolder}`, ''),
|
|
40
42
|
);
|
|
41
43
|
externalFiles = externalFiles
|
|
42
44
|
.filter(filterIndexFile)
|
|
43
45
|
.map((fileDirent) =>
|
|
44
|
-
join(fileDirent.path, fileDirent.name)
|
|
46
|
+
join(fileDirent.path, fileDirent.name)
|
|
47
|
+
.replace(`${externalFolder}/`, '')
|
|
48
|
+
.replace(`${externalFolder}`, ''),
|
|
45
49
|
);
|
|
46
50
|
|
|
47
51
|
const filesToLoad = [];
|
|
@@ -54,7 +58,7 @@ const getFilesPathWithInheritance = async ({
|
|
|
54
58
|
);
|
|
55
59
|
} else {
|
|
56
60
|
filesToLoad.push({
|
|
57
|
-
path:
|
|
61
|
+
path: join(internalFolder, file),
|
|
58
62
|
file,
|
|
59
63
|
});
|
|
60
64
|
}
|
|
@@ -62,14 +66,14 @@ const getFilesPathWithInheritance = async ({
|
|
|
62
66
|
|
|
63
67
|
for (const file of externalFiles) {
|
|
64
68
|
filesToLoad.push({
|
|
65
|
-
path:
|
|
69
|
+
path: join(externalFolder, file),
|
|
66
70
|
file,
|
|
67
71
|
});
|
|
68
72
|
}
|
|
69
73
|
return filesToLoad;
|
|
70
74
|
};
|
|
71
75
|
|
|
72
|
-
|
|
76
|
+
export {
|
|
73
77
|
// eslint-disable-next-line import/prefer-default-export
|
|
74
78
|
getFilesPathWithInheritance,
|
|
75
79
|
};
|
package/helpers/logger.js
CHANGED
package/helpers/yup.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { Schema } from 'yup';
|
|
2
|
+
import { PersistentFile } from 'formidable';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Validator for file
|
|
@@ -13,13 +13,12 @@ class YupFile extends Schema {
|
|
|
13
13
|
constructor() {
|
|
14
14
|
super({
|
|
15
15
|
type: 'file',
|
|
16
|
-
check: (value) =>
|
|
17
|
-
value.every((item) => item instanceof formidable.PersistentFile),
|
|
16
|
+
check: (value) => value.every((item) => item instanceof PersistentFile),
|
|
18
17
|
});
|
|
19
18
|
}
|
|
20
19
|
}
|
|
21
20
|
|
|
22
|
-
|
|
21
|
+
export {
|
|
23
22
|
// eslint-disable-next-line import/prefer-default-export
|
|
24
23
|
YupFile,
|
|
25
24
|
};
|
package/index.js
CHANGED
package/models/Migration.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import AbstractModel from '../modules/AbstractModel.js';
|
|
2
2
|
|
|
3
3
|
class Migration extends AbstractModel {
|
|
4
4
|
// eslint-disable-next-line class-methods-use-this
|
|
@@ -12,4 +12,4 @@ class Migration extends AbstractModel {
|
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
export default Migration;
|
package/models/Sequence.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import AbstractModel from '../modules/AbstractModel.js';
|
|
2
2
|
|
|
3
3
|
class Sequence extends AbstractModel {
|
|
4
4
|
// eslint-disable-next-line class-methods-use-this
|
|
@@ -19,4 +19,4 @@ class Sequence extends AbstractModel {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
export default Sequence;
|
package/models/User.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/* eslint-disable no-param-reassign */
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
const { promisify } = require('node:util');
|
|
3
|
+
import { scrypt } from 'node:crypto';
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
import { promisify } from 'node:util';
|
|
6
|
+
import AbstractModel from '../modules/AbstractModel.js';
|
|
7
|
+
import Mailer from '../services/messaging/email/index.js';
|
|
9
8
|
|
|
10
9
|
class User extends AbstractModel {
|
|
11
10
|
constructor(app) {
|
|
@@ -255,4 +254,4 @@ class User extends AbstractModel {
|
|
|
255
254
|
}
|
|
256
255
|
}
|
|
257
256
|
|
|
258
|
-
|
|
257
|
+
export default User;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import Base from './Base.js';
|
|
2
2
|
|
|
3
3
|
class AbstractCommand extends Base {
|
|
4
4
|
constructor(app, commands, args) {
|
|
@@ -24,4 +24,4 @@ class AbstractCommand extends Base {
|
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
export default AbstractCommand;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import Base from './Base.js';
|
|
2
2
|
|
|
3
3
|
class AbstractConnector extends Base {
|
|
4
4
|
static get loggerGroup() {
|
|
@@ -6,4 +6,4 @@ class AbstractConnector extends Base {
|
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
export default AbstractConnector;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/* eslint-disable no-restricted-syntax */
|
|
2
2
|
/* eslint-disable guard-for-in */
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
import express from 'express';
|
|
4
|
+
|
|
5
|
+
import Base from './Base.js';
|
|
6
|
+
import GetUserByToken from '../services/http/middleware/GetUserByToken.js';
|
|
7
|
+
import Auth from '../services/http/middleware/Auth.js';
|
|
8
|
+
import ValidateService from '../services/validate/ValidateService.js';
|
|
9
|
+
import DocumentationGenerator from '../services/documentation/DocumentationGenerator.js';
|
|
9
10
|
/**
|
|
10
11
|
* Abstract controller. You should extend any controller from them.
|
|
11
12
|
* Place you cintroller into controller folder and it be inited in auto way.
|
|
@@ -405,4 +406,4 @@ class AbstractController extends Base {
|
|
|
405
406
|
}
|
|
406
407
|
}
|
|
407
408
|
|
|
408
|
-
|
|
409
|
+
export default AbstractController;
|
package/modules/AbstractModel.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import mongoose from 'mongoose';
|
|
2
|
+
import Base from './Base.js';
|
|
3
3
|
|
|
4
4
|
class AbstractModel extends Base {
|
|
5
5
|
/**
|
|
@@ -59,4 +59,4 @@ class AbstractModel extends Base {
|
|
|
59
59
|
this.logger.verbose('Model have no hooks');
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
|
-
|
|
62
|
+
export default AbstractModel;
|
package/modules/Base.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { getFilesPathWithInheritance } from '../helpers/files.js';
|
|
2
2
|
|
|
3
3
|
class Base {
|
|
4
4
|
#realLogger = null;
|
|
@@ -50,4 +50,4 @@ class Base {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
export default Base;
|
package/modules/BaseCli.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* eslint-disable no-console */
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import * as url from 'node:url';
|
|
4
|
+
import Base from './Base.js';
|
|
4
5
|
|
|
5
6
|
class Cli extends Base {
|
|
6
7
|
constructor(server) {
|
|
@@ -13,8 +14,9 @@ class Cli extends Base {
|
|
|
13
14
|
if (Object.keys(this.commands).length) {
|
|
14
15
|
return true;
|
|
15
16
|
}
|
|
17
|
+
const dirname = url.fileURLToPath(new URL('.', import.meta.url));
|
|
16
18
|
const commandsToLoad = await this.getFilesPathWithInheritance(
|
|
17
|
-
path.join(
|
|
19
|
+
path.join(dirname, '../commands'),
|
|
18
20
|
this.server.app.foldersConfig.commands,
|
|
19
21
|
);
|
|
20
22
|
for (const com of commandsToLoad) {
|
|
@@ -64,4 +66,4 @@ class Cli extends Base {
|
|
|
64
66
|
}
|
|
65
67
|
}
|
|
66
68
|
|
|
67
|
-
|
|
69
|
+
export default Cli;
|
package/modules/Modules.test.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import SomeController from '../controllers/test/SomeController';
|
|
3
|
-
import AbstractController from './AbstractController';
|
|
2
|
+
import SomeController from '../controllers/test/SomeController.js';
|
|
3
|
+
import AbstractController from './AbstractController.js';
|
|
4
4
|
|
|
5
5
|
describe('abstract controller methods', () => {
|
|
6
6
|
it('can get routes', async () => {
|