eh-commons 0.0.1-testing.97 → 0.0.2-testing.78

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 (280) hide show
  1. package/.prettierrc +2 -1
  2. package/dist/clients/index.d.ts +3 -0
  3. package/dist/clients/index.js +20 -0
  4. package/dist/clients/index.js.map +1 -0
  5. package/dist/clients/rest.client.d.ts +18 -0
  6. package/dist/clients/rest.client.js +101 -0
  7. package/dist/clients/rest.client.js.map +1 -0
  8. package/dist/clients/session.client.d.ts +3 -4
  9. package/dist/clients/session.client.js +4 -4
  10. package/dist/clients/session.client.js.map +1 -1
  11. package/dist/index.d.ts +22 -35
  12. package/dist/index.js +29 -55
  13. package/dist/index.js.map +1 -1
  14. package/dist/models/commons/interfaces/base.interface.d.ts +2 -2
  15. package/dist/models/interfaces/session/session.interface.d.ts +2 -2
  16. package/dist/models/rewards/embedded/origin.embedded.schema.d.ts +2 -2
  17. package/dist/models/rewards/embedded/rewards.embedded.d.ts +2 -2
  18. package/dist/models/s3/embedded/file-log.embedded.d.ts +2 -2
  19. package/dist/models/s3/embedded/file-meta.embedded.d.ts +2 -2
  20. package/dist/models/s3/embedded/file-record.embedded.d.ts +2 -2
  21. package/dist/models/s3/embedded/file-state.embedded.d.ts +2 -2
  22. package/dist/models/s3/embedded/file.embedded.d.ts +2 -2
  23. package/dist/models/s3/embedded/initiator.embedded.d.ts +2 -2
  24. package/dist/models/s3/embedded/s3.embedded.d.ts +2 -2
  25. package/dist/models/session/interfaces/session-client-data.interface.d.ts +2 -2
  26. package/dist/models/util/embedded/address.embedded.d.ts +2 -2
  27. package/dist/models/util/embedded/author.embedded.d.ts +2 -2
  28. package/dist/models/util/embedded/contact.embedded.d.ts +2 -2
  29. package/dist/models/util/embedded/geo-location.embedded.d.ts +2 -2
  30. package/dist/models/util/embedded/i18n.embedded.d.ts +2 -2
  31. package/dist/models/util/embedded/record.embedded.d.ts +2 -2
  32. package/dist/models/util/interfaces/person.interface.d.ts +0 -7
  33. package/dist/models/util/interfaces/person.interface.js +0 -2
  34. package/dist/models/wrappers/rest-wrapper.class.js +1 -4
  35. package/dist/models/wrappers/rest-wrapper.class.js.map +1 -1
  36. package/dist/modules/core/index.d.ts +6 -0
  37. package/dist/modules/core/index.js +23 -0
  38. package/dist/modules/core/index.js.map +1 -0
  39. package/dist/modules/core/models/enums/feed-type.enum.d.ts +6 -0
  40. package/dist/modules/core/models/enums/feed-type.enum.js +11 -0
  41. package/dist/modules/core/models/enums/feed-type.enum.js.map +1 -0
  42. package/dist/modules/core/models/interfaces/feed-thin.interface.d.ts +9 -0
  43. package/dist/modules/core/models/interfaces/feed-thin.interface.js +3 -0
  44. package/dist/modules/core/models/interfaces/feed-thin.interface.js.map +1 -0
  45. package/dist/modules/core/models/interfaces/index.d.ts +4 -0
  46. package/dist/modules/core/models/interfaces/index.js +21 -0
  47. package/dist/modules/core/models/interfaces/index.js.map +1 -0
  48. package/dist/modules/core/models/interfaces/range.interface.d.ts +4 -0
  49. package/dist/modules/core/models/interfaces/range.interface.js +3 -0
  50. package/dist/modules/core/models/interfaces/range.interface.js.map +1 -0
  51. package/dist/modules/core/models/interfaces/ref.interface.d.ts +6 -0
  52. package/dist/modules/core/models/interfaces/ref.interface.js +3 -0
  53. package/dist/modules/core/models/interfaces/ref.interface.js.map +1 -0
  54. package/dist/modules/core/models/interfaces/scope.interface.d.ts +14 -0
  55. package/dist/modules/core/models/interfaces/scope.interface.js +3 -0
  56. package/dist/modules/core/models/interfaces/scope.interface.js.map +1 -0
  57. package/dist/modules/core/models/schemas/index.d.ts +2 -0
  58. package/dist/modules/core/models/schemas/index.js +19 -0
  59. package/dist/modules/core/models/schemas/index.js.map +1 -0
  60. package/dist/modules/core/models/schemas/range.embedded.d.ts +14 -0
  61. package/dist/modules/core/models/schemas/range.embedded.js +29 -0
  62. package/dist/modules/core/models/schemas/range.embedded.js.map +1 -0
  63. package/dist/modules/core/models/schemas/scope.embedded.d.ts +25 -0
  64. package/dist/modules/core/models/schemas/scope.embedded.js +63 -0
  65. package/dist/modules/core/models/schemas/scope.embedded.js.map +1 -0
  66. package/dist/modules/dictionary/index.d.ts +5 -0
  67. package/dist/modules/dictionary/index.js +22 -0
  68. package/dist/modules/dictionary/index.js.map +1 -0
  69. package/dist/modules/dictionary/models/dtos/dictionary-list.dto.d.ts +10 -0
  70. package/dist/modules/dictionary/models/dtos/dictionary-list.dto.js +59 -0
  71. package/dist/modules/dictionary/models/dtos/dictionary-list.dto.js.map +1 -0
  72. package/dist/modules/dictionary/models/interfaces/index.d.ts +27 -0
  73. package/dist/modules/dictionary/models/interfaces/index.js +3 -0
  74. package/dist/modules/dictionary/models/interfaces/index.js.map +1 -0
  75. package/dist/modules/dictionary/models/schemas/index.d.ts +21 -0
  76. package/dist/modules/dictionary/models/schemas/index.js +47 -0
  77. package/dist/modules/dictionary/models/schemas/index.js.map +1 -0
  78. package/dist/modules/dictionary/services/dictionary.service.d.ts +13 -14
  79. package/dist/modules/dictionary/services/dictionary.service.js +43 -96
  80. package/dist/modules/dictionary/services/dictionary.service.js.map +1 -1
  81. package/dist/modules/dmm/dmm.module.d.ts +2 -0
  82. package/dist/modules/dmm/dmm.module.js +26 -0
  83. package/dist/modules/dmm/dmm.module.js.map +1 -0
  84. package/dist/modules/dmm/index.d.ts +4 -0
  85. package/dist/modules/dmm/index.js +21 -0
  86. package/dist/modules/dmm/index.js.map +1 -0
  87. package/dist/modules/dmm/models/interfaces/index.d.ts +12 -0
  88. package/dist/modules/dmm/models/interfaces/index.js +3 -0
  89. package/dist/modules/dmm/models/interfaces/index.js.map +1 -0
  90. package/dist/modules/dmm/models/schemas/index.d.ts +23 -0
  91. package/dist/modules/dmm/models/schemas/index.js +58 -0
  92. package/dist/modules/dmm/models/schemas/index.js.map +1 -0
  93. package/dist/modules/dmm/services/dmm.service.d.ts +26 -0
  94. package/dist/modules/dmm/services/dmm.service.js +40 -0
  95. package/dist/modules/dmm/services/dmm.service.js.map +1 -0
  96. package/dist/modules/emis/emis.module.d.ts +2 -0
  97. package/dist/modules/emis/emis.module.js +24 -0
  98. package/dist/modules/emis/emis.module.js.map +1 -0
  99. package/dist/modules/emis/index.d.ts +3 -0
  100. package/dist/modules/emis/index.js +20 -0
  101. package/dist/modules/emis/index.js.map +1 -0
  102. package/dist/modules/emis/models/interfaces/emis.interface.d.ts +34 -0
  103. package/dist/modules/emis/models/interfaces/emis.interface.js +3 -0
  104. package/dist/modules/emis/models/interfaces/emis.interface.js.map +1 -0
  105. package/dist/modules/emis/services/emis.service.d.ts +8 -0
  106. package/dist/modules/emis/services/emis.service.js +37 -0
  107. package/dist/modules/emis/services/emis.service.js.map +1 -0
  108. package/dist/modules/iam/iam.module.d.ts +2 -0
  109. package/dist/modules/iam/iam.module.js +24 -0
  110. package/dist/modules/iam/iam.module.js.map +1 -0
  111. package/dist/modules/iam/index.d.ts +5 -0
  112. package/dist/modules/iam/index.js +22 -0
  113. package/dist/modules/iam/index.js.map +1 -0
  114. package/dist/modules/iam/models/enums/index.d.ts +6 -0
  115. package/dist/modules/iam/models/enums/index.js +11 -0
  116. package/dist/modules/iam/models/enums/index.js.map +1 -0
  117. package/dist/modules/iam/models/interfaces/index.d.ts +101 -0
  118. package/dist/modules/iam/models/interfaces/index.js +3 -0
  119. package/dist/modules/iam/models/interfaces/index.js.map +1 -0
  120. package/dist/modules/iam/models/schemas/embedded/person.embedded.d.ts +19 -0
  121. package/dist/modules/iam/models/schemas/embedded/person.embedded.js +41 -0
  122. package/dist/modules/iam/models/schemas/embedded/person.embedded.js.map +1 -0
  123. package/dist/modules/iam/models/schemas/embedded/user-person-info.embedded.d.ts +17 -0
  124. package/dist/modules/iam/models/schemas/embedded/user-person-info.embedded.js +31 -0
  125. package/dist/modules/iam/models/schemas/embedded/user-person-info.embedded.js.map +1 -0
  126. package/dist/modules/iam/models/schemas/index.d.ts +2 -0
  127. package/dist/modules/iam/models/schemas/index.js +19 -0
  128. package/dist/modules/iam/models/schemas/index.js.map +1 -0
  129. package/dist/modules/iam/services/iam.service.d.ts +9 -0
  130. package/dist/modules/iam/services/iam.service.js +40 -0
  131. package/dist/modules/iam/services/iam.service.js.map +1 -0
  132. package/dist/modules/otp/index.d.ts +3 -0
  133. package/dist/modules/otp/index.js +20 -0
  134. package/dist/modules/otp/index.js.map +1 -0
  135. package/dist/modules/otp/models/interfaces/index.d.ts +18 -0
  136. package/dist/modules/otp/models/interfaces/index.js +3 -0
  137. package/dist/modules/otp/models/interfaces/index.js.map +1 -0
  138. package/dist/modules/otp/otp.module.d.ts +2 -0
  139. package/dist/modules/otp/otp.module.js +24 -0
  140. package/dist/modules/otp/otp.module.js.map +1 -0
  141. package/dist/modules/otp/services/otp.service.d.ts +11 -0
  142. package/dist/modules/otp/services/otp.service.js +48 -0
  143. package/dist/modules/otp/services/otp.service.js.map +1 -0
  144. package/dist/modules/session/functions/index.d.ts +5 -0
  145. package/dist/modules/session/functions/index.js +28 -0
  146. package/dist/modules/session/functions/index.js.map +1 -0
  147. package/dist/modules/session/guards/permission.guard.d.ts +15 -0
  148. package/dist/modules/session/guards/permission.guard.js +118 -0
  149. package/dist/modules/session/guards/permission.guard.js.map +1 -0
  150. package/dist/modules/session/guards/user.guard.d.ts +12 -0
  151. package/dist/modules/session/guards/user.guard.js +88 -0
  152. package/dist/modules/session/guards/user.guard.js.map +1 -0
  153. package/dist/modules/session/index.d.ts +9 -0
  154. package/dist/modules/session/index.js +26 -0
  155. package/dist/modules/session/index.js.map +1 -0
  156. package/dist/modules/session/models/classes/index.d.ts +3 -0
  157. package/dist/modules/session/models/classes/index.js +7 -0
  158. package/dist/modules/session/models/classes/index.js.map +1 -0
  159. package/dist/modules/session/models/interfaces/index.d.ts +54 -0
  160. package/dist/modules/session/models/interfaces/index.js +7 -0
  161. package/dist/modules/session/models/interfaces/index.js.map +1 -0
  162. package/dist/modules/session/reflectors/permission.reflector.d.ts +2 -0
  163. package/dist/modules/session/reflectors/permission.reflector.js +6 -0
  164. package/dist/modules/session/reflectors/permission.reflector.js.map +1 -0
  165. package/dist/modules/session/services/redis.service.d.ts +16 -0
  166. package/dist/modules/session/services/redis.service.js +94 -0
  167. package/dist/modules/session/services/redis.service.js.map +1 -0
  168. package/dist/modules/session/services/session-v1.service.d.ts +12 -0
  169. package/dist/modules/session/services/session-v1.service.js +36 -0
  170. package/dist/modules/session/services/session-v1.service.js.map +1 -0
  171. package/dist/modules/session/services/session-v2.service.d.ts +17 -0
  172. package/dist/modules/session/services/session-v2.service.js +102 -0
  173. package/dist/modules/session/services/session-v2.service.js.map +1 -0
  174. package/dist/modules/session/session.module.d.ts +2 -0
  175. package/dist/modules/session/session.module.js +27 -0
  176. package/dist/modules/session/session.module.js.map +1 -0
  177. package/dist/modules/storage/index.d.ts +4 -0
  178. package/dist/modules/storage/index.js +21 -0
  179. package/dist/modules/storage/index.js.map +1 -0
  180. package/dist/modules/storage/models/inerfaces/index.d.ts +7 -0
  181. package/dist/modules/storage/models/inerfaces/index.js +3 -0
  182. package/dist/modules/storage/models/inerfaces/index.js.map +1 -0
  183. package/dist/modules/storage/models/schemas/index.d.ts +36 -0
  184. package/dist/modules/storage/models/schemas/index.js +62 -0
  185. package/dist/modules/storage/models/schemas/index.js.map +1 -0
  186. package/dist/modules/storage/services/storage.service.d.ts +9 -0
  187. package/dist/modules/storage/services/storage.service.js +35 -0
  188. package/dist/modules/storage/services/storage.service.js.map +1 -0
  189. package/dist/modules/storage/storage.module.d.ts +2 -0
  190. package/dist/modules/storage/storage.module.js +24 -0
  191. package/dist/modules/storage/storage.module.js.map +1 -0
  192. package/dist/pipes/index.d.ts +13 -0
  193. package/dist/pipes/index.js +64 -0
  194. package/dist/pipes/index.js.map +1 -0
  195. package/dist/pipes/validate-mongo-id.pipe.js.map +1 -1
  196. package/dist/tsconfig.tsbuildinfo +1 -1
  197. package/package.json +16 -18
  198. package/src/clients/index.ts +3 -0
  199. package/src/clients/rest.client.ts +112 -0
  200. package/src/clients/session.client.ts +10 -20
  201. package/src/index.ts +36 -164
  202. package/src/models/commons/interfaces/base.interface.ts +2 -2
  203. package/src/models/interfaces/session/session.interface.ts +6 -6
  204. package/src/models/session/interfaces/session-client-data.interface.ts +2 -2
  205. package/src/models/util/interfaces/person.interface.ts +1 -7
  206. package/src/models/wrappers/rest-wrapper.class.ts +1 -4
  207. package/src/modules/core/index.ts +6 -0
  208. package/src/modules/core/models/enums/feed-type.enum.ts +6 -0
  209. package/src/modules/core/models/interfaces/feed-thin.interface.ts +10 -0
  210. package/src/modules/core/models/interfaces/index.ts +4 -0
  211. package/src/modules/core/models/interfaces/range.interface.ts +4 -0
  212. package/src/modules/core/models/interfaces/ref.interface.ts +7 -0
  213. package/src/modules/core/models/interfaces/scope.interface.ts +15 -0
  214. package/src/modules/core/models/schemas/index.ts +2 -0
  215. package/src/modules/core/models/schemas/range.embedded.ts +13 -0
  216. package/src/modules/core/models/schemas/scope.embedded.ts +41 -0
  217. package/src/modules/dictionary/index.ts +5 -0
  218. package/src/modules/dictionary/{dtos → models/dtos}/dictionary-list.dto.ts +9 -16
  219. package/src/modules/dictionary/models/interfaces/index.ts +31 -0
  220. package/src/modules/dictionary/models/schemas/index.ts +28 -0
  221. package/src/modules/dictionary/services/dictionary.service.ts +55 -149
  222. package/src/modules/dmm/dmm.module.ts +13 -0
  223. package/src/modules/dmm/index.ts +4 -0
  224. package/src/modules/dmm/models/interfaces/index.ts +13 -0
  225. package/src/modules/dmm/models/schemas/index.ts +36 -0
  226. package/src/modules/dmm/services/dmm.service.ts +33 -0
  227. package/src/modules/emis/emis.module.ts +11 -0
  228. package/src/modules/emis/index.ts +3 -0
  229. package/src/modules/emis/models/interfaces/emis.interface.ts +37 -0
  230. package/src/modules/emis/services/emis.service.ts +30 -0
  231. package/src/modules/iam/iam.module.ts +11 -0
  232. package/src/modules/iam/index.ts +5 -0
  233. package/src/modules/iam/models/enums/index.ts +6 -0
  234. package/src/modules/iam/models/interfaces/index.ts +114 -0
  235. package/src/{models/util → modules/iam/models/schemas}/embedded/person.embedded.ts +5 -1
  236. package/src/modules/iam/models/schemas/embedded/user-person-info.embedded.ts +16 -0
  237. package/src/modules/iam/models/schemas/index.ts +2 -0
  238. package/src/modules/iam/services/iam.service.ts +35 -0
  239. package/src/modules/otp/index.ts +3 -0
  240. package/src/modules/otp/models/interfaces/index.ts +20 -0
  241. package/src/modules/otp/otp.module.ts +11 -0
  242. package/src/modules/otp/services/otp.service.ts +48 -0
  243. package/src/modules/session/functions/index.ts +24 -0
  244. package/src/modules/session/guards/permission.guard.ts +122 -0
  245. package/src/modules/session/guards/user.guard.ts +88 -0
  246. package/src/modules/session/index.ts +9 -0
  247. package/src/modules/session/models/classes/index.ts +3 -0
  248. package/src/modules/session/models/interfaces/index.ts +57 -0
  249. package/src/modules/{cache/reflector → session/reflectors}/permission.reflector.ts +1 -1
  250. package/src/modules/{cache → session}/services/redis.service.ts +23 -20
  251. package/src/modules/session/services/session-v1.service.ts +30 -0
  252. package/src/modules/session/services/session-v2.service.ts +113 -0
  253. package/src/modules/session/session.module.ts +14 -0
  254. package/src/modules/storage/index.ts +4 -0
  255. package/src/modules/storage/models/inerfaces/index.ts +8 -0
  256. package/src/modules/storage/models/schemas/index.ts +42 -0
  257. package/src/modules/storage/services/storage.service.ts +29 -0
  258. package/src/modules/storage/storage.module.ts +11 -0
  259. package/src/pipes/index.ts +49 -0
  260. package/src/pipes/validate-mongo-id.pipe.ts +1 -3
  261. package/src/functions/session/keyword.function.ts +0 -14
  262. package/src/models/dictionary/embedded/dictionary.embedded.ts +0 -31
  263. package/src/models/dictionary/interfaces/dictionary-embedded.interface.ts +0 -12
  264. package/src/models/dictionary/interfaces/dictionary-event.interface.ts +0 -6
  265. package/src/models/dictionary/interfaces/dictionary-setting.interface.ts +0 -5
  266. package/src/models/dictionary/interfaces/dictionary.interface.ts +0 -13
  267. package/src/models/session/interfaces/session-user-data.interface.ts +0 -16
  268. package/src/models/um/enums/client-type.enum.ts +0 -6
  269. package/src/models/um/enums/permission-include-strategy.enum.ts +0 -5
  270. package/src/models/um/interfaces/client.interface.ts +0 -23
  271. package/src/models/um/interfaces/credentials.interface.ts +0 -4
  272. package/src/models/um/interfaces/permission.interface.ts +0 -11
  273. package/src/models/um/interfaces/prof-info.interface.ts +0 -5
  274. package/src/models/um/interfaces/role.interface.ts +0 -14
  275. package/src/models/um/interfaces/user-client.interface.ts +0 -10
  276. package/src/models/um/interfaces/user.interface.ts +0 -20
  277. package/src/models/wrappers/permission-guard-config.wrapper.ts +0 -5
  278. package/src/modules/cache/cache.module.ts +0 -13
  279. package/src/modules/cache/guards/permission.guard.ts +0 -109
  280. package/src/modules/cache/services/session.service.ts +0 -23
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "eh-commons",
3
3
  "type": "commonjs",
4
- "version": "0.0.1-testing.97",
4
+ "version": "0.0.2-testing.78",
5
5
  "description": "eh-commons",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -13,28 +13,26 @@
13
13
  "author": "",
14
14
  "license": "ISC",
15
15
  "devDependencies": {
16
- "@types/express": "^4.17.17",
17
- "@types/node": "^18.15.11",
18
- "@typescript-eslint/eslint-plugin": "^6.18.1",
19
- "@typescript-eslint/parser": "^6.18.1",
20
- "eslint": "^8.56.0",
21
- "typescript": "^5.0.4"
16
+ "@types/express": "^5.0.0",
17
+ "@types/node": "^20.14.2",
18
+ "typescript": "^5.4.5"
22
19
  },
23
20
  "dependencies": {
24
- "@nestjs/common": "^10.3.7",
25
- "@nestjs/config": "^3.1.1",
26
- "@nestjs/core": "^10.3.1",
27
- "@nestjs/mongoose": "^10.0.2",
28
- "axios": "^1.7.2",
21
+ "@nestjs/common": "^11.1.13",
22
+ "@nestjs/config": "^4.0.3",
23
+ "@nestjs/core": "^11.1.13",
24
+ "@nestjs/mongoose": "^11.0.4",
25
+ "axios": "^1.13.5",
29
26
  "class-transformer": "^0.5.1",
30
- "class-validator": "^0.14.0",
31
- "express": "^4.18.2",
32
- "ioredis": "^5.3.2",
27
+ "class-validator": "^0.14.1",
28
+ "express": "^5.0.0",
29
+ "ioredis": "^5.9.3",
33
30
  "kafkajs": "^2.2.4",
34
- "mongoose": "^8.0.4",
35
- "qs": "^6.12.1",
31
+ "mongoose": "^8.4.1",
32
+ "qs": "^6.15.0",
36
33
  "rxjs": "^7.8.1",
37
- "winston": "^3.17.0",
34
+ "ua-parser-js": "^2.0.9",
35
+ "winston": "^3.19.0",
38
36
  "winston-graylog2": "^2.1.2"
39
37
  }
40
38
  }
@@ -0,0 +1,3 @@
1
+ export * from './rest.client';
2
+ export * from './logger.client';
3
+ export * from './session.client';
@@ -0,0 +1,112 @@
1
+ import { HttpStatus } from '@nestjs/common';
2
+ import axios, { AxiosInstance, AxiosRequestConfig } from 'axios';
3
+ import { RESTError } from '../models/wrappers/rest-wrapper.class';
4
+
5
+ export interface IAPIConfig {
6
+ name?: string;
7
+ baseUrl: string;
8
+ timeout?: number;
9
+ accessToken?: string;
10
+ }
11
+
12
+ export class RestClient {
13
+ private _name: string;
14
+ private _instance: AxiosInstance;
15
+
16
+ constructor(config: IAPIConfig) {
17
+ this._name = config.name || config.baseUrl;
18
+
19
+ const axiosConfig: AxiosRequestConfig = {
20
+ baseURL: config.baseUrl,
21
+ timeout: config.timeout || 30000,
22
+ };
23
+
24
+ if (config.accessToken) {
25
+ axiosConfig.headers = { 'x-access-token': config.accessToken };
26
+ }
27
+
28
+ this._instance = axios.create(axiosConfig);
29
+ }
30
+
31
+ public async get<T = any>(route: string, sessionToken?: string): Promise<T> {
32
+ try {
33
+ const config = this._buildRequestConfig(sessionToken);
34
+
35
+ if (config) {
36
+ const response = await this._instance.get(route, config);
37
+ return response.data.result.data;
38
+ }
39
+
40
+ const response = await this._instance.get(route);
41
+ return response.data.result.data;
42
+ } catch (e: any) {
43
+ this._handleError(e);
44
+ }
45
+ }
46
+
47
+ public async post<T = any>(route: string, requestBody: any, sessionToken?: string): Promise<T> {
48
+ try {
49
+ const config = this._buildRequestConfig(sessionToken);
50
+
51
+ if (config) {
52
+ const response = await this._instance.post(route, requestBody, config);
53
+ return response.data.result.data;
54
+ }
55
+
56
+ const response = await this._instance.post(route, requestBody);
57
+ return response.data.result.data;
58
+ } catch (e: any) {
59
+ this._handleError(e);
60
+ }
61
+ }
62
+
63
+ public async put<T = any>(route: string, requestBody: any, sessionToken?: string): Promise<T> {
64
+ try {
65
+ const response = await this._instance.put(route, requestBody, this._buildRequestConfig(sessionToken));
66
+ return response.data.result.data;
67
+ } catch (e: any) {
68
+ this._handleError(e);
69
+ }
70
+ }
71
+
72
+ public async delete<T = any>(route: string, sessionToken?: string): Promise<T> {
73
+ try {
74
+ const response = await this._instance.delete(route, this._buildRequestConfig(sessionToken));
75
+ return response.data.result.data;
76
+ } catch (e: any) {
77
+ this._handleError(e);
78
+ }
79
+ }
80
+
81
+ public async patch<T = any>(route: string, requestBody: any, sessionToken?: string): Promise<T> {
82
+ try {
83
+ const response = await this._instance.patch(route, requestBody, this._buildRequestConfig(sessionToken));
84
+ return response.data.result.data;
85
+ } catch (e: any) {
86
+ this._handleError(e);
87
+ }
88
+ }
89
+
90
+ private _buildRequestConfig(sessionToken?: string): AxiosRequestConfig | undefined {
91
+ if (!sessionToken) return undefined;
92
+ return {
93
+ headers: { 'authorization': sessionToken },
94
+ };
95
+ }
96
+
97
+ private _handleError(e: any): never {
98
+ if (e.response) {
99
+ if (e.response.data?.errors?.length && e.response.data.errors[0].keyword) {
100
+ throw new RESTError(e.response.data.errors[0].keyword, null, HttpStatus.BAD_REQUEST);
101
+ } else if (e.response.data?.errors && e.response.data.errors.keyword) {
102
+ // because of damn storage api made by DITO
103
+ throw new RESTError(e.response.data.errors.keyword, null, HttpStatus.BAD_REQUEST);
104
+ }
105
+ throw new RESTError('internal_error', e, HttpStatus.INTERNAL_SERVER_ERROR);
106
+ } else if (e.request) {
107
+ throw new RESTError(`service_unavailable_${this._name}`, e, HttpStatus.SERVICE_UNAVAILABLE);
108
+ } else {
109
+ throw new RESTError(`bad_config_${this._name}`, e, HttpStatus.SERVICE_UNAVAILABLE);
110
+ }
111
+ }
112
+ }
@@ -1,15 +1,9 @@
1
1
  import * as IORedis from 'ioredis';
2
-
3
- import { ISessionUserData } from '../models/session/interfaces/session-user-data.interface';
4
- import {
5
- generateSessionKeyword,
6
- generateUserClientKeyword,
7
- generateUserClientPermissionKeyword,
8
- } from '../functions/session/keyword.function';
9
2
  import { Observable, from, map } from 'rxjs';
10
3
  import { ISessionClientData } from '../models/session/interfaces/session-client-data.interface';
11
- import { IClient } from '../models/um/interfaces/client.interface';
12
- import { IPermission } from '../models/um/interfaces/permission.interface';
4
+ import { IClient, IPermission } from '../modules/iam';
5
+ import { IUserSessionData } from '../modules/session/models/interfaces';
6
+ import { generateSessionKeyword, generateUserClientPermissionKeyword, generateUserClientsKeyword } from '../modules/session';
13
7
 
14
8
  export class SessionClient {
15
9
  private redisClient: IORedis.Redis | IORedis.Cluster;
@@ -30,7 +24,7 @@ export class SessionClient {
30
24
  return from(this.redisClient.del(key));
31
25
  }
32
26
 
33
- public getUserData(token: string): Observable<ISessionUserData> {
27
+ public getUserData(token: string): Observable<IUserSessionData> {
34
28
  const key = generateSessionKeyword(token);
35
29
  const userDataString$ = this.get(key);
36
30
  return userDataString$.pipe(
@@ -40,10 +34,8 @@ export class SessionClient {
40
34
  );
41
35
  }
42
36
 
43
- public getUserClients(
44
- userId: string,
45
- ): Observable<Map<string, ISessionClientData>> {
46
- const key = generateUserClientKeyword(userId);
37
+ public getUserClients(userId: string): Observable<Map<string, ISessionClientData>> {
38
+ const key = generateUserClientsKeyword(userId);
47
39
  const clientDataString$ = this.get(key);
48
40
  return clientDataString$.pipe(
49
41
  map((clientDataString) => {
@@ -62,9 +54,9 @@ export class SessionClient {
62
54
  );
63
55
  }
64
56
 
65
- private parseUser(jsonString: string): ISessionUserData | null {
57
+ private parseUser(jsonString: string): IUserSessionData | null {
66
58
  try {
67
- const parsedUser: ISessionUserData = JSON.parse(jsonString);
59
+ const parsedUser: IUserSessionData = JSON.parse(jsonString);
68
60
  return parsedUser;
69
61
  } catch (error) {
70
62
  return null;
@@ -73,8 +65,7 @@ export class SessionClient {
73
65
 
74
66
  private parseClient(jsonString: string) {
75
67
  try {
76
- const parsedClient: Map<string, ISessionClientData> =
77
- JSON.parse(jsonString);
68
+ const parsedClient: Map<string, ISessionClientData> = JSON.parse(jsonString);
78
69
  return parsedClient;
79
70
  } catch (error) {
80
71
  return null;
@@ -83,8 +74,7 @@ export class SessionClient {
83
74
 
84
75
  private parsePermissions(jsonString: string) {
85
76
  try {
86
- const parsedPermissions: { client: IClient; permissions: IPermission[] } =
87
- JSON.parse(jsonString);
77
+ const parsedPermissions: { client: IClient; permissions: IPermission[] } = JSON.parse(jsonString);
88
78
  return parsedPermissions;
89
79
  } catch (error) {
90
80
  return null;
package/src/index.ts CHANGED
@@ -8,32 +8,12 @@ import { BaseExceptionsFilter } from './filters/base-exception.filter';
8
8
  import { RecordDTO } from './models/dtos/record.dto';
9
9
  import { StateParamDTO } from './models/dtos/state-params.dto';
10
10
  import { RecordState } from './models/util/enums/record-state.enum';
11
- import {
12
- IMongoPage,
13
- RESTError,
14
- RESTPage,
15
- RESTPaging,
16
- RESTQueryParams,
17
- RESTRequestBody,
18
- RESTResponseBody,
19
- RESTResult,
20
- RESTSort,
21
- SortDirection,
22
- } from './models/wrappers/rest-wrapper.class';
23
11
  import { ConfigUtil } from './utils/config-util.class';
24
12
  import { ISession } from './models/interfaces/session/session.interface';
25
- import { ISessionUserData } from './models/session/interfaces/session-user-data.interface';
26
- import { SessionClient } from './clients/session.client';
27
- import { RedisService } from './modules/cache/services/redis.service';
28
- import { SessionService } from './modules/cache/services/session.service';
29
- import { CacheModule } from './modules/cache/cache.module';
30
- import { PermissionGuard } from './modules/cache/guards/permission.guard';
13
+ import { RedisService } from './modules/session/services/redis.service';
31
14
  import { generateUUID } from './functions/generate-uuid.function';
32
- import { Permission } from './modules/cache/reflector/permission.reflector';
33
- import { PermissionsIncludeStrategy } from './models/um/enums/permission-include-strategy.enum';
34
- import { PermissionGuardConfig } from './models/wrappers/permission-guard-config.wrapper';
15
+ import { Permission } from './modules/session/reflectors/permission.reflector';
35
16
  import { ClientPermissions } from './models/wrappers/client-permissions.wrapper';
36
- import { ValidateMongoIdPipe } from './pipes/validate-mongo-id.pipe';
37
17
  import { escapeRegex } from './functions/escape-regex.function';
38
18
  import { translitGeorgiaToLatin } from './functions/transliterate-geo-to-latin';
39
19
  import { getRandomNumberFromRange } from './functions/random-range.function';
@@ -41,57 +21,20 @@ import { sizeOfJson } from './functions/json-size.function';
41
21
  import { HTTPMethod } from './models/util/enums/http-method.enum';
42
22
  import { LogModule } from './modules/log/log.module';
43
23
  import { LogService } from './modules/log/services/log.service';
44
- import { LoggerClient } from './clients/logger.client';
45
24
  import { Env } from './models/util/enums/env.enum';
46
25
  import { ConsoleLogger } from './utils/console-logger.class';
47
-
48
- import { IClient } from './models/um/interfaces/client.interface';
49
-
50
26
  import { IGeoLocation } from './models/util/interfaces/geo-location.interface';
51
-
52
27
  import { II18n } from './models/util/interfaces/i18n.interface';
53
-
54
- import { IPerson } from './models/util/interfaces/person.interface';
55
- import { IRole } from './models/um/interfaces/role.interface';
56
-
57
- import { IUserClient } from './models/um/interfaces/user-client.interface';
58
- import { IUser } from './models/um/interfaces/user.interface';
59
28
  import { AuthorDTO } from './models/dtos/author.dto';
60
29
  import { IAuthor } from './models/util/interfaces/author.interface';
61
- import {
62
- FileLog,
63
- FileLogSchema,
64
- FileLogDocument,
65
- } from './models/s3/embedded/file-log.embedded';
66
- import {
67
- FileMeta,
68
- FileMetaSchema,
69
- FileMetaDocument,
70
- } from './models/s3/embedded/file-meta.embedded';
71
- import {
72
- FileRecord,
73
- FileRecordSchema,
74
- FileRecordDocument,
75
- } from './models/s3/embedded/file-record.embedded';
76
- import {
77
- FileState,
78
- FileStateDocument,
79
- FileStateSchema,
80
- } from './models/s3/embedded/file-state.embedded';
81
- import {
82
- LogInitiator,
83
- LogInitiatorDocument,
84
- LogInitiatorSchema,
85
- } from './models/s3/embedded/initiator.embedded';
30
+ import { FileLog, FileLogSchema, FileLogDocument } from './models/s3/embedded/file-log.embedded';
31
+ import { FileMeta, FileMetaSchema, FileMetaDocument } from './models/s3/embedded/file-meta.embedded';
32
+ import { FileRecord, FileRecordSchema, FileRecordDocument } from './models/s3/embedded/file-record.embedded';
33
+ import { FileState, FileStateDocument, FileStateSchema } from './models/s3/embedded/file-state.embedded';
34
+ import { LogInitiator, LogInitiatorDocument, LogInitiatorSchema } from './models/s3/embedded/initiator.embedded';
86
35
  import { S3, S3Document, S3Schema } from './models/s3/embedded/s3.embedded';
87
36
  import { S3FileState } from './models/s3/enums/s3-file-state.enum';
88
- import {
89
- S3File,
90
- S3FileDocument,
91
- S3FileSchema,
92
- } from './models/s3/embedded/file.embedded';
93
- import { IDictionarySetting } from './models/dictionary/interfaces/dictionary-setting.interface';
94
- import { IDictionary } from './models/dictionary/interfaces/dictionary.interface';
37
+ import { S3File, S3FileDocument, S3FileSchema } from './models/s3/embedded/file.embedded';
95
38
  import { IFileLog } from './models/s3/interfaces/file-log.interface';
96
39
  import { IFileMeta } from './models/s3/interfaces/file-meta.interface';
97
40
  import { IFileRecord } from './models/s3/interfaces/file-record.interface';
@@ -102,75 +45,29 @@ import { IS3 } from './models/s3/interfaces/s3.interface';
102
45
  import { Page } from './models/wrappers/page.wrapper';
103
46
  import { SortPage } from './models/wrappers/sort-page.wrapper';
104
47
  import { Sort } from './models/wrappers/sort.wrapper';
105
- import { ClientType } from './models/um/enums/client-type.enum';
106
48
  import { ResourceType } from './models/emis/enums/resource-type.enum';
107
49
  import { ContactType } from './models/util/enums/contact-type.enum';
108
- import { IPermission } from './models/um/interfaces/permission.interface';
109
- import {
110
- Address,
111
- AddressSchema,
112
- AddressDocument,
113
- } from './models/util/embedded/address.embedded';
50
+ import { Address, AddressSchema, AddressDocument } from './models/util/embedded/address.embedded';
114
51
  import { Author, AuthorSchema } from './models/util/embedded/author.embedded';
115
- import {
116
- Contact,
117
- ContactSchema,
118
- ContactDocument,
119
- } from './models/util/embedded/contact.embedded';
120
- import {
121
- GeoLocation,
122
- GeoLocationSchema,
123
- GeoLocationDocument,
124
- } from './models/util/embedded/geo-location.embedded';
125
- import {
126
- I18n,
127
- I18nSchema,
128
- I18nDocument,
129
- } from './models/util/embedded/i18n.embedded';
130
- import {
131
- Person,
132
- PersonSchema,
133
- PersonDocument,
134
- } from './models/util/embedded/person.embedded';
135
- import {
136
- Record,
137
- RecordSchema,
138
- RecordDocument,
139
- } from './models/util/embedded/record.embedded';
52
+ import { Contact, ContactSchema, ContactDocument } from './models/util/embedded/contact.embedded';
53
+ import { GeoLocation, GeoLocationSchema, GeoLocationDocument } from './models/util/embedded/geo-location.embedded';
54
+ import { I18n, I18nSchema, I18nDocument } from './models/util/embedded/i18n.embedded';
55
+ import { Record, RecordSchema, RecordDocument } from './models/util/embedded/record.embedded';
140
56
  import { IAddress } from './models/util/interfaces/address.interface';
141
57
  import { IContact } from './models/util/interfaces/contact.interface';
142
58
  import { IRecord } from './models/util/interfaces/record.interface';
143
- import { ICredentials } from './models/um/interfaces/credentials.interface';
144
- import { IProfInfo } from './models/um/interfaces/prof-info.interface';
145
- import {
146
- generateSessionKeyword,
147
- generateUserClientKeyword,
148
- generateUserClientPermissionKeyword,
149
- } from './functions/session/keyword.function';
150
59
  import { getSortObj } from './functions/sort-object.function';
151
60
  import { I18nDTO } from './models/dtos/i18n.dto';
152
61
  import { IBase } from './models/commons/interfaces/base.interface';
153
62
  import { Base } from './models/commons/schemas/base.schema';
154
- import {
155
- DictionaryEmbedded,
156
- DictionaryEmbeddedDocument,
157
- DictionaryEmbeddedSchema,
158
- } from './models/dictionary/embedded/dictionary.embedded';
159
- import { IDictionaryEmbedded } from './models/dictionary/interfaces/dictionary-embedded.interface';
160
- import { IDictionaryEvent } from './models/dictionary/interfaces/dictionary-event.interface';
161
- import { DictionaryModule } from './modules/dictionary/dictionary.module';
162
- import { DictionaryService } from './modules/dictionary/services/dictionary.service';
163
63
  import { APP__PORT, APP__DEBUG, APP__ACCESS_TOKEN, MONGODB__CS, KAFKAJS_NO_PARTITIONER_WARNING } from './models/commons/consts/env.variables';
164
64
  import { AccessTokenGuard } from './guards/access-token.guard';
165
- import { ValidatePIDPipe } from './pipes/validate-pid.pipe';
166
65
  import { Reward, RewardDocument, RewardSchema } from './models/rewards/embedded/rewards.embedded';
167
66
  import { RewardQuality } from './models/rewards/enums/reward-quality.enum';
168
67
  import { RewardType } from './models/rewards/enums/reward-type.enum';
169
68
  import { RewardOrigin, RewardOriginDocument, RewardOriginSchema } from './models/rewards/embedded/origin.embedded.schema';
170
69
  import { RewardOriginType } from './models/rewards/enums/reward-origin-type.enum';
171
- import { AppLogger } from './modules/core/services/app-logger.service';
172
- import { CoreModule } from './modules/core/core.module';
173
- import { appLoggerInstance } from './modules/core/instances/app-logger.instance';
70
+ import { IUserSession } from './modules/session/models/interfaces';
174
71
 
175
72
  export {
176
73
  IsMapOfStringsConstraint,
@@ -183,32 +80,15 @@ export {
183
80
  RecordDTO,
184
81
  StateParamDTO,
185
82
  RecordState,
186
- SortDirection,
187
83
  Sort,
188
84
  Page,
189
85
  SortPage,
190
- RESTSort,
191
- RESTPaging,
192
- RESTRequestBody,
193
- RESTPage,
194
- RESTResult,
195
- RESTError,
196
- RESTResponseBody,
197
86
  ConfigUtil,
198
87
  ISession,
199
- ISessionUserData,
200
- SessionClient,
201
88
  RedisService,
202
- SessionService,
203
- CacheModule,
204
- PermissionGuard,
205
89
  generateUUID,
206
90
  Permission,
207
- PermissionsIncludeStrategy,
208
- PermissionGuardConfig,
209
91
  ClientPermissions,
210
- ValidateMongoIdPipe,
211
- ValidatePIDPipe,
212
92
  escapeRegex,
213
93
  translitGeorgiaToLatin,
214
94
  getRandomNumberFromRange,
@@ -216,15 +96,12 @@ export {
216
96
  HTTPMethod,
217
97
  LogModule,
218
98
  LogService,
219
- LoggerClient,
220
99
  Env,
221
100
  ConsoleLogger,
222
101
  IAddress,
223
102
  Address,
224
103
  AddressSchema,
225
104
  AddressDocument,
226
- ClientType,
227
- IClient,
228
105
  ContactType,
229
106
  IContact,
230
107
  Contact,
@@ -238,18 +115,10 @@ export {
238
115
  I18n,
239
116
  I18nSchema,
240
117
  I18nDocument,
241
- IPermission,
242
- IPerson,
243
- Person,
244
- PersonSchema,
245
- PersonDocument,
246
118
  IRecord,
247
119
  Record,
248
120
  RecordSchema,
249
121
  RecordDocument,
250
- IRole,
251
- IUserClient,
252
- IUser,
253
122
  AuthorDTO,
254
123
  IAuthor,
255
124
  Author,
@@ -283,27 +152,11 @@ export {
283
152
  S3Document,
284
153
  S3Schema,
285
154
  S3FileState,
286
- IDictionarySetting,
287
- IDictionary,
288
- RESTQueryParams,
289
- IMongoPage,
290
155
  ResourceType,
291
- ICredentials,
292
- IProfInfo,
293
- generateSessionKeyword,
294
- generateUserClientKeyword,
295
- generateUserClientPermissionKeyword,
296
156
  getSortObj,
297
157
  I18nDTO,
298
158
  Base,
299
159
  IBase,
300
- DictionaryEmbeddedSchema,
301
- DictionaryEmbeddedDocument,
302
- DictionaryEmbedded,
303
- IDictionaryEmbedded,
304
- IDictionaryEvent,
305
- DictionaryModule,
306
- DictionaryService,
307
160
  AccessTokenGuard,
308
161
  APP__PORT,
309
162
  APP__DEBUG,
@@ -319,7 +172,26 @@ export {
319
172
  RewardOriginSchema,
320
173
  RewardOriginType,
321
174
  RewardOriginDocument,
322
- AppLogger,
323
- CoreModule,
324
- appLoggerInstance,
325
175
  };
176
+
177
+ declare global {
178
+ namespace Express {
179
+ interface Request {
180
+ session: IUserSession;
181
+ }
182
+ }
183
+ }
184
+
185
+ export * from './clients';
186
+ export * from './pipes';
187
+
188
+ export * from './models/wrappers/rest-wrapper.class';
189
+
190
+ export * from './modules/core';
191
+ export * from './modules/dictionary';
192
+ export * from './modules/iam';
193
+ export * from './modules/session';
194
+ export * from './modules/emis';
195
+ export * from './modules/otp';
196
+ export * from './modules/storage';
197
+ export * from './modules/dmm';
@@ -1,7 +1,7 @@
1
- import { ObjectId } from 'bson';
1
+ import { Types } from 'mongoose';
2
2
  import { IRecord } from '../../util/interfaces/record.interface';
3
3
 
4
4
  export interface IBase {
5
- _id?: ObjectId;
5
+ _id?: Types.ObjectId | string | null;
6
6
  record?: IRecord;
7
7
  }
@@ -1,9 +1,9 @@
1
- import { ISessionUserData } from "../../session/interfaces/session-user-data.interface";
1
+ import { IUserSessionData } from '../../../modules/session/models/interfaces';
2
2
 
3
3
  export interface ISession {
4
- token: string;
5
- userAgent: string;
6
- createdAt: Date;
7
- expiresAt: Date;
8
- data: ISessionUserData
4
+ token: string;
5
+ userAgent: string;
6
+ createdAt: Date;
7
+ expiresAt: Date;
8
+ data: IUserSessionData;
9
9
  }
@@ -1,5 +1,5 @@
1
- import { IDictionaryEmbedded } from '../../dictionary/interfaces/dictionary-embedded.interface';
2
- import { IPermission } from '../../um/interfaces/permission.interface';
1
+ import { IDictionaryEmbedded } from '../../../modules/dictionary';
2
+ import { IPermission } from '../../../modules/iam';
3
3
  import { IAddress } from '../../util/interfaces/address.interface';
4
4
  import { IContact } from '../../util/interfaces/contact.interface';
5
5
  import { II18n } from '../../util/interfaces/i18n.interface';
@@ -1,7 +1 @@
1
- export interface IPerson{
2
- pid: string;
3
- firstName: string;
4
- lastName: string;
5
- gender: number;
6
- birthDate: Date;
7
- }
1
+
@@ -138,10 +138,7 @@ export class RESTError {
138
138
  constructor(keyword: string, debug?: any, statusCode?: HttpStatus) {
139
139
  this.keyword = keyword;
140
140
  this.debug = debug;
141
- if(!statusCode){
142
- this.statusCode = HttpStatus.BAD_REQUEST;
143
- }
144
- this.statusCode = statusCode;
141
+ this.statusCode = statusCode || HttpStatus.BAD_REQUEST;
145
142
  }
146
143
 
147
144
  /**
@@ -0,0 +1,6 @@
1
+ export * from './models/interfaces';
2
+ export * from './models/schemas';
3
+ export * from './instances/app-logger.instance';
4
+ export * from './services/app-logger.service';
5
+ export * from './models/enums/feed-type.enum';
6
+ export * from './core.module';
@@ -0,0 +1,6 @@
1
+ export enum FeedType {
2
+ EducationalContent = 'educational-content',
3
+ News = 'news',
4
+ Training = 'training',
5
+ Forum = 'forum',
6
+ }
@@ -0,0 +1,10 @@
1
+ import { I18n } from '../../../../models/util/embedded/i18n.embedded';
2
+ import { IRef } from './ref.interface';
3
+ import { IScope } from './scope.interface';
4
+
5
+ export interface IFeedThin {
6
+ ref: IRef;
7
+ textNormal?: I18n;
8
+ textStylized?: I18n;
9
+ scope: IScope;
10
+ }
@@ -0,0 +1,4 @@
1
+ export * from './range.interface';
2
+ export * from './scope.interface';
3
+ export * from './ref.interface';
4
+ export * from './feed-thin.interface';
@@ -0,0 +1,4 @@
1
+ export interface IRangeINT {
2
+ min?: number;
3
+ max?: number;
4
+ }
@@ -0,0 +1,7 @@
1
+ import { Types } from 'mongoose';
2
+ import { FeedType } from '../enums/feed-type.enum';
3
+
4
+ export interface IRef {
5
+ id: Types.ObjectId | string;
6
+ type: FeedType;
7
+ }
@@ -0,0 +1,15 @@
1
+ import { IDictionaryEmbedded } from "../../../dictionary";
2
+ import { IRangeINT } from "./range.interface";
3
+
4
+ export interface IScope {
5
+ ageRange: IRangeINT;
6
+ genders: number[];
7
+ districts: IDictionaryEmbedded[];
8
+ teacherLevels: IDictionaryEmbedded[];
9
+ schoolTypes: IDictionaryEmbedded[];
10
+ languageSectors: IDictionaryEmbedded[];
11
+ subjects: IDictionaryEmbedded[];
12
+ levels: IDictionaryEmbedded[];
13
+ highland: boolean;
14
+ tags: IDictionaryEmbedded[];
15
+ }