@intlayer/backend 3.0.0

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 (464) hide show
  1. package/LICENSE +202 -0
  2. package/dist/cjs/controllers/dictionary.controller.cjs +356 -0
  3. package/dist/cjs/controllers/dictionary.controller.cjs.map +1 -0
  4. package/dist/cjs/controllers/oAuth2.controller.cjs +46 -0
  5. package/dist/cjs/controllers/oAuth2.controller.cjs.map +1 -0
  6. package/dist/cjs/controllers/organization.controller.cjs +354 -0
  7. package/dist/cjs/controllers/organization.controller.cjs.map +1 -0
  8. package/dist/cjs/controllers/project.controller.cjs +298 -0
  9. package/dist/cjs/controllers/project.controller.cjs.map +1 -0
  10. package/dist/cjs/controllers/projectAccessKey.controller.cjs +134 -0
  11. package/dist/cjs/controllers/projectAccessKey.controller.cjs.map +1 -0
  12. package/dist/cjs/controllers/sessionAuth.controller.cjs +616 -0
  13. package/dist/cjs/controllers/sessionAuth.controller.cjs.map +1 -0
  14. package/dist/cjs/controllers/user.controller.cjs +197 -0
  15. package/dist/cjs/controllers/user.controller.cjs.map +1 -0
  16. package/dist/cjs/emails/InviteUserEmail.cjs +297 -0
  17. package/dist/cjs/emails/InviteUserEmail.cjs.map +1 -0
  18. package/dist/cjs/emails/PasswordChangeConfirmation.cjs +148 -0
  19. package/dist/cjs/emails/PasswordChangeConfirmation.cjs.map +1 -0
  20. package/dist/cjs/emails/ResetUserPassword.cjs +209 -0
  21. package/dist/cjs/emails/ResetUserPassword.cjs.map +1 -0
  22. package/dist/cjs/emails/ValidateUserEmail.cjs +230 -0
  23. package/dist/cjs/emails/ValidateUserEmail.cjs.map +1 -0
  24. package/dist/cjs/emails/Welcome.cjs +185 -0
  25. package/dist/cjs/emails/Welcome.cjs.map +1 -0
  26. package/dist/cjs/emails/index.cjs +31 -0
  27. package/dist/cjs/emails/index.cjs.map +1 -0
  28. package/dist/cjs/export.cjs +46 -0
  29. package/dist/cjs/export.cjs.map +1 -0
  30. package/dist/cjs/index.cjs +122 -0
  31. package/dist/cjs/index.cjs.map +1 -0
  32. package/dist/cjs/logger/index.cjs +53 -0
  33. package/dist/cjs/logger/index.cjs.map +1 -0
  34. package/dist/cjs/middlewares/admin.middleware.cjs +44 -0
  35. package/dist/cjs/middlewares/admin.middleware.cjs.map +1 -0
  36. package/dist/cjs/middlewares/oAuth2.middleware.cjs +89 -0
  37. package/dist/cjs/middlewares/oAuth2.middleware.cjs.map +1 -0
  38. package/dist/cjs/middlewares/request.middleware.cjs +41 -0
  39. package/dist/cjs/middlewares/request.middleware.cjs.map +1 -0
  40. package/dist/cjs/middlewares/sessionAuth.middleware.cjs +130 -0
  41. package/dist/cjs/middlewares/sessionAuth.middleware.cjs.map +1 -0
  42. package/dist/cjs/models/dictionary.model.cjs +34 -0
  43. package/dist/cjs/models/dictionary.model.cjs.map +1 -0
  44. package/dist/cjs/models/oAuth2.model.cjs +31 -0
  45. package/dist/cjs/models/oAuth2.model.cjs.map +1 -0
  46. package/dist/cjs/models/organization.model.cjs +34 -0
  47. package/dist/cjs/models/organization.model.cjs.map +1 -0
  48. package/dist/cjs/models/project.model.cjs +31 -0
  49. package/dist/cjs/models/project.model.cjs.map +1 -0
  50. package/dist/cjs/models/user.model.cjs +31 -0
  51. package/dist/cjs/models/user.model.cjs.map +1 -0
  52. package/dist/cjs/routes/dictionary.routes.cjs +156 -0
  53. package/dist/cjs/routes/dictionary.routes.cjs.map +1 -0
  54. package/dist/cjs/routes/organization.routes.cjs +132 -0
  55. package/dist/cjs/routes/organization.routes.cjs.map +1 -0
  56. package/dist/cjs/routes/project.routes.cjs +175 -0
  57. package/dist/cjs/routes/project.routes.cjs.map +1 -0
  58. package/dist/cjs/routes/sessionAuth.routes.cjs +147 -0
  59. package/dist/cjs/routes/sessionAuth.routes.cjs.map +1 -0
  60. package/dist/cjs/routes/user.routes.cjs +96 -0
  61. package/dist/cjs/routes/user.routes.cjs.map +1 -0
  62. package/dist/cjs/schemas/dictionary.schema.cjs +69 -0
  63. package/dist/cjs/schemas/dictionary.schema.cjs.map +1 -0
  64. package/dist/cjs/schemas/oAuth2.schema.cjs +55 -0
  65. package/dist/cjs/schemas/oAuth2.schema.cjs.map +1 -0
  66. package/dist/cjs/schemas/organization.schema.cjs +60 -0
  67. package/dist/cjs/schemas/organization.schema.cjs.map +1 -0
  68. package/dist/cjs/schemas/project.schema.cjs +79 -0
  69. package/dist/cjs/schemas/project.schema.cjs.map +1 -0
  70. package/dist/cjs/schemas/user.schema.cjs +112 -0
  71. package/dist/cjs/schemas/user.schema.cjs.map +1 -0
  72. package/dist/cjs/services/dictionary.service.cjs +166 -0
  73. package/dist/cjs/services/dictionary.service.cjs.map +1 -0
  74. package/dist/cjs/services/email.service.cjs +118 -0
  75. package/dist/cjs/services/email.service.cjs.map +1 -0
  76. package/dist/cjs/services/oAuth2.service.cjs +182 -0
  77. package/dist/cjs/services/oAuth2.service.cjs.map +1 -0
  78. package/dist/cjs/services/organization.service.cjs +95 -0
  79. package/dist/cjs/services/organization.service.cjs.map +1 -0
  80. package/dist/cjs/services/project.service.cjs +87 -0
  81. package/dist/cjs/services/project.service.cjs.map +1 -0
  82. package/dist/cjs/services/projectAccessKey.service.cjs +139 -0
  83. package/dist/cjs/services/projectAccessKey.service.cjs.map +1 -0
  84. package/dist/cjs/services/sessionAuth.service.cjs +386 -0
  85. package/dist/cjs/services/sessionAuth.service.cjs.map +1 -0
  86. package/dist/cjs/services/user.service.cjs +155 -0
  87. package/dist/cjs/services/user.service.cjs.map +1 -0
  88. package/dist/cjs/types/Routes.cjs +17 -0
  89. package/dist/cjs/types/Routes.cjs.map +1 -0
  90. package/dist/cjs/types/dictionary.types.cjs +17 -0
  91. package/dist/cjs/types/dictionary.types.cjs.map +1 -0
  92. package/dist/cjs/types/organization.types.cjs +17 -0
  93. package/dist/cjs/types/organization.types.cjs.map +1 -0
  94. package/dist/cjs/types/project.types.cjs +17 -0
  95. package/dist/cjs/types/project.types.cjs.map +1 -0
  96. package/dist/cjs/types/session.types.cjs +17 -0
  97. package/dist/cjs/types/session.types.cjs.map +1 -0
  98. package/dist/cjs/types/user.types.cjs +17 -0
  99. package/dist/cjs/types/user.types.cjs.map +1 -0
  100. package/dist/cjs/utils/CSRF.cjs +47 -0
  101. package/dist/cjs/utils/CSRF.cjs.map +1 -0
  102. package/dist/cjs/utils/accessControl.cjs +121 -0
  103. package/dist/cjs/utils/accessControl.cjs.map +1 -0
  104. package/dist/cjs/utils/cookies.cjs +59 -0
  105. package/dist/cjs/utils/cookies.cjs.map +1 -0
  106. package/dist/cjs/utils/errors/ErrorHandler.cjs +103 -0
  107. package/dist/cjs/utils/errors/ErrorHandler.cjs.map +1 -0
  108. package/dist/cjs/utils/errors/ErrorsClass.cjs +65 -0
  109. package/dist/cjs/utils/errors/ErrorsClass.cjs.map +1 -0
  110. package/dist/cjs/utils/errors/errorCodes.cjs +837 -0
  111. package/dist/cjs/utils/errors/errorCodes.cjs.map +1 -0
  112. package/dist/cjs/utils/errors/index.cjs +37 -0
  113. package/dist/cjs/utils/errors/index.cjs.map +1 -0
  114. package/dist/cjs/utils/filtersAndPagination/getDictionaryFiltersAndPagination.cjs +55 -0
  115. package/dist/cjs/utils/filtersAndPagination/getDictionaryFiltersAndPagination.cjs.map +1 -0
  116. package/dist/cjs/utils/filtersAndPagination/getFiltersAndPaginationFromBody.cjs +65 -0
  117. package/dist/cjs/utils/filtersAndPagination/getFiltersAndPaginationFromBody.cjs.map +1 -0
  118. package/dist/cjs/utils/filtersAndPagination/getOrganizationFiltersAndPagination.cjs +55 -0
  119. package/dist/cjs/utils/filtersAndPagination/getOrganizationFiltersAndPagination.cjs.map +1 -0
  120. package/dist/cjs/utils/filtersAndPagination/getProjectFiltersAndPagination.cjs +58 -0
  121. package/dist/cjs/utils/filtersAndPagination/getProjectFiltersAndPagination.cjs.map +1 -0
  122. package/dist/cjs/utils/filtersAndPagination/getUserFiltersAndPagination.cjs +52 -0
  123. package/dist/cjs/utils/filtersAndPagination/getUserFiltersAndPagination.cjs.map +1 -0
  124. package/dist/cjs/utils/httpStatusCodes.cjs +93 -0
  125. package/dist/cjs/utils/httpStatusCodes.cjs.map +1 -0
  126. package/dist/cjs/utils/mapper/dictionary.cjs +40 -0
  127. package/dist/cjs/utils/mapper/dictionary.cjs.map +1 -0
  128. package/dist/cjs/utils/mapper/organization.cjs +39 -0
  129. package/dist/cjs/utils/mapper/organization.cjs.map +1 -0
  130. package/dist/cjs/utils/mapper/project.cjs +39 -0
  131. package/dist/cjs/utils/mapper/project.cjs.map +1 -0
  132. package/dist/cjs/utils/mapper/user.cjs +39 -0
  133. package/dist/cjs/utils/mapper/user.cjs.map +1 -0
  134. package/dist/cjs/utils/mongoDB/connectDB.cjs +53 -0
  135. package/dist/cjs/utils/mongoDB/connectDB.cjs.map +1 -0
  136. package/dist/cjs/utils/oAuth2.cjs +50 -0
  137. package/dist/cjs/utils/oAuth2.cjs.map +1 -0
  138. package/dist/cjs/utils/responseData.cjs +66 -0
  139. package/dist/cjs/utils/responseData.cjs.map +1 -0
  140. package/dist/cjs/utils/validation/validateArray.cjs +57 -0
  141. package/dist/cjs/utils/validation/validateArray.cjs.map +1 -0
  142. package/dist/cjs/utils/validation/validateDictionary.cjs +66 -0
  143. package/dist/cjs/utils/validation/validateDictionary.cjs.map +1 -0
  144. package/dist/cjs/utils/validation/validateEmail.cjs +37 -0
  145. package/dist/cjs/utils/validation/validateEmail.cjs.map +1 -0
  146. package/dist/cjs/utils/validation/validateOrganization.cjs +79 -0
  147. package/dist/cjs/utils/validation/validateOrganization.cjs.map +1 -0
  148. package/dist/cjs/utils/validation/validatePhone.cjs +37 -0
  149. package/dist/cjs/utils/validation/validatePhone.cjs.map +1 -0
  150. package/dist/cjs/utils/validation/validateProject.cjs +97 -0
  151. package/dist/cjs/utils/validation/validateProject.cjs.map +1 -0
  152. package/dist/cjs/utils/validation/validateString.cjs +39 -0
  153. package/dist/cjs/utils/validation/validateString.cjs.map +1 -0
  154. package/dist/cjs/utils/validation/validateUser.cjs +73 -0
  155. package/dist/cjs/utils/validation/validateUser.cjs.map +1 -0
  156. package/dist/esm/controllers/dictionary.controller.mjs +321 -0
  157. package/dist/esm/controllers/dictionary.controller.mjs.map +1 -0
  158. package/dist/esm/controllers/oAuth2.controller.mjs +25 -0
  159. package/dist/esm/controllers/oAuth2.controller.mjs.map +1 -0
  160. package/dist/esm/controllers/organization.controller.mjs +317 -0
  161. package/dist/esm/controllers/organization.controller.mjs.map +1 -0
  162. package/dist/esm/controllers/project.controller.mjs +263 -0
  163. package/dist/esm/controllers/project.controller.mjs.map +1 -0
  164. package/dist/esm/controllers/projectAccessKey.controller.mjs +98 -0
  165. package/dist/esm/controllers/projectAccessKey.controller.mjs.map +1 -0
  166. package/dist/esm/controllers/sessionAuth.controller.mjs +570 -0
  167. package/dist/esm/controllers/sessionAuth.controller.mjs.map +1 -0
  168. package/dist/esm/controllers/user.controller.mjs +160 -0
  169. package/dist/esm/controllers/user.controller.mjs.map +1 -0
  170. package/dist/esm/emails/InviteUserEmail.mjs +285 -0
  171. package/dist/esm/emails/InviteUserEmail.mjs.map +1 -0
  172. package/dist/esm/emails/PasswordChangeConfirmation.mjs +134 -0
  173. package/dist/esm/emails/PasswordChangeConfirmation.mjs.map +1 -0
  174. package/dist/esm/emails/ResetUserPassword.mjs +197 -0
  175. package/dist/esm/emails/ResetUserPassword.mjs.map +1 -0
  176. package/dist/esm/emails/ValidateUserEmail.mjs +218 -0
  177. package/dist/esm/emails/ValidateUserEmail.mjs.map +1 -0
  178. package/dist/esm/emails/Welcome.mjs +173 -0
  179. package/dist/esm/emails/Welcome.mjs.map +1 -0
  180. package/dist/esm/emails/index.mjs +6 -0
  181. package/dist/esm/emails/index.mjs.map +1 -0
  182. package/dist/esm/export.mjs +15 -0
  183. package/dist/esm/export.mjs.map +1 -0
  184. package/dist/esm/index.mjs +102 -0
  185. package/dist/esm/index.mjs.map +1 -0
  186. package/dist/esm/logger/index.mjs +29 -0
  187. package/dist/esm/logger/index.mjs.map +1 -0
  188. package/dist/esm/middlewares/admin.middleware.mjs +20 -0
  189. package/dist/esm/middlewares/admin.middleware.mjs.map +1 -0
  190. package/dist/esm/middlewares/oAuth2.middleware.mjs +57 -0
  191. package/dist/esm/middlewares/oAuth2.middleware.mjs.map +1 -0
  192. package/dist/esm/middlewares/request.middleware.mjs +17 -0
  193. package/dist/esm/middlewares/request.middleware.mjs.map +1 -0
  194. package/dist/esm/middlewares/sessionAuth.middleware.mjs +96 -0
  195. package/dist/esm/middlewares/sessionAuth.middleware.mjs.map +1 -0
  196. package/dist/esm/models/dictionary.model.mjs +10 -0
  197. package/dist/esm/models/dictionary.model.mjs.map +1 -0
  198. package/dist/esm/models/oAuth2.model.mjs +7 -0
  199. package/dist/esm/models/oAuth2.model.mjs.map +1 -0
  200. package/dist/esm/models/organization.model.mjs +10 -0
  201. package/dist/esm/models/organization.model.mjs.map +1 -0
  202. package/dist/esm/models/project.model.mjs +7 -0
  203. package/dist/esm/models/project.model.mjs.map +1 -0
  204. package/dist/esm/models/user.model.mjs +7 -0
  205. package/dist/esm/models/user.model.mjs.map +1 -0
  206. package/dist/esm/routes/dictionary.routes.mjs +139 -0
  207. package/dist/esm/routes/dictionary.routes.mjs.map +1 -0
  208. package/dist/esm/routes/organization.routes.mjs +116 -0
  209. package/dist/esm/routes/organization.routes.mjs.map +1 -0
  210. package/dist/esm/routes/project.routes.mjs +162 -0
  211. package/dist/esm/routes/project.routes.mjs.map +1 -0
  212. package/dist/esm/routes/sessionAuth.routes.mjs +134 -0
  213. package/dist/esm/routes/sessionAuth.routes.mjs.map +1 -0
  214. package/dist/esm/routes/user.routes.mjs +78 -0
  215. package/dist/esm/routes/user.routes.mjs.map +1 -0
  216. package/dist/esm/schemas/dictionary.schema.mjs +45 -0
  217. package/dist/esm/schemas/dictionary.schema.mjs.map +1 -0
  218. package/dist/esm/schemas/oAuth2.schema.mjs +31 -0
  219. package/dist/esm/schemas/oAuth2.schema.mjs.map +1 -0
  220. package/dist/esm/schemas/organization.schema.mjs +40 -0
  221. package/dist/esm/schemas/organization.schema.mjs.map +1 -0
  222. package/dist/esm/schemas/project.schema.mjs +59 -0
  223. package/dist/esm/schemas/project.schema.mjs.map +1 -0
  224. package/dist/esm/schemas/user.schema.mjs +81 -0
  225. package/dist/esm/schemas/user.schema.mjs.map +1 -0
  226. package/dist/esm/services/dictionary.service.mjs +134 -0
  227. package/dist/esm/services/dictionary.service.mjs.map +1 -0
  228. package/dist/esm/services/email.service.mjs +114 -0
  229. package/dist/esm/services/email.service.mjs.map +1 -0
  230. package/dist/esm/services/oAuth2.service.mjs +150 -0
  231. package/dist/esm/services/oAuth2.service.mjs.map +1 -0
  232. package/dist/esm/services/organization.service.mjs +68 -0
  233. package/dist/esm/services/organization.service.mjs.map +1 -0
  234. package/dist/esm/services/project.service.mjs +60 -0
  235. package/dist/esm/services/project.service.mjs.map +1 -0
  236. package/dist/esm/services/projectAccessKey.service.mjs +113 -0
  237. package/dist/esm/services/projectAccessKey.service.mjs.map +1 -0
  238. package/dist/esm/services/sessionAuth.service.mjs +337 -0
  239. package/dist/esm/services/sessionAuth.service.mjs.map +1 -0
  240. package/dist/esm/services/user.service.mjs +122 -0
  241. package/dist/esm/services/user.service.mjs.map +1 -0
  242. package/dist/esm/types/Routes.mjs +1 -0
  243. package/dist/esm/types/Routes.mjs.map +1 -0
  244. package/dist/esm/types/dictionary.types.mjs +1 -0
  245. package/dist/esm/types/dictionary.types.mjs.map +1 -0
  246. package/dist/esm/types/organization.types.mjs +1 -0
  247. package/dist/esm/types/organization.types.mjs.map +1 -0
  248. package/dist/esm/types/project.types.mjs +1 -0
  249. package/dist/esm/types/project.types.mjs.map +1 -0
  250. package/dist/esm/types/session.types.mjs +1 -0
  251. package/dist/esm/types/session.types.mjs.map +1 -0
  252. package/dist/esm/types/user.types.mjs +1 -0
  253. package/dist/esm/types/user.types.mjs.map +1 -0
  254. package/dist/esm/utils/CSRF.mjs +21 -0
  255. package/dist/esm/utils/CSRF.mjs.map +1 -0
  256. package/dist/esm/utils/accessControl.mjs +95 -0
  257. package/dist/esm/utils/accessControl.mjs.map +1 -0
  258. package/dist/esm/utils/cookies.mjs +32 -0
  259. package/dist/esm/utils/cookies.mjs.map +1 -0
  260. package/dist/esm/utils/errors/ErrorHandler.mjs +79 -0
  261. package/dist/esm/utils/errors/ErrorHandler.mjs.map +1 -0
  262. package/dist/esm/utils/errors/ErrorsClass.mjs +40 -0
  263. package/dist/esm/utils/errors/ErrorsClass.mjs.map +1 -0
  264. package/dist/esm/utils/errors/errorCodes.mjs +813 -0
  265. package/dist/esm/utils/errors/errorCodes.mjs.map +1 -0
  266. package/dist/esm/utils/errors/index.mjs +10 -0
  267. package/dist/esm/utils/errors/index.mjs.map +1 -0
  268. package/dist/esm/utils/filtersAndPagination/getDictionaryFiltersAndPagination.mjs +33 -0
  269. package/dist/esm/utils/filtersAndPagination/getDictionaryFiltersAndPagination.mjs.map +1 -0
  270. package/dist/esm/utils/filtersAndPagination/getFiltersAndPaginationFromBody.mjs +41 -0
  271. package/dist/esm/utils/filtersAndPagination/getFiltersAndPaginationFromBody.mjs.map +1 -0
  272. package/dist/esm/utils/filtersAndPagination/getOrganizationFiltersAndPagination.mjs +33 -0
  273. package/dist/esm/utils/filtersAndPagination/getOrganizationFiltersAndPagination.mjs.map +1 -0
  274. package/dist/esm/utils/filtersAndPagination/getProjectFiltersAndPagination.mjs +36 -0
  275. package/dist/esm/utils/filtersAndPagination/getProjectFiltersAndPagination.mjs.map +1 -0
  276. package/dist/esm/utils/filtersAndPagination/getUserFiltersAndPagination.mjs +30 -0
  277. package/dist/esm/utils/filtersAndPagination/getUserFiltersAndPagination.mjs.map +1 -0
  278. package/dist/esm/utils/httpStatusCodes.mjs +69 -0
  279. package/dist/esm/utils/httpStatusCodes.mjs.map +1 -0
  280. package/dist/esm/utils/mapper/dictionary.mjs +16 -0
  281. package/dist/esm/utils/mapper/dictionary.mjs.map +1 -0
  282. package/dist/esm/utils/mapper/organization.mjs +15 -0
  283. package/dist/esm/utils/mapper/organization.mjs.map +1 -0
  284. package/dist/esm/utils/mapper/project.mjs +15 -0
  285. package/dist/esm/utils/mapper/project.mjs.map +1 -0
  286. package/dist/esm/utils/mapper/user.mjs +14 -0
  287. package/dist/esm/utils/mapper/user.mjs.map +1 -0
  288. package/dist/esm/utils/mongoDB/connectDB.mjs +19 -0
  289. package/dist/esm/utils/mongoDB/connectDB.mjs.map +1 -0
  290. package/dist/esm/utils/oAuth2.mjs +29 -0
  291. package/dist/esm/utils/oAuth2.mjs.map +1 -0
  292. package/dist/esm/utils/responseData.mjs +41 -0
  293. package/dist/esm/utils/responseData.mjs.map +1 -0
  294. package/dist/esm/utils/validation/validateArray.mjs +33 -0
  295. package/dist/esm/utils/validation/validateArray.mjs.map +1 -0
  296. package/dist/esm/utils/validation/validateDictionary.mjs +42 -0
  297. package/dist/esm/utils/validation/validateDictionary.mjs.map +1 -0
  298. package/dist/esm/utils/validation/validateEmail.mjs +13 -0
  299. package/dist/esm/utils/validation/validateEmail.mjs.map +1 -0
  300. package/dist/esm/utils/validation/validateOrganization.mjs +52 -0
  301. package/dist/esm/utils/validation/validateOrganization.mjs.map +1 -0
  302. package/dist/esm/utils/validation/validatePhone.mjs +13 -0
  303. package/dist/esm/utils/validation/validatePhone.mjs.map +1 -0
  304. package/dist/esm/utils/validation/validateProject.mjs +70 -0
  305. package/dist/esm/utils/validation/validateProject.mjs.map +1 -0
  306. package/dist/esm/utils/validation/validateString.mjs +15 -0
  307. package/dist/esm/utils/validation/validateString.mjs.map +1 -0
  308. package/dist/esm/utils/validation/validateUser.mjs +47 -0
  309. package/dist/esm/utils/validation/validateUser.mjs.map +1 -0
  310. package/dist/types/controllers/dictionary.controller.d.ts +70 -0
  311. package/dist/types/controllers/dictionary.controller.d.ts.map +1 -0
  312. package/dist/types/controllers/oAuth2.controller.d.ts +14 -0
  313. package/dist/types/controllers/oAuth2.controller.d.ts.map +1 -0
  314. package/dist/types/controllers/organization.controller.d.ts +72 -0
  315. package/dist/types/controllers/organization.controller.d.ts.map +1 -0
  316. package/dist/types/controllers/project.controller.d.ts +59 -0
  317. package/dist/types/controllers/project.controller.d.ts.map +1 -0
  318. package/dist/types/controllers/projectAccessKey.controller.d.ts +27 -0
  319. package/dist/types/controllers/projectAccessKey.controller.d.ts.map +1 -0
  320. package/dist/types/controllers/sessionAuth.controller.d.ts +120 -0
  321. package/dist/types/controllers/sessionAuth.controller.d.ts.map +1 -0
  322. package/dist/types/controllers/user.controller.d.ts +56 -0
  323. package/dist/types/controllers/user.controller.d.ts.map +1 -0
  324. package/dist/types/emails/InviteUserEmail.d.ts +22 -0
  325. package/dist/types/emails/InviteUserEmail.d.ts.map +1 -0
  326. package/dist/types/emails/PasswordChangeConfirmation.d.ts +16 -0
  327. package/dist/types/emails/PasswordChangeConfirmation.d.ts.map +1 -0
  328. package/dist/types/emails/ResetUserPassword.d.ts +17 -0
  329. package/dist/types/emails/ResetUserPassword.d.ts.map +1 -0
  330. package/dist/types/emails/ValidateUserEmail.d.ts +17 -0
  331. package/dist/types/emails/ValidateUserEmail.d.ts.map +1 -0
  332. package/dist/types/emails/Welcome.d.ts +17 -0
  333. package/dist/types/emails/Welcome.d.ts.map +1 -0
  334. package/dist/types/emails/index.d.ts +6 -0
  335. package/dist/types/emails/index.d.ts.map +1 -0
  336. package/dist/types/export.d.ts +19 -0
  337. package/dist/types/export.d.ts.map +1 -0
  338. package/dist/types/index.d.ts +4 -0
  339. package/dist/types/index.d.ts.map +1 -0
  340. package/dist/types/logger/index.d.ts +2 -0
  341. package/dist/types/logger/index.d.ts.map +1 -0
  342. package/dist/types/middlewares/admin.middleware.d.ts +10 -0
  343. package/dist/types/middlewares/admin.middleware.d.ts.map +1 -0
  344. package/dist/types/middlewares/oAuth2.middleware.d.ts +9 -0
  345. package/dist/types/middlewares/oAuth2.middleware.d.ts.map +1 -0
  346. package/dist/types/middlewares/request.middleware.d.ts +4 -0
  347. package/dist/types/middlewares/request.middleware.d.ts.map +1 -0
  348. package/dist/types/middlewares/sessionAuth.middleware.d.ts +20 -0
  349. package/dist/types/middlewares/sessionAuth.middleware.d.ts.map +1 -0
  350. package/dist/types/models/dictionary.model.d.ts +11 -0
  351. package/dist/types/models/dictionary.model.d.ts.map +1 -0
  352. package/dist/types/models/oAuth2.model.d.ts +10 -0
  353. package/dist/types/models/oAuth2.model.d.ts.map +1 -0
  354. package/dist/types/models/organization.model.d.ts +12 -0
  355. package/dist/types/models/organization.model.d.ts.map +1 -0
  356. package/dist/types/models/project.model.d.ts +12 -0
  357. package/dist/types/models/project.model.d.ts.map +1 -0
  358. package/dist/types/models/user.model.d.ts +3 -0
  359. package/dist/types/models/user.model.d.ts.map +1 -0
  360. package/dist/types/routes/dictionary.routes.d.ts +42 -0
  361. package/dist/types/routes/dictionary.routes.d.ts.map +1 -0
  362. package/dist/types/routes/organization.routes.d.ts +47 -0
  363. package/dist/types/routes/organization.routes.d.ts.map +1 -0
  364. package/dist/types/routes/project.routes.d.ts +57 -0
  365. package/dist/types/routes/project.routes.d.ts.map +1 -0
  366. package/dist/types/routes/sessionAuth.routes.d.ts +66 -0
  367. package/dist/types/routes/sessionAuth.routes.d.ts.map +1 -0
  368. package/dist/types/routes/user.routes.d.ts +42 -0
  369. package/dist/types/routes/user.routes.d.ts.map +1 -0
  370. package/dist/types/schemas/dictionary.schema.d.ts +16 -0
  371. package/dist/types/schemas/dictionary.schema.d.ts.map +1 -0
  372. package/dist/types/schemas/oAuth2.schema.d.ts +19 -0
  373. package/dist/types/schemas/oAuth2.schema.d.ts.map +1 -0
  374. package/dist/types/schemas/organization.schema.d.ts +17 -0
  375. package/dist/types/schemas/organization.schema.d.ts.map +1 -0
  376. package/dist/types/schemas/project.schema.d.ts +17 -0
  377. package/dist/types/schemas/project.schema.d.ts.map +1 -0
  378. package/dist/types/schemas/user.schema.d.ts +12 -0
  379. package/dist/types/schemas/user.schema.d.ts.map +1 -0
  380. package/dist/types/services/dictionary.service.d.ts +70 -0
  381. package/dist/types/services/dictionary.service.d.ts.map +1 -0
  382. package/dist/types/services/email.service.d.ts +18 -0
  383. package/dist/types/services/email.service.d.ts.map +1 -0
  384. package/dist/types/services/oAuth2.service.d.ts +85 -0
  385. package/dist/types/services/oAuth2.service.d.ts.map +1 -0
  386. package/dist/types/services/organization.service.d.ts +43 -0
  387. package/dist/types/services/organization.service.d.ts.map +1 -0
  388. package/dist/types/services/project.service.d.ts +43 -0
  389. package/dist/types/services/project.service.d.ts.map +1 -0
  390. package/dist/types/services/projectAccessKey.service.d.ts +16 -0
  391. package/dist/types/services/projectAccessKey.service.d.ts.map +1 -0
  392. package/dist/types/services/sessionAuth.service.d.ts +148 -0
  393. package/dist/types/services/sessionAuth.service.d.ts.map +1 -0
  394. package/dist/types/services/user.service.d.ts +89 -0
  395. package/dist/types/services/user.service.d.ts.map +1 -0
  396. package/dist/types/types/Routes.d.ts +7 -0
  397. package/dist/types/types/Routes.d.ts.map +1 -0
  398. package/dist/types/types/dictionary.types.d.ts +35 -0
  399. package/dist/types/types/dictionary.types.d.ts.map +1 -0
  400. package/dist/types/types/organization.types.d.ts +21 -0
  401. package/dist/types/types/organization.types.d.ts.map +1 -0
  402. package/dist/types/types/project.types.d.ts +40 -0
  403. package/dist/types/types/project.types.d.ts.map +1 -0
  404. package/dist/types/types/session.types.d.ts +22 -0
  405. package/dist/types/types/session.types.d.ts.map +1 -0
  406. package/dist/types/types/user.types.d.ts +28 -0
  407. package/dist/types/types/user.types.d.ts.map +1 -0
  408. package/dist/types/utils/CSRF.d.ts +3 -0
  409. package/dist/types/utils/CSRF.d.ts.map +1 -0
  410. package/dist/types/utils/accessControl.d.ts +58 -0
  411. package/dist/types/utils/accessControl.d.ts.map +1 -0
  412. package/dist/types/utils/cookies.d.ts +12 -0
  413. package/dist/types/utils/cookies.d.ts.map +1 -0
  414. package/dist/types/utils/errors/ErrorHandler.d.ts +32 -0
  415. package/dist/types/utils/errors/ErrorHandler.d.ts.map +1 -0
  416. package/dist/types/utils/errors/ErrorsClass.d.ts +26 -0
  417. package/dist/types/utils/errors/ErrorsClass.d.ts.map +1 -0
  418. package/dist/types/utils/errors/errorCodes.d.ts +811 -0
  419. package/dist/types/utils/errors/errorCodes.d.ts.map +1 -0
  420. package/dist/types/utils/errors/index.d.ts +4 -0
  421. package/dist/types/utils/errors/index.d.ts.map +1 -0
  422. package/dist/types/utils/filtersAndPagination/getDictionaryFiltersAndPagination.d.ts +23 -0
  423. package/dist/types/utils/filtersAndPagination/getDictionaryFiltersAndPagination.d.ts.map +1 -0
  424. package/dist/types/utils/filtersAndPagination/getFiltersAndPaginationFromBody.d.ts +22 -0
  425. package/dist/types/utils/filtersAndPagination/getFiltersAndPaginationFromBody.d.ts.map +1 -0
  426. package/dist/types/utils/filtersAndPagination/getOrganizationFiltersAndPagination.d.ts +31 -0
  427. package/dist/types/utils/filtersAndPagination/getOrganizationFiltersAndPagination.d.ts.map +1 -0
  428. package/dist/types/utils/filtersAndPagination/getProjectFiltersAndPagination.d.ts +24 -0
  429. package/dist/types/utils/filtersAndPagination/getProjectFiltersAndPagination.d.ts.map +1 -0
  430. package/dist/types/utils/filtersAndPagination/getUserFiltersAndPagination.d.ts +22 -0
  431. package/dist/types/utils/filtersAndPagination/getUserFiltersAndPagination.d.ts.map +1 -0
  432. package/dist/types/utils/httpStatusCodes.d.ts +395 -0
  433. package/dist/types/utils/httpStatusCodes.d.ts.map +1 -0
  434. package/dist/types/utils/mapper/dictionary.d.ts +12 -0
  435. package/dist/types/utils/mapper/dictionary.d.ts.map +1 -0
  436. package/dist/types/utils/mapper/organization.d.ts +9 -0
  437. package/dist/types/utils/mapper/organization.d.ts.map +1 -0
  438. package/dist/types/utils/mapper/project.d.ts +9 -0
  439. package/dist/types/utils/mapper/project.d.ts.map +1 -0
  440. package/dist/types/utils/mapper/user.d.ts +14 -0
  441. package/dist/types/utils/mapper/user.d.ts.map +1 -0
  442. package/dist/types/utils/mongoDB/connectDB.d.ts +3 -0
  443. package/dist/types/utils/mongoDB/connectDB.d.ts.map +1 -0
  444. package/dist/types/utils/oAuth2.d.ts +6 -0
  445. package/dist/types/utils/oAuth2.d.ts.map +1 -0
  446. package/dist/types/utils/responseData.d.ts +53 -0
  447. package/dist/types/utils/responseData.d.ts.map +1 -0
  448. package/dist/types/utils/validation/validateArray.d.ts +13 -0
  449. package/dist/types/utils/validation/validateArray.d.ts.map +1 -0
  450. package/dist/types/utils/validation/validateDictionary.d.ts +12 -0
  451. package/dist/types/utils/validation/validateDictionary.d.ts.map +1 -0
  452. package/dist/types/utils/validation/validateEmail.d.ts +10 -0
  453. package/dist/types/utils/validation/validateEmail.d.ts.map +1 -0
  454. package/dist/types/utils/validation/validateOrganization.d.ts +15 -0
  455. package/dist/types/utils/validation/validateOrganization.d.ts.map +1 -0
  456. package/dist/types/utils/validation/validatePhone.d.ts +10 -0
  457. package/dist/types/utils/validation/validatePhone.d.ts.map +1 -0
  458. package/dist/types/utils/validation/validateProject.d.ts +15 -0
  459. package/dist/types/utils/validation/validateProject.d.ts.map +1 -0
  460. package/dist/types/utils/validation/validateString.d.ts +10 -0
  461. package/dist/types/utils/validation/validateString.d.ts.map +1 -0
  462. package/dist/types/utils/validation/validateUser.d.ts +15 -0
  463. package/dist/types/utils/validation/validateUser.d.ts.map +1 -0
  464. package/package.json +115 -0
@@ -0,0 +1,95 @@
1
+ import { logger } from './../logger/index.mjs';
2
+ import { HttpStatusCodes } from './httpStatusCodes.mjs';
3
+ var AccessRule = /* @__PURE__ */ ((AccessRule2) => {
4
+ AccessRule2["none"] = "none";
5
+ AccessRule2["authenticated"] = "authenticated";
6
+ AccessRule2["admin"] = "admin";
7
+ AccessRule2["noneAuthenticated"] = "none-authenticated";
8
+ AccessRule2["hasOrganization"] = "has-organization";
9
+ AccessRule2["hasProject"] = "has-project";
10
+ AccessRule2["hasBearer"] = "has-bearer";
11
+ return AccessRule2;
12
+ })(AccessRule || {});
13
+ const accessControl = (res, accessRule) => {
14
+ const accessRuleArray = Array.isArray(accessRule) ? accessRule : [accessRule];
15
+ const localsAuthInformation = res.locals;
16
+ const { user, organization, project, authType } = localsAuthInformation;
17
+ if (accessRuleArray.includes("none" /* none */)) {
18
+ return {
19
+ success: true,
20
+ message: null,
21
+ data: { user, organization, project, authType }
22
+ };
23
+ }
24
+ let success = true;
25
+ const messages = [];
26
+ if (accessRuleArray.includes("authenticated" /* authenticated */)) {
27
+ if (!user) {
28
+ success = false;
29
+ messages.push("User is not authenticated");
30
+ }
31
+ }
32
+ if (accessRuleArray.includes("none-authenticated" /* noneAuthenticated */)) {
33
+ if (user) {
34
+ success = false;
35
+ messages.push("User is authenticated");
36
+ }
37
+ }
38
+ if (accessRuleArray.includes("has-organization" /* hasOrganization */)) {
39
+ if (!organization) {
40
+ success = false;
41
+ messages.push("Organization is not set");
42
+ }
43
+ }
44
+ if (accessRuleArray.includes("has-project" /* hasProject */)) {
45
+ if (!project) {
46
+ success = false;
47
+ messages.push("Project is not set");
48
+ }
49
+ }
50
+ const knownRules = Object.values(AccessRule);
51
+ const unknownRules = accessRuleArray.filter(
52
+ (rule) => !knownRules.includes(rule)
53
+ );
54
+ if (unknownRules.length > 0) {
55
+ success = false;
56
+ messages.push(`Unknown access rules: ${unknownRules.join(", ")}`);
57
+ }
58
+ return {
59
+ success,
60
+ message: messages.join(", "),
61
+ data: { user, organization, project, authType }
62
+ };
63
+ };
64
+ const accessControlMiddleWare = (...accessRules) => (_req, res, next) => {
65
+ let hasAccess = false;
66
+ for (const ruleGroup of accessRules) {
67
+ if (Array.isArray(ruleGroup)) {
68
+ const accessResults = ruleGroup.map(
69
+ (rule) => accessControl(res, rule).success
70
+ );
71
+ hasAccess = accessResults.every((result) => result);
72
+ } else {
73
+ const accessResult = accessControl(res, ruleGroup);
74
+ if (accessResult.success) {
75
+ hasAccess = true;
76
+ }
77
+ }
78
+ if (hasAccess) {
79
+ break;
80
+ }
81
+ }
82
+ if (!hasAccess) {
83
+ logger.error("Access denied");
84
+ const errorStatusCode = HttpStatusCodes.FORBIDDEN_403;
85
+ res.sendStatus(errorStatusCode);
86
+ return;
87
+ }
88
+ next();
89
+ };
90
+ export {
91
+ AccessRule,
92
+ accessControl,
93
+ accessControlMiddleWare
94
+ };
95
+ //# sourceMappingURL=accessControl.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/accessControl.ts"],"sourcesContent":["import { logger } from '@logger';\nimport { ResponseWithInformation } from '@middlewares/sessionAuth.middleware';\nimport type { NextFunction, Request } from 'express';\nimport { HttpStatusCodes } from './httpStatusCodes';\n\nexport enum AccessRule {\n none = 'none',\n authenticated = 'authenticated',\n admin = 'admin',\n noneAuthenticated = 'none-authenticated',\n hasOrganization = 'has-organization',\n hasProject = 'has-project',\n hasBearer = 'has-bearer',\n}\n\nexport const accessControl = <R extends AccessRule | AccessRule[]>(\n res: ResponseWithInformation,\n accessRule: R\n) => {\n const accessRuleArray: AccessRule[] = Array.isArray(accessRule)\n ? accessRule\n : [accessRule];\n\n const localsAuthInformation = res.locals;\n const { user, organization, project, authType } = localsAuthInformation;\n\n // If 'none' access rule is present, immediately return success\n if (accessRuleArray.includes(AccessRule.none)) {\n return {\n success: true,\n message: null,\n data: { user, organization, project, authType },\n };\n }\n\n let success = true;\n const messages: string[] = [];\n\n // Check for 'authenticated' access rule\n if (accessRuleArray.includes(AccessRule.authenticated)) {\n if (!user) {\n success = false;\n messages.push('User is not authenticated');\n }\n }\n\n // Check for 'admin' access rule\n // if (accessRuleArray.includes(AccessRule.admin)) {\n // if (!user?.role.includes('admin')) {\n // success = false;\n // messages.push('User is not an admin');\n // }\n // }\n\n // Check for 'none-authenticated' access rule\n if (accessRuleArray.includes(AccessRule.noneAuthenticated)) {\n if (user) {\n success = false;\n messages.push('User is authenticated');\n }\n }\n\n // Check for 'has-organization' access rule\n if (accessRuleArray.includes(AccessRule.hasOrganization)) {\n if (!organization) {\n success = false;\n messages.push('Organization is not set');\n }\n }\n\n // Check for 'has-project' access rule\n if (accessRuleArray.includes(AccessRule.hasProject)) {\n if (!project) {\n success = false;\n messages.push('Project is not set');\n }\n }\n\n // Handle unknown access rules\n const knownRules = Object.values(AccessRule);\n const unknownRules = accessRuleArray.filter(\n (rule) => !knownRules.includes(rule)\n );\n if (unknownRules.length > 0) {\n success = false;\n messages.push(`Unknown access rules: ${unknownRules.join(', ')}`);\n }\n\n return {\n success,\n message: messages.join(', '),\n data: { user, organization, project, authType },\n };\n};\n\n/**\n * Middleware to control API access based on access rules.\n *\n * This middleware allows for multiple access rules to be passed, either as individual `AccessRule` or\n * an array of `AccessRule` groups. Access is granted if at least one of the following conditions is met:\n *\n * - The user satisfies all `AccessRule` within any group of rules passed as an array.\n * - The user satisfies any single `AccessRule` passed individually.\n *\n * Example usage:\n *\n * ```typescript\n * // Allow access if the user has both `hasProject` and `hasOrganization`, or if they have `admin` rights\n * app.use('/protected-route', apiAccessControlMiddleWare([AccessRule.hasProject, AccessRule.hasOrganization], AccessRule.admin));\n * ```\n *\n * In this example:\n * - The user will be granted access if they have both `hasProject` and `hasOrganization`.\n * - Alternatively, the user will also be granted access if they have `admin` privileges.\n *\n * @param {...(AccessRule | AccessRule[])[]} accessRules - One or more access rules or groups of access rules.\n * - Single `AccessRule`: The user must satisfy this rule for access to be granted.\n * - Array of `AccessRule`: The user must satisfy all rules in the array for access to be granted.\n * @returns {Function} Express middleware function that checks if the user has the required access.\n *\n * If the user does not meet any of the provided access rules, a 403 Forbidden status is returned.\n *\n * @example\n * // Example 1: Require admin privileges\n * app.use('/admin', apiAccessControlMiddleWare(AccessRule.admin));\n *\n * @example\n * // Example 2: Require both project and organization access, or admin privileges\n * app.use('/dashboard', apiAccessControlMiddleWare([AccessRule.hasProject, AccessRule.hasOrganization], AccessRule.admin));\n */\nexport const accessControlMiddleWare =\n (...accessRules: (AccessRule | AccessRule[])[]) =>\n (\n _req: Request<unknown>,\n res: ResponseWithInformation,\n next: NextFunction\n ): void => {\n let hasAccess = false;\n\n // Iterate over each access rule group (either single AccessRule or an array of AccessRules)\n for (const ruleGroup of accessRules) {\n if (Array.isArray(ruleGroup)) {\n // If ruleGroup is an array, check if all rules in the group are satisfied\n const accessResults = ruleGroup.map(\n (rule) => accessControl(res, rule).success\n );\n hasAccess = accessResults.every((result) => result); // All rules must be satisfied in this case\n } else {\n // Single rule: just check this one\n const accessResult = accessControl(res, ruleGroup);\n if (accessResult.success) {\n hasAccess = true;\n }\n }\n\n // If access is granted at any point, stop further checks\n if (hasAccess) {\n break;\n }\n }\n\n // If no access rule group was satisfied, deny access\n if (!hasAccess) {\n logger.error('Access denied');\n\n const errorStatusCode = HttpStatusCodes.FORBIDDEN_403;\n res.sendStatus(errorStatusCode);\n return;\n }\n\n next();\n };\n"],"mappings":"AAAA,SAAS,cAAc;AAGvB,SAAS,uBAAuB;AAEzB,IAAK,aAAL,kBAAKA,gBAAL;AACL,EAAAA,YAAA,UAAO;AACP,EAAAA,YAAA,mBAAgB;AAChB,EAAAA,YAAA,WAAQ;AACR,EAAAA,YAAA,uBAAoB;AACpB,EAAAA,YAAA,qBAAkB;AAClB,EAAAA,YAAA,gBAAa;AACb,EAAAA,YAAA,eAAY;AAPF,SAAAA;AAAA,GAAA;AAUL,MAAM,gBAAgB,CAC3B,KACA,eACG;AACH,QAAM,kBAAgC,MAAM,QAAQ,UAAU,IAC1D,aACA,CAAC,UAAU;AAEf,QAAM,wBAAwB,IAAI;AAClC,QAAM,EAAE,MAAM,cAAc,SAAS,SAAS,IAAI;AAGlD,MAAI,gBAAgB,SAAS,iBAAe,GAAG;AAC7C,WAAO;AAAA,MACL,SAAS;AAAA,MACT,SAAS;AAAA,MACT,MAAM,EAAE,MAAM,cAAc,SAAS,SAAS;AAAA,IAChD;AAAA,EACF;AAEA,MAAI,UAAU;AACd,QAAM,WAAqB,CAAC;AAG5B,MAAI,gBAAgB,SAAS,mCAAwB,GAAG;AACtD,QAAI,CAAC,MAAM;AACT,gBAAU;AACV,eAAS,KAAK,2BAA2B;AAAA,IAC3C;AAAA,EACF;AAWA,MAAI,gBAAgB,SAAS,4CAA4B,GAAG;AAC1D,QAAI,MAAM;AACR,gBAAU;AACV,eAAS,KAAK,uBAAuB;AAAA,IACvC;AAAA,EACF;AAGA,MAAI,gBAAgB,SAAS,wCAA0B,GAAG;AACxD,QAAI,CAAC,cAAc;AACjB,gBAAU;AACV,eAAS,KAAK,yBAAyB;AAAA,IACzC;AAAA,EACF;AAGA,MAAI,gBAAgB,SAAS,8BAAqB,GAAG;AACnD,QAAI,CAAC,SAAS;AACZ,gBAAU;AACV,eAAS,KAAK,oBAAoB;AAAA,IACpC;AAAA,EACF;AAGA,QAAM,aAAa,OAAO,OAAO,UAAU;AAC3C,QAAM,eAAe,gBAAgB;AAAA,IACnC,CAAC,SAAS,CAAC,WAAW,SAAS,IAAI;AAAA,EACrC;AACA,MAAI,aAAa,SAAS,GAAG;AAC3B,cAAU;AACV,aAAS,KAAK,yBAAyB,aAAa,KAAK,IAAI,CAAC,EAAE;AAAA,EAClE;AAEA,SAAO;AAAA,IACL;AAAA,IACA,SAAS,SAAS,KAAK,IAAI;AAAA,IAC3B,MAAM,EAAE,MAAM,cAAc,SAAS,SAAS;AAAA,EAChD;AACF;AAqCO,MAAM,0BACX,IAAI,gBACJ,CACE,MACA,KACA,SACS;AACT,MAAI,YAAY;AAGhB,aAAW,aAAa,aAAa;AACnC,QAAI,MAAM,QAAQ,SAAS,GAAG;AAE5B,YAAM,gBAAgB,UAAU;AAAA,QAC9B,CAAC,SAAS,cAAc,KAAK,IAAI,EAAE;AAAA,MACrC;AACA,kBAAY,cAAc,MAAM,CAAC,WAAW,MAAM;AAAA,IACpD,OAAO;AAEL,YAAM,eAAe,cAAc,KAAK,SAAS;AACjD,UAAI,aAAa,SAAS;AACxB,oBAAY;AAAA,MACd;AAAA,IACF;AAGA,QAAI,WAAW;AACb;AAAA,IACF;AAAA,EACF;AAGA,MAAI,CAAC,WAAW;AACd,WAAO,MAAM,eAAe;AAE5B,UAAM,kBAAkB,gBAAgB;AACxC,QAAI,WAAW,eAAe;AAC9B;AAAA,EACF;AAEA,OAAK;AACP;","names":["AccessRule"]}
@@ -0,0 +1,32 @@
1
+ const MAX_AGE = 3 * 24 * 60 * 60 * 1e3;
2
+ var Cookies = /* @__PURE__ */ ((Cookies2) => {
3
+ Cookies2["JWT_AUTH"] = "intlayer_auth";
4
+ Cookies2["JWT_USER"] = "intlayer_user";
5
+ Cookies2["JWT_ORGANIZATION"] = "intlayer_organization";
6
+ Cookies2["JWT_PROJECT"] = "intlayer_project";
7
+ Cookies2["XSRF_TOKEN"] = "XSRF-TOKEN";
8
+ return Cookies2;
9
+ })(Cookies || {});
10
+ const getCookieOptions = (overwriteOption = {}) => ({
11
+ maxAge: MAX_AGE,
12
+ path: "/",
13
+ domain: process.env.DOMAIN,
14
+ httpOnly: true,
15
+ secure: process.env.NODE_ENV === "production",
16
+ // Enable for HTTPS in production
17
+ sameSite: "strict",
18
+ priority: "high",
19
+ ...overwriteOption
20
+ });
21
+ const getClearCookieOptions = (overwriteOption = {}) => ({
22
+ ...getCookieOptions(),
23
+ maxAge: 1,
24
+ ...overwriteOption
25
+ });
26
+ export {
27
+ Cookies,
28
+ MAX_AGE,
29
+ getClearCookieOptions,
30
+ getCookieOptions
31
+ };
32
+ //# sourceMappingURL=cookies.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/cookies.ts"],"sourcesContent":["import type { CookieOptions } from 'express';\n\nexport const MAX_AGE = 3 * 24 * 60 * 60 * 1000; // 3 days\n\nexport enum Cookies {\n JWT_AUTH = 'intlayer_auth',\n JWT_USER = 'intlayer_user',\n JWT_ORGANIZATION = 'intlayer_organization',\n JWT_PROJECT = 'intlayer_project',\n XSRF_TOKEN = 'XSRF-TOKEN',\n}\n\nexport const getCookieOptions = (\n overwriteOption: Partial<CookieOptions> = {}\n): CookieOptions => ({\n maxAge: MAX_AGE,\n path: '/',\n domain: process.env.DOMAIN,\n httpOnly: true,\n secure: process.env.NODE_ENV === 'production', // Enable for HTTPS in production\n sameSite: 'strict',\n priority: 'high',\n ...overwriteOption,\n});\n\nexport const getClearCookieOptions = (\n overwriteOption: Partial<CookieOptions> = {}\n): CookieOptions => ({\n ...getCookieOptions(),\n maxAge: 1,\n ...overwriteOption,\n});\n"],"mappings":"AAEO,MAAM,UAAU,IAAI,KAAK,KAAK,KAAK;AAEnC,IAAK,UAAL,kBAAKA,aAAL;AACL,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,cAAW;AACX,EAAAA,SAAA,sBAAmB;AACnB,EAAAA,SAAA,iBAAc;AACd,EAAAA,SAAA,gBAAa;AALH,SAAAA;AAAA,GAAA;AAQL,MAAM,mBAAmB,CAC9B,kBAA0C,CAAC,OACxB;AAAA,EACnB,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,QAAQ,QAAQ,IAAI;AAAA,EACpB,UAAU;AAAA,EACV,QAAQ,QAAQ,IAAI,aAAa;AAAA;AAAA,EACjC,UAAU;AAAA,EACV,UAAU;AAAA,EACV,GAAG;AACL;AAEO,MAAM,wBAAwB,CACnC,kBAA0C,CAAC,OACxB;AAAA,EACnB,GAAG,iBAAiB;AAAA,EACpB,QAAQ;AAAA,EACR,GAAG;AACL;","names":["Cookies"]}
@@ -0,0 +1,79 @@
1
+ import { logger } from './../../logger/index.mjs';
2
+ import { formatPaginatedResponse, formatResponse } from './../../utils/responseData.mjs';
3
+ import { t } from "express-intlayer";
4
+ import { errorData } from './errorCodes.mjs';
5
+ import { HttpStatusCodes } from './../../export.mjs';
6
+ class ErrorHandler {
7
+ /**
8
+ * Handles generic error responses by formatting and sending a JSON response.
9
+ * @param res - The response object provided by Express.js.
10
+ * @param errorKey - A key representing the specific error.
11
+ * @param statusCode - (Optional) A specific HTTP status code to use for the response.
12
+ * @param isPaginatedResponse - Flag to determine if the response should be paginated.
13
+ */
14
+ static handleGenericErrorResponse(res, errorKey, errorDetails, statusCode, isPaginatedResponse = false) {
15
+ const error = errorData[errorKey];
16
+ const status = statusCode ?? error.statusCode;
17
+ this.handleCustomErrorResponse(
18
+ res,
19
+ errorKey,
20
+ error.message,
21
+ errorDetails,
22
+ status,
23
+ isPaginatedResponse
24
+ );
25
+ }
26
+ /**
27
+ * Handles application-specific error responses by formatting and sending a JSON response.
28
+ * @param res - The response object provided by Express.js.
29
+ * @param error - The error object.
30
+ * @param isPaginatedResponse - Flag to determine if the response should be paginated.
31
+ */
32
+ static handleAppErrorResponse(res, error, errorDetails, isPaginatedResponse = false) {
33
+ const isMultilingual = error.isMultilingual ?? false;
34
+ this.handleCustomErrorResponse(
35
+ res,
36
+ error.errorKey,
37
+ isMultilingual ? error.multilingualMessage : JSON.stringify(error.message),
38
+ errorDetails,
39
+ error.httpStatusCode,
40
+ isPaginatedResponse
41
+ );
42
+ }
43
+ /**
44
+ * Handles more customizable error responses with detailed error messages and codes.
45
+ * @param res - The response object.
46
+ * @param errorKey - Error code key used to fetch the corresponding message and default status.
47
+ * @param message - The localized error message object.
48
+ * @param statusCode - (Optional) HTTP status code, defaults to 500 if not specified.
49
+ * @param isPaginatedResponse - Determines if the error should be part of a paginated response.
50
+ */
51
+ static handleCustomErrorResponse(res, errorKey, message, errorDetails, statusCode, isPaginatedResponse = false) {
52
+ logger.error(message?.en ?? message);
53
+ const status = statusCode ?? HttpStatusCodes.INTERNAL_SERVER_ERROR_500;
54
+ if (isPaginatedResponse) {
55
+ const responseData2 = formatPaginatedResponse({
56
+ error: {
57
+ code: errorKey,
58
+ message: typeof message === "string" ? message : t(message)
59
+ },
60
+ status
61
+ });
62
+ res.status(status).json(responseData2);
63
+ return;
64
+ }
65
+ const responseData = formatResponse({
66
+ error: {
67
+ code: errorKey,
68
+ message: t(message),
69
+ ...errorDetails
70
+ },
71
+ status
72
+ });
73
+ res.status(status).json(responseData);
74
+ }
75
+ }
76
+ export {
77
+ ErrorHandler
78
+ };
79
+ //# sourceMappingURL=ErrorHandler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/utils/errors/ErrorHandler.ts"],"sourcesContent":["// Import required modules and types from their respective locations.\nimport { logger } from '@logger';\nimport { formatPaginatedResponse, formatResponse } from '@utils/responseData';\nimport type { Response } from 'express';\n// @ts-ignore express-intlayer not build yet\nimport { t, LanguageContent } from 'express-intlayer';\nimport { ErrorCodes, errorData } from './errorCodes';\nimport { AppError } from './ErrorsClass';\nimport { HttpStatusCodes, UserAPI } from '@/export';\n\n// Define a class named 'ErrorHandler' to encapsulate error handling logic.\nexport class ErrorHandler {\n /**\n * Handles generic error responses by formatting and sending a JSON response.\n * @param res - The response object provided by Express.js.\n * @param errorKey - A key representing the specific error.\n * @param statusCode - (Optional) A specific HTTP status code to use for the response.\n * @param isPaginatedResponse - Flag to determine if the response should be paginated.\n */\n static handleGenericErrorResponse(\n res: Response,\n errorKey: ErrorCodes,\n errorDetails?: object,\n statusCode?: HttpStatusCodes,\n isPaginatedResponse: boolean = false\n ) {\n const error = errorData[errorKey];\n const status = statusCode ?? error.statusCode; // Use the provided status code or default to the one in errorData.\n\n // Delegate to a more customizable error response handler.\n this.handleCustomErrorResponse(\n res,\n errorKey,\n error.message,\n errorDetails,\n status,\n isPaginatedResponse\n );\n }\n\n /**\n * Handles application-specific error responses by formatting and sending a JSON response.\n * @param res - The response object provided by Express.js.\n * @param error - The error object.\n * @param isPaginatedResponse - Flag to determine if the response should be paginated.\n */\n static handleAppErrorResponse(\n res: Response,\n error: AppError,\n errorDetails?: object,\n isPaginatedResponse: boolean = false\n ) {\n const isMultilingual = error.isMultilingual ?? false;\n // Delegate to a more customizable error response handler.\n this.handleCustomErrorResponse(\n res,\n error.errorKey,\n isMultilingual\n ? error.multilingualMessage\n : JSON.stringify(error.message),\n errorDetails,\n error.httpStatusCode,\n isPaginatedResponse\n );\n }\n\n /**\n * Handles more customizable error responses with detailed error messages and codes.\n * @param res - The response object.\n * @param errorKey - Error code key used to fetch the corresponding message and default status.\n * @param message - The localized error message object.\n * @param statusCode - (Optional) HTTP status code, defaults to 500 if not specified.\n * @param isPaginatedResponse - Determines if the error should be part of a paginated response.\n */\n static handleCustomErrorResponse<T>(\n res: Response,\n errorKey: ErrorCodes | string,\n message: LanguageContent<string> | string,\n errorDetails?: object,\n statusCode?: HttpStatusCodes,\n isPaginatedResponse: boolean = false\n ) {\n logger.error((message as { en: string })?.en ?? message); // Log the English version of the error message.\n const status = statusCode ?? HttpStatusCodes.INTERNAL_SERVER_ERROR_500; // Default to 500 if no status code is provided.\n\n if (isPaginatedResponse) {\n // Format the response as a paginated error response if requested.\n const responseData = formatPaginatedResponse<T>({\n error: {\n code: errorKey,\n message: typeof message === 'string' ? message : t(message),\n },\n status,\n });\n res.status(status).json(responseData);\n return;\n }\n\n // Format the response as a standard non-paginated error response.\n const responseData = formatResponse<UserAPI>({\n error: {\n code: errorKey,\n message: t(message),\n ...errorDetails,\n },\n status,\n });\n\n res.status(status).json(responseData);\n }\n}\n"],"mappings":"AACA,SAAS,cAAc;AACvB,SAAS,yBAAyB,sBAAsB;AAGxD,SAAS,SAA0B;AACnC,SAAqB,iBAAiB;AAEtC,SAAS,uBAAgC;AAGlC,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQxB,OAAO,2BACL,KACA,UACA,cACA,YACA,sBAA+B,OAC/B;AACA,UAAM,QAAQ,UAAU,QAAQ;AAChC,UAAM,SAAS,cAAc,MAAM;AAGnC,SAAK;AAAA,MACH;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,uBACL,KACA,OACA,cACA,sBAA+B,OAC/B;AACA,UAAM,iBAAiB,MAAM,kBAAkB;AAE/C,SAAK;AAAA,MACH;AAAA,MACA,MAAM;AAAA,MACN,iBACI,MAAM,sBACN,KAAK,UAAU,MAAM,OAAO;AAAA,MAChC;AAAA,MACA,MAAM;AAAA,MACN;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,OAAO,0BACL,KACA,UACA,SACA,cACA,YACA,sBAA+B,OAC/B;AACA,WAAO,MAAO,SAA4B,MAAM,OAAO;AACvD,UAAM,SAAS,cAAc,gBAAgB;AAE7C,QAAI,qBAAqB;AAEvB,YAAMA,gBAAe,wBAA2B;AAAA,QAC9C,OAAO;AAAA,UACL,MAAM;AAAA,UACN,SAAS,OAAO,YAAY,WAAW,UAAU,EAAE,OAAO;AAAA,QAC5D;AAAA,QACA;AAAA,MACF,CAAC;AACD,UAAI,OAAO,MAAM,EAAE,KAAKA,aAAY;AACpC;AAAA,IACF;AAGA,UAAM,eAAe,eAAwB;AAAA,MAC3C,OAAO;AAAA,QACL,MAAM;AAAA,QACN,SAAS,EAAE,OAAO;AAAA,QAClB,GAAG;AAAA,MACL;AAAA,MACA;AAAA,IACF,CAAC;AAED,QAAI,OAAO,MAAM,EAAE,KAAK,YAAY;AAAA,EACtC;AACF;","names":["responseData"]}
@@ -0,0 +1,40 @@
1
+ import { HttpStatusCodes } from './../../utils/httpStatusCodes.mjs';
2
+ import { t } from "express-intlayer";
3
+ import { errorData } from './errorCodes.mjs';
4
+ class AppError extends Error {
5
+ name;
6
+ isMultilingual = true;
7
+ errorKey;
8
+ message;
9
+ multilingualMessage;
10
+ httpStatusCode;
11
+ messageDetails;
12
+ /**
13
+ * Constructor for the custom error class.
14
+ * @param multilingualMessage - The error message which can be a simple string or a multilingual object.
15
+ * @param httpStatusCode - Optional HTTP status code, defaults to 500 Internal Server Error.
16
+ */
17
+ constructor(multilingualMessage, errorKey, httpStatusCode = HttpStatusCodes.INTERNAL_SERVER_ERROR_500, messageDetails) {
18
+ const message = t(multilingualMessage);
19
+ super(message);
20
+ this.message = message;
21
+ this.name = "AppError";
22
+ this.errorKey = errorKey;
23
+ this.multilingualMessage = multilingualMessage;
24
+ this.httpStatusCode = httpStatusCode;
25
+ this.messageDetails = messageDetails;
26
+ Error.captureStackTrace(this, this.constructor);
27
+ }
28
+ }
29
+ class GenericError extends AppError {
30
+ constructor(errorKey, messageDetails) {
31
+ const multilingualMessage = errorData[errorKey].message;
32
+ const httpStatusCode = errorData[errorKey].statusCode;
33
+ super(multilingualMessage, errorKey, httpStatusCode, messageDetails);
34
+ }
35
+ }
36
+ export {
37
+ AppError,
38
+ GenericError
39
+ };
40
+ //# sourceMappingURL=ErrorsClass.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/utils/errors/ErrorsClass.ts"],"sourcesContent":["import { HttpStatusCodes } from '@utils/httpStatusCodes';\n// @ts-ignore express-intlayer not build yet\nimport { t, type LanguageContent } from 'express-intlayer';\nimport { ErrorCodes, errorData } from './errorCodes';\n\n/**\n * Custom error class that extends the native JavaScript Error class.\n * This class supports multilingual error messages and HTTP status codes.\n */\nexport class AppError extends Error {\n public name: string;\n public isMultilingual: boolean = true;\n public errorKey: string;\n public message: string;\n public multilingualMessage: LanguageContent<string>;\n public httpStatusCode: HttpStatusCodes;\n public messageDetails?: object;\n\n /**\n * Constructor for the custom error class.\n * @param multilingualMessage - The error message which can be a simple string or a multilingual object.\n * @param httpStatusCode - Optional HTTP status code, defaults to 500 Internal Server Error.\n */\n constructor(\n multilingualMessage: LanguageContent<string>,\n errorKey: string,\n httpStatusCode: HttpStatusCodes = HttpStatusCodes.INTERNAL_SERVER_ERROR_500,\n messageDetails?: object\n ) {\n const message = t(multilingualMessage); // Translate message based on current locale.\n\n super(message); // Use translated message for the superclass constructor.\n this.message = message;\n this.name = 'AppError';\n this.errorKey = errorKey;\n this.multilingualMessage = multilingualMessage; // Store original message format for potential use.\n this.httpStatusCode = httpStatusCode; // Set the HTTP status code.\n this.messageDetails = messageDetails; // Store any additional message details.\n\n // Capture the stack trace to exclude the constructor call.\n Error.captureStackTrace(this, this.constructor);\n }\n}\n\nexport class GenericError extends AppError {\n constructor(errorKey: ErrorCodes, messageDetails?: object) {\n const multilingualMessage = errorData[errorKey].message;\n const httpStatusCode = errorData[errorKey].statusCode;\n\n super(multilingualMessage, errorKey, httpStatusCode, messageDetails);\n }\n}\n"],"mappings":"AAAA,SAAS,uBAAuB;AAEhC,SAAS,SAA+B;AACxC,SAAqB,iBAAiB;AAM/B,MAAM,iBAAiB,MAAM;AAAA,EAC3B;AAAA,EACA,iBAA0B;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOP,YACE,qBACA,UACA,iBAAkC,gBAAgB,2BAClD,gBACA;AACA,UAAM,UAAU,EAAE,mBAAmB;AAErC,UAAM,OAAO;AACb,SAAK,UAAU;AACf,SAAK,OAAO;AACZ,SAAK,WAAW;AAChB,SAAK,sBAAsB;AAC3B,SAAK,iBAAiB;AACtB,SAAK,iBAAiB;AAGtB,UAAM,kBAAkB,MAAM,KAAK,WAAW;AAAA,EAChD;AACF;AAEO,MAAM,qBAAqB,SAAS;AAAA,EACzC,YAAY,UAAsB,gBAAyB;AACzD,UAAM,sBAAsB,UAAU,QAAQ,EAAE;AAChD,UAAM,iBAAiB,UAAU,QAAQ,EAAE;AAE3C,UAAM,qBAAqB,UAAU,gBAAgB,cAAc;AAAA,EACrE;AACF;","names":[]}