@adaptivestone/framework 5.0.0-beta.4 → 5.0.0-beta.40

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 (298) hide show
  1. package/CHANGELOG.md +1107 -528
  2. package/LICENCE +1 -1
  3. package/dist/Cli.d.ts +7 -0
  4. package/dist/Cli.js +19 -0
  5. package/dist/Cli.js.map +1 -0
  6. package/dist/cluster.d.ts +1 -0
  7. package/dist/cluster.js +18 -0
  8. package/dist/cluster.js.map +1 -0
  9. package/dist/commands/CreateUser.d.ts +32 -0
  10. package/dist/commands/CreateUser.js +83 -0
  11. package/dist/commands/CreateUser.js.map +1 -0
  12. package/dist/commands/Documentation.d.ts +5 -0
  13. package/dist/commands/Documentation.js +15 -0
  14. package/dist/commands/Documentation.js.map +1 -0
  15. package/dist/commands/DropIndex.d.ts +16 -0
  16. package/dist/commands/DropIndex.js +30 -0
  17. package/dist/commands/DropIndex.js.map +1 -0
  18. package/dist/commands/GenerateRandomBytes.d.ts +7 -0
  19. package/dist/commands/GenerateRandomBytes.js +18 -0
  20. package/dist/commands/GenerateRandomBytes.js.map +1 -0
  21. package/dist/commands/GenerateTypes.d.ts +11 -0
  22. package/dist/commands/GenerateTypes.js +52 -0
  23. package/dist/commands/GenerateTypes.js.map +1 -0
  24. package/dist/commands/GetOpenApiJson.d.ts +17 -0
  25. package/dist/commands/GetOpenApiJson.js +272 -0
  26. package/dist/commands/GetOpenApiJson.js.map +1 -0
  27. package/dist/commands/SyncIndexes.d.ts +6 -0
  28. package/dist/commands/SyncIndexes.js +31 -0
  29. package/dist/commands/SyncIndexes.js.map +1 -0
  30. package/dist/commands/migration/Create.d.ts +18 -0
  31. package/dist/commands/migration/Create.js +57 -0
  32. package/dist/commands/migration/Create.js.map +1 -0
  33. package/dist/commands/migration/Migrate.d.ts +6 -0
  34. package/dist/commands/migration/Migrate.js +43 -0
  35. package/dist/commands/migration/Migrate.js.map +1 -0
  36. package/dist/config/auth.d.ts +6 -0
  37. package/dist/config/auth.js +7 -0
  38. package/dist/config/auth.js.map +1 -0
  39. package/dist/config/http.d.ts +8 -0
  40. package/dist/config/http.js +10 -0
  41. package/dist/config/http.js.map +1 -0
  42. package/dist/config/i18n.d.ts +13 -0
  43. package/dist/config/i18n.js +13 -0
  44. package/dist/config/i18n.js.map +1 -0
  45. package/dist/config/ipDetector.d.ts +5 -0
  46. package/dist/config/ipDetector.js +15 -0
  47. package/dist/config/ipDetector.js.map +1 -0
  48. package/dist/config/log.d.ts +11 -0
  49. package/dist/config/log.js +20 -0
  50. package/dist/config/log.js.map +1 -0
  51. package/dist/config/mongo.d.ts +4 -0
  52. package/dist/config/mongo.js +4 -0
  53. package/dist/config/mongo.js.map +1 -0
  54. package/dist/config/rateLimiter.d.ts +13 -0
  55. package/dist/config/rateLimiter.js +17 -0
  56. package/dist/config/rateLimiter.js.map +1 -0
  57. package/dist/config/redis.d.ts +5 -0
  58. package/dist/config/redis.js +5 -0
  59. package/dist/config/redis.js.map +1 -0
  60. package/dist/config/validate.d.ts +4 -0
  61. package/dist/config/validate.js +4 -0
  62. package/dist/config/validate.js.map +1 -0
  63. package/dist/controllers/Auth.d.ts +131 -0
  64. package/dist/controllers/Auth.js +186 -0
  65. package/dist/controllers/Auth.js.map +1 -0
  66. package/dist/controllers/Home.d.ts +15 -0
  67. package/dist/controllers/Home.js +22 -0
  68. package/dist/controllers/Home.js.map +1 -0
  69. package/dist/controllers/index.d.ts +16 -0
  70. package/dist/controllers/index.js +59 -0
  71. package/dist/controllers/index.js.map +1 -0
  72. package/dist/folderConfig.d.ts +34 -0
  73. package/dist/folderConfig.js +14 -0
  74. package/dist/folderConfig.js.map +1 -0
  75. package/dist/helpers/appInstance.d.ts +3 -0
  76. package/dist/helpers/appInstance.js +8 -0
  77. package/dist/helpers/appInstance.js.map +1 -0
  78. package/dist/helpers/crypto.d.ts +3 -0
  79. package/dist/helpers/crypto.js +17 -0
  80. package/dist/helpers/crypto.js.map +1 -0
  81. package/dist/helpers/files.d.ts +16 -0
  82. package/dist/helpers/files.js +76 -0
  83. package/dist/helpers/files.js.map +1 -0
  84. package/dist/helpers/logger.d.ts +4 -0
  85. package/dist/helpers/logger.js +20 -0
  86. package/dist/helpers/logger.js.map +1 -0
  87. package/dist/helpers/redis/clearNamespace.d.ts +2 -0
  88. package/dist/helpers/redis/clearNamespace.js +14 -0
  89. package/dist/helpers/redis/clearNamespace.js.map +1 -0
  90. package/dist/helpers/yup.d.ts +13 -0
  91. package/dist/helpers/yup.js +21 -0
  92. package/dist/helpers/yup.js.map +1 -0
  93. package/dist/index.d.ts +1 -0
  94. package/dist/index.js +7 -0
  95. package/dist/index.js.map +1 -0
  96. package/dist/models/Lock.d.ts +90 -0
  97. package/dist/models/Lock.js +97 -0
  98. package/dist/models/Lock.js.map +1 -0
  99. package/dist/models/Migration.d.ts +13 -0
  100. package/dist/models/Migration.js +14 -0
  101. package/dist/models/Migration.js.map +1 -0
  102. package/dist/models/Sequence.d.ts +28 -0
  103. package/dist/models/Sequence.js +19 -0
  104. package/dist/models/Sequence.js.map +1 -0
  105. package/dist/models/User.d.ts +656 -0
  106. package/dist/models/User.js +291 -0
  107. package/dist/models/User.js.map +1 -0
  108. package/dist/models/UserOld.d.ts +179 -0
  109. package/dist/models/UserOld.js +230 -0
  110. package/dist/models/UserOld.js.map +1 -0
  111. package/dist/modules/AbstractCommand.d.ts +51 -0
  112. package/dist/modules/AbstractCommand.js +60 -0
  113. package/dist/modules/AbstractCommand.js.map +1 -0
  114. package/dist/modules/AbstractConnector.d.ts +5 -0
  115. package/dist/modules/AbstractConnector.js +8 -0
  116. package/dist/modules/AbstractConnector.js.map +1 -0
  117. package/dist/modules/AbstractController.d.ts +94 -0
  118. package/dist/modules/AbstractController.js +323 -0
  119. package/dist/modules/AbstractController.js.map +1 -0
  120. package/dist/modules/AbstractModel.d.ts +29 -0
  121. package/dist/modules/AbstractModel.js +42 -0
  122. package/dist/modules/AbstractModel.js.map +1 -0
  123. package/dist/modules/Base.d.ts +29 -0
  124. package/dist/modules/Base.js +58 -0
  125. package/dist/modules/Base.js.map +1 -0
  126. package/dist/modules/BaseCli.d.ts +25 -0
  127. package/dist/modules/BaseCli.js +147 -0
  128. package/dist/modules/BaseCli.js.map +1 -0
  129. package/dist/modules/BaseModel.d.ts +55 -0
  130. package/dist/modules/BaseModel.js +37 -0
  131. package/dist/modules/BaseModel.js.map +1 -0
  132. package/dist/server.d.ts +123 -0
  133. package/dist/server.js +468 -0
  134. package/dist/server.js.map +1 -0
  135. package/dist/services/cache/Cache.d.ts +31 -0
  136. package/dist/services/cache/Cache.js +113 -0
  137. package/dist/services/cache/Cache.js.map +1 -0
  138. package/dist/services/documentation/DocumentationGenerator.d.ts +11 -0
  139. package/dist/services/documentation/DocumentationGenerator.js +130 -0
  140. package/dist/services/documentation/DocumentationGenerator.js.map +1 -0
  141. package/dist/services/http/HttpServer.d.ts +35 -0
  142. package/dist/services/http/HttpServer.js +70 -0
  143. package/dist/services/http/HttpServer.js.map +1 -0
  144. package/dist/services/http/middleware/AbstractMiddleware.d.ts +25 -0
  145. package/dist/services/http/middleware/AbstractMiddleware.js +41 -0
  146. package/dist/services/http/middleware/AbstractMiddleware.js.map +1 -0
  147. package/dist/services/http/middleware/Auth.d.ts +9 -0
  148. package/dist/services/http/middleware/Auth.js +18 -0
  149. package/dist/services/http/middleware/Auth.js.map +1 -0
  150. package/dist/services/http/middleware/Cors.d.ts +12 -0
  151. package/dist/services/http/middleware/Cors.js +36 -0
  152. package/dist/services/http/middleware/Cors.js.map +1 -0
  153. package/dist/services/http/middleware/GetUserByToken.d.ts +20 -0
  154. package/dist/services/http/middleware/GetUserByToken.js +39 -0
  155. package/dist/services/http/middleware/GetUserByToken.js.map +1 -0
  156. package/dist/services/http/middleware/I18n.d.ts +23 -0
  157. package/dist/services/http/middleware/I18n.js +61 -0
  158. package/dist/services/http/middleware/I18n.js.map +1 -0
  159. package/dist/services/http/middleware/IpDetector.d.ts +14 -0
  160. package/dist/services/http/middleware/IpDetector.js +55 -0
  161. package/dist/services/http/middleware/IpDetector.js.map +1 -0
  162. package/dist/services/http/middleware/Pagination.d.ts +27 -0
  163. package/dist/services/http/middleware/Pagination.js +46 -0
  164. package/dist/services/http/middleware/Pagination.js.map +1 -0
  165. package/dist/services/http/middleware/PrepareAppInfo.d.ts +8 -0
  166. package/dist/services/http/middleware/PrepareAppInfo.js +17 -0
  167. package/dist/services/http/middleware/PrepareAppInfo.js.map +1 -0
  168. package/dist/services/http/middleware/RateLimiter.d.ts +26 -0
  169. package/dist/services/http/middleware/RateLimiter.js +118 -0
  170. package/dist/services/http/middleware/RateLimiter.js.map +1 -0
  171. package/dist/services/http/middleware/RequestLogger.d.ts +8 -0
  172. package/dist/services/http/middleware/RequestLogger.js +18 -0
  173. package/dist/services/http/middleware/RequestLogger.js.map +1 -0
  174. package/dist/services/http/middleware/RequestParser.d.ts +8 -0
  175. package/dist/services/http/middleware/RequestParser.js +35 -0
  176. package/dist/services/http/middleware/RequestParser.js.map +1 -0
  177. package/dist/services/http/middleware/Role.d.ts +12 -0
  178. package/dist/services/http/middleware/Role.js +24 -0
  179. package/dist/services/http/middleware/Role.js.map +1 -0
  180. package/dist/services/i18n/I18n.d.ts +15 -0
  181. package/dist/services/i18n/I18n.js +58 -0
  182. package/dist/services/i18n/I18n.js.map +1 -0
  183. package/dist/services/logging/SentryTransport.d.ts +14 -0
  184. package/dist/services/logging/SentryTransport.js +57 -0
  185. package/dist/services/logging/SentryTransport.js.map +1 -0
  186. package/dist/services/validate/ValidateService.d.ts +31 -0
  187. package/dist/services/validate/ValidateService.js +95 -0
  188. package/dist/services/validate/ValidateService.js.map +1 -0
  189. package/dist/services/validate/drivers/AbstractValidator.d.ts +14 -0
  190. package/dist/services/validate/drivers/AbstractValidator.js +29 -0
  191. package/dist/services/validate/drivers/AbstractValidator.js.map +1 -0
  192. package/dist/services/validate/drivers/CustomValidator.d.ts +14 -0
  193. package/dist/services/validate/drivers/CustomValidator.js +48 -0
  194. package/dist/services/validate/drivers/CustomValidator.js.map +1 -0
  195. package/dist/services/validate/drivers/YupValidator.d.ts +13 -0
  196. package/dist/services/validate/drivers/YupValidator.js +86 -0
  197. package/dist/services/validate/drivers/YupValidator.js.map +1 -0
  198. package/dist/tests/frameworkVitestSetup.d.ts +1 -0
  199. package/dist/tests/frameworkVitestSetup.js +9 -0
  200. package/dist/tests/frameworkVitestSetup.js.map +1 -0
  201. package/dist/tests/globalSetupVitest.d.ts +3 -0
  202. package/dist/tests/globalSetupVitest.js +29 -0
  203. package/dist/tests/globalSetupVitest.js.map +1 -0
  204. package/dist/tests/setupVitest.d.ts +1 -0
  205. package/dist/tests/setupVitest.js +91 -0
  206. package/dist/tests/setupVitest.js.map +1 -0
  207. package/dist/tests/testHelpers.d.ts +340 -0
  208. package/dist/tests/testHelpers.js +48 -0
  209. package/dist/tests/testHelpers.js.map +1 -0
  210. package/package.json +45 -39
  211. package/Cli.js +0 -22
  212. package/cluster.js +0 -27
  213. package/commands/CreateUser.js +0 -75
  214. package/commands/Documentation.js +0 -17
  215. package/commands/DropIndex.js +0 -29
  216. package/commands/GenerateRandomBytes.js +0 -21
  217. package/commands/GetOpenApiJson.js +0 -325
  218. package/commands/SyncIndexes.js +0 -39
  219. package/commands/migration/Create.js +0 -61
  220. package/commands/migration/Migrate.js +0 -55
  221. package/config/auth.js +0 -9
  222. package/config/http.js +0 -9
  223. package/config/i18n.js +0 -12
  224. package/config/ipDetector.js +0 -14
  225. package/config/log.js +0 -22
  226. package/config/mail.js +0 -29
  227. package/config/mongo.js +0 -3
  228. package/config/rateLimiter.js +0 -16
  229. package/config/redis.js +0 -4
  230. package/config/validate.js +0 -3
  231. package/controllers/Auth.js +0 -210
  232. package/controllers/Home.js +0 -28
  233. package/controllers/index.js +0 -60
  234. package/folderConfig.js +0 -14
  235. package/helpers/files.js +0 -79
  236. package/helpers/logger.js +0 -17
  237. package/helpers/redis/clearNamespace.js +0 -14
  238. package/helpers/yup.js +0 -24
  239. package/index.js +0 -8
  240. package/jsconfig.json +0 -9
  241. package/locales/en/translation.json +0 -27
  242. package/locales/ru/translation.json +0 -27
  243. package/migrations/.gitkeep +0 -0
  244. package/models/Migration.js +0 -15
  245. package/models/Sequence.js +0 -22
  246. package/models/User.js +0 -263
  247. package/modules/AbstractCommand.js +0 -43
  248. package/modules/AbstractConnector.js +0 -9
  249. package/modules/AbstractController.js +0 -413
  250. package/modules/AbstractModel.d.ts +0 -48
  251. package/modules/AbstractModel.js +0 -92
  252. package/modules/Base.d.ts +0 -37
  253. package/modules/Base.js +0 -63
  254. package/modules/BaseCli.js +0 -97
  255. package/server.d.ts +0 -98
  256. package/server.js +0 -438
  257. package/services/cache/Cache.d.ts +0 -35
  258. package/services/cache/Cache.js +0 -124
  259. package/services/documentation/DocumentationGenerator.js +0 -169
  260. package/services/http/HttpServer.js +0 -96
  261. package/services/http/middleware/AbstractMiddleware.js +0 -51
  262. package/services/http/middleware/Auth.js +0 -20
  263. package/services/http/middleware/Cors.js +0 -46
  264. package/services/http/middleware/GetUserByToken.js +0 -47
  265. package/services/http/middleware/I18n.js +0 -117
  266. package/services/http/middleware/IpDetector.js +0 -59
  267. package/services/http/middleware/Pagination.js +0 -57
  268. package/services/http/middleware/PrepareAppInfo.js +0 -18
  269. package/services/http/middleware/RateLimiter.js +0 -134
  270. package/services/http/middleware/RequestLogger.js +0 -22
  271. package/services/http/middleware/RequestParser.js +0 -40
  272. package/services/http/middleware/Role.js +0 -29
  273. package/services/messaging/email/index.js +0 -217
  274. package/services/messaging/email/resources/.gitkeep +0 -1
  275. package/services/messaging/email/templates/emptyTemplate/html.pug +0 -9
  276. package/services/messaging/email/templates/emptyTemplate/subject.pug +0 -1
  277. package/services/messaging/email/templates/emptyTemplate/text.pug +0 -1
  278. package/services/messaging/email/templates/recovery/html.pug +0 -8
  279. package/services/messaging/email/templates/recovery/subject.pug +0 -2
  280. package/services/messaging/email/templates/recovery/text.pug +0 -3
  281. package/services/messaging/email/templates/verification/html.pug +0 -10
  282. package/services/messaging/email/templates/verification/subject.pug +0 -1
  283. package/services/messaging/email/templates/verification/text.pug +0 -1
  284. package/services/messaging/index.js +0 -3
  285. package/services/validate/ValidateService.js +0 -157
  286. package/services/validate/drivers/AbstractValidator.js +0 -37
  287. package/services/validate/drivers/CustomValidator.js +0 -51
  288. package/services/validate/drivers/YupValidator.js +0 -103
  289. package/tests/globalSetupVitest.js +0 -35
  290. package/tests/setup.js +0 -118
  291. package/tests/setupVitest.js +0 -109
  292. package/types/Expand.d.ts +0 -11
  293. package/types/TFoldersConfig.d.ts +0 -17
  294. package/views/404.pug +0 -3
  295. package/views/home.pug +0 -3
  296. package/views/layouts/base.pug +0 -39
  297. package/vitest.config.js +0 -16
  298. /package/{commands → dist/migrations}/.gitkeep +0 -0
@@ -0,0 +1,147 @@
1
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
+ });
6
+ }
7
+ return path;
8
+ };
9
+ import path from 'node:path';
10
+ import * as url from 'node:url';
11
+ import { parseArgs } from 'node:util';
12
+ import Base from "./Base.js";
13
+ class Cli extends Base {
14
+ server;
15
+ commands;
16
+ constructor(server) {
17
+ super(server.app);
18
+ this.server = server;
19
+ this.commands = {};
20
+ }
21
+ async loadCommands() {
22
+ if (Object.keys(this.commands).length) {
23
+ return true;
24
+ }
25
+ console.info('Loading commands...');
26
+ console.time('Loading commands. Time');
27
+ const dirname = url.fileURLToPath(new URL('.', import.meta.url));
28
+ const commandsToLoad = await this.getFilesPathWithInheritance(path.join(dirname, '../commands'), this.server.app.foldersConfig.commands, true);
29
+ for (const com of commandsToLoad) {
30
+ if (com.file.endsWith('.js') || com.file.endsWith('.ts')) {
31
+ const c = com.file.replace('.js', '').replace('.ts', '');
32
+ if (this.commands[c.toLowerCase()]) {
33
+ this.logger?.warn(`Command ${c.toLowerCase()} already exists with full path ${this.commands[c.toLowerCase()]}. Possible problems - you have two commands with "ts" and "js" extensions. Skipping...`);
34
+ continue;
35
+ }
36
+ this.commands[c.toLowerCase()] = com.path;
37
+ }
38
+ }
39
+ console.timeEnd('Loading commands. Time');
40
+ console.log(' ');
41
+ return true;
42
+ }
43
+ async printCommandTable() {
44
+ const commands = Object.keys(this.commands).sort();
45
+ const maxLength = commands.reduce((max, c) => Math.max(max, c.length), 0);
46
+ console.log('Available commands:');
47
+ const commandsClasses = [];
48
+ for (const c of commands) {
49
+ commandsClasses.push(import(__rewriteRelativeImportExtension(this.commands[c])));
50
+ // console.log(
51
+ // ` \x1b[36m${c.padEnd(maxLength)}\x1b[0m - ${f.default.description}`,
52
+ // );
53
+ }
54
+ const commandsClassesLoaded = await Promise.all(commandsClasses);
55
+ for (const [key, c] of Object.entries(commands)) {
56
+ console.log(` \x1b[36m${c.padEnd(maxLength)}\x1b[0m - ${commandsClassesLoaded[+key].default.description}`);
57
+ }
58
+ console.log('\nUsage (use one of option): \n node cli.ts <command> [options] \n npm run cli <command> -- [options]');
59
+ }
60
+ static showHelp(Command, finalArguments) {
61
+ console.log(`\n\x1b[32m${Command.description}\x1b[0m`);
62
+ let output = '';
63
+ Object.entries(finalArguments).forEach(([key, opt]) => {
64
+ const outputLocal = [];
65
+ outputLocal.push(`\n\x1b[36m --${key} \x1b[0m`);
66
+ if (opt.type !== 'boolean') {
67
+ outputLocal.push(`<${opt.type}>`);
68
+ // flag += `<${opt.type}>`;
69
+ }
70
+ if (opt.required) {
71
+ outputLocal.push('(required)');
72
+ }
73
+ outputLocal.push(`\n \x1b[2m${opt.description}`);
74
+ if (opt.default !== undefined) {
75
+ outputLocal.push(` (default: ${opt.default})`);
76
+ }
77
+ outputLocal.push('\x1b[0m');
78
+ output += outputLocal.join(' ');
79
+ });
80
+ console.log(output);
81
+ }
82
+ async run(command) {
83
+ await this.loadCommands();
84
+ if (!command) {
85
+ console.log('Please provide command name');
86
+ await this.printCommandTable();
87
+ return false;
88
+ }
89
+ if (!this.commands[command]) {
90
+ console.log(`Command ${command} not found `);
91
+ await this.printCommandTable();
92
+ return false;
93
+ }
94
+ console.info(`Running command: '${command}'`);
95
+ const commandModule = await import(__rewriteRelativeImportExtension(this.commands[command]));
96
+ const Command = commandModule.default;
97
+ const defaultArgs = {
98
+ help: {
99
+ type: 'boolean',
100
+ description: 'Show help',
101
+ },
102
+ };
103
+ const finalArguments = {
104
+ ...Command.commandArguments,
105
+ ...defaultArgs,
106
+ };
107
+ const parsedArgs = parseArgs({
108
+ args: process.argv.slice(3), // remove command name
109
+ options: finalArguments,
110
+ tokens: true,
111
+ allowNegative: true,
112
+ });
113
+ if (parsedArgs.values.help) {
114
+ Cli.showHelp(Command, finalArguments);
115
+ return true;
116
+ }
117
+ for (const [key, opt] of Object.entries(finalArguments)) {
118
+ if (opt.required && !parsedArgs.values[key]) {
119
+ console.log(`\x1b[31mRequired field not proivded. Please provide "${key}" argument\x1b[0m`);
120
+ Cli.showHelp(Command, finalArguments);
121
+ return false;
122
+ }
123
+ }
124
+ if (Command.isShouldGetModelPaths) {
125
+ console.info(`Command ${command} isShouldGetModelPaths called. We are loading model paths`);
126
+ await this.server.getModelFilesPathsWithInheritance();
127
+ }
128
+ if (Command.isShouldInitModels) {
129
+ console.info(`Command ${command} isShouldInitModels called. If you want to skip loading and init models, please set isShouldInitModels to false in your command`);
130
+ process.env.MONGO_APP_NAME = Command.getMongoConnectionName(command, parsedArgs.values);
131
+ await this.server.initAllModels();
132
+ }
133
+ else {
134
+ console.info(`Command ${command} NOT need to isShouldInitModels`);
135
+ }
136
+ const c = new Command(this.app, this.commands, parsedArgs.values);
137
+ const result = await c.run().catch((e) => {
138
+ this.logger?.error(e.stack);
139
+ });
140
+ return result;
141
+ }
142
+ static get loggerGroup() {
143
+ return 'CLI_';
144
+ }
145
+ }
146
+ export default Cli;
147
+ //# sourceMappingURL=BaseCli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseCli.js","sourceRoot":"","sources":["../../src/modules/BaseCli.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,IAAI,MAAM,WAAW,CAAC;AAe7B,MAAM,GAAI,SAAQ,IAAI;IACpB,MAAM,CAAS;IACf,QAAQ,CAAyB;IAEjC,YAAY,MAAc;QACxB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACjE,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAC3D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,EACtC,IAAI,CACL,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzD,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;oBACnC,IAAI,CAAC,MAAM,EAAE,IAAI,CACf,WAAW,CAAC,CAAC,WAAW,EAAE,kCAAkC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,wFAAwF,CACnL,CAAC;oBACF,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;YAC5C,CAAC;QACH,CAAC;QACD,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,MAAM,eAAe,GAAG,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,eAAe,CAAC,IAAI,CAAC,MAAM,kCAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC;YAC/C,eAAe;YACf,yEAAyE;YACzE,KAAK;QACP,CAAC;QACD,MAAM,qBAAqB,GAEvB,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACvC,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,OAAO,CAAC,GAAG,CACT,YAAY,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAC9F,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,CACT,wGAAwG,CACzG,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,QAAQ,CACb,OAA+B,EAC/B,cAA8D;QAE9D,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,WAAW,SAAS,CAAC,CAAC;QACvD,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE;YACpD,MAAM,WAAW,GAAG,EAAE,CAAC;YACvB,WAAW,CAAC,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,CAAC;YACjD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC3B,WAAW,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;gBAClC,2BAA2B;YAC7B,CAAC;YACD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjB,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjC,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YACtD,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC9B,WAAW,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;YACjD,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAe;QACvB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAE1B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC3C,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,aAAa,CAAC,CAAC;YAC7C,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,qBAAqB,OAAO,GAAG,CAAC,CAAC;QAC9C,MAAM,aAAa,GAAwC,MAAM,MAAM,kCACrE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EACvB,CAAC;QACF,MAAM,OAAO,GAA2B,aAAa,CAAC,OAAO,CAAC;QAE9D,MAAM,WAAW,GAAmD;YAClE,IAAI,EAAE;gBACJ,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,WAAW;aACzB;SACF,CAAC;QAEF,MAAM,cAAc,GAAG;YACrB,GAAG,OAAO,CAAC,gBAAgB;YAC3B,GAAG,WAAW;SACf,CAAC;QAEF,MAAM,UAAU,GAAG,SAAS,CAAC;YAC3B,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,sBAAsB;YACnD,OAAO,EAAE,cAAc;YACvB,MAAM,EAAE,IAAI;YACZ,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;QAEH,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC3B,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YACxD,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5C,OAAO,CAAC,GAAG,CACT,wDAAwD,GAAG,mBAAmB,CAC/E,CAAC;gBACF,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;gBACtC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CACV,WAAW,OAAO,2DAA2D,CAC9E,CAAC;YACF,MAAM,IAAI,CAAC,MAAM,CAAC,iCAAiC,EAAE,CAAC;QACxD,CAAC;QAED,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CACV,WAAW,OAAO,iIAAiI,CACpJ,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,sBAAsB,CACzD,OAAO,EACP,UAAU,CAAC,MAAM,CAClB,CAAC;YACF,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,WAAW,OAAO,iCAAiC,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAElE,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAqB,EAAE,EAAE;YAC3D,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,KAAK,WAAW;QACpB,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,eAAe,GAAG,CAAC"}
@@ -0,0 +1,55 @@
1
+ import type { HydratedDocument, InferRawDocType, Schema } from 'mongoose';
2
+ import { type Model } from 'mongoose';
3
+ export type Merge<M, N> = Omit<M, keyof N> & N;
4
+ export type WithTimestamps<TOptions> = TOptions extends {
5
+ timestamps: true;
6
+ } ? {
7
+ createdAt: Schema.Types.Date;
8
+ updatedAt: Schema.Types.Date;
9
+ } : TOptions extends {
10
+ timestamps: false;
11
+ } ? object : {
12
+ createdAt: Schema.Types.Date;
13
+ updatedAt: Schema.Types.Date;
14
+ };
15
+ export type ExtractProperty<T, K extends PropertyKey, Default = object> = T extends {
16
+ [P in K]: infer R;
17
+ } ? R : Default;
18
+ export type GetModelSchemaTypeFromClass<T extends typeof BaseModel> = Schema<InferRawDocType<ExtractProperty<T, 'modelSchema'> & WithTimestamps<Merge<typeof defaultOptions, ExtractProperty<T, 'schemaOptions'>>>>, // TRawDocType
19
+ Model<InferRawDocType<ExtractProperty<T, 'modelSchema'> & WithTimestamps<Merge<typeof defaultOptions, ExtractProperty<T, 'schemaOptions'>>>>, object, // TQueryHelpers
20
+ ExtractProperty<T, 'modelInstanceMethods'>, // TInstanceMethods
21
+ ExtractProperty<T, 'modelVirtuals'>>, // TModelType
22
+ ExtractProperty<T, 'modelInstanceMethods'>, // TInstanceMethods
23
+ object, // TQueryHelpers
24
+ ExtractProperty<T, 'modelVirtuals'>, // TVirtuals
25
+ ExtractProperty<T, 'modelStatics'>, // TStaticMethods
26
+ ExtractProperty<T, 'schemaOptions'>>;
27
+ export type VirtualType<T> = {
28
+ [P in keyof T]: T[P] extends {
29
+ get: () => infer R;
30
+ } ? R : never;
31
+ };
32
+ export type GetModelTypeFromClass<T extends typeof BaseModel> = Model<InferRawDocType<ExtractProperty<T, 'modelSchema'> & WithTimestamps<Merge<typeof defaultOptions, ExtractProperty<T, 'schemaOptions'>>>>, // TRawDocType
33
+ object, // TQueryHelpers
34
+ ExtractProperty<T, 'modelInstanceMethods'>, // TInstanceMethods
35
+ ExtractProperty<T, 'modelVirtuals'>, // TVirtuals
36
+ HydratedDocument<InferRawDocType<ExtractProperty<T, 'modelSchema'> & WithTimestamps<Merge<typeof defaultOptions, ExtractProperty<T, 'schemaOptions'>>>>, //TRawDocType
37
+ //TRawDocType
38
+ VirtualType<ExtractProperty<T, 'modelVirtuals'>> & ExtractProperty<T, 'modelInstanceMethods'>, // TVirtuals & TInstanceMethods
39
+ object, // TQueryHelpers
40
+ ExtractProperty<T, 'modelVirtuals'>>, GetModelSchemaTypeFromClass<T>> & ExtractProperty<T, 'modelStatics'>;
41
+ export type GetModelTypeLiteFromSchema<T extends typeof BaseModel.modelSchema, TOptions = object> = Model<InferRawDocType<T & WithTimestamps<Merge<typeof defaultOptions, TOptions>>>>;
42
+ export declare const defaultOptions: {
43
+ readonly timestamps: true;
44
+ readonly minimize: false;
45
+ };
46
+ export type TBaseModel = GetModelTypeFromClass<typeof BaseModel>;
47
+ export declare class BaseModel {
48
+ static get modelSchema(): {};
49
+ static get schemaOptions(): {};
50
+ static get modelInstanceMethods(): {};
51
+ static get modelVirtuals(): {};
52
+ static get modelStatics(): {};
53
+ static initHooks(_schema: Schema): void;
54
+ static initialize<T extends typeof BaseModel>(this: T): GetModelTypeFromClass<T>;
55
+ }
@@ -0,0 +1,37 @@
1
+ import mongoose, {} from 'mongoose';
2
+ export const defaultOptions = { timestamps: true, minimize: false };
3
+ // biome-ignore lint/complexity/noStaticOnlyClass: TODO think about it in future
4
+ export class BaseModel {
5
+ static get modelSchema() {
6
+ return {};
7
+ }
8
+ static get schemaOptions() {
9
+ return {};
10
+ }
11
+ static get modelInstanceMethods() {
12
+ return {};
13
+ }
14
+ static get modelVirtuals() {
15
+ return {};
16
+ }
17
+ static get modelStatics() {
18
+ return {};
19
+ }
20
+ static initHooks(_schema) {
21
+ // Add hooks here
22
+ }
23
+ // Properly typed static method with generic constraints
24
+ static initialize() {
25
+ const schema = new mongoose.Schema(this.modelSchema, {
26
+ ...defaultOptions,
27
+ ...this.schemaOptions,
28
+ methods: this.modelInstanceMethods,
29
+ statics: this.modelStatics,
30
+ virtuals: this.modelVirtuals,
31
+ });
32
+ this.initHooks(schema);
33
+ const mongooseModel = mongoose.model(this.name, schema);
34
+ return mongooseModel;
35
+ }
36
+ }
37
+ //# sourceMappingURL=BaseModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseModel.js","sourceRoot":"","sources":["../../src/modules/BaseModel.ts"],"names":[],"mappings":"AAOA,OAAO,QAAQ,EAAE,EAAc,MAAM,UAAU,CAAC;AAgFhD,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAW,CAAC;AAG7E,gFAAgF;AAChF,MAAM,OAAO,SAAS;IACpB,MAAM,KAAK,WAAW;QACpB,OAAO,EAAW,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,aAAa;QACtB,OAAO,EAAW,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,oBAAoB;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,aAAa;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,YAAY;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,OAAe;QAC9B,iBAAiB;IACnB,CAAC;IAED,wDAAwD;IACjD,MAAM,CAAC,UAAU;QACtB,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE;YACnD,GAAG,cAAc;YACjB,GAAI,IAAI,CAAC,aAA+B;YACxC,OAAO,EAAE,IAAI,CAAC,oBAAoB;YAClC,OAAO,EAAE,IAAI,CAAC,YAAY;YAC1B,QAAQ,EAAE,IAAI,CAAC,aAAa;SAC7B,CAAmC,CAAC;QAErC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEvB,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAClC,IAAI,CAAC,IAAI,EACT,MAAM,CACqB,CAAC;QAE9B,OAAO,aAAa,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,123 @@
1
+ import EventEmitter from 'node:events';
2
+ import winston from 'winston';
3
+ import type ControllerManager from './controllers/index.ts';
4
+ import type { TFolderConfig, TFolderConfigFolders } from './folderConfig.ts';
5
+ import type AbstractModel from './modules/AbstractModel.ts';
6
+ import type BaseCli from './modules/BaseCli.ts';
7
+ import type { BaseModel, TBaseModel } from './modules/BaseModel.ts';
8
+ import Cache from './services/cache/Cache.ts';
9
+ import type HttpServer from './services/http/HttpServer.ts';
10
+ import type { I18n } from './services/i18n/I18n.ts';
11
+ interface AppCache {
12
+ configs: Map<string, unknown>;
13
+ models: Map<string, AbstractModel['mongooseModel'] | TBaseModel>;
14
+ modelConstructors: Map<string, typeof AbstractModel | typeof BaseModel>;
15
+ modelPaths: {
16
+ path: string;
17
+ file: string;
18
+ }[];
19
+ }
20
+ export interface IApp {
21
+ getConfig(configName: string): Record<string, unknown>;
22
+ getModel(modelName: string): AbstractModel['mongooseModel'] | false | TBaseModel;
23
+ runCliCommand(commandName: string): Promise<boolean | void>;
24
+ updateConfig(configName: string, config: Record<string, unknown>): Record<string, unknown>;
25
+ getI18nService(): Promise<I18n>;
26
+ foldersConfig: TFolderConfigFolders;
27
+ events: EventEmitter;
28
+ readonly cache: Cache;
29
+ readonly logger: winston.Logger;
30
+ httpServer: null | HttpServer;
31
+ controllerManager: null | ControllerManager;
32
+ frameworkFolder: string;
33
+ documentation?: unknown[];
34
+ internalFilesCache: AppCache;
35
+ }
36
+ /**
37
+ * Main framework class.
38
+ */
39
+ declare class Server {
40
+ #private;
41
+ cli: null | BaseCli;
42
+ config: TFolderConfig;
43
+ cache: AppCache;
44
+ cacheService: null | Cache;
45
+ app: IApp;
46
+ /**
47
+ * Construct new server
48
+ * @param {Object} config main config object
49
+ * @param {Object} config.folders folders config
50
+ * @param {String} config.folders.config path to folder with config files
51
+ * @param {String} config.folders.models path to folder with moidels files
52
+ * @param {String} config.folders.controllers path to folder with controllers files
53
+ * @param {String} config.folders.locales path to folder with locales files
54
+ * @param {String} [config.folders.emails] path to folder with emails files
55
+ * @param {String} config.folders.commands path to folder with commands files
56
+ * @param {String} config.folders.migrations path to folder with migrations files
57
+ */
58
+ constructor(config: TFolderConfig);
59
+ /**
60
+ * Start server (http + init all http ralated functions)
61
+ * @param {Function} callbackBefore404 code that should be executed before adding page 404
62
+ */
63
+ startServer(callbackBefore404?: () => Promise<void>): Promise<void>;
64
+ /**
65
+ * Do an initialization (config reading, etc)
66
+ */
67
+ init({ isSkipModelInit, isSkipModelLoading, }?: {
68
+ isSkipModelInit?: boolean | undefined;
69
+ isSkipModelLoading?: boolean | undefined;
70
+ }): Promise<boolean>;
71
+ /**
72
+ * Load model and init them
73
+ */
74
+ initAllModels(): Promise<void>;
75
+ getModelFilesPathsWithInheritance(): Promise<{
76
+ path: string;
77
+ file: string;
78
+ }[]>;
79
+ /**
80
+ * Add error logging on promise reject
81
+ */
82
+ addErrorHandling(): void;
83
+ /**
84
+ * Return config from {configName} (file name) on config folder.
85
+ * Support cache and updating confing into cache
86
+ * Also will update config based on NODE_ENV. If config.js and config.production.js
87
+ * and NODE_ENV is production then we will load base config (config.js) and the load
88
+ * environment config (config.production.js) and overwrite base config options
89
+ * @see updateConfig
90
+ * @param {String} configName name on config file to load
91
+ * @returns {Object} config object. Structure depends of config file
92
+ */
93
+ getConfig(configName: string): Record<string, unknown>;
94
+ /**
95
+ * Return or create new logger instance. This is a main logger instance
96
+ */
97
+ getLogger(): winston.Logger;
98
+ /**
99
+ * Primary designed for tests when we need to update some configs before start testing
100
+ * Should be called before any initialization was done
101
+ * @TODO send event to all inited components to update config
102
+ * @param {String} configName
103
+ * @param {Object} config
104
+ */
105
+ updateConfig(configName: string, config: Record<string, unknown>): Record<string, unknown>;
106
+ getI18nService(): Promise<I18n>;
107
+ /**
108
+ * Return model from {modelName} (file name) on model folder.
109
+ * Support cache
110
+ * @param {String} modelName name on config file to load
111
+ */
112
+ getModel(modelName: string): AbstractModel['mongooseModel'] | TBaseModel | false;
113
+ /**
114
+ * Run cli command into framework (http, ws, etc)
115
+ * @param {String} commandName name of command to load
116
+ */
117
+ runCliCommand(commandName: string): Promise<boolean | void>;
118
+ /**
119
+ * Get internal cache service
120
+ */
121
+ getCache(): Cache;
122
+ }
123
+ export default Server;