@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,340 @@
1
+ import type UserModel from '../models/User.ts';
2
+ import type { GetModelTypeFromClass } from '../modules/BaseModel.ts';
3
+ import type Server from '../server.ts';
4
+ export declare let serverInstance: Server;
5
+ export declare let defaultUser: InstanceType<GetModelTypeFromClass<typeof UserModel>>;
6
+ export declare let defaultAuthToken: string;
7
+ export declare const setServerInstance: (serverInstanceToSet: Server) => void;
8
+ export declare const setDefaultUser: (userToSet: InstanceType<GetModelTypeFromClass<typeof UserModel>>) => void;
9
+ export declare const setDefaultAuthToken: (tokenToSet: string) => void;
10
+ export declare const getTestServerURL: (urlPart?: string) => string;
11
+ export declare const createDefaultTestUser: () => Promise<false | {
12
+ user: import("mongoose").Document<unknown, object, {
13
+ isVerified: boolean;
14
+ locale: string;
15
+ name?: {
16
+ first?: string | null | undefined;
17
+ last?: string | null | undefined;
18
+ nick?: string | null | undefined;
19
+ } | null | undefined;
20
+ createdAt?: NativeDate | null | undefined;
21
+ updatedAt?: NativeDate | null | undefined;
22
+ avatar?: string | null | undefined;
23
+ password?: string | null | undefined;
24
+ email?: string | null | undefined;
25
+ sessionTokens?: {
26
+ token?: string | null | undefined;
27
+ valid?: NativeDate | null | undefined;
28
+ }[] | null | undefined;
29
+ verificationTokens?: {
30
+ token?: string | null | undefined;
31
+ until?: NativeDate | null | undefined;
32
+ }[] | null | undefined;
33
+ passwordRecoveryTokens?: {
34
+ token?: string | null | undefined;
35
+ until?: NativeDate | null | undefined;
36
+ }[] | null | undefined;
37
+ permissions?: string[] | null | undefined;
38
+ roles?: string[] | null | undefined;
39
+ languages?: string[] | null | undefined;
40
+ }, {}, {}> & Omit<{
41
+ isVerified: boolean;
42
+ locale: string;
43
+ name?: {
44
+ first?: string | null | undefined;
45
+ last?: string | null | undefined;
46
+ nick?: string | null | undefined;
47
+ } | null | undefined;
48
+ createdAt?: NativeDate | null | undefined;
49
+ updatedAt?: NativeDate | null | undefined;
50
+ avatar?: string | null | undefined;
51
+ password?: string | null | undefined;
52
+ email?: string | null | undefined;
53
+ sessionTokens?: {
54
+ token?: string | null | undefined;
55
+ valid?: NativeDate | null | undefined;
56
+ }[] | null | undefined;
57
+ verificationTokens?: {
58
+ token?: string | null | undefined;
59
+ until?: NativeDate | null | undefined;
60
+ }[] | null | undefined;
61
+ passwordRecoveryTokens?: {
62
+ token?: string | null | undefined;
63
+ until?: NativeDate | null | undefined;
64
+ }[] | null | undefined;
65
+ permissions?: string[] | null | undefined;
66
+ roles?: string[] | null | undefined;
67
+ languages?: string[] | null | undefined;
68
+ } & {
69
+ _id: import("mongoose").Types.ObjectId;
70
+ } & {
71
+ __v: number;
72
+ }, "generateToken" | "sendPasswordRecoveryEmail" | "sendVerificationEmail" | "getPublic"> & import("../modules/BaseModel.ts").VirtualType<{}> & {
73
+ readonly generateToken: (this: import("mongoose").Document<unknown, {}, {
74
+ isVerified: boolean;
75
+ locale: string;
76
+ name?: {
77
+ first?: string | null | undefined;
78
+ last?: string | null | undefined;
79
+ nick?: string | null | undefined;
80
+ } | null | undefined;
81
+ createdAt?: NativeDate | null | undefined;
82
+ updatedAt?: NativeDate | null | undefined;
83
+ avatar?: string | null | undefined;
84
+ password?: string | null | undefined;
85
+ email?: string | null | undefined;
86
+ sessionTokens?: {
87
+ token?: string | null | undefined;
88
+ valid?: NativeDate | null | undefined;
89
+ }[] | null | undefined;
90
+ verificationTokens?: {
91
+ token?: string | null | undefined;
92
+ until?: NativeDate | null | undefined;
93
+ }[] | null | undefined;
94
+ passwordRecoveryTokens?: {
95
+ token?: string | null | undefined;
96
+ until?: NativeDate | null | undefined;
97
+ }[] | null | undefined;
98
+ permissions?: string[] | null | undefined;
99
+ roles?: string[] | null | undefined;
100
+ languages?: string[] | null | undefined;
101
+ }, {}, {}> & {
102
+ isVerified: boolean;
103
+ locale: string;
104
+ name?: {
105
+ first?: string | null | undefined;
106
+ last?: string | null | undefined;
107
+ nick?: string | null | undefined;
108
+ } | null | undefined;
109
+ createdAt?: NativeDate | null | undefined;
110
+ updatedAt?: NativeDate | null | undefined;
111
+ avatar?: string | null | undefined;
112
+ password?: string | null | undefined;
113
+ email?: string | null | undefined;
114
+ sessionTokens?: {
115
+ token?: string | null | undefined;
116
+ valid?: NativeDate | null | undefined;
117
+ }[] | null | undefined;
118
+ verificationTokens?: {
119
+ token?: string | null | undefined;
120
+ until?: NativeDate | null | undefined;
121
+ }[] | null | undefined;
122
+ passwordRecoveryTokens?: {
123
+ token?: string | null | undefined;
124
+ until?: NativeDate | null | undefined;
125
+ }[] | null | undefined;
126
+ permissions?: string[] | null | undefined;
127
+ roles?: string[] | null | undefined;
128
+ languages?: string[] | null | undefined;
129
+ } & {
130
+ _id: import("mongoose").Types.ObjectId;
131
+ } & {
132
+ __v: number;
133
+ }) => Promise<{
134
+ token: string;
135
+ valid: Date;
136
+ }>;
137
+ readonly sendPasswordRecoveryEmail: (this: import("mongoose").Document<unknown, {}, {
138
+ isVerified: boolean;
139
+ locale: string;
140
+ name?: {
141
+ first?: string | null | undefined;
142
+ last?: string | null | undefined;
143
+ nick?: string | null | undefined;
144
+ } | null | undefined;
145
+ createdAt?: NativeDate | null | undefined;
146
+ updatedAt?: NativeDate | null | undefined;
147
+ avatar?: string | null | undefined;
148
+ password?: string | null | undefined;
149
+ email?: string | null | undefined;
150
+ sessionTokens?: {
151
+ token?: string | null | undefined;
152
+ valid?: NativeDate | null | undefined;
153
+ }[] | null | undefined;
154
+ verificationTokens?: {
155
+ token?: string | null | undefined;
156
+ until?: NativeDate | null | undefined;
157
+ }[] | null | undefined;
158
+ passwordRecoveryTokens?: {
159
+ token?: string | null | undefined;
160
+ until?: NativeDate | null | undefined;
161
+ }[] | null | undefined;
162
+ permissions?: string[] | null | undefined;
163
+ roles?: string[] | null | undefined;
164
+ languages?: string[] | null | undefined;
165
+ }, {}, {}> & {
166
+ isVerified: boolean;
167
+ locale: string;
168
+ name?: {
169
+ first?: string | null | undefined;
170
+ last?: string | null | undefined;
171
+ nick?: string | null | undefined;
172
+ } | null | undefined;
173
+ createdAt?: NativeDate | null | undefined;
174
+ updatedAt?: NativeDate | null | undefined;
175
+ avatar?: string | null | undefined;
176
+ password?: string | null | undefined;
177
+ email?: string | null | undefined;
178
+ sessionTokens?: {
179
+ token?: string | null | undefined;
180
+ valid?: NativeDate | null | undefined;
181
+ }[] | null | undefined;
182
+ verificationTokens?: {
183
+ token?: string | null | undefined;
184
+ until?: NativeDate | null | undefined;
185
+ }[] | null | undefined;
186
+ passwordRecoveryTokens?: {
187
+ token?: string | null | undefined;
188
+ until?: NativeDate | null | undefined;
189
+ }[] | null | undefined;
190
+ permissions?: string[] | null | undefined;
191
+ roles?: string[] | null | undefined;
192
+ languages?: string[] | null | undefined;
193
+ } & {
194
+ _id: import("mongoose").Types.ObjectId;
195
+ } & {
196
+ __v: number;
197
+ }, i18n: {
198
+ t: import("i18next").TFunction;
199
+ language: string;
200
+ }) => Promise<any>;
201
+ readonly sendVerificationEmail: (this: import("mongoose").Document<unknown, {}, {
202
+ isVerified: boolean;
203
+ locale: string;
204
+ name?: {
205
+ first?: string | null | undefined;
206
+ last?: string | null | undefined;
207
+ nick?: string | null | undefined;
208
+ } | null | undefined;
209
+ createdAt?: NativeDate | null | undefined;
210
+ updatedAt?: NativeDate | null | undefined;
211
+ avatar?: string | null | undefined;
212
+ password?: string | null | undefined;
213
+ email?: string | null | undefined;
214
+ sessionTokens?: {
215
+ token?: string | null | undefined;
216
+ valid?: NativeDate | null | undefined;
217
+ }[] | null | undefined;
218
+ verificationTokens?: {
219
+ token?: string | null | undefined;
220
+ until?: NativeDate | null | undefined;
221
+ }[] | null | undefined;
222
+ passwordRecoveryTokens?: {
223
+ token?: string | null | undefined;
224
+ until?: NativeDate | null | undefined;
225
+ }[] | null | undefined;
226
+ permissions?: string[] | null | undefined;
227
+ roles?: string[] | null | undefined;
228
+ languages?: string[] | null | undefined;
229
+ }, {}, {}> & {
230
+ isVerified: boolean;
231
+ locale: string;
232
+ name?: {
233
+ first?: string | null | undefined;
234
+ last?: string | null | undefined;
235
+ nick?: string | null | undefined;
236
+ } | null | undefined;
237
+ createdAt?: NativeDate | null | undefined;
238
+ updatedAt?: NativeDate | null | undefined;
239
+ avatar?: string | null | undefined;
240
+ password?: string | null | undefined;
241
+ email?: string | null | undefined;
242
+ sessionTokens?: {
243
+ token?: string | null | undefined;
244
+ valid?: NativeDate | null | undefined;
245
+ }[] | null | undefined;
246
+ verificationTokens?: {
247
+ token?: string | null | undefined;
248
+ until?: NativeDate | null | undefined;
249
+ }[] | null | undefined;
250
+ passwordRecoveryTokens?: {
251
+ token?: string | null | undefined;
252
+ until?: NativeDate | null | undefined;
253
+ }[] | null | undefined;
254
+ permissions?: string[] | null | undefined;
255
+ roles?: string[] | null | undefined;
256
+ languages?: string[] | null | undefined;
257
+ } & {
258
+ _id: import("mongoose").Types.ObjectId;
259
+ } & {
260
+ __v: number;
261
+ }, i18n: {
262
+ t: import("i18next").TFunction;
263
+ language: string;
264
+ }) => Promise<any>;
265
+ readonly getPublic: (this: import("mongoose").Document<unknown, {}, {
266
+ isVerified: boolean;
267
+ locale: string;
268
+ name?: {
269
+ first?: string | null | undefined;
270
+ last?: string | null | undefined;
271
+ nick?: string | null | undefined;
272
+ } | null | undefined;
273
+ createdAt?: NativeDate | null | undefined;
274
+ updatedAt?: NativeDate | null | undefined;
275
+ avatar?: string | null | undefined;
276
+ password?: string | null | undefined;
277
+ email?: string | null | undefined;
278
+ sessionTokens?: {
279
+ token?: string | null | undefined;
280
+ valid?: NativeDate | null | undefined;
281
+ }[] | null | undefined;
282
+ verificationTokens?: {
283
+ token?: string | null | undefined;
284
+ until?: NativeDate | null | undefined;
285
+ }[] | null | undefined;
286
+ passwordRecoveryTokens?: {
287
+ token?: string | null | undefined;
288
+ until?: NativeDate | null | undefined;
289
+ }[] | null | undefined;
290
+ permissions?: string[] | null | undefined;
291
+ roles?: string[] | null | undefined;
292
+ languages?: string[] | null | undefined;
293
+ }, {}, {}> & {
294
+ isVerified: boolean;
295
+ locale: string;
296
+ name?: {
297
+ first?: string | null | undefined;
298
+ last?: string | null | undefined;
299
+ nick?: string | null | undefined;
300
+ } | null | undefined;
301
+ createdAt?: NativeDate | null | undefined;
302
+ updatedAt?: NativeDate | null | undefined;
303
+ avatar?: string | null | undefined;
304
+ password?: string | null | undefined;
305
+ email?: string | null | undefined;
306
+ sessionTokens?: {
307
+ token?: string | null | undefined;
308
+ valid?: NativeDate | null | undefined;
309
+ }[] | null | undefined;
310
+ verificationTokens?: {
311
+ token?: string | null | undefined;
312
+ until?: NativeDate | null | undefined;
313
+ }[] | null | undefined;
314
+ passwordRecoveryTokens?: {
315
+ token?: string | null | undefined;
316
+ until?: NativeDate | null | undefined;
317
+ }[] | null | undefined;
318
+ permissions?: string[] | null | undefined;
319
+ roles?: string[] | null | undefined;
320
+ languages?: string[] | null | undefined;
321
+ } & {
322
+ _id: import("mongoose").Types.ObjectId;
323
+ } & {
324
+ __v: number;
325
+ }) => {
326
+ avatar: string | null | undefined;
327
+ name: {
328
+ first?: string | null | undefined;
329
+ last?: string | null | undefined;
330
+ nick?: string | null | undefined;
331
+ } | null | undefined;
332
+ email: string | null | undefined;
333
+ id: any;
334
+ isVerified: boolean;
335
+ permissions: string[] | null | undefined;
336
+ locale: string;
337
+ };
338
+ };
339
+ token: string;
340
+ }>;
@@ -0,0 +1,48 @@
1
+ import { appInstance } from "../helpers/appInstance.js";
2
+ export let serverInstance;
3
+ export let defaultUser;
4
+ export let defaultAuthToken;
5
+ export const setServerInstance = (serverInstanceToSet) => {
6
+ if (serverInstance) {
7
+ throw new Error('Server instance is already set');
8
+ }
9
+ serverInstance = serverInstanceToSet;
10
+ };
11
+ export const setDefaultUser = (userToSet) => {
12
+ if (defaultUser) {
13
+ throw new Error('Default user is already set');
14
+ }
15
+ defaultUser = userToSet;
16
+ };
17
+ export const setDefaultAuthToken = (tokenToSet) => {
18
+ if (defaultAuthToken) {
19
+ throw new Error('Auth token is already set');
20
+ }
21
+ defaultAuthToken = tokenToSet;
22
+ };
23
+ export const getTestServerURL = (urlPart) => `http://127.0.0.1:${appInstance.getConfig('http').port}${urlPart}`;
24
+ export const createDefaultTestUser = async () => {
25
+ if (defaultUser) {
26
+ throw new Error('You already have created default user');
27
+ }
28
+ const User = appInstance.getModel('User');
29
+ const user = await User.create({
30
+ email: 'test@test.com',
31
+ password: 'testPassword',
32
+ isVerified: true,
33
+ name: {
34
+ nick: 'testUserNickName',
35
+ },
36
+ }).catch((e) => {
37
+ console.error(e);
38
+ console.info('That error can happens in case you have custom user model. Please implment user creation by youself');
39
+ });
40
+ if (!user) {
41
+ return false;
42
+ }
43
+ setDefaultUser(user);
44
+ const token = await user.generateToken();
45
+ setDefaultAuthToken(token.token);
46
+ return { user, token: token.token };
47
+ };
48
+ //# sourceMappingURL=testHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testHelpers.js","sourceRoot":"","sources":["../../src/tests/testHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAMxD,MAAM,CAAC,IAAI,cAAuB,CAAC;AACnC,MAAM,CAAC,IAAI,WAAkE,CAAC;AAC9E,MAAM,CAAC,IAAI,gBAAwB,CAAC;AAEpC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,mBAA2B,EAAE,EAAE;IAC/D,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,cAAc,GAAG,mBAAmB,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,SAAgE,EAChE,EAAE;IACF,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IACD,WAAW,GAAG,SAAS,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,UAAkB,EAAE,EAAE;IACxD,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,gBAAgB,GAAG,UAAU,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAE,EAAE,CACnD,oBAAoB,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,OAAO,EAAE,CAAC;AAErE,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,IAAI,EAAE;IAC9C,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAqB,CAAC;IAC9D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC;QAC7B,KAAK,EAAE,eAAe;QACtB,QAAQ,EAAE,cAAc;QACxB,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE;YACJ,IAAI,EAAE,kBAAkB;SACzB;KACF,CAAC,CAAC,KAAK,CAAC,CAAC,CAAQ,EAAE,EAAE;QACpB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,CAAC,IAAI,CACV,qGAAqG,CACtG,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IACD,cAAc,CAAC,IAAI,CAAC,CAAC;IACrB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IACzC,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;AACtC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,70 +1,83 @@
1
1
  {
2
2
  "name": "@adaptivestone/framework",
3
- "version": "5.0.0-beta.4",
3
+ "version": "5.0.0-beta.41",
4
4
  "description": "Adaptive stone node js framework",
5
- "main": "index.js",
6
5
  "type": "module",
7
6
  "engines": {
8
- "node": ">=20.12.0"
7
+ "node": ">=24.0.0"
8
+ },
9
+ "exports": {
10
+ "./package.json": "./package.json",
11
+ "./*": "./dist/*"
9
12
  },
10
13
  "repository": {
11
14
  "type": "git",
12
- "url": "https://gitlab.com/adaptivestone/framework"
15
+ "url": "git+https://github.com/adaptivestone/framework.git"
13
16
  },
14
17
  "homepage": "https://framework.adaptivestone.com/",
15
18
  "scripts": {
16
- "dev": "node --watch ./index.js",
17
- "prod": "node --watch ./cluster.js",
19
+ "build": "rm -rf dist && tsc",
20
+ "postbuild": "cp -R ./src/migrations ./dist/migrations",
21
+ "check:types": "tsc --noEmit",
22
+ "dev": "node --watch ./src/index.ts",
23
+ "prod": "node --watch ./src/cluster.ts",
18
24
  "test": "vitest run",
19
25
  "t": "vitest --coverage=false --reporter=default",
20
- "prettier": "prettier --check '**/*.(js|jsx|ts|tsx|json|css|scss|md)'",
21
- "lint": "eslint '**/*.js'",
22
- "lint:fix": "eslint '**/*.js' --fix",
23
- "codestyle": "npm run prettier && npm run lint",
24
- "prepare": "husky",
25
- "cli": "node cliCommand",
26
+ "format": "biome format",
27
+ "format:fix": "biome format --write",
28
+ "knip": "knip",
29
+ "lint": "biome lint",
30
+ "lint:fix": "biome lint --write",
31
+ "check": "biome check",
32
+ "check:fix": "biome check --write",
33
+ "prepublishOnly": "npm run build",
34
+ "cli": "node cliCommand.ts",
26
35
  "benchmark": "h2load -n 10000 -c 50 -p 'http/1.1' http://localhost:3300/",
27
36
  "benchmark2": "h2load -n 10000 -c 50 https://localhost:3300/",
28
37
  "redis:docker": "docker run --rm -p 6379:6379 redis"
29
38
  },
30
- "author": "Andrey Logunov",
39
+ "author": "Andrei Lahunou",
31
40
  "license": "MIT",
32
41
  "dependencies": {
42
+ "@redis/client": "^5.0.0",
33
43
  "deepmerge": "^4.2.2",
34
44
  "express": "^5.0.1",
35
45
  "formidable": "^3.5.1",
36
- "html-to-text": "^9.0.3",
37
- "i18next": "^24.0.0",
46
+ "i18next": "^25.0.0",
38
47
  "i18next-fs-backend": "^2.0.0",
39
- "juice": "^11.0.0",
40
- "minimist": "^1.2.5",
41
- "mongoose": "^8.0.0",
42
- "nodemailer": "^6.6.3",
43
- "nodemailer-sendmail-transport": "^1.0.2",
44
- "nodemailer-stub-transport": "^1.1.0",
45
- "pug": "^3.0.2",
46
- "rate-limiter-flexible": "^5.0.0",
47
- "redis": "^4.3.1",
48
+ "mongoose": "^8.19.0",
49
+ "rate-limiter-flexible": "^9.0.0",
48
50
  "winston": "^3.3.3",
49
- "winston-transport-sentry-node": "^3.0.0",
51
+ "winston-transport": "^4.9.0",
50
52
  "yup": "^1.0.0"
51
53
  },
52
54
  "devDependencies": {
53
- "@vitest/coverage-v8": "^3.0.0",
54
- "eslint": "^8.0.0",
55
- "eslint-config-airbnb-base": "^15.0.0",
56
- "eslint-config-prettier": "^10.0.0",
57
- "eslint-plugin-prettier": "^5.0.0",
58
- "eslint-plugin-vitest": "^0.4.0",
59
- "husky": "^9.0.0",
60
- "lint-staged": "^15.0.0",
61
- "mongodb-memory-server": "^10.0.0",
62
- "prettier": "^3.0.0",
63
- "vitest": "^3.0.0"
55
+ "@biomejs/biome": "^2.0.6",
56
+ "@sentry/core": "^10.34.0",
57
+ "@sentry/node": "^10.34.0",
58
+ "@types/express": "^5.0.1",
59
+ "@types/formidable": "^3.4.5",
60
+ "@types/node": "^25.0.0",
61
+ "@vitest/coverage-v8": "^4.0.0",
62
+ "lefthook": "^2.0.0",
63
+ "mongodb-memory-server": "^11.0.0",
64
+ "typescript": "^5.8.3",
65
+ "vitest": "^4.0.0"
66
+ },
67
+ "peerDependencies": {
68
+ "@adaptivestone/framework-module-email": "^1.0.0",
69
+ "@sentry/core": "^10.34..0",
70
+ "@sentry/node": "^10.34.0"
64
71
  },
65
- "lint-staged": {
66
- "**/*.{js,jsx,ts,tsx,json,css,scss,md}": [
67
- "prettier --write"
68
- ]
72
+ "peerDependenciesMeta": {
73
+ "@adaptivestone/framework-module-email": {
74
+ "optional": true
75
+ },
76
+ "@sentry/core": {
77
+ "optional": true
78
+ },
79
+ "@sentry/node": {
80
+ "optional": true
81
+ }
69
82
  }
70
83
  }
package/Cli.js DELETED
@@ -1,22 +0,0 @@
1
- import parseArgs from 'minimist';
2
- import mongoose from 'mongoose';
3
- import BaseCli from './modules/BaseCli.js';
4
- import Server from './server.js';
5
-
6
- class Cli extends BaseCli {
7
- constructor(serverConfig) {
8
- mongoose.set('autoIndex', false); // we do not need create indexes on CLI.
9
- const server = new Server(serverConfig);
10
- super(server);
11
- this.args = parseArgs(process.argv.slice(3));
12
- }
13
-
14
- async run() {
15
- await this.server.init({ isSkipModelInit: true, isSkipModelLoading: true });
16
- const command = process.argv[2]?.toLowerCase();
17
- await super.run(command, this.args);
18
- this.app.events.emit('shutdown');
19
- }
20
- }
21
-
22
- export default Cli;
package/cluster.js DELETED
@@ -1,27 +0,0 @@
1
- import cluster from 'node:cluster';
2
- import { cpus } from 'node:os';
3
-
4
- const numCPUs = cpus().length;
5
-
6
- if (cluster.isPrimary) {
7
- // eslint-disable-next-line no-console
8
- console.log(`Master ${process.pid} is running`);
9
- // Fork workers.
10
- for (let i = 0; i < numCPUs; i += 1) {
11
- cluster.fork();
12
- }
13
-
14
- cluster.on('exit', (worker, code, signal) => {
15
- // eslint-disable-next-line no-console
16
- console.log(
17
- `Worker \x1B[45m ${
18
- worker.process.pid
19
- } \x1B[49m \x1B[41m †††† died †††† \x1B[49m. Code: ${
20
- signal || code
21
- }. Restarting...`,
22
- );
23
- cluster.fork();
24
- });
25
- } else {
26
- import('./server.js');
27
- }
@@ -1,75 +0,0 @@
1
- import AbstractCommand from '../modules/AbstractCommand.js';
2
-
3
- // Example: node src/cli createuser --email=somemail@gmail.com --password=somePassword --roles=user,admin,someOtherRoles
4
- class CreateUser extends AbstractCommand {
5
- static get description() {
6
- return 'Create user in a database';
7
- }
8
-
9
- async run() {
10
- const User = this.app.getModel('User');
11
- const { id, email, password, roles, update } = this.args;
12
-
13
- if (!email && !id) {
14
- this.logger.error('Input validation failded');
15
- this.logger.error('Please add "email" or "id" variables');
16
- return false;
17
- }
18
-
19
- let user;
20
-
21
- if (id) {
22
- user = await User.findOne({ _id: id });
23
- } else if (email) {
24
- user = await User.findOne({ email });
25
- }
26
-
27
- if (user && !update) {
28
- this.logger.error(
29
- 'We are found a user in database. But "update" option is not providing. Exitin',
30
- );
31
- return false;
32
- }
33
-
34
- if (!user && !password) {
35
- this.logger.error(
36
- 'For a new user we alway asking for a password. Please provide it and rerun command',
37
- );
38
- return false;
39
- }
40
-
41
- if (!user && !email) {
42
- this.logger.error(
43
- 'For a new user we alway asking for a email. Please provide it and rerun command',
44
- );
45
- return false;
46
- }
47
-
48
- if (!user) {
49
- user = new User();
50
- }
51
-
52
- if (password) {
53
- user.password = password;
54
- }
55
- if (email) {
56
- user.email = email;
57
- }
58
-
59
- if (roles) {
60
- user.roles = roles.split(',');
61
- }
62
-
63
- await user.save();
64
-
65
- await user.generateToken();
66
-
67
- this.logger.info(
68
- `User was created/updated ${JSON.stringify(user, null, 4)}`,
69
- );
70
-
71
- return user;
72
- }
73
- }
74
-
75
- export default CreateUser;
@@ -1,17 +0,0 @@
1
- import AbstractCommand from '../modules/AbstractCommand.js';
2
- import ControllerManager from '../controllers/index.js';
3
-
4
- class Documentation extends AbstractCommand {
5
- static get description() {
6
- return 'Generate documentation (internal)';
7
- }
8
-
9
- async run() {
10
- const CM = new ControllerManager(this.app);
11
- this.app.documentation = [];
12
- await CM.initControllers();
13
- return this.app.documentation;
14
- }
15
- }
16
-
17
- export default Documentation;