@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.
Files changed (75) hide show
  1. package/.eslintrc.cjs +41 -0
  2. package/CHANGELOG.md +10 -0
  3. package/Cli.js +5 -5
  4. package/cluster.js +5 -3
  5. package/commands/CreateUser.js +2 -2
  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 +7 -3
  13. package/config/auth.js +1 -1
  14. package/config/http.js +1 -1
  15. package/config/i18n.js +1 -1
  16. package/config/log.js +1 -1
  17. package/config/mail.js +2 -2
  18. package/config/mongo.js +1 -1
  19. package/config/rateLimiter.js +1 -1
  20. package/config/redis.js +1 -1
  21. package/config/validate.js +1 -1
  22. package/controllers/Auth.js +5 -5
  23. package/controllers/Home.js +3 -3
  24. package/controllers/index.js +6 -4
  25. package/folderConfig.js +2 -2
  26. package/helpers/files.js +11 -7
  27. package/helpers/logger.js +2 -4
  28. package/helpers/redis/clearNamespace.js +1 -1
  29. package/helpers/yup.js +4 -5
  30. package/index.js +2 -2
  31. package/models/Migration.js +2 -2
  32. package/models/Sequence.js +2 -2
  33. package/models/User.js +5 -6
  34. package/modules/AbstractCommand.js +2 -2
  35. package/modules/AbstractConnector.js +2 -2
  36. package/modules/AbstractController.js +8 -7
  37. package/modules/AbstractModel.js +3 -3
  38. package/modules/Base.js +2 -2
  39. package/modules/BaseCli.js +6 -4
  40. package/modules/Modules.test.js +2 -2
  41. package/package.json +10 -9
  42. package/server.js +16 -13
  43. package/services/cache/Cache.js +2 -2
  44. package/services/documentation/DocumentationGenerator.js +3 -3
  45. package/services/http/HttpServer.js +15 -15
  46. package/services/http/middleware/AbstractMiddleware.js +3 -3
  47. package/services/http/middleware/Auth.js +2 -2
  48. package/services/http/middleware/Auth.test.js +1 -1
  49. package/services/http/middleware/Cors.js +2 -2
  50. package/services/http/middleware/Cors.test.js +1 -1
  51. package/services/http/middleware/GetUserByToken.js +2 -2
  52. package/services/http/middleware/GetUserByToken.test.js +1 -1
  53. package/services/http/middleware/I18n.js +5 -6
  54. package/services/http/middleware/I18n.test.js +1 -1
  55. package/services/http/middleware/Pagination.js +3 -3
  56. package/services/http/middleware/PrepareAppInfo.js +2 -2
  57. package/services/http/middleware/PrepareAppInfo.test.js +1 -1
  58. package/services/http/middleware/RateLimiter.js +7 -8
  59. package/services/http/middleware/RateLimiter.test.js +1 -1
  60. package/services/http/middleware/RequestLogger.js +2 -2
  61. package/services/http/middleware/RequestParser.js +3 -4
  62. package/services/http/middleware/RequestParser.test.js +3 -5
  63. package/services/http/middleware/Role.js +2 -2
  64. package/services/http/middleware/Role.test.js +1 -1
  65. package/services/http/middleware/StaticFiles.js +6 -7
  66. package/services/messaging/email/index.js +21 -14
  67. package/services/messaging/index.js +2 -4
  68. package/services/validate/ValidateService.js +5 -5
  69. package/services/validate/ValidateService.test.js +4 -4
  70. package/services/validate/drivers/AbstractValidator.js +2 -2
  71. package/services/validate/drivers/CustomValidator.js +3 -4
  72. package/services/validate/drivers/YupValidator.js +3 -3
  73. package/tests/globalSetupVitest.js +1 -1
  74. package/tests/setup.js +7 -8
  75. package/tests/setupVitest.js +5 -6
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@adaptivestone/framework",
3
- "version": "4.11.4",
3
+ "version": "5.0.0-alpha.2",
4
4
  "description": "Adaptive stone node js framework",
5
5
  "main": "index.js",
6
+ "type": "module",
6
7
  "engines": {
7
8
  "node": ">=18.17.0"
8
9
  },
@@ -19,7 +20,7 @@
19
20
  "lint": "eslint '**/*.js'",
20
21
  "lint:fix": "eslint '**/*.js' --fix",
21
22
  "codestyle": "npm run prettier && npm run lint",
22
- "prepare": "husky install",
23
+ "prepare": "husky",
23
24
  "cli": "node cliCommand",
24
25
  "benchmark": "h2load -n 10000 -c 50 -p 'http/1.1' http://localhost:3300/",
25
26
  "benchmark2": "h2load -n 10000 -c 50 https://localhost:3300/",
@@ -36,33 +37,33 @@
36
37
  "i18next": "^23.2.8",
37
38
  "i18next-chained-backend": "^4.0.0",
38
39
  "i18next-fs-backend": "^2.0.0",
39
- "juice": "^9.0.0",
40
- "mime": "^3.0.0",
40
+ "juice": "^10.0.0",
41
+ "mime": "^4.0.0",
41
42
  "minimist": "^1.2.5",
42
- "mongoose": "^7.0.0",
43
+ "mongoose": "^8.0.0",
43
44
  "nodemailer": "^6.6.3",
44
45
  "nodemailer-sendmail-transport": "^1.0.2",
45
46
  "nodemailer-stub-transport": "^1.1.0",
46
47
  "pug": "^3.0.2",
47
- "rate-limiter-flexible": "^3.0.0",
48
+ "rate-limiter-flexible": "^4.0.0",
48
49
  "redis": "^4.3.1",
49
50
  "winston": "^3.3.3",
50
51
  "winston-transport-sentry-node": "^2.0.0",
51
52
  "yup": "^1.0.0"
52
53
  },
53
54
  "devDependencies": {
54
- "@vitest/coverage-v8": "^0.34.3",
55
+ "@vitest/coverage-v8": "^1.0.0",
55
56
  "eslint": "^8.0.0",
56
57
  "eslint-config-airbnb-base": "^15.0.0",
57
58
  "eslint-config-prettier": "^9.0.0",
58
59
  "eslint-plugin-prettier": "^5.0.0",
59
60
  "eslint-plugin-vitest": "^0.3.1",
60
- "husky": "^8.0.0",
61
+ "husky": "^9.0.0",
61
62
  "lint-staged": "^15.0.0",
62
63
  "mongodb-memory-server": "^9.0.0",
63
64
  "nodemon": "^3.0.1",
64
65
  "prettier": "^3.0.0",
65
- "vitest": "^0.34.3"
66
+ "vitest": "^1.0.0"
66
67
  },
67
68
  "lint-staged": {
68
69
  "**/*.{js,jsx,ts,tsx,json,css,scss,md}": [
package/server.js CHANGED
@@ -1,14 +1,15 @@
1
1
  /* eslint-disable no-console */
2
- const EventEmitter = require('node:events');
3
- const { hrtime } = require('node:process');
4
-
5
- require('dotenv').config();
6
- const merge = require('deepmerge');
7
- const winston = require('winston');
8
- const { getFilesPathWithInheritance } = require('./helpers/files');
9
- const { consoleLogger } = require('./helpers/logger');
10
-
11
- const Cache = require('./services/cache/Cache');
2
+ import EventEmitter from 'node:events';
3
+ import { hrtime } from 'node:process';
4
+ import * as url from 'node:url';
5
+ import path from 'node:path';
6
+
7
+ import 'dotenv/config';
8
+ import merge from 'deepmerge';
9
+ import winston from 'winston';
10
+ import { getFilesPathWithInheritance } from './helpers/files.js';
11
+ import { consoleLogger } from './helpers/logger.js';
12
+ import Cache from './services/cache/Cache.js';
12
13
 
13
14
  /**
14
15
  * Main framework class.
@@ -139,8 +140,9 @@ class Server {
139
140
  }
140
141
 
141
142
  async #initConfigFiles() {
143
+ const dirname = url.fileURLToPath(new URL('.', import.meta.url));
142
144
  const files = await getFilesPathWithInheritance({
143
- internalFolder: `${__dirname}/config`,
145
+ internalFolder: path.join(dirname, '/config'),
144
146
  externalFolder: this.app.foldersConfig.config,
145
147
  loggerFileType: 'CONFIG',
146
148
  logger: (m) => consoleLogger('info', m),
@@ -192,8 +194,9 @@ class Server {
192
194
  }
193
195
 
194
196
  async #loadModelFiles() {
197
+ const dirname = url.fileURLToPath(new URL('.', import.meta.url));
195
198
  const files = await getFilesPathWithInheritance({
196
- internalFolder: `${__dirname}/models`,
199
+ internalFolder: path.join(dirname, '/models'),
197
200
  externalFolder: this.app.foldersConfig.models,
198
201
  loggerFileType: 'MODEL',
199
202
  logger: (m) => consoleLogger('info', m),
@@ -395,4 +398,4 @@ class Server {
395
398
  }
396
399
  }
397
400
 
398
- module.exports = Server;
401
+ export default Server;
@@ -1,4 +1,4 @@
1
- const Base = require('../../modules/Base');
1
+ import Base from '../../modules/Base.js';
2
2
 
3
3
  class Cache extends Base {
4
4
  constructor(app) {
@@ -117,4 +117,4 @@ class Cache extends Base {
117
117
  }
118
118
  }
119
119
 
120
- module.exports = Cache;
120
+ export default Cache;
@@ -1,5 +1,5 @@
1
- const Base = require('../../modules/Base');
2
- const ValidateService = require('../validate/ValidateService');
1
+ import Base from '../../modules/Base.js';
2
+ import ValidateService from '../validate/ValidateService.js';
3
3
 
4
4
  class DocumentationGenerator extends Base {
5
5
  // eslint-disable-next-line class-methods-use-this
@@ -166,4 +166,4 @@ class DocumentationGenerator extends Base {
166
166
  }
167
167
  }
168
168
 
169
- module.exports = DocumentationGenerator;
169
+ export default DocumentationGenerator;
@@ -1,15 +1,14 @@
1
- const http = require('node:http');
2
- const path = require('node:path');
3
- const express = require('express');
4
-
5
- const RequestLoggerMiddleware = require('./middleware/RequestLogger');
6
- const I18nMiddleware = require('./middleware/I18n');
7
- const PrepareAppInfoMiddleware = require('./middleware/PrepareAppInfo');
8
- const RequestParserMiddleware = require('./middleware/RequestParser');
9
- const StaticFilesMiddleware = require('./middleware/StaticFiles');
10
- const Cors = require('./middleware/Cors');
11
-
12
- const Base = require('../../modules/Base');
1
+ import http from 'node:http';
2
+ import path from 'node:path';
3
+ import * as url from 'node:url';
4
+ import express from 'express';
5
+ import RequestLoggerMiddleware from './middleware/RequestLogger.js';
6
+ import I18nMiddleware from './middleware/I18n.js';
7
+ import PrepareAppInfoMiddleware from './middleware/PrepareAppInfo.js';
8
+ import RequestParserMiddleware from './middleware/RequestParser.js';
9
+ import StaticFilesMiddleware from './middleware/StaticFiles.js';
10
+ import Cors from './middleware/Cors.js';
11
+ import Base from '../../modules/Base.js';
13
12
 
14
13
  /**
15
14
  * HTTP server based on Express
@@ -19,9 +18,10 @@ class HttpServer extends Base {
19
18
  super(app);
20
19
  this.express = express();
21
20
  this.express.disable('x-powered-by');
21
+ const dirname = url.fileURLToPath(new URL('.', import.meta.url));
22
22
  this.express.set('views', [
23
23
  this.app.foldersConfig.views,
24
- path.join(__dirname, '../../views'),
24
+ path.join(dirname, '../../views'),
25
25
  ]);
26
26
  this.express.set('view engine', 'pug');
27
27
 
@@ -40,7 +40,7 @@ class HttpServer extends Base {
40
40
  new StaticFilesMiddleware(this.app, {
41
41
  folders: [
42
42
  this.app.foldersConfig.public,
43
- path.join(__dirname, '../../public/files'),
43
+ path.join(dirname, '../../public/files'),
44
44
  ],
45
45
  }).getMiddleware(),
46
46
  );
@@ -101,4 +101,4 @@ class HttpServer extends Base {
101
101
  }
102
102
  }
103
103
 
104
- module.exports = HttpServer;
104
+ export default HttpServer;
@@ -1,5 +1,5 @@
1
- const yup = require('yup');
2
- const Base = require('../../../modules/Base');
1
+ import yup from 'yup';
2
+ import Base from '../../../modules/Base.js';
3
3
 
4
4
  class AbstractMiddleware extends Base {
5
5
  constructor(app, params) {
@@ -48,4 +48,4 @@ class AbstractMiddleware extends Base {
48
48
  }
49
49
  }
50
50
 
51
- module.exports = AbstractMiddleware;
51
+ export default AbstractMiddleware;
@@ -1,4 +1,4 @@
1
- const AbstractMiddleware = require('./AbstractMiddleware');
1
+ import AbstractMiddleware from './AbstractMiddleware.js';
2
2
 
3
3
  class AuthMiddleware extends AbstractMiddleware {
4
4
  static get description() {
@@ -17,4 +17,4 @@ class AuthMiddleware extends AbstractMiddleware {
17
17
  }
18
18
  }
19
19
 
20
- module.exports = AuthMiddleware;
20
+ export default AuthMiddleware;
@@ -1,5 +1,5 @@
1
1
  import { beforeAll, describe, it, expect } from 'vitest';
2
- import Auth from './Auth';
2
+ import Auth from './Auth.js';
3
3
 
4
4
  describe('atuh middleware methods', () => {
5
5
  let middleware;
@@ -1,4 +1,4 @@
1
- const AbstractMiddleware = require('./AbstractMiddleware');
1
+ import AbstractMiddleware from './AbstractMiddleware.js';
2
2
 
3
3
  class Cors extends AbstractMiddleware {
4
4
  constructor(app, params) {
@@ -43,4 +43,4 @@ class Cors extends AbstractMiddleware {
43
43
  }
44
44
  }
45
45
 
46
- module.exports = Cors;
46
+ export default Cors;
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect } from 'vitest';
2
- import Cors from './Cors';
2
+ import Cors from './Cors.js';
3
3
 
4
4
  describe('cors middleware methods', () => {
5
5
  it('have description fields', async () => {
@@ -1,4 +1,4 @@
1
- const AbstractMiddleware = require('./AbstractMiddleware');
1
+ import AbstractMiddleware from './AbstractMiddleware.js';
2
2
 
3
3
  class GetUserByToken extends AbstractMiddleware {
4
4
  static get description() {
@@ -43,4 +43,4 @@ class GetUserByToken extends AbstractMiddleware {
43
43
  }
44
44
  }
45
45
 
46
- module.exports = GetUserByToken;
46
+ export default GetUserByToken;
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect } from 'vitest';
2
- import GetUserByToken from './GetUserByToken';
2
+ import GetUserByToken from './GetUserByToken.js';
3
3
 
4
4
  describe('getUserByToken middleware methods', () => {
5
5
  it('have description fields', async () => {
@@ -1,8 +1,7 @@
1
- const i18next = require('i18next');
2
- const BackendFS = require('i18next-fs-backend');
3
- const Backend = require('i18next-chained-backend');
4
-
5
- const AbstractMiddleware = require('./AbstractMiddleware');
1
+ import i18next from 'i18next';
2
+ import BackendFS from 'i18next-fs-backend';
3
+ import Backend from 'i18next-chained-backend';
4
+ import AbstractMiddleware from './AbstractMiddleware.js';
6
5
 
7
6
  class I18n extends AbstractMiddleware {
8
7
  constructor(app, params) {
@@ -116,4 +115,4 @@ class I18n extends AbstractMiddleware {
116
115
  }
117
116
  }
118
117
 
119
- module.exports = I18n;
118
+ export default I18n;
@@ -1,5 +1,5 @@
1
1
  import { beforeAll, describe, it, expect } from 'vitest';
2
- import I18n from './I18n';
2
+ import I18n from './I18n.js';
3
3
 
4
4
  describe('i18n middleware methods', () => {
5
5
  let middleware;
@@ -1,5 +1,5 @@
1
- const yup = require('yup');
2
- const AbstractMiddleware = require('./AbstractMiddleware');
1
+ import yup from 'yup';
2
+ import AbstractMiddleware from './AbstractMiddleware.js';
3
3
  /**
4
4
  * Middleware for reusing pagination
5
5
  */
@@ -53,4 +53,4 @@ class Pagination extends AbstractMiddleware {
53
53
  }
54
54
  }
55
55
 
56
- module.exports = Pagination;
56
+ export default Pagination;
@@ -1,4 +1,4 @@
1
- const AbstractMiddleware = require('./AbstractMiddleware');
1
+ import AbstractMiddleware from './AbstractMiddleware.js';
2
2
 
3
3
  class PrepareAppInfo extends AbstractMiddleware {
4
4
  static get description() {
@@ -15,4 +15,4 @@ class PrepareAppInfo extends AbstractMiddleware {
15
15
  }
16
16
  }
17
17
 
18
- module.exports = PrepareAppInfo;
18
+ export default PrepareAppInfo;
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect } from 'vitest';
2
- import PrepareAppInfo from './PrepareAppInfo';
2
+ import PrepareAppInfo from './PrepareAppInfo.js';
3
3
 
4
4
  describe('prepareAppInfo methods', () => {
5
5
  it('have description fields', async () => {
@@ -1,13 +1,12 @@
1
- const {
1
+ import {
2
2
  RateLimiterMemory,
3
3
  RateLimiterRedis,
4
4
  RateLimiterMongo,
5
- } = require('rate-limiter-flexible');
6
- const merge = require('deepmerge');
7
- const redis = require('redis');
8
- const mongoose = require('mongoose');
9
-
10
- const AbstractMiddleware = require('./AbstractMiddleware');
5
+ } from 'rate-limiter-flexible';
6
+ import merge from 'deepmerge';
7
+ import redis from 'redis';
8
+ import mongoose from 'mongoose';
9
+ import AbstractMiddleware from './AbstractMiddleware.js';
11
10
 
12
11
  class RateLimiter extends AbstractMiddleware {
13
12
  static get description() {
@@ -126,4 +125,4 @@ class RateLimiter extends AbstractMiddleware {
126
125
  }
127
126
  }
128
127
 
129
- module.exports = RateLimiter;
128
+ export default RateLimiter;
@@ -2,7 +2,7 @@ import { setTimeout } from 'node:timers/promises';
2
2
  import crypto from 'node:crypto';
3
3
  import { beforeAll, afterAll, describe, it, expect } from 'vitest';
4
4
 
5
- import RateLimiter from './RateLimiter';
5
+ import RateLimiter from './RateLimiter.js';
6
6
 
7
7
  let mongoRateLimiter;
8
8
 
@@ -1,4 +1,4 @@
1
- const AbstractMiddleware = require('./AbstractMiddleware');
1
+ import AbstractMiddleware from './AbstractMiddleware.js';
2
2
 
3
3
  class RequestLogger extends AbstractMiddleware {
4
4
  static get description() {
@@ -19,4 +19,4 @@ class RequestLogger extends AbstractMiddleware {
19
19
  }
20
20
  }
21
21
 
22
- module.exports = RequestLogger;
22
+ export default RequestLogger;
@@ -1,6 +1,5 @@
1
- const formidable = require('formidable').default;
2
-
3
- const AbstractMiddleware = require('./AbstractMiddleware');
1
+ import formidable from 'formidable';
2
+ import AbstractMiddleware from './AbstractMiddleware.js';
4
3
 
5
4
  class RequestParser extends AbstractMiddleware {
6
5
  static get description() {
@@ -35,4 +34,4 @@ class RequestParser extends AbstractMiddleware {
35
34
  }
36
35
  }
37
36
 
38
- module.exports = RequestParser;
37
+ export default RequestParser;
@@ -1,10 +1,8 @@
1
1
  import { createServer } from 'node:http';
2
2
  import { describe, it, expect } from 'vitest';
3
+ import { PersistentFile } from 'formidable';
3
4
 
4
- import RequestParser from './RequestParser';
5
-
6
- // TODO change on ESM
7
- const formidable = require('formidable');
5
+ import RequestParser from './RequestParser.js';
8
6
 
9
7
  describe('reqest parser limiter methods', () => {
10
8
  it('have description fields', async () => {
@@ -26,7 +24,7 @@ describe('reqest parser limiter methods', () => {
26
24
  expect(req.body.title).toBeDefined();
27
25
  expect(req.body.multipleFiles).toBeDefined();
28
26
  expect(
29
- req.body.multipleFiles[0] instanceof formidable.PersistentFile,
27
+ req.body.multipleFiles[0] instanceof PersistentFile,
30
28
  ).toBeTruthy();
31
29
 
32
30
  res.writeHead(200);
@@ -1,4 +1,4 @@
1
- const AbstractMiddleware = require('./AbstractMiddleware');
1
+ import AbstractMiddleware from './AbstractMiddleware.js';
2
2
 
3
3
  class RoleMiddleware extends AbstractMiddleware {
4
4
  static get description() {
@@ -26,4 +26,4 @@ class RoleMiddleware extends AbstractMiddleware {
26
26
  }
27
27
  }
28
28
 
29
- module.exports = RoleMiddleware;
29
+ export default RoleMiddleware;
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect } from 'vitest';
2
- import Role from './Role';
2
+ import Role from './Role.js';
3
3
 
4
4
  describe('role middleware methods', () => {
5
5
  it('have description fields', async () => {
@@ -1,9 +1,8 @@
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');
1
+ import fsPromises from 'node:fs/promises';
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+ import mime from 'mime';
5
+ import AbstractMiddleware from './AbstractMiddleware.js';
7
6
  /**
8
7
  * Middleware for static files
9
8
  */
@@ -57,4 +56,4 @@ class StaticFiles extends AbstractMiddleware {
57
56
  }
58
57
  }
59
58
 
60
- module.exports = StaticFiles;
59
+ export default StaticFiles;
@@ -1,19 +1,20 @@
1
- const fs = require('node:fs');
2
- const path = require('node:path');
3
- const { promisify } = require('node:util');
4
- const nodemailer = require('nodemailer');
5
- const sendMail = require('nodemailer-sendmail-transport');
6
- const stub = require('nodemailer-stub-transport');
7
- const pug = require('pug');
8
- const juice = require('juice');
9
- const { convert } = require('html-to-text');
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import * as url from 'node:url';
4
+ import { promisify } from 'node:util';
5
+ import nodemailer from 'nodemailer';
6
+ import sendMail from 'nodemailer-sendmail-transport';
7
+ import stub from 'nodemailer-stub-transport';
8
+ import pug from 'pug';
9
+ import juice from 'juice';
10
+ import { convert } from 'html-to-text';
11
+ import Base from '../../../modules/Base.js';
10
12
 
11
13
  const mailTransports = {
12
14
  sendMail,
13
15
  stub,
14
16
  smtp: (data) => data,
15
17
  };
16
- const Base = require('../../../modules/Base');
17
18
 
18
19
  class Mail extends Base {
19
20
  /**
@@ -25,6 +26,7 @@ class Mail extends Base {
25
26
  */
26
27
  constructor(app, template, templateData = {}, i18n = null) {
27
28
  super(app);
29
+ const dirname = url.fileURLToPath(new URL('.', import.meta.url));
28
30
  if (!path.isAbsolute(template)) {
29
31
  if (
30
32
  fs.existsSync(
@@ -35,11 +37,16 @@ class Mail extends Base {
35
37
  template,
36
38
  )}`;
37
39
  } else if (
38
- fs.existsSync(`${__dirname}/templates/${path.basename(template)}`)
40
+ fs.existsSync(
41
+ path.join(dirname, `/templates/${path.basename(template)}`),
42
+ )
39
43
  ) {
40
- this.template = `${__dirname}/templates/${path.basename(template)}`;
44
+ this.template = path.join(
45
+ dirname,
46
+ `/templates/${path.basename(template)}`,
47
+ );
41
48
  } else {
42
- this.template = `${__dirname}/templates/emptyTemplate`;
49
+ this.template = path.join(dirname, `/templates/emptyTemplate`);
43
50
  this.logger.error(
44
51
  `Template '${template}' not found. Using 'emptyTemplate' as a fallback`,
45
52
  );
@@ -215,4 +222,4 @@ class Mail extends Base {
215
222
  }
216
223
  }
217
224
 
218
- module.exports = Mail;
225
+ export default Mail;
@@ -1,5 +1,3 @@
1
- const email = require('./email');
1
+ import email from './email/index.js';
2
2
 
3
- module.exports = {
4
- email,
5
- };
3
+ export { email };
@@ -1,7 +1,7 @@
1
- const yup = require('yup');
2
- const YupValidator = require('./drivers/YupValidator');
3
- const CustomValidator = require('./drivers/CustomValidator');
4
- const Base = require('../../modules/Base');
1
+ import yup from 'yup';
2
+ import YupValidator from './drivers/YupValidator.js';
3
+ import CustomValidator from './drivers/CustomValidator.js';
4
+ import Base from '../../modules/Base.js';
5
5
 
6
6
  class ValidateService extends Base {
7
7
  constructor(app, validator) {
@@ -154,4 +154,4 @@ class ValidateService extends Base {
154
154
  }
155
155
  }
156
156
 
157
- module.exports = ValidateService;
157
+ export default ValidateService;
@@ -1,9 +1,9 @@
1
1
  import { describe, it, expect } from 'vitest';
2
2
 
3
- const yup = require('yup');
4
- const ValidateService = require('./ValidateService');
5
- const YupValidator = require('./drivers/YupValidator');
6
- const CustomValidator = require('./drivers/CustomValidator');
3
+ import yup from 'yup';
4
+ import ValidateService from './ValidateService.js';
5
+ import YupValidator from './drivers/YupValidator.js';
6
+ import CustomValidator from './drivers/CustomValidator.js';
7
7
 
8
8
  describe('validate service', () => {
9
9
  describe('validateSchema funtion', () => {
@@ -1,4 +1,4 @@
1
- const Base = require('../../../modules/Base');
1
+ import Base from '../../../modules/Base.js';
2
2
 
3
3
  class AbstractValidator extends Base {
4
4
  constructor(app, body) {
@@ -34,4 +34,4 @@ class AbstractValidator extends Base {
34
34
  return 'AbstractValidator_';
35
35
  }
36
36
  }
37
- module.exports = AbstractValidator;
37
+ export default AbstractValidator;
@@ -1,6 +1,5 @@
1
- const yup = require('yup');
2
-
3
- const AbstractValidator = require('./AbstractValidator');
1
+ import yup from 'yup';
2
+ import AbstractValidator from './AbstractValidator.js';
4
3
 
5
4
  class CustomValidator extends AbstractValidator {
6
5
  async validateFields(data, { query, body, appInfo }) {
@@ -49,4 +48,4 @@ class CustomValidator extends AbstractValidator {
49
48
  }
50
49
  }
51
50
 
52
- module.exports = CustomValidator;
51
+ export default CustomValidator;
@@ -1,5 +1,5 @@
1
- const yup = require('yup');
2
- const AbstractValidator = require('./AbstractValidator');
1
+ import yup from 'yup';
2
+ import AbstractValidator from './AbstractValidator.js';
3
3
 
4
4
  class YupValidator extends AbstractValidator {
5
5
  get fieldsInJsonFormat() {
@@ -100,4 +100,4 @@ class YupValidator extends AbstractValidator {
100
100
  return 'YupValidator_';
101
101
  }
102
102
  }
103
- module.exports = YupValidator;
103
+ export default YupValidator;
@@ -1,4 +1,4 @@
1
- const { MongoMemoryReplSet } = require('mongodb-memory-server');
1
+ import { MongoMemoryReplSet } from 'mongodb-memory-server';
2
2
 
3
3
  let isTeardown = false;
4
4
  let mongoMemoryServerInstance;