@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
package/LICENCE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2016-2023 Andrei Lahunou
3
+ Copyright (c) 2016-2025 Andrei Lahunou
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/dist/Cli.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import type { TFolderConfig } from './folderConfig.ts';
2
+ import BaseCli from './modules/BaseCli.ts';
3
+ declare class Cli extends BaseCli {
4
+ constructor(serverConfig: TFolderConfig);
5
+ run(): Promise<boolean>;
6
+ }
7
+ export default Cli;
package/dist/Cli.js ADDED
@@ -0,0 +1,19 @@
1
+ import mongoose from 'mongoose';
2
+ import BaseCli from "./modules/BaseCli.js";
3
+ import Server from "./server.js";
4
+ class Cli extends BaseCli {
5
+ constructor(serverConfig) {
6
+ mongoose.set('autoIndex', false); // we do not need create indexes on CLI.
7
+ const server = new Server(serverConfig);
8
+ super(server);
9
+ }
10
+ async run() {
11
+ await this.server.init({ isSkipModelInit: true, isSkipModelLoading: true });
12
+ const command = process.argv[2]?.toLowerCase();
13
+ await super.run(command);
14
+ this.app.events.emit('shutdown');
15
+ return true;
16
+ }
17
+ }
18
+ export default Cli;
19
+ //# sourceMappingURL=Cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cli.js","sourceRoot":"","sources":["../src/Cli.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAC3C,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,MAAM,GAAI,SAAQ,OAAO;IACvB,YAAY,YAA2B;QACrC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,wCAAwC;QAC1E,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;QACxC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;QAC/C,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,eAAe,GAAG,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,18 @@
1
+ import cluster from 'node:cluster';
2
+ import { cpus } from 'node:os';
3
+ const numCPUs = cpus().length;
4
+ if (cluster.isPrimary) {
5
+ console.log(`Master ${process.pid} is running`);
6
+ // Fork workers.
7
+ for (let i = 0; i < numCPUs; i += 1) {
8
+ cluster.fork();
9
+ }
10
+ cluster.on('exit', (worker, code, signal) => {
11
+ console.log(`Worker \x1B[45m ${worker.process.pid} \x1B[49m \x1B[41m †††† died †††† \x1B[49m. Code: ${signal || code}. Restarting...`);
12
+ cluster.fork();
13
+ });
14
+ }
15
+ else {
16
+ import("./server.js");
17
+ }
18
+ //# sourceMappingURL=cluster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cluster.js","sourceRoot":"","sources":["../src/cluster.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,MAAM,OAAO,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC;AAE9B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IACtB,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,CAAC,GAAG,aAAa,CAAC,CAAC;IAChD,gBAAgB;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;QAC1C,OAAO,CAAC,GAAG,CACT,mBACE,MAAM,CAAC,OAAO,CAAC,GACjB,qDACE,MAAM,IAAI,IACZ,iBAAiB,CAClB,CAAC;QACF,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;KAAM,CAAC;IACN,MAAM,CAAC,aAAa,CAAC,CAAC;AACxB,CAAC"}
@@ -0,0 +1,32 @@
1
+ import AbstractCommand from '../modules/AbstractCommand.ts';
2
+ declare class CreateUser extends AbstractCommand {
3
+ static get description(): string;
4
+ /**
5
+ * You able to add command arguments for parsing there.
6
+ */
7
+ static get commandArguments(): {
8
+ readonly id: {
9
+ readonly type: "string";
10
+ readonly description: "User id to find user";
11
+ };
12
+ readonly email: {
13
+ readonly type: "string";
14
+ readonly description: "User id to find/create user";
15
+ };
16
+ readonly password: {
17
+ readonly type: "string";
18
+ readonly description: "New password for user";
19
+ };
20
+ readonly roles: {
21
+ readonly type: "string";
22
+ readonly description: "User roles comma separated string (--roles=user,admin,someOtherRoles)";
23
+ };
24
+ readonly update: {
25
+ readonly type: "boolean";
26
+ readonly default: false;
27
+ readonly description: "Update user if it exists";
28
+ };
29
+ };
30
+ run(): Promise<boolean>;
31
+ }
32
+ export default CreateUser;
@@ -0,0 +1,83 @@
1
+ import AbstractCommand, {} from "../modules/AbstractCommand.js";
2
+ // Example: node src/cli createuser --email=somemail@gmail.com --password=somePassword --roles=user,admin,someOtherRoles
3
+ class CreateUser extends AbstractCommand {
4
+ static get description() {
5
+ return 'Create user in a database';
6
+ }
7
+ /**
8
+ * You able to add command arguments for parsing there.
9
+ */
10
+ static get commandArguments() {
11
+ return {
12
+ id: {
13
+ type: 'string',
14
+ description: 'User id to find user',
15
+ },
16
+ email: {
17
+ type: 'string',
18
+ description: 'User id to find/create user',
19
+ },
20
+ password: {
21
+ type: 'string',
22
+ description: 'New password for user',
23
+ },
24
+ roles: {
25
+ type: 'string',
26
+ description: 'User roles comma separated string (--roles=user,admin,someOtherRoles)',
27
+ },
28
+ update: {
29
+ type: 'boolean',
30
+ default: false,
31
+ description: 'Update user if it exists',
32
+ },
33
+ };
34
+ }
35
+ async run() {
36
+ const User = this.app.getModel('User');
37
+ const { id, email, password, roles, update } = this
38
+ .args;
39
+ if (!email && !id) {
40
+ this.logger?.error('Input validation failded');
41
+ this.logger?.error('Please add "email" or "id" variables');
42
+ return false;
43
+ }
44
+ const query = {};
45
+ if (id) {
46
+ query._id = id;
47
+ }
48
+ else if (email) {
49
+ query.email = email;
50
+ }
51
+ let user = await User.findOne(query);
52
+ if (user && !update) {
53
+ this.logger?.error('We are found a user in database. But "update" option is not providing. Exitin');
54
+ return false;
55
+ }
56
+ if (!user && !password) {
57
+ this.logger?.error('For a new user we alway asking for a password. Please provide it and rerun command');
58
+ return false;
59
+ }
60
+ if (!user && !email) {
61
+ this.logger?.error('For a new user we alway asking for a email. Please provide it and rerun command');
62
+ return false;
63
+ }
64
+ if (!user) {
65
+ user = new User();
66
+ }
67
+ if (password) {
68
+ user.password = password;
69
+ }
70
+ if (email) {
71
+ user.email = email;
72
+ }
73
+ if (roles) {
74
+ user.roles = roles.split(',');
75
+ }
76
+ await user.save();
77
+ await user.generateToken();
78
+ this.logger?.info(`User was created/updated ${JSON.stringify(user, null, 4)}`);
79
+ return true;
80
+ }
81
+ }
82
+ export default CreateUser;
83
+ //# sourceMappingURL=CreateUser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateUser.js","sourceRoot":"","sources":["../../src/commands/CreateUser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export default Documentation;
2
+ declare class Documentation extends AbstractCommand {
3
+ run(): Promise<unknown[]>;
4
+ }
5
+ import AbstractCommand from '../modules/AbstractCommand.ts';
@@ -0,0 +1,15 @@
1
+ import ControllerManager from "../controllers/index.js";
2
+ import AbstractCommand from "../modules/AbstractCommand.js";
3
+ class Documentation extends AbstractCommand {
4
+ static get description() {
5
+ return 'Generate documentation (internal)';
6
+ }
7
+ async run() {
8
+ const CM = new ControllerManager(this.app);
9
+ this.app.documentation = [];
10
+ await CM.initControllers();
11
+ return this.app.documentation;
12
+ }
13
+ }
14
+ export default Documentation;
15
+ //# sourceMappingURL=Documentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Documentation.js","sourceRoot":"","sources":["../../src/commands/Documentation.js"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,yBAAyB,CAAC;AACxD,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAE5D,MAAM,aAAc,SAAQ,eAAe;IACzC,MAAM,KAAK,WAAW;QACpB,OAAO,mCAAmC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,EAAE,CAAC;QAC5B,MAAM,EAAE,CAAC,eAAe,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;IAChC,CAAC;CACF;AAED,eAAe,aAAa,CAAC"}
@@ -0,0 +1,16 @@
1
+ import AbstractCommand from '../modules/AbstractCommand.ts';
2
+ declare class DropIndex extends AbstractCommand {
3
+ static get description(): string;
4
+ /**
5
+ * You able to add command arguments for parsing there.
6
+ */
7
+ static get commandArguments(): {
8
+ model: {
9
+ type: "string";
10
+ description: string;
11
+ required: boolean;
12
+ };
13
+ };
14
+ run(): Promise<boolean>;
15
+ }
16
+ export default DropIndex;
@@ -0,0 +1,30 @@
1
+ import AbstractCommand from "../modules/AbstractCommand.js";
2
+ class DropIndex extends AbstractCommand {
3
+ static get description() {
4
+ return 'Drop indexes of model';
5
+ }
6
+ /**
7
+ * You able to add command arguments for parsing there.
8
+ */
9
+ static get commandArguments() {
10
+ return {
11
+ model: {
12
+ type: 'string',
13
+ description: 'Model name',
14
+ required: true,
15
+ },
16
+ };
17
+ }
18
+ async run() {
19
+ const Model = this.app.getModel(this.args.model);
20
+ if (!Model) {
21
+ this.logger?.error('Not able to find model');
22
+ return false;
23
+ }
24
+ await Model.collection.dropIndexes();
25
+ this.logger?.info('Success');
26
+ return true;
27
+ }
28
+ }
29
+ export default DropIndex;
30
+ //# sourceMappingURL=DropIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropIndex.js","sourceRoot":"","sources":["../../src/commands/DropIndex.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAE5D,MAAM,SAAU,SAAQ,eAAe;IACrC,MAAM,KAAK,WAAW;QACpB,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,MAAM,KAAK,gBAAgB;QACzB,OAAO;YACL,KAAK,EAAE;gBACL,IAAI,EAAE,QAAiB;gBACvB,WAAW,EAAE,YAAY;gBACzB,QAAQ,EAAE,IAAI;aACf;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;QAE3D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAErC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7B,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,7 @@
1
+ import AbstractCommand from '../modules/AbstractCommand.ts';
2
+ declare class GenerateRandomBytes extends AbstractCommand {
3
+ static get description(): string;
4
+ static isShouldInitModels: boolean;
5
+ run(): Promise<boolean>;
6
+ }
7
+ export default GenerateRandomBytes;
@@ -0,0 +1,18 @@
1
+ import { randomBytes } from 'node:crypto';
2
+ import AbstractCommand from "../modules/AbstractCommand.js";
3
+ class GenerateRandomBytes extends AbstractCommand {
4
+ static get description() {
5
+ return 'Generate random bytes ising randomBytes from node:crypto';
6
+ }
7
+ static isShouldInitModels = false;
8
+ async run() {
9
+ const sizes = [16, 32, 64, 128, 256];
10
+ for (const size of sizes) {
11
+ const bytes = randomBytes(size).toString('hex');
12
+ this.logger?.info(`${size} bytes: ${bytes}`);
13
+ }
14
+ return true;
15
+ }
16
+ }
17
+ export default GenerateRandomBytes;
18
+ //# sourceMappingURL=GenerateRandomBytes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenerateRandomBytes.js","sourceRoot":"","sources":["../../src/commands/GenerateRandomBytes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAE5D,MAAM,mBAAoB,SAAQ,eAAe;IAC/C,MAAM,KAAK,WAAW;QACpB,OAAO,2DAA2D,CAAC;IACrE,CAAC;IAED,MAAM,CAAC,kBAAkB,GAAG,KAAK,CAAC;IAElC,KAAK,CAAC,GAAG;QACP,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,WAAW,KAAK,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;;AAGH,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import AbstractCommand from '../modules/AbstractCommand.ts';
2
+ declare class GenerateTypes extends AbstractCommand {
3
+ static get description(): string;
4
+ static isShouldInitModels: boolean;
5
+ run(): Promise<boolean>;
6
+ static getTemplate(configs: Map<string, unknown>, modelPaths: {
7
+ file: string;
8
+ path: string;
9
+ }[]): Promise<string>;
10
+ }
11
+ export default GenerateTypes;
@@ -0,0 +1,52 @@
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 fs from 'node:fs/promises';
10
+ import AbstractCommand from "../modules/AbstractCommand.js";
11
+ import { BaseModel } from "../modules/BaseModel.js";
12
+ class GenerateTypes extends AbstractCommand {
13
+ static get description() {
14
+ return 'Gererates TypeScript types';
15
+ }
16
+ static isShouldInitModels = false;
17
+ async run() {
18
+ const template = await GenerateTypes.getTemplate(this.app.internalFilesCache.configs, this.app.internalFilesCache.modelPaths);
19
+ await fs.writeFile(`${process.cwd()}/genTypes.d.ts`, template);
20
+ console.log('TypeScript types generated successfully at genTypes.d.ts');
21
+ return Promise.resolve(true);
22
+ }
23
+ static async getTemplate(configs, modelPaths) {
24
+ const dir = process.cwd();
25
+ const configTypes = Array.from(configs)
26
+ .map((config) => ` getConfig(configName: '${config[0]}'): ${JSON.stringify(config[1], null, 6)};`)
27
+ .join('\n');
28
+ const modelTypes = (await Promise.all(modelPaths.map(async (modelPath) => {
29
+ const modelModule = await import(__rewriteRelativeImportExtension(modelPath.path));
30
+ const path = modelPath.path.replace(dir, '.');
31
+ if (modelModule.default.prototype instanceof BaseModel) {
32
+ return ` getModel(modelName: '${modelPath.file}'): GetModelTypeFromClass<typeof import('${path}').default>`;
33
+ }
34
+ else {
35
+ return ` getModel(modelName: '${modelPath.file}'): import('${path}').default['mongooseModel']`;
36
+ }
37
+ }))).join('\n');
38
+ return `
39
+ import type {} from '@adaptivestone/framework/server.js';
40
+ import type { GetModelTypeFromClass } from '@adaptivestone/framework/modules/BaseModel.js';
41
+
42
+ declare module '@adaptivestone/framework/server.js' {
43
+ export interface IApp {
44
+ ${configTypes}
45
+ ${modelTypes}
46
+ }
47
+ }
48
+ `;
49
+ }
50
+ }
51
+ export default GenerateTypes;
52
+ //# sourceMappingURL=GenerateTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenerateTypes.js","sourceRoot":"","sources":["../../src/commands/GenerateTypes.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,MAAM,aAAc,SAAQ,eAAe;IACzC,MAAM,KAAK,WAAW;QACpB,OAAO,4BAA4B,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,kBAAkB,GAAG,KAAK,CAAC;IAElC,KAAK,CAAC,GAAG;QACP,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,WAAW,CAC9C,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,OAAO,EACnC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,UAAU,CACvC,CAAC;QACF,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAE/D,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QAExE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,WAAW,CACtB,OAA6B,EAC7B,UAA4C;QAE5C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;aACpC,GAAG,CACF,CAAC,MAAM,EAAE,EAAE,CACT,8BAA8B,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CACtF;aACA,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,UAAU,GAAG,CACjB,MAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YACjC,MAAM,WAAW,GAAG,MAAM,MAAM,kCAAC,SAAS,CAAC,IAAI,EAAC,CAAC;YACjD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC9C,IAAI,WAAW,CAAC,OAAO,CAAC,SAAS,YAAY,SAAS,EAAE,CAAC;gBACvD,OAAO,4BAA4B,SAAS,CAAC,IAAI,4CAA4C,IAAI,aAAa,CAAC;YACjH,CAAC;iBAAM,CAAC;gBACN,OAAO,4BAA4B,SAAS,CAAC,IAAI,eAAe,IAAI,6BAA6B,CAAC;YACpG,CAAC;QACH,CAAC,CAAC,CACH,CACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,OAAO;;;;;;QAMH,WAAW;QACX,UAAU;;;CAGjB,CAAC;IACA,CAAC;;AAGH,eAAe,aAAa,CAAC"}
@@ -0,0 +1,17 @@
1
+ export default GetOpenApiJson;
2
+ /**
3
+ * Command for generate documentation json file openApi
4
+ */
5
+ declare class GetOpenApiJson extends AbstractCommand {
6
+ /**
7
+ * You able to add command arguments for parsing there.
8
+ */
9
+ static get commandArguments(): {
10
+ output: {
11
+ type: string;
12
+ description: string;
13
+ };
14
+ };
15
+ run(): Promise<string>;
16
+ }
17
+ import AbstractCommand from '../modules/AbstractCommand.ts';