@adaptivestone/framework 5.0.0-beta.3 → 5.0.0-beta.30

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 (292) hide show
  1. package/CHANGELOG.md +1044 -526
  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 +23 -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 +120 -0
  133. package/dist/server.js +440 -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 +30 -0
  157. package/dist/services/http/middleware/I18n.js +96 -0
  158. package/dist/services/http/middleware/I18n.js.map +1 -0
  159. package/dist/services/http/middleware/IpDetector.d.ts +12 -0
  160. package/dist/services/http/middleware/IpDetector.js +51 -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 +18 -0
  169. package/dist/services/http/middleware/RateLimiter.js +106 -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/validate/ValidateService.d.ts +31 -0
  181. package/dist/services/validate/ValidateService.js +95 -0
  182. package/dist/services/validate/ValidateService.js.map +1 -0
  183. package/dist/services/validate/drivers/AbstractValidator.d.ts +14 -0
  184. package/dist/services/validate/drivers/AbstractValidator.js +29 -0
  185. package/dist/services/validate/drivers/AbstractValidator.js.map +1 -0
  186. package/dist/services/validate/drivers/CustomValidator.d.ts +14 -0
  187. package/dist/services/validate/drivers/CustomValidator.js +48 -0
  188. package/dist/services/validate/drivers/CustomValidator.js.map +1 -0
  189. package/dist/services/validate/drivers/YupValidator.d.ts +13 -0
  190. package/dist/services/validate/drivers/YupValidator.js +86 -0
  191. package/dist/services/validate/drivers/YupValidator.js.map +1 -0
  192. package/dist/tests/frameworkVitestSetup.d.ts +1 -0
  193. package/dist/tests/frameworkVitestSetup.js +9 -0
  194. package/dist/tests/frameworkVitestSetup.js.map +1 -0
  195. package/dist/tests/globalSetupVitest.d.ts +3 -0
  196. package/dist/tests/globalSetupVitest.js +29 -0
  197. package/dist/tests/globalSetupVitest.js.map +1 -0
  198. package/dist/tests/setupVitest.d.ts +1 -0
  199. package/dist/tests/setupVitest.js +91 -0
  200. package/dist/tests/setupVitest.js.map +1 -0
  201. package/dist/tests/testHelpers.d.ts +340 -0
  202. package/dist/tests/testHelpers.js +48 -0
  203. package/dist/tests/testHelpers.js.map +1 -0
  204. package/package.json +38 -35
  205. package/Cli.js +0 -22
  206. package/cluster.js +0 -27
  207. package/commands/CreateUser.js +0 -75
  208. package/commands/Documentation.js +0 -17
  209. package/commands/DropIndex.js +0 -29
  210. package/commands/GenerateRandomBytes.js +0 -21
  211. package/commands/GetOpenApiJson.js +0 -325
  212. package/commands/SyncIndexes.js +0 -39
  213. package/commands/migration/Create.js +0 -61
  214. package/commands/migration/Migrate.js +0 -55
  215. package/config/auth.js +0 -9
  216. package/config/http.js +0 -9
  217. package/config/i18n.js +0 -12
  218. package/config/ipDetector.js +0 -14
  219. package/config/log.js +0 -22
  220. package/config/mail.js +0 -29
  221. package/config/mongo.js +0 -3
  222. package/config/rateLimiter.js +0 -16
  223. package/config/redis.js +0 -4
  224. package/config/validate.js +0 -3
  225. package/controllers/Auth.js +0 -210
  226. package/controllers/Home.js +0 -28
  227. package/controllers/index.js +0 -60
  228. package/folderConfig.js +0 -14
  229. package/helpers/files.js +0 -79
  230. package/helpers/logger.js +0 -17
  231. package/helpers/redis/clearNamespace.js +0 -14
  232. package/helpers/yup.js +0 -24
  233. package/index.js +0 -8
  234. package/jsconfig.json +0 -9
  235. package/locales/en/translation.json +0 -27
  236. package/locales/ru/translation.json +0 -27
  237. package/migrations/.gitkeep +0 -0
  238. package/models/Migration.js +0 -15
  239. package/models/Sequence.js +0 -22
  240. package/models/User.js +0 -263
  241. package/modules/AbstractCommand.js +0 -43
  242. package/modules/AbstractConnector.js +0 -9
  243. package/modules/AbstractController.js +0 -413
  244. package/modules/AbstractModel.d.ts +0 -48
  245. package/modules/AbstractModel.js +0 -88
  246. package/modules/Base.d.ts +0 -37
  247. package/modules/Base.js +0 -63
  248. package/modules/BaseCli.js +0 -97
  249. package/server.d.ts +0 -98
  250. package/server.js +0 -429
  251. package/services/cache/Cache.d.ts +0 -35
  252. package/services/cache/Cache.js +0 -124
  253. package/services/documentation/DocumentationGenerator.js +0 -169
  254. package/services/http/HttpServer.js +0 -96
  255. package/services/http/middleware/AbstractMiddleware.js +0 -51
  256. package/services/http/middleware/Auth.js +0 -20
  257. package/services/http/middleware/Cors.js +0 -46
  258. package/services/http/middleware/GetUserByToken.js +0 -47
  259. package/services/http/middleware/I18n.js +0 -117
  260. package/services/http/middleware/IpDetector.js +0 -59
  261. package/services/http/middleware/Pagination.js +0 -57
  262. package/services/http/middleware/PrepareAppInfo.js +0 -18
  263. package/services/http/middleware/RateLimiter.js +0 -134
  264. package/services/http/middleware/RequestLogger.js +0 -22
  265. package/services/http/middleware/RequestParser.js +0 -40
  266. package/services/http/middleware/Role.js +0 -29
  267. package/services/messaging/email/index.js +0 -217
  268. package/services/messaging/email/resources/.gitkeep +0 -1
  269. package/services/messaging/email/templates/emptyTemplate/html.pug +0 -9
  270. package/services/messaging/email/templates/emptyTemplate/subject.pug +0 -1
  271. package/services/messaging/email/templates/emptyTemplate/text.pug +0 -1
  272. package/services/messaging/email/templates/recovery/html.pug +0 -8
  273. package/services/messaging/email/templates/recovery/subject.pug +0 -2
  274. package/services/messaging/email/templates/recovery/text.pug +0 -3
  275. package/services/messaging/email/templates/verification/html.pug +0 -10
  276. package/services/messaging/email/templates/verification/subject.pug +0 -1
  277. package/services/messaging/email/templates/verification/text.pug +0 -1
  278. package/services/messaging/index.js +0 -3
  279. package/services/validate/ValidateService.js +0 -157
  280. package/services/validate/drivers/AbstractValidator.js +0 -37
  281. package/services/validate/drivers/CustomValidator.js +0 -51
  282. package/services/validate/drivers/YupValidator.js +0 -103
  283. package/tests/globalSetupVitest.js +0 -35
  284. package/tests/setup.js +0 -118
  285. package/tests/setupVitest.js +0 -109
  286. package/types/Expand.d.ts +0 -11
  287. package/types/TFoldersConfig.d.ts +0 -17
  288. package/views/404.pug +0 -3
  289. package/views/home.pug +0 -3
  290. package/views/layouts/base.pug +0 -39
  291. package/vitest.config.js +0 -16
  292. /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":"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"}
@@ -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,120 @@
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
+ interface AppCache {
11
+ configs: Map<string, unknown>;
12
+ models: Map<string, AbstractModel['mongooseModel'] | TBaseModel>;
13
+ modelConstructors: Map<string, typeof AbstractModel | typeof BaseModel>;
14
+ modelPaths: {
15
+ path: string;
16
+ file: string;
17
+ }[];
18
+ }
19
+ export interface IApp {
20
+ getConfig(configName: string): Record<string, unknown>;
21
+ getModel(modelName: string): AbstractModel['mongooseModel'] | false | TBaseModel;
22
+ runCliCommand(commandName: string): Promise<boolean | void>;
23
+ updateConfig(configName: string, config: Record<string, unknown>): Record<string, unknown>;
24
+ foldersConfig: TFolderConfigFolders;
25
+ events: EventEmitter<[never]>;
26
+ readonly cache: Cache;
27
+ readonly logger: winston.Logger;
28
+ httpServer: null | HttpServer;
29
+ controllerManager: null | ControllerManager;
30
+ frameworkFolder: string;
31
+ documentation?: unknown[];
32
+ internalFilesCache: AppCache;
33
+ }
34
+ /**
35
+ * Main framework class.
36
+ */
37
+ declare class Server {
38
+ #private;
39
+ cli: null | BaseCli;
40
+ config: TFolderConfig;
41
+ cache: AppCache;
42
+ cacheService: null | Cache;
43
+ app: IApp;
44
+ /**
45
+ * Construct new server
46
+ * @param {Object} config main config object
47
+ * @param {Object} config.folders folders config
48
+ * @param {String} config.folders.config path to folder with config files
49
+ * @param {String} config.folders.models path to folder with moidels files
50
+ * @param {String} config.folders.controllers path to folder with controllers files
51
+ * @param {String} config.folders.locales path to folder with locales files
52
+ * @param {String} [config.folders.emails] path to folder with emails files
53
+ * @param {String} config.folders.commands path to folder with commands files
54
+ * @param {String} config.folders.migrations path to folder with migrations files
55
+ */
56
+ constructor(config: TFolderConfig);
57
+ /**
58
+ * Start server (http + init all http ralated functions)
59
+ * @param {Function} callbackBefore404 code that should be executed before adding page 404
60
+ */
61
+ startServer(callbackBefore404?: () => Promise<void>): Promise<void>;
62
+ /**
63
+ * Do an initialization (config reading, etc)
64
+ */
65
+ init({ isSkipModelInit, isSkipModelLoading, }?: {
66
+ isSkipModelInit?: boolean | undefined;
67
+ isSkipModelLoading?: boolean | undefined;
68
+ }): Promise<boolean>;
69
+ /**
70
+ * Load model and init them
71
+ */
72
+ initAllModels(): Promise<void>;
73
+ getModelFilesPathsWithInheritance(): Promise<{
74
+ path: string;
75
+ file: string;
76
+ }[]>;
77
+ /**
78
+ * Add error logging on promise reject
79
+ */
80
+ addErrorHandling(): void;
81
+ /**
82
+ * Return config from {configName} (file name) on config folder.
83
+ * Support cache and updating confing into cache
84
+ * Also will update config based on NODE_ENV. If config.js and config.production.js
85
+ * and NODE_ENV is production then we will load base config (config.js) and the load
86
+ * environment config (config.production.js) and overwrite base config options
87
+ * @see updateConfig
88
+ * @param {String} configName name on config file to load
89
+ * @returns {Object} config object. Structure depends of config file
90
+ */
91
+ getConfig(configName: string): Record<string, unknown>;
92
+ /**
93
+ * Return or create new logger instance. This is a main logger instance
94
+ */
95
+ getLogger(): winston.Logger;
96
+ /**
97
+ * Primary designed for tests when we need to update some configs before start testing
98
+ * Should be called before any initialization was done
99
+ * @TODO send event to all inited components to update config
100
+ * @param {String} configName
101
+ * @param {Object} config
102
+ */
103
+ updateConfig(configName: string, config: Record<string, unknown>): Record<string, unknown>;
104
+ /**
105
+ * Return model from {modelName} (file name) on model folder.
106
+ * Support cache
107
+ * @param {String} modelName name on config file to load
108
+ */
109
+ getModel(modelName: string): AbstractModel['mongooseModel'] | TBaseModel | false;
110
+ /**
111
+ * Run cli command into framework (http, ws, etc)
112
+ * @param {String} commandName name of command to load
113
+ */
114
+ runCliCommand(commandName: string): Promise<boolean | void>;
115
+ /**
116
+ * Get internal cache service
117
+ */
118
+ getCache(): Cache;
119
+ }
120
+ export default Server;