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

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 (301) hide show
  1. package/CHANGELOG.md +1117 -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/redis/redisConnection.d.ts +6 -0
  91. package/dist/helpers/redis/redisConnection.js +48 -0
  92. package/dist/helpers/redis/redisConnection.js.map +1 -0
  93. package/dist/helpers/yup.d.ts +13 -0
  94. package/dist/helpers/yup.js +21 -0
  95. package/dist/helpers/yup.js.map +1 -0
  96. package/dist/index.d.ts +1 -0
  97. package/dist/index.js +7 -0
  98. package/dist/index.js.map +1 -0
  99. package/dist/models/Lock.d.ts +90 -0
  100. package/dist/models/Lock.js +97 -0
  101. package/dist/models/Lock.js.map +1 -0
  102. package/dist/models/Migration.d.ts +13 -0
  103. package/dist/models/Migration.js +14 -0
  104. package/dist/models/Migration.js.map +1 -0
  105. package/dist/models/Sequence.d.ts +28 -0
  106. package/dist/models/Sequence.js +19 -0
  107. package/dist/models/Sequence.js.map +1 -0
  108. package/dist/models/User.d.ts +656 -0
  109. package/dist/models/User.js +291 -0
  110. package/dist/models/User.js.map +1 -0
  111. package/dist/models/UserOld.d.ts +179 -0
  112. package/dist/models/UserOld.js +230 -0
  113. package/dist/models/UserOld.js.map +1 -0
  114. package/dist/modules/AbstractCommand.d.ts +51 -0
  115. package/dist/modules/AbstractCommand.js +60 -0
  116. package/dist/modules/AbstractCommand.js.map +1 -0
  117. package/dist/modules/AbstractConnector.d.ts +5 -0
  118. package/dist/modules/AbstractConnector.js +8 -0
  119. package/dist/modules/AbstractConnector.js.map +1 -0
  120. package/dist/modules/AbstractController.d.ts +95 -0
  121. package/dist/modules/AbstractController.js +323 -0
  122. package/dist/modules/AbstractController.js.map +1 -0
  123. package/dist/modules/AbstractModel.d.ts +29 -0
  124. package/dist/modules/AbstractModel.js +42 -0
  125. package/dist/modules/AbstractModel.js.map +1 -0
  126. package/dist/modules/Base.d.ts +29 -0
  127. package/dist/modules/Base.js +58 -0
  128. package/dist/modules/Base.js.map +1 -0
  129. package/dist/modules/BaseCli.d.ts +25 -0
  130. package/dist/modules/BaseCli.js +147 -0
  131. package/dist/modules/BaseCli.js.map +1 -0
  132. package/dist/modules/BaseModel.d.ts +55 -0
  133. package/dist/modules/BaseModel.js +37 -0
  134. package/dist/modules/BaseModel.js.map +1 -0
  135. package/dist/server.d.ts +123 -0
  136. package/dist/server.js +468 -0
  137. package/dist/server.js.map +1 -0
  138. package/dist/services/cache/Cache.d.ts +31 -0
  139. package/dist/services/cache/Cache.js +102 -0
  140. package/dist/services/cache/Cache.js.map +1 -0
  141. package/dist/services/documentation/DocumentationGenerator.d.ts +11 -0
  142. package/dist/services/documentation/DocumentationGenerator.js +130 -0
  143. package/dist/services/documentation/DocumentationGenerator.js.map +1 -0
  144. package/dist/services/http/HttpServer.d.ts +35 -0
  145. package/dist/services/http/HttpServer.js +70 -0
  146. package/dist/services/http/HttpServer.js.map +1 -0
  147. package/dist/services/http/middleware/AbstractMiddleware.d.ts +26 -0
  148. package/dist/services/http/middleware/AbstractMiddleware.js +41 -0
  149. package/dist/services/http/middleware/AbstractMiddleware.js.map +1 -0
  150. package/dist/services/http/middleware/Auth.d.ts +9 -0
  151. package/dist/services/http/middleware/Auth.js +18 -0
  152. package/dist/services/http/middleware/Auth.js.map +1 -0
  153. package/dist/services/http/middleware/Cors.d.ts +12 -0
  154. package/dist/services/http/middleware/Cors.js +36 -0
  155. package/dist/services/http/middleware/Cors.js.map +1 -0
  156. package/dist/services/http/middleware/GetUserByToken.d.ts +27 -0
  157. package/dist/services/http/middleware/GetUserByToken.js +47 -0
  158. package/dist/services/http/middleware/GetUserByToken.js.map +1 -0
  159. package/dist/services/http/middleware/I18n.d.ts +23 -0
  160. package/dist/services/http/middleware/I18n.js +61 -0
  161. package/dist/services/http/middleware/I18n.js.map +1 -0
  162. package/dist/services/http/middleware/IpDetector.d.ts +14 -0
  163. package/dist/services/http/middleware/IpDetector.js +55 -0
  164. package/dist/services/http/middleware/IpDetector.js.map +1 -0
  165. package/dist/services/http/middleware/Pagination.d.ts +27 -0
  166. package/dist/services/http/middleware/Pagination.js +46 -0
  167. package/dist/services/http/middleware/Pagination.js.map +1 -0
  168. package/dist/services/http/middleware/PrepareAppInfo.d.ts +8 -0
  169. package/dist/services/http/middleware/PrepareAppInfo.js +17 -0
  170. package/dist/services/http/middleware/PrepareAppInfo.js.map +1 -0
  171. package/dist/services/http/middleware/RateLimiter.d.ts +26 -0
  172. package/dist/services/http/middleware/RateLimiter.js +102 -0
  173. package/dist/services/http/middleware/RateLimiter.js.map +1 -0
  174. package/dist/services/http/middleware/RequestLogger.d.ts +8 -0
  175. package/dist/services/http/middleware/RequestLogger.js +18 -0
  176. package/dist/services/http/middleware/RequestLogger.js.map +1 -0
  177. package/dist/services/http/middleware/RequestParser.d.ts +8 -0
  178. package/dist/services/http/middleware/RequestParser.js +35 -0
  179. package/dist/services/http/middleware/RequestParser.js.map +1 -0
  180. package/dist/services/http/middleware/Role.d.ts +12 -0
  181. package/dist/services/http/middleware/Role.js +24 -0
  182. package/dist/services/http/middleware/Role.js.map +1 -0
  183. package/dist/services/i18n/I18n.d.ts +15 -0
  184. package/dist/services/i18n/I18n.js +58 -0
  185. package/dist/services/i18n/I18n.js.map +1 -0
  186. package/dist/services/logging/SentryTransport.d.ts +13 -0
  187. package/dist/services/logging/SentryTransport.js +121 -0
  188. package/dist/services/logging/SentryTransport.js.map +1 -0
  189. package/dist/services/validate/ValidateService.d.ts +31 -0
  190. package/dist/services/validate/ValidateService.js +95 -0
  191. package/dist/services/validate/ValidateService.js.map +1 -0
  192. package/dist/services/validate/drivers/AbstractValidator.d.ts +14 -0
  193. package/dist/services/validate/drivers/AbstractValidator.js +29 -0
  194. package/dist/services/validate/drivers/AbstractValidator.js.map +1 -0
  195. package/dist/services/validate/drivers/CustomValidator.d.ts +14 -0
  196. package/dist/services/validate/drivers/CustomValidator.js +48 -0
  197. package/dist/services/validate/drivers/CustomValidator.js.map +1 -0
  198. package/dist/services/validate/drivers/YupValidator.d.ts +13 -0
  199. package/dist/services/validate/drivers/YupValidator.js +86 -0
  200. package/dist/services/validate/drivers/YupValidator.js.map +1 -0
  201. package/dist/tests/frameworkVitestSetup.d.ts +1 -0
  202. package/dist/tests/frameworkVitestSetup.js +9 -0
  203. package/dist/tests/frameworkVitestSetup.js.map +1 -0
  204. package/dist/tests/globalSetupVitest.d.ts +3 -0
  205. package/dist/tests/globalSetupVitest.js +29 -0
  206. package/dist/tests/globalSetupVitest.js.map +1 -0
  207. package/dist/tests/setupVitest.d.ts +1 -0
  208. package/dist/tests/setupVitest.js +91 -0
  209. package/dist/tests/setupVitest.js.map +1 -0
  210. package/dist/tests/testHelpers.d.ts +340 -0
  211. package/dist/tests/testHelpers.js +48 -0
  212. package/dist/tests/testHelpers.js.map +1 -0
  213. package/package.json +53 -40
  214. package/Cli.js +0 -22
  215. package/cluster.js +0 -27
  216. package/commands/CreateUser.js +0 -75
  217. package/commands/Documentation.js +0 -17
  218. package/commands/DropIndex.js +0 -29
  219. package/commands/GenerateRandomBytes.js +0 -21
  220. package/commands/GetOpenApiJson.js +0 -325
  221. package/commands/SyncIndexes.js +0 -39
  222. package/commands/migration/Create.js +0 -61
  223. package/commands/migration/Migrate.js +0 -55
  224. package/config/auth.js +0 -9
  225. package/config/http.js +0 -9
  226. package/config/i18n.js +0 -12
  227. package/config/ipDetector.js +0 -14
  228. package/config/log.js +0 -22
  229. package/config/mail.js +0 -29
  230. package/config/mongo.js +0 -3
  231. package/config/rateLimiter.js +0 -16
  232. package/config/redis.js +0 -4
  233. package/config/validate.js +0 -3
  234. package/controllers/Auth.js +0 -210
  235. package/controllers/Home.js +0 -28
  236. package/controllers/index.js +0 -60
  237. package/folderConfig.js +0 -14
  238. package/helpers/files.js +0 -79
  239. package/helpers/logger.js +0 -17
  240. package/helpers/redis/clearNamespace.js +0 -14
  241. package/helpers/yup.js +0 -24
  242. package/index.js +0 -8
  243. package/jsconfig.json +0 -9
  244. package/locales/en/translation.json +0 -27
  245. package/locales/ru/translation.json +0 -27
  246. package/migrations/.gitkeep +0 -0
  247. package/models/Migration.js +0 -15
  248. package/models/Sequence.js +0 -22
  249. package/models/User.js +0 -263
  250. package/modules/AbstractCommand.js +0 -43
  251. package/modules/AbstractConnector.js +0 -9
  252. package/modules/AbstractController.js +0 -413
  253. package/modules/AbstractModel.d.ts +0 -48
  254. package/modules/AbstractModel.js +0 -92
  255. package/modules/Base.d.ts +0 -37
  256. package/modules/Base.js +0 -63
  257. package/modules/BaseCli.js +0 -97
  258. package/server.d.ts +0 -98
  259. package/server.js +0 -438
  260. package/services/cache/Cache.d.ts +0 -35
  261. package/services/cache/Cache.js +0 -124
  262. package/services/documentation/DocumentationGenerator.js +0 -169
  263. package/services/http/HttpServer.js +0 -96
  264. package/services/http/middleware/AbstractMiddleware.js +0 -51
  265. package/services/http/middleware/Auth.js +0 -20
  266. package/services/http/middleware/Cors.js +0 -46
  267. package/services/http/middleware/GetUserByToken.js +0 -47
  268. package/services/http/middleware/I18n.js +0 -117
  269. package/services/http/middleware/IpDetector.js +0 -59
  270. package/services/http/middleware/Pagination.js +0 -57
  271. package/services/http/middleware/PrepareAppInfo.js +0 -18
  272. package/services/http/middleware/RateLimiter.js +0 -134
  273. package/services/http/middleware/RequestLogger.js +0 -22
  274. package/services/http/middleware/RequestParser.js +0 -40
  275. package/services/http/middleware/Role.js +0 -29
  276. package/services/messaging/email/index.js +0 -217
  277. package/services/messaging/email/resources/.gitkeep +0 -1
  278. package/services/messaging/email/templates/emptyTemplate/html.pug +0 -9
  279. package/services/messaging/email/templates/emptyTemplate/subject.pug +0 -1
  280. package/services/messaging/email/templates/emptyTemplate/text.pug +0 -1
  281. package/services/messaging/email/templates/recovery/html.pug +0 -8
  282. package/services/messaging/email/templates/recovery/subject.pug +0 -2
  283. package/services/messaging/email/templates/recovery/text.pug +0 -3
  284. package/services/messaging/email/templates/verification/html.pug +0 -10
  285. package/services/messaging/email/templates/verification/subject.pug +0 -1
  286. package/services/messaging/email/templates/verification/text.pug +0 -1
  287. package/services/messaging/index.js +0 -3
  288. package/services/validate/ValidateService.js +0 -157
  289. package/services/validate/drivers/AbstractValidator.js +0 -37
  290. package/services/validate/drivers/CustomValidator.js +0 -51
  291. package/services/validate/drivers/YupValidator.js +0 -103
  292. package/tests/globalSetupVitest.js +0 -35
  293. package/tests/setup.js +0 -118
  294. package/tests/setupVitest.js +0 -109
  295. package/types/Expand.d.ts +0 -11
  296. package/types/TFoldersConfig.d.ts +0 -17
  297. package/views/404.pug +0 -3
  298. package/views/home.pug +0 -3
  299. package/views/layouts/base.pug +0 -39
  300. package/vitest.config.js +0 -16
  301. /package/{commands → dist/migrations}/.gitkeep +0 -0
@@ -0,0 +1,76 @@
1
+ import { promises as fs } from 'node:fs';
2
+ import { format, join, parse } from 'node:path';
3
+ const getFilesPathWithInheritance = async ({ internalFolder, externalFolder, logger, loggerFileType = '', filter: { startWithCapital = true, notTests = true, notHidden = true } = {}, }) => {
4
+ const [internalFiles, externalFiles] = await Promise.all([
5
+ fs.readdir(internalFolder, { recursive: true, withFileTypes: true }),
6
+ fs.readdir(externalFolder, { recursive: true, withFileTypes: true }),
7
+ ]);
8
+ const filterIndexFile = (fileDirent) => {
9
+ if (!fileDirent.isFile()) {
10
+ return false;
11
+ }
12
+ const fileArray = fileDirent.name.split('/');
13
+ const file = fileArray[fileArray.length - 1];
14
+ if (startWithCapital && file[0] !== file[0].toUpperCase()) {
15
+ // not start with capital
16
+ return false;
17
+ }
18
+ if (notTests &&
19
+ (file.endsWith('.test.js') ||
20
+ file.endsWith('.test.ts') ||
21
+ file.endsWith('.d.ts'))) {
22
+ return false;
23
+ }
24
+ if (!file.endsWith('.js') && !file.endsWith('.ts')) {
25
+ return false;
26
+ }
27
+ if (notHidden && file[0] === '.') {
28
+ // not start with dot
29
+ return false;
30
+ }
31
+ return true;
32
+ };
33
+ const internalFilesString = internalFiles
34
+ .filter(filterIndexFile)
35
+ .map((fileDirent) => join(fileDirent.parentPath, fileDirent.name)
36
+ .replace(`${internalFolder}/`, '')
37
+ .replace(`${internalFolder}`, ''));
38
+ const externalFilesString = externalFiles
39
+ .filter(filterIndexFile)
40
+ .map((fileDirent) => join(fileDirent.parentPath, fileDirent.name)
41
+ .replace(`${externalFolder}/`, '')
42
+ .replace(`${externalFolder}`, ''));
43
+ const filesToLoad = [];
44
+ for (const file of internalFilesString) {
45
+ const fileDetails = parse(file);
46
+ const jsFile = format({
47
+ dir: fileDetails.dir,
48
+ name: fileDetails.name,
49
+ ext: '.js',
50
+ });
51
+ const tsFile = format({
52
+ dir: fileDetails.dir,
53
+ name: fileDetails.name,
54
+ ext: '.ts',
55
+ });
56
+ if (externalFilesString.includes(jsFile) ||
57
+ externalFilesString.includes(tsFile)) {
58
+ logger(`Skipping register INTERNAL file '${file}' ${loggerFileType ? `of type ${loggerFileType}` : ''} as it override by EXTERNAL ONE`);
59
+ }
60
+ else {
61
+ filesToLoad.push({
62
+ path: join(internalFolder, file),
63
+ file,
64
+ });
65
+ }
66
+ }
67
+ for (const file of externalFilesString) {
68
+ filesToLoad.push({
69
+ path: join(externalFolder, file),
70
+ file,
71
+ });
72
+ }
73
+ return filesToLoad;
74
+ };
75
+ export { getFilesPathWithInheritance };
76
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/helpers/files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ declare const levels: readonly ["error", "warn", "info", "debug"];
2
+ type LogLevel = (typeof levels)[number];
3
+ declare const consoleLogger: (level: LogLevel, message: string) => void;
4
+ export { levels, consoleLogger };
@@ -0,0 +1,20 @@
1
+ const levels = ['error', 'warn', 'info', 'debug'];
2
+ function isLogLevel(level) {
3
+ return (typeof level === 'string' &&
4
+ levels.includes(level));
5
+ }
6
+ const consoleLogger = (level, message) => {
7
+ const configuredLevelIndex = isLogLevel(level) ? levels.indexOf(level) : -1;
8
+ const currentLevelIndex = levels.indexOf(level);
9
+ const shouldLog = configuredLevelIndex === -1 || configuredLevelIndex >= currentLevelIndex;
10
+ if (shouldLog) {
11
+ if (console[level]) {
12
+ console[level](message);
13
+ }
14
+ else {
15
+ console.log(message);
16
+ }
17
+ }
18
+ };
19
+ export { levels, consoleLogger };
20
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/helpers/logger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAU,CAAC;AAI3D,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACxB,MAAgC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAClD,CAAC;AACJ,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,EAAE;IACzD,MAAM,oBAAoB,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,SAAS,GACb,oBAAoB,KAAK,CAAC,CAAC,IAAI,oBAAoB,IAAI,iBAAiB,CAAC;IAC3E,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { RedisClientType } from '@redis/client';
2
+ export declare const clearNamespace: (redisClient: RedisClientType, namespace: string) => Promise<void>;
@@ -0,0 +1,14 @@
1
+ export const clearNamespace = async (redisClient, namespace) => {
2
+ const deletedKeys = [];
3
+ const keys = await redisClient.sendCommand([
4
+ 'keys',
5
+ `*${namespace}*`,
6
+ ]);
7
+ if (keys && keys.length > 0) {
8
+ for (const key of keys) {
9
+ deletedKeys.push(redisClient.sendCommand(['del', key]));
10
+ }
11
+ await Promise.all(deletedKeys);
12
+ }
13
+ };
14
+ //# sourceMappingURL=clearNamespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clearNamespace.js","sourceRoot":"","sources":["../../../src/helpers/redis/clearNamespace.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,WAA4B,EAC5B,SAAiB,EACjB,EAAE;IACF,MAAM,WAAW,GAAG,EAAE,CAAC;IAEvB,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,WAAW,CAAW;QACnD,MAAM;QACN,IAAI,SAAS,GAAG;KACjB,CAAC,CAAC;IAEH,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { RedisClientType } from '@redis/client';
2
+ export declare const getRedisClient: () => Promise<RedisClientType>;
3
+ /**
4
+ * Synchronous way to get redis client. Make sure to call connect on it before usage
5
+ */
6
+ export declare const getRedisClientSync: () => RedisClientType;
@@ -0,0 +1,48 @@
1
+ import { createClient } from '@redis/client';
2
+ import { appInstance } from "../appInstance.js";
3
+ let redisClient = null;
4
+ export const getRedisClient = async () => {
5
+ if (redisClient) {
6
+ return redisClient;
7
+ }
8
+ const redisClientLocal = createNewRedisClient();
9
+ await redisClientLocal.connect();
10
+ return redisClientLocal;
11
+ };
12
+ /**
13
+ * Synchronous way to get redis client. Make sure to call connect on it before usage
14
+ */
15
+ export const getRedisClientSync = () => {
16
+ if (redisClient) {
17
+ return redisClient;
18
+ }
19
+ const redisClientLocal = createNewRedisClient();
20
+ // to make sure connection is established
21
+ (async () => {
22
+ await redisClientLocal.connect();
23
+ })();
24
+ return redisClientLocal;
25
+ };
26
+ const createNewRedisClient = () => {
27
+ if (redisClient) {
28
+ return redisClient;
29
+ }
30
+ const redisConfig = appInstance.getConfig('redis');
31
+ redisClient = createClient({
32
+ url: redisConfig.url,
33
+ });
34
+ redisClient.on('error', (error, b, c) => {
35
+ appInstance.logger?.error('Redis Client Error', error, b, c);
36
+ });
37
+ redisClient.on('connect', () => {
38
+ appInstance.logger?.info('Redis connection established');
39
+ });
40
+ appInstance.events.on('shutdown', async () => {
41
+ if (redisClient) {
42
+ await redisClient.quit();
43
+ redisClient = null;
44
+ }
45
+ });
46
+ return redisClient;
47
+ };
48
+ //# sourceMappingURL=redisConnection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redisConnection.js","sourceRoot":"","sources":["../../../src/helpers/redis/redisConnection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,IAAI,WAAW,GAA2B,IAAI,CAAC;AAE/C,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,IAA8B,EAAE;IACjE,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,MAAM,gBAAgB,GAAG,oBAAoB,EAAE,CAAC;IAChD,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAC;IAEjC,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAoB,EAAE;IACtD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,MAAM,gBAAgB,GAAG,oBAAoB,EAAE,CAAC;IAChD,yCAAyC;IACzC,CAAC,KAAK,IAAI,EAAE;QACV,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,GAAoB,EAAE;IACjD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,OAAO,CAEhD,CAAC;IAEF,WAAW,GAAG,YAAY,CAAC;QACzB,GAAG,EAAE,WAAW,CAAC,GAAG;KACrB,CAAC,CAAC;IAEH,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QACtC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QAC7B,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;QAC3C,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;YACzB,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { Schema } from 'yup';
2
+ /**
3
+ * Validator for file
4
+ * use as
5
+ * @example
6
+ * request: yup.object().shape({
7
+ * someFile: new YupFile().required(),
8
+ * })
9
+ */
10
+ declare class YupFile extends Schema {
11
+ constructor();
12
+ }
13
+ export { YupFile };
@@ -0,0 +1,21 @@
1
+ import { PersistentFile } from 'formidable';
2
+ import { Schema } from 'yup';
3
+ /**
4
+ * Validator for file
5
+ * use as
6
+ * @example
7
+ * request: yup.object().shape({
8
+ * someFile: new YupFile().required(),
9
+ * })
10
+ */
11
+ class YupFile extends Schema {
12
+ constructor() {
13
+ super({
14
+ type: 'file',
15
+ check: (value) => Array.isArray(value) &&
16
+ value.every((item) => item instanceof PersistentFile),
17
+ });
18
+ }
19
+ }
20
+ export { YupFile };
21
+ //# sourceMappingURL=yup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yup.js","sourceRoot":"","sources":["../../src/helpers/yup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAE7B;;;;;;;GAOG;AACH,MAAM,OAAQ,SAAQ,MAAM;IAC1B;QACE,KAAK,CAAC;YACJ,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,CAAC,KAAc,EAAE,EAAE,CACxB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBACpB,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,YAAY,cAAc,CAAC;SACxD,CAAC,CAAC;IACL,CAAC;CACF;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ import folderConfig from "./folderConfig.js";
2
+ import Server from "./server.js";
3
+ const server = new Server(folderConfig);
4
+ server.startServer().then(() => {
5
+ console.log(server.app.controllerManager?.controllers);
6
+ });
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAC7C,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;AAExC,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;IAC7B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC"}
@@ -0,0 +1,90 @@
1
+ import type { Schema } from 'mongoose';
2
+ import type { GetModelTypeFromClass, GetModelTypeLiteFromSchema } from '../modules/BaseModel.ts';
3
+ import { BaseModel } from '../modules/BaseModel.ts';
4
+ export type TLock = GetModelTypeFromClass<typeof Lock>;
5
+ declare class Lock extends BaseModel {
6
+ static initHooks(schema: Schema): void;
7
+ static get modelSchema(): {
8
+ readonly _id: {
9
+ readonly type: StringConstructor;
10
+ readonly required: true;
11
+ };
12
+ readonly expiredAt: {
13
+ readonly type: DateConstructor;
14
+ };
15
+ };
16
+ static get modelStatics(): {
17
+ /**
18
+ * acquire lock based on lock name
19
+ * @param {string} name
20
+ * @param {number} [ttlSeconds=30]
21
+ */
22
+ readonly acquireLock: (this: GetModelTypeLiteFromSchema<{
23
+ readonly _id: {
24
+ readonly type: StringConstructor;
25
+ readonly required: true;
26
+ };
27
+ readonly expiredAt: {
28
+ readonly type: DateConstructor;
29
+ };
30
+ }, {}>, name: string, ttlSeconds?: number) => Promise<boolean>;
31
+ /**
32
+ * release lock based on lock name
33
+ * @param {string} name
34
+ */
35
+ readonly releaseLock: (this: GetModelTypeLiteFromSchema<{
36
+ readonly _id: {
37
+ readonly type: StringConstructor;
38
+ readonly required: true;
39
+ };
40
+ readonly expiredAt: {
41
+ readonly type: DateConstructor;
42
+ };
43
+ }, {}>, name: string) => Promise<boolean>;
44
+ /**
45
+ * wait lock based on lock name
46
+ * @param {string} name
47
+ */
48
+ readonly waitForUnlock: (this: GetModelTypeLiteFromSchema<{
49
+ readonly _id: {
50
+ readonly type: StringConstructor;
51
+ readonly required: true;
52
+ };
53
+ readonly expiredAt: {
54
+ readonly type: DateConstructor;
55
+ };
56
+ }, {}>, name: string) => Promise<unknown>;
57
+ /**
58
+ * get lock remaining time based on lock name
59
+ * @param {string} name
60
+ */
61
+ readonly getLockData: (this: GetModelTypeLiteFromSchema<{
62
+ readonly _id: {
63
+ readonly type: StringConstructor;
64
+ readonly required: true;
65
+ };
66
+ readonly expiredAt: {
67
+ readonly type: DateConstructor;
68
+ };
69
+ }, {}>, name: string) => Promise<{
70
+ ttl: number;
71
+ }>;
72
+ /**
73
+ * get lock remaining time based on lock name
74
+ * @param {string[]} names
75
+ */
76
+ readonly getLocksData: (this: GetModelTypeLiteFromSchema<{
77
+ readonly _id: {
78
+ readonly type: StringConstructor;
79
+ readonly required: true;
80
+ };
81
+ readonly expiredAt: {
82
+ readonly type: DateConstructor;
83
+ };
84
+ }, {}>, names: string[]) => Promise<{
85
+ name: string;
86
+ ttl: number;
87
+ }[]>;
88
+ };
89
+ }
90
+ export default Lock;
@@ -0,0 +1,97 @@
1
+ import { BaseModel } from "../modules/BaseModel.js";
2
+ class Lock extends BaseModel {
3
+ static initHooks(schema) {
4
+ schema.index({ expiredAt: 1 }, { expireAfterSeconds: 0 });
5
+ }
6
+ static get modelSchema() {
7
+ return {
8
+ _id: { type: String, required: true },
9
+ expiredAt: {
10
+ type: Date,
11
+ },
12
+ };
13
+ }
14
+ static get modelStatics() {
15
+ return {
16
+ /**
17
+ * acquire lock based on lock name
18
+ * @param {string} name
19
+ * @param {number} [ttlSeconds=30]
20
+ */
21
+ acquireLock: async function (name, ttlSeconds = 30) {
22
+ try {
23
+ await this.create({
24
+ _id: name,
25
+ expiredAt: new Date(Date.now() + ttlSeconds * 1000),
26
+ });
27
+ }
28
+ catch (error) {
29
+ if (error.code !== 11000) {
30
+ // not a duplicate keys
31
+ throw error;
32
+ }
33
+ return false;
34
+ }
35
+ return true;
36
+ },
37
+ /**
38
+ * release lock based on lock name
39
+ * @param {string} name
40
+ */
41
+ releaseLock: async function (name) {
42
+ const res = await this.deleteOne({ _id: name });
43
+ if (res.acknowledged && res.deletedCount) {
44
+ return true;
45
+ }
46
+ return false;
47
+ },
48
+ /**
49
+ * wait lock based on lock name
50
+ * @param {string} name
51
+ */
52
+ waitForUnlock: async function (name) {
53
+ const res = await this.findOne({ _id: name });
54
+ if (!res) {
55
+ return Promise.resolve();
56
+ }
57
+ return new Promise((resolve) => {
58
+ const stream = this.watch([
59
+ { $match: { operationType: 'delete', 'documentKey._id': name } },
60
+ ]);
61
+ stream.on('change', () => {
62
+ stream.close();
63
+ resolve(true);
64
+ });
65
+ });
66
+ },
67
+ /**
68
+ * get lock remaining time based on lock name
69
+ * @param {string} name
70
+ */
71
+ getLockData: async function (name) {
72
+ const res = await this.findOne({ _id: name });
73
+ if (!res || !res.expiredAt) {
74
+ return { ttl: 0 };
75
+ }
76
+ return { ttl: res.expiredAt.getTime() - Date.now() };
77
+ },
78
+ /**
79
+ * get lock remaining time based on lock name
80
+ * @param {string[]} names
81
+ */
82
+ getLocksData: async function (names) {
83
+ const res = await this.find({ _id: { $in: names } });
84
+ const lockMap = new Map(res.map((lock) => [lock._id, lock]));
85
+ return names.map((name) => {
86
+ const lock = lockMap.get(name);
87
+ return {
88
+ name,
89
+ ttl: lock?.expiredAt ? lock.expiredAt.getTime() - Date.now() : 0,
90
+ };
91
+ });
92
+ },
93
+ };
94
+ }
95
+ }
96
+ export default Lock;
97
+ //# sourceMappingURL=Lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Lock.js","sourceRoot":"","sources":["../../src/models/Lock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { GetModelTypeFromClass } from '../modules/BaseModel.ts';
2
+ import { BaseModel } from '../modules/BaseModel.ts';
3
+ export type TMigration = GetModelTypeFromClass<typeof Migration>;
4
+ declare class Migration extends BaseModel {
5
+ static get modelSchema(): {
6
+ readonly migrationFile: {
7
+ readonly type: StringConstructor;
8
+ readonly unique: true;
9
+ readonly required: true;
10
+ };
11
+ };
12
+ }
13
+ export default Migration;
@@ -0,0 +1,14 @@
1
+ import { BaseModel } from "../modules/BaseModel.js";
2
+ class Migration extends BaseModel {
3
+ static get modelSchema() {
4
+ return {
5
+ migrationFile: {
6
+ type: String,
7
+ unique: true,
8
+ required: true,
9
+ },
10
+ };
11
+ }
12
+ }
13
+ export default Migration;
14
+ //# sourceMappingURL=Migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Migration.js","sourceRoot":"","sources":["../../src/models/Migration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGpD,MAAM,SAAU,SAAQ,SAAS;IAC/B,MAAM,KAAK,WAAW;QACpB,OAAO;YACL,aAAa,EAAE;gBACb,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,IAAI;aACf;SACO,CAAC;IACb,CAAC;CACF;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { GetModelTypeFromClass, GetModelTypeLiteFromSchema } from '../modules/BaseModel.ts';
2
+ import { BaseModel } from '../modules/BaseModel.ts';
3
+ export type TSequence = GetModelTypeFromClass<typeof Sequence>;
4
+ declare class Sequence extends BaseModel {
5
+ static get modelSchema(): {
6
+ readonly _id: {
7
+ readonly type: StringConstructor;
8
+ readonly required: true;
9
+ };
10
+ readonly seq: {
11
+ readonly type: NumberConstructor;
12
+ readonly default: 1;
13
+ };
14
+ };
15
+ static get modelStatics(): {
16
+ readonly getSequence: (this: GetModelTypeLiteFromSchema<{
17
+ readonly _id: {
18
+ readonly type: StringConstructor;
19
+ readonly required: true;
20
+ };
21
+ readonly seq: {
22
+ readonly type: NumberConstructor;
23
+ readonly default: 1;
24
+ };
25
+ }, {}>, forType: string) => Promise<number>;
26
+ };
27
+ }
28
+ export default Sequence;
@@ -0,0 +1,19 @@
1
+ import { BaseModel } from "../modules/BaseModel.js";
2
+ class Sequence extends BaseModel {
3
+ static get modelSchema() {
4
+ return {
5
+ _id: { type: String, required: true },
6
+ seq: { type: Number, default: 1 },
7
+ };
8
+ }
9
+ static get modelStatics() {
10
+ return {
11
+ getSequence: async function (forType) {
12
+ const sequence = await this.findByIdAndUpdate({ _id: forType }, { $inc: { seq: 1 } }, { new: true, upsert: true });
13
+ return sequence.seq;
14
+ },
15
+ };
16
+ }
17
+ }
18
+ export default Sequence;
19
+ //# sourceMappingURL=Sequence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sequence.js","sourceRoot":"","sources":["../../src/models/Sequence.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAIpD,MAAM,QAAS,SAAQ,SAAS;IAC9B,MAAM,KAAK,WAAW;QACpB,OAAO;YACL,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACrC,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE;SACzB,CAAC;IACb,CAAC;IAED,MAAM,KAAK,YAAY;QAKrB,OAAO;YACL,WAAW,EAAE,KAAK,WAEhB,OAAe;gBAEf,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAC3C,EAAE,GAAG,EAAE,OAAO,EAAE,EAChB,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EACpB,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAC5B,CAAC;gBACF,OAAO,QAAQ,CAAC,GAAG,CAAC;YACtB,CAAC;SACO,CAAC;IACb,CAAC;CACF;AAED,eAAe,QAAQ,CAAC"}