@adaptivestone/framework 5.0.0-beta.2 → 5.0.0-beta.21

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 (285) hide show
  1. package/CHANGELOG.md +126 -1
  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 +81 -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 +12 -0
  22. package/dist/commands/GenerateTypes.js +60 -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 +32 -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 +46 -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 +10 -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 +22 -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 +15 -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 +74 -0
  64. package/dist/controllers/Auth.js +181 -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 +24 -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 +15 -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 +14 -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 +28 -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/{helpers → dist/helpers}/yup.js +9 -12
  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 +89 -0
  97. package/dist/models/Lock.js +99 -0
  98. package/dist/models/Lock.js.map +1 -0
  99. package/dist/models/Migration.d.ts +10 -0
  100. package/dist/models/Migration.js +13 -0
  101. package/dist/models/Migration.js.map +1 -0
  102. package/dist/models/Sequence.d.ts +27 -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 +2372 -0
  106. package/dist/models/User.js +280 -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 +34 -0
  112. package/dist/modules/AbstractCommand.js +48 -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 +90 -0
  118. package/dist/modules/AbstractController.js +324 -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 +43 -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 +41 -0
  130. package/dist/modules/BaseModel.js +36 -0
  131. package/dist/modules/BaseModel.js.map +1 -0
  132. package/dist/server.d.ts +121 -0
  133. package/dist/server.js +432 -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 +115 -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 +134 -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 +71 -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 +43 -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 +10 -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 +19 -0
  154. package/dist/services/http/middleware/GetUserByToken.js +40 -0
  155. package/dist/services/http/middleware/GetUserByToken.js.map +1 -0
  156. package/dist/services/http/middleware/I18n.d.ts +26 -0
  157. package/dist/services/http/middleware/I18n.js +97 -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 +47 -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 +9 -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 +96 -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 +32 -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/globalSetupVitest.d.ts +2 -0
  193. package/dist/tests/globalSetupVitest.js +29 -0
  194. package/dist/tests/globalSetupVitest.js.map +1 -0
  195. package/dist/tests/setupVitest.d.ts +1 -0
  196. package/dist/tests/setupVitest.js +99 -0
  197. package/dist/tests/setupVitest.js.map +1 -0
  198. package/package.json +38 -23
  199. package/Cli.js +0 -22
  200. package/cluster.js +0 -27
  201. package/commands/CreateUser.js +0 -75
  202. package/commands/Documentation.js +0 -17
  203. package/commands/DropIndex.js +0 -29
  204. package/commands/GenerateRandomBytes.js +0 -21
  205. package/commands/GetOpenApiJson.js +0 -325
  206. package/commands/SyncIndexes.js +0 -39
  207. package/commands/migration/Create.js +0 -61
  208. package/commands/migration/Migrate.js +0 -55
  209. package/config/auth.js +0 -9
  210. package/config/http.js +0 -9
  211. package/config/i18n.js +0 -12
  212. package/config/ipDetector.js +0 -14
  213. package/config/log.js +0 -22
  214. package/config/mail.js +0 -29
  215. package/config/mongo.js +0 -3
  216. package/config/rateLimiter.js +0 -16
  217. package/config/redis.js +0 -4
  218. package/config/validate.js +0 -3
  219. package/controllers/Auth.js +0 -210
  220. package/controllers/Home.js +0 -28
  221. package/controllers/index.js +0 -60
  222. package/folderConfig.js +0 -14
  223. package/helpers/files.js +0 -79
  224. package/helpers/logger.js +0 -17
  225. package/helpers/redis/clearNamespace.js +0 -14
  226. package/index.js +0 -8
  227. package/jsconfig.json +0 -9
  228. package/locales/en/translation.json +0 -27
  229. package/locales/ru/translation.json +0 -27
  230. package/migrations/.gitkeep +0 -0
  231. package/models/Migration.js +0 -15
  232. package/models/Sequence.js +0 -22
  233. package/models/User.js +0 -263
  234. package/modules/AbstractCommand.js +0 -43
  235. package/modules/AbstractConnector.js +0 -9
  236. package/modules/AbstractController.js +0 -413
  237. package/modules/AbstractModel.d.ts +0 -48
  238. package/modules/AbstractModel.js +0 -86
  239. package/modules/Base.d.ts +0 -37
  240. package/modules/Base.js +0 -63
  241. package/modules/BaseCli.js +0 -97
  242. package/server.d.ts +0 -98
  243. package/server.js +0 -429
  244. package/services/cache/Cache.d.ts +0 -35
  245. package/services/cache/Cache.js +0 -124
  246. package/services/documentation/DocumentationGenerator.js +0 -169
  247. package/services/http/HttpServer.js +0 -96
  248. package/services/http/middleware/AbstractMiddleware.js +0 -51
  249. package/services/http/middleware/Auth.js +0 -20
  250. package/services/http/middleware/Cors.js +0 -46
  251. package/services/http/middleware/GetUserByToken.js +0 -47
  252. package/services/http/middleware/I18n.js +0 -117
  253. package/services/http/middleware/IpDetector.js +0 -59
  254. package/services/http/middleware/Pagination.js +0 -57
  255. package/services/http/middleware/PrepareAppInfo.js +0 -18
  256. package/services/http/middleware/RateLimiter.js +0 -134
  257. package/services/http/middleware/RequestLogger.js +0 -22
  258. package/services/http/middleware/RequestParser.js +0 -40
  259. package/services/http/middleware/Role.js +0 -29
  260. package/services/messaging/email/index.js +0 -217
  261. package/services/messaging/email/resources/.gitkeep +0 -1
  262. package/services/messaging/email/templates/emptyTemplate/html.pug +0 -9
  263. package/services/messaging/email/templates/emptyTemplate/subject.pug +0 -1
  264. package/services/messaging/email/templates/emptyTemplate/text.pug +0 -1
  265. package/services/messaging/email/templates/recovery/html.pug +0 -8
  266. package/services/messaging/email/templates/recovery/subject.pug +0 -2
  267. package/services/messaging/email/templates/recovery/text.pug +0 -3
  268. package/services/messaging/email/templates/verification/html.pug +0 -10
  269. package/services/messaging/email/templates/verification/subject.pug +0 -1
  270. package/services/messaging/email/templates/verification/text.pug +0 -1
  271. package/services/messaging/index.js +0 -3
  272. package/services/validate/ValidateService.js +0 -157
  273. package/services/validate/drivers/AbstractValidator.js +0 -37
  274. package/services/validate/drivers/CustomValidator.js +0 -51
  275. package/services/validate/drivers/YupValidator.js +0 -103
  276. package/tests/globalSetupVitest.js +0 -35
  277. package/tests/setup.js +0 -118
  278. package/tests/setupVitest.js +0 -109
  279. package/types/Expand.d.ts +0 -11
  280. package/types/TFoldersConfig.d.ts +0 -17
  281. package/views/404.pug +0 -3
  282. package/views/home.pug +0 -3
  283. package/views/layouts/base.pug +0 -39
  284. package/vitest.config.js +0 -16
  285. /package/{commands → dist/migrations}/.gitkeep +0 -0
@@ -0,0 +1,76 @@
1
+ import { promises as fs } from 'node:fs';
2
+ import { join, parse, format } 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", "http", "verbose", "debug", "silly"];
2
+ type LogLevel = (typeof levels)[number];
3
+ declare const consoleLogger: (level: LogLevel, message: string) => void;
4
+ export { levels, consoleLogger };
@@ -0,0 +1,28 @@
1
+ const levels = [
2
+ 'error',
3
+ 'warn',
4
+ 'info',
5
+ 'http',
6
+ 'verbose',
7
+ 'debug',
8
+ 'silly',
9
+ ];
10
+ function isLogLevel(level) {
11
+ return (typeof level === 'string' &&
12
+ levels.includes(level));
13
+ }
14
+ const consoleLogger = (level, message) => {
15
+ const configuredLevelIndex = isLogLevel(level) ? levels.indexOf(level) : -1;
16
+ const currentLevelIndex = levels.indexOf(level);
17
+ const shouldLog = configuredLevelIndex === -1 || configuredLevelIndex >= currentLevelIndex;
18
+ if (shouldLog) {
19
+ if (console[level]) {
20
+ console[level](message);
21
+ }
22
+ else {
23
+ console.log(message);
24
+ }
25
+ }
26
+ };
27
+ export { levels, consoleLogger };
28
+ //# 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;IACb,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,SAAS;IACT,OAAO;IACP,OAAO;CACC,CAAC;AAIX,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,IAAK,OAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAe,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;QACnC,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,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 };
@@ -1,6 +1,5 @@
1
1
  import { Schema } from 'yup';
2
2
  import { PersistentFile } from 'formidable';
3
-
4
3
  /**
5
4
  * Validator for file
6
5
  * use as
@@ -10,15 +9,13 @@ import { PersistentFile } from 'formidable';
10
9
  * })
11
10
  */
12
11
  class YupFile extends Schema {
13
- constructor() {
14
- super({
15
- type: 'file',
16
- check: (value) => value.every((item) => item instanceof PersistentFile),
17
- });
18
- }
12
+ constructor() {
13
+ super({
14
+ type: 'file',
15
+ // @ts-ignore
16
+ check: (value) => value.every((item) => item instanceof PersistentFile),
17
+ });
18
+ }
19
19
  }
20
-
21
- export {
22
- // eslint-disable-next-line import/prefer-default-export
23
- YupFile,
24
- };
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,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;GAOG;AACH,MAAM,OAAQ,SAAQ,MAAM;IAC1B;QACE,KAAK,CAAC;YACJ,IAAI,EAAE,MAAM;YACZ,aAAa;YACb,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,YAAY,cAAc,CAAC;SACxE,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 Server from "./server.js";
2
+ import folderConfig from "./folderConfig.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,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAE7C,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,89 @@
1
+ import { BaseModel } from '../modules/BaseModel.ts';
2
+ import type { GetModelTypeLiteFromSchema } from '../modules/BaseModel.ts';
3
+ import type { Schema } from 'mongoose';
4
+ declare class Lock extends BaseModel {
5
+ static initHooks(schema: Schema): void;
6
+ static get modelSchema(): {
7
+ readonly _id: {
8
+ readonly type: StringConstructor;
9
+ readonly required: true;
10
+ };
11
+ readonly expiredAt: {
12
+ readonly type: DateConstructor;
13
+ };
14
+ };
15
+ static get modelStatics(): {
16
+ /**
17
+ * acquire lock based on lock name
18
+ * @param {string} name
19
+ * @param {number} [ttlSeconds=30]
20
+ */
21
+ readonly acquireLock: (this: GetModelTypeLiteFromSchema<{
22
+ readonly _id: {
23
+ readonly type: StringConstructor;
24
+ readonly required: true;
25
+ };
26
+ readonly expiredAt: {
27
+ readonly type: DateConstructor;
28
+ };
29
+ }, {}>, name: string, ttlSeconds?: number) => Promise<boolean>;
30
+ /**
31
+ * release lock based on lock name
32
+ * @param {string} name
33
+ */
34
+ readonly releaseLock: (this: GetModelTypeLiteFromSchema<{
35
+ readonly _id: {
36
+ readonly type: StringConstructor;
37
+ readonly required: true;
38
+ };
39
+ readonly expiredAt: {
40
+ readonly type: DateConstructor;
41
+ };
42
+ }, {}>, name: string) => Promise<boolean>;
43
+ /**
44
+ * wait lock based on lock name
45
+ * @param {string} name
46
+ */
47
+ readonly waitForUnlock: (this: GetModelTypeLiteFromSchema<{
48
+ readonly _id: {
49
+ readonly type: StringConstructor;
50
+ readonly required: true;
51
+ };
52
+ readonly expiredAt: {
53
+ readonly type: DateConstructor;
54
+ };
55
+ }, {}>, name: string) => Promise<unknown>;
56
+ /**
57
+ * get lock remaining time based on lock name
58
+ * @param {string} name
59
+ */
60
+ readonly getLockData: (this: GetModelTypeLiteFromSchema<{
61
+ readonly _id: {
62
+ readonly type: StringConstructor;
63
+ readonly required: true;
64
+ };
65
+ readonly expiredAt: {
66
+ readonly type: DateConstructor;
67
+ };
68
+ }, {}>, name: string) => Promise<{
69
+ ttl: number;
70
+ }>;
71
+ /**
72
+ * get lock remaining time based on lock name
73
+ * @param {string[]} names
74
+ */
75
+ readonly getLocksData: (this: GetModelTypeLiteFromSchema<{
76
+ readonly _id: {
77
+ readonly type: StringConstructor;
78
+ readonly required: true;
79
+ };
80
+ readonly expiredAt: {
81
+ readonly type: DateConstructor;
82
+ };
83
+ }, {}>, names: string[]) => Promise<{
84
+ name: string;
85
+ ttl: number;
86
+ }[]>;
87
+ };
88
+ }
89
+ export default Lock;
@@ -0,0 +1,99 @@
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 && lock.expiredAt
90
+ ? lock.expiredAt.getTime() - Date.now()
91
+ : 0,
92
+ };
93
+ });
94
+ },
95
+ };
96
+ }
97
+ }
98
+ export default Lock;
99
+ //# sourceMappingURL=Lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Lock.js","sourceRoot":"","sources":["../../src/models/Lock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AASpD,MAAM,IAAK,SAAQ,SAAS;IAC1B,MAAM,CAAC,SAAS,CAAC,MAAc;QAC7B,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,KAAK,WAAW;QACpB,OAAO;YACL,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;YACrC,SAAS,EAAE;gBACT,IAAI,EAAE,IAAI;aACX;SACO,CAAC;IACb,CAAC;IAED,MAAM,KAAK,YAAY;QAMrB,OAAO;YACL;;;;eAIG;YACH,WAAW,EAAE,KAAK,WAEhB,IAAY,EACZ,UAAU,GAAG,EAAE;gBAEf,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,MAAM,CAAC;wBAChB,GAAG,EAAE,IAAI;wBACT,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC;qBACpD,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACxB,IAAK,KAAoB,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;wBACzC,uBAAuB;wBACvB,MAAM,KAAK,CAAC;oBACd,CAAC;oBACD,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YAED;;;eAGG;YACH,WAAW,EAAE,KAAK,WAAgC,IAAY;gBAC5D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChD,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;oBACzC,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YAED;;;eAGG;YACH,aAAa,EAAE,KAAK,WAAgC,IAAY;gBAC9D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9C,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC3B,CAAC;gBAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;wBACxB,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE;qBACjE,CAAC,CAAC;oBACH,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;wBACvB,MAAM,CAAC,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;YAED;;;eAGG;YACH,WAAW,EAAE,KAAK,WAAgC,IAAY;gBAC5D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9C,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;oBAC3B,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;gBACpB,CAAC;gBACD,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACvD,CAAC;YAED;;;eAGG;YACH,YAAY,EAAE,KAAK,WAAgC,KAAe;gBAChE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBACrD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;gBAE7D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACxB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC/B,OAAO;wBACL,IAAI;wBACJ,GAAG,EACD,IAAI,IAAI,IAAI,CAAC,SAAS;4BACpB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;4BACvC,CAAC,CAAC,CAAC;qBACR,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;SACO,CAAC;IACb,CAAC;CACF;AAED,eAAe,IAAI,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { BaseModel } from '../modules/BaseModel.ts';
2
+ declare class Migration extends BaseModel {
3
+ static get modelSchema(): {
4
+ readonly migrationFile: {
5
+ readonly type: StringConstructor;
6
+ readonly unique: true;
7
+ };
8
+ };
9
+ }
10
+ export default Migration;
@@ -0,0 +1,13 @@
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
+ },
9
+ };
10
+ }
11
+ }
12
+ export default Migration;
13
+ //# sourceMappingURL=Migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Migration.js","sourceRoot":"","sources":["../../src/models/Migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,MAAM,SAAU,SAAQ,SAAS;IAC/B,MAAM,KAAK,WAAW;QACpB,OAAO;YACL,aAAa,EAAE;gBACb,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,IAAI;aACb;SACO,CAAC;IACb,CAAC;CACF;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { BaseModel } from '../modules/BaseModel.ts';
2
+ import type { GetModelTypeLiteFromSchema } from '../modules/BaseModel.ts';
3
+ declare class Sequence extends BaseModel {
4
+ static get modelSchema(): {
5
+ readonly _id: {
6
+ readonly type: StringConstructor;
7
+ readonly required: true;
8
+ };
9
+ readonly seq: {
10
+ readonly type: NumberConstructor;
11
+ readonly default: 1;
12
+ };
13
+ };
14
+ static get modelStatics(): {
15
+ readonly getSequence: (this: GetModelTypeLiteFromSchema<{
16
+ readonly _id: {
17
+ readonly type: StringConstructor;
18
+ readonly required: true;
19
+ };
20
+ readonly seq: {
21
+ readonly type: NumberConstructor;
22
+ readonly default: 1;
23
+ };
24
+ }, {}>, forType: string) => Promise<number>;
25
+ };
26
+ }
27
+ 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":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAMpD,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,WAAoC,OAAe;gBACnE,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"}