@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,41 @@
1
+ import { HttpStatusCodes } from './../utils/httpStatusCodes.mjs';
2
+ const isSuccessStatus = (status) => status === HttpStatusCodes.OK_200 || status === HttpStatusCodes.CREATED_201 || status === HttpStatusCodes.ACCEPTED_202 || status === HttpStatusCodes.NON_AUTHORITATIVE_INFORMATION_203 || status === HttpStatusCodes.NO_CONTENT_204 || status === HttpStatusCodes.RESET_CONTENT_205 || status === HttpStatusCodes.PARTIAL_CONTENT_206 || status === HttpStatusCodes.MULTI_STATUS_207 || status === HttpStatusCodes.ALREADY_REPORTED_208 || status === HttpStatusCodes.IM_USED_226;
3
+ function formatResponse({
4
+ data,
5
+ error,
6
+ status = HttpStatusCodes.OK_200
7
+ }) {
8
+ const success = isSuccessStatus(status);
9
+ return {
10
+ success,
11
+ data: data ?? null,
12
+ error: error ?? void 0,
13
+ status
14
+ };
15
+ }
16
+ function formatPaginatedResponse({
17
+ status = HttpStatusCodes.OK_200,
18
+ data,
19
+ error,
20
+ page,
21
+ pageSize,
22
+ totalPages,
23
+ totalItems
24
+ }) {
25
+ const success = isSuccessStatus(status);
26
+ return {
27
+ success,
28
+ data: data ?? null,
29
+ error: error ?? void 0,
30
+ status,
31
+ page: page ?? null,
32
+ page_size: pageSize ?? null,
33
+ total_pages: totalPages ?? null,
34
+ total_items: totalItems ?? null
35
+ };
36
+ }
37
+ export {
38
+ formatPaginatedResponse,
39
+ formatResponse
40
+ };
41
+ //# sourceMappingURL=responseData.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/responseData.ts"],"sourcesContent":["import { HttpStatusCodes } from '@utils/httpStatusCodes';\n\ntype ErrorData = {\n code: string;\n message: string;\n} & object;\n\nexport type ResponseData<T = null> = {\n success: boolean;\n status: HttpStatusCodes;\n data: T | null;\n error?: ErrorData | ErrorData[];\n};\n\ntype ValidResponseStatus =\n | HttpStatusCodes.OK_200\n | HttpStatusCodes.CREATED_201\n | HttpStatusCodes.ACCEPTED_202\n | HttpStatusCodes.NON_AUTHORITATIVE_INFORMATION_203\n | HttpStatusCodes.NO_CONTENT_204\n | HttpStatusCodes.RESET_CONTENT_205\n | HttpStatusCodes.PARTIAL_CONTENT_206\n | HttpStatusCodes.MULTI_STATUS_207\n | HttpStatusCodes.ALREADY_REPORTED_208\n | HttpStatusCodes.IM_USED_226;\n\ntype SuccessResponseArgs<T = undefined> = {\n data: T;\n status?: ValidResponseStatus;\n error?: null;\n};\n\ntype ErrorResponseArgs = {\n error: ErrorData | ErrorData[];\n status: HttpStatusCodes;\n data?: null;\n};\n\nconst isSuccessStatus = (\n status: HttpStatusCodes\n): status is HttpStatusCodes.OK_200 =>\n status === HttpStatusCodes.OK_200 ||\n status === HttpStatusCodes.CREATED_201 ||\n status === HttpStatusCodes.ACCEPTED_202 ||\n status === HttpStatusCodes.NON_AUTHORITATIVE_INFORMATION_203 ||\n status === HttpStatusCodes.NO_CONTENT_204 ||\n status === HttpStatusCodes.RESET_CONTENT_205 ||\n status === HttpStatusCodes.PARTIAL_CONTENT_206 ||\n status === HttpStatusCodes.MULTI_STATUS_207 ||\n status === HttpStatusCodes.ALREADY_REPORTED_208 ||\n status === HttpStatusCodes.IM_USED_226;\n\nexport function formatResponse<T>({\n data,\n status,\n}: SuccessResponseArgs<T>): ResponseData<T>;\nexport function formatResponse<T>({\n error,\n status,\n}: ErrorResponseArgs): ResponseData<T>;\nexport function formatResponse<T>({\n data,\n error,\n status = HttpStatusCodes.OK_200,\n}: SuccessResponseArgs<T> | ErrorResponseArgs): ResponseData<T> {\n const success = isSuccessStatus(status);\n\n return {\n success,\n data: data ?? null,\n error: error ?? undefined,\n status,\n };\n}\n\nexport type PaginatedResponse<T = undefined> = Omit<ResponseData<T>, 'data'> & {\n data: T[] | null;\n page: number | null;\n page_size: number | null;\n total_pages: number | null;\n total_items: number | null;\n};\n\ntype SuccessPaginatedResponseArgs<T = undefined> = {\n data: T[];\n status?: ValidResponseStatus;\n page: number;\n pageSize: number;\n totalPages: number;\n totalItems: number;\n\n error?: null;\n};\n\ntype ErrorPaginatedResponseArgs = {\n error: ErrorData | ErrorData[];\n status: HttpStatusCodes;\n\n data?: null;\n page?: null;\n pageSize?: null;\n totalPages?: null;\n totalItems?: null;\n};\n\nexport function formatPaginatedResponse<T>({\n data,\n status,\n page,\n pageSize,\n totalPages,\n totalItems,\n}: SuccessPaginatedResponseArgs<T>): PaginatedResponse<T>;\nexport function formatPaginatedResponse<T>({\n error,\n status,\n}: ErrorPaginatedResponseArgs): PaginatedResponse<T>;\nexport function formatPaginatedResponse<T>({\n status = HttpStatusCodes.OK_200,\n data,\n error,\n page,\n pageSize,\n totalPages,\n totalItems,\n}:\n | SuccessPaginatedResponseArgs<T>\n | ErrorPaginatedResponseArgs): PaginatedResponse<T> {\n const success = isSuccessStatus(status);\n\n return {\n success,\n data: data ?? null,\n error: error ?? undefined,\n status,\n page: page ?? null,\n page_size: pageSize ?? null,\n total_pages: totalPages ?? null,\n total_items: totalItems ?? null,\n };\n}\n"],"mappings":"AAAA,SAAS,uBAAuB;AAsChC,MAAM,kBAAkB,CACtB,WAEA,WAAW,gBAAgB,UAC3B,WAAW,gBAAgB,eAC3B,WAAW,gBAAgB,gBAC3B,WAAW,gBAAgB,qCAC3B,WAAW,gBAAgB,kBAC3B,WAAW,gBAAgB,qBAC3B,WAAW,gBAAgB,uBAC3B,WAAW,gBAAgB,oBAC3B,WAAW,gBAAgB,wBAC3B,WAAW,gBAAgB;AAUtB,SAAS,eAAkB;AAAA,EAChC;AAAA,EACA;AAAA,EACA,SAAS,gBAAgB;AAC3B,GAAgE;AAC9D,QAAM,UAAU,gBAAgB,MAAM;AAEtC,SAAO;AAAA,IACL;AAAA,IACA,MAAM,QAAQ;AAAA,IACd,OAAO,SAAS;AAAA,IAChB;AAAA,EACF;AACF;AA4CO,SAAS,wBAA2B;AAAA,EACzC,SAAS,gBAAgB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEsD;AACpD,QAAM,UAAU,gBAAgB,MAAM;AAEtC,SAAO;AAAA,IACL;AAAA,IACA,MAAM,QAAQ;AAAA,IACd,OAAO,SAAS;AAAA,IAChB;AAAA,IACA,MAAM,QAAQ;AAAA,IACd,WAAW,YAAY;AAAA,IACvB,aAAa,cAAc;AAAA,IAC3B,aAAa,cAAc;AAAA,EAC7B;AACF;","names":[]}
@@ -0,0 +1,33 @@
1
+ const validateArray = (value, entityName = "Array", elementType, elementValidator, minLength = 0, maxLength = void 0) => {
2
+ const errors = [];
3
+ if (!Array.isArray(value)) {
4
+ errors.push(`${entityName} must be an array.`);
5
+ } else if (minLength && value.length < minLength) {
6
+ errors.push(`${entityName} must be at least ${minLength} items long.`);
7
+ } else if (maxLength && value.length > maxLength) {
8
+ errors.push(`${entityName} must be at most ${maxLength} items long.`);
9
+ } else if (elementType) {
10
+ const isValid = value.some((element) => typeof element !== elementType);
11
+ if (!isValid) {
12
+ errors.push(`${entityName} must contain only ${elementType} elements.`);
13
+ }
14
+ } else if (elementValidator) {
15
+ const isValidOrErrorList = value.every(elementValidator);
16
+ if (Array.isArray(isValidOrErrorList)) {
17
+ const isValid = isValidOrErrorList.length > 0;
18
+ if (!isValid) {
19
+ errors.push(...isValidOrErrorList);
20
+ }
21
+ } else {
22
+ const isValid = isValidOrErrorList;
23
+ if (!isValid) {
24
+ errors.push(`${entityName} must contain valid elements.`);
25
+ }
26
+ }
27
+ }
28
+ return errors;
29
+ };
30
+ export {
31
+ validateArray
32
+ };
33
+ //# sourceMappingURL=validateArray.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/utils/validation/validateArray.ts"],"sourcesContent":["/* eslint-disable sonarjs/cognitive-complexity */\ntype ElementType = 'string' | 'number' | 'boolean' | 'object' | 'array';\ntype ElementValidator<T> = (value: T) => boolean | string[];\n\n/**\n * Validates a email field.\n * @param value The value to validate.\n * @param entityName The name of the entity being validated.\n * @param minLength The minimum length of the string.\n * @param maxLength The maximum length of the string.\n * @returns An array of validation errors.\n */\nexport const validateArray = <T = unknown>(\n value: T[],\n entityName = 'Array',\n elementType?: ElementType,\n elementValidator?: ElementValidator<T>,\n minLength = 0,\n maxLength = undefined\n): string[] => {\n const errors: string[] = [];\n\n if (!Array.isArray(value)) {\n errors.push(`${entityName} must be an array.`);\n } else if (minLength && value.length < minLength) {\n errors.push(`${entityName} must be at least ${minLength} items long.`);\n } else if (maxLength && value.length > maxLength) {\n errors.push(`${entityName} must be at most ${maxLength} items long.`);\n } else if (elementType) {\n const isValid = value.some((element) => typeof element !== elementType);\n\n if (!isValid) {\n errors.push(`${entityName} must contain only ${elementType} elements.`);\n }\n } else if (elementValidator) {\n const isValidOrErrorList = value.every(elementValidator);\n\n if (Array.isArray(isValidOrErrorList)) {\n const isValid = isValidOrErrorList.length > 0;\n\n if (!isValid) {\n errors.push(...isValidOrErrorList);\n }\n } else {\n const isValid = isValidOrErrorList;\n\n if (!isValid) {\n errors.push(`${entityName} must contain valid elements.`);\n }\n }\n }\n\n return errors;\n};\n"],"mappings":"AAYO,MAAM,gBAAgB,CAC3B,OACA,aAAa,SACb,aACA,kBACA,YAAY,GACZ,YAAY,WACC;AACb,QAAM,SAAmB,CAAC;AAE1B,MAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,KAAK,GAAG,UAAU,oBAAoB;AAAA,EAC/C,WAAW,aAAa,MAAM,SAAS,WAAW;AAChD,WAAO,KAAK,GAAG,UAAU,qBAAqB,SAAS,cAAc;AAAA,EACvE,WAAW,aAAa,MAAM,SAAS,WAAW;AAChD,WAAO,KAAK,GAAG,UAAU,oBAAoB,SAAS,cAAc;AAAA,EACtE,WAAW,aAAa;AACtB,UAAM,UAAU,MAAM,KAAK,CAAC,YAAY,OAAO,YAAY,WAAW;AAEtE,QAAI,CAAC,SAAS;AACZ,aAAO,KAAK,GAAG,UAAU,sBAAsB,WAAW,YAAY;AAAA,IACxE;AAAA,EACF,WAAW,kBAAkB;AAC3B,UAAM,qBAAqB,MAAM,MAAM,gBAAgB;AAEvD,QAAI,MAAM,QAAQ,kBAAkB,GAAG;AACrC,YAAM,UAAU,mBAAmB,SAAS;AAE5C,UAAI,CAAC,SAAS;AACZ,eAAO,KAAK,GAAG,kBAAkB;AAAA,MACnC;AAAA,IACF,OAAO;AACL,YAAM,UAAU;AAEhB,UAAI,CAAC,SAAS;AACZ,eAAO,KAAK,GAAG,UAAU,+BAA+B;AAAA,MAC1D;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,42 @@
1
+ import { findProjects } from './../../services/project.service.mjs';
2
+ import { validateArray } from './validateArray.mjs';
3
+ const defaultFieldsToCheck = ["projectIds"];
4
+ const validateDictionary = async (dictionary, fieldsToCheck = defaultFieldsToCheck) => {
5
+ const errors = {};
6
+ const fieldsToValidate = new Set(fieldsToCheck);
7
+ const projects = await findProjects({
8
+ _id: dictionary.projectIds
9
+ });
10
+ for (const field of fieldsToValidate) {
11
+ const value = dictionary[field];
12
+ errors[field] = [];
13
+ if (field === "projectIds") {
14
+ const projectsErrors = validateArray(
15
+ value,
16
+ "Project",
17
+ "string",
18
+ (value2) => {
19
+ const projectErrors = [];
20
+ if (typeof value2 !== "string") {
21
+ projectErrors.push("Project id must be a string");
22
+ }
23
+ if (!value2) {
24
+ projectErrors.push("Project id is required");
25
+ }
26
+ if (!projects) {
27
+ projectErrors.push("Project not found");
28
+ }
29
+ return projectsErrors;
30
+ }
31
+ );
32
+ }
33
+ if (errors[field].length === 0) {
34
+ delete errors[field];
35
+ }
36
+ }
37
+ return errors;
38
+ };
39
+ export {
40
+ validateDictionary
41
+ };
42
+ //# sourceMappingURL=validateDictionary.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/utils/validation/validateDictionary.ts"],"sourcesContent":["/* eslint-disable sonarjs/no-unused-collection */\n\nimport { findProjects } from '@services/project.service';\nimport { validateArray } from './validateArray';\nimport type { Dictionary } from '@/types/dictionary.types';\n\nexport type DictionaryFields = (keyof Dictionary)[];\n\nconst defaultFieldsToCheck: DictionaryFields = ['projectIds'];\n\ntype FieldsToCheck = (typeof defaultFieldsToCheck)[number];\ntype ValidationErrors = Partial<\n Record<(typeof defaultFieldsToCheck)[number], string[]>\n>;\n\n/**\n * Validates an dictionary object.\n * @param dictionary The dictionary object to validate.\n * @returns An object containing the validation errors for each field.\n */\nexport const validateDictionary = async (\n dictionary: Partial<Dictionary>,\n fieldsToCheck = defaultFieldsToCheck\n): Promise<ValidationErrors> => {\n const errors: ValidationErrors = {};\n\n // Define the fields to validate\n const fieldsToValidate = new Set<FieldsToCheck>(fieldsToCheck);\n\n const projects = await findProjects({\n _id: dictionary.projectIds as unknown as string[],\n });\n\n // Validate each field\n for (const field of fieldsToValidate) {\n const value = dictionary[field];\n\n // Initialize error array for the field\n errors[field] = [];\n\n if (field === 'projectIds') {\n const projectsErrors = validateArray<string>(\n value as unknown as string[],\n 'Project',\n 'string',\n (value) => {\n const projectErrors: string[] = [];\n\n if (typeof value !== 'string') {\n projectErrors.push('Project id must be a string');\n }\n\n if (!value) {\n projectErrors.push('Project id is required');\n }\n\n if (!projects) {\n projectErrors.push('Project not found');\n }\n\n return projectsErrors;\n }\n );\n }\n\n // Remove the error field if there are no errors\n if (errors[field].length === 0) {\n delete errors[field];\n }\n }\n\n return errors;\n};\n"],"mappings":"AAEA,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAK9B,MAAM,uBAAyC,CAAC,YAAY;AAYrD,MAAM,qBAAqB,OAChC,YACA,gBAAgB,yBACc;AAC9B,QAAM,SAA2B,CAAC;AAGlC,QAAM,mBAAmB,IAAI,IAAmB,aAAa;AAE7D,QAAM,WAAW,MAAM,aAAa;AAAA,IAClC,KAAK,WAAW;AAAA,EAClB,CAAC;AAGD,aAAW,SAAS,kBAAkB;AACpC,UAAM,QAAQ,WAAW,KAAK;AAG9B,WAAO,KAAK,IAAI,CAAC;AAEjB,QAAI,UAAU,cAAc;AAC1B,YAAM,iBAAiB;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,QACA,CAACA,WAAU;AACT,gBAAM,gBAA0B,CAAC;AAEjC,cAAI,OAAOA,WAAU,UAAU;AAC7B,0BAAc,KAAK,6BAA6B;AAAA,UAClD;AAEA,cAAI,CAACA,QAAO;AACV,0BAAc,KAAK,wBAAwB;AAAA,UAC7C;AAEA,cAAI,CAAC,UAAU;AACb,0BAAc,KAAK,mBAAmB;AAAA,UACxC;AAEA,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAGA,QAAI,OAAO,KAAK,EAAE,WAAW,GAAG;AAC9B,aAAO,OAAO,KAAK;AAAA,IACrB;AAAA,EACF;AAEA,SAAO;AACT;","names":["value"]}
@@ -0,0 +1,13 @@
1
+ import { validateString } from './validateString.mjs';
2
+ const validateEmail = (value, entityName = "Email", minLength = 6, maxLength = 100) => {
3
+ const errors = validateString(value, entityName, minLength, maxLength);
4
+ const emailRegex = /^[^\s@]+@[^\s@][^\s.@]*\.[^\s@]+$/;
5
+ if (typeof value === "string" && !emailRegex.test(value)) {
6
+ errors.push(`${entityName} must be a valid email address.`);
7
+ }
8
+ return errors;
9
+ };
10
+ export {
11
+ validateEmail
12
+ };
13
+ //# sourceMappingURL=validateEmail.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/utils/validation/validateEmail.ts"],"sourcesContent":["import { validateString } from './validateString';\n\n/**\n * Validates a email field.\n * @param value The value to validate.\n * @param entityName The name of the entity being validated.\n * @param minLength The minimum length of the string.\n * @param maxLength The maximum length of the string.\n * @returns An array of validation errors.\n */\nexport const validateEmail = (\n value: unknown,\n entityName = 'Email',\n minLength = 6,\n maxLength = 100\n): string[] => {\n const errors = validateString(value, entityName, minLength, maxLength);\n\n const emailRegex = /^[^\\s@]+@[^\\s@][^\\s.@]*\\.[^\\s@]+$/;\n\n if (typeof value === 'string' && !emailRegex.test(value)) {\n errors.push(`${entityName} must be a valid email address.`);\n }\n\n return errors;\n};\n"],"mappings":"AAAA,SAAS,sBAAsB;AAUxB,MAAM,gBAAgB,CAC3B,OACA,aAAa,SACb,YAAY,GACZ,YAAY,QACC;AACb,QAAM,SAAS,eAAe,OAAO,YAAY,WAAW,SAAS;AAErE,QAAM,aAAa;AAEnB,MAAI,OAAO,UAAU,YAAY,CAAC,WAAW,KAAK,KAAK,GAAG;AACxD,WAAO,KAAK,GAAG,UAAU,iCAAiC;AAAA,EAC5D;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,52 @@
1
+ import { validateArray } from './validateArray.mjs';
2
+ import { validateString } from './validateString.mjs';
3
+ const defaultFieldsToCheck = [
4
+ "name",
5
+ "membersIds",
6
+ "adminsIds"
7
+ ];
8
+ const NAME_MIN_LENGTH = 4;
9
+ const NAME_MAX_LENGTH = 100;
10
+ const MEMBERS_MIN_LENGTH = 1;
11
+ const validateOrganization = (organization, fieldsToCheck = defaultFieldsToCheck) => {
12
+ const errors = {};
13
+ const fieldsToValidate = new Set(fieldsToCheck);
14
+ for (const field of fieldsToValidate) {
15
+ const value = organization[field];
16
+ errors[field] = [];
17
+ if (field === "name") {
18
+ const nameErrors = validateString(
19
+ value,
20
+ "Name",
21
+ NAME_MIN_LENGTH,
22
+ NAME_MAX_LENGTH
23
+ );
24
+ if (nameErrors.length > 0) {
25
+ errors[field] = nameErrors;
26
+ }
27
+ }
28
+ if (field === "membersIds" || field === "adminsIds") {
29
+ const membersErrors = validateArray(
30
+ value,
31
+ "Members",
32
+ "string",
33
+ void 0,
34
+ MEMBERS_MIN_LENGTH
35
+ );
36
+ if (membersErrors.length > 0) {
37
+ errors[field] = membersErrors;
38
+ }
39
+ }
40
+ if (errors[field].length === 0) {
41
+ delete errors[field];
42
+ }
43
+ }
44
+ return errors;
45
+ };
46
+ export {
47
+ MEMBERS_MIN_LENGTH,
48
+ NAME_MAX_LENGTH,
49
+ NAME_MIN_LENGTH,
50
+ validateOrganization
51
+ };
52
+ //# sourceMappingURL=validateOrganization.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/utils/validation/validateOrganization.ts"],"sourcesContent":["import { validateArray } from './validateArray';\nimport { validateString } from './validateString';\nimport type { Organization } from '@/types/organization.types';\n\nexport type OrganizationFields = (keyof Organization)[];\n\nconst defaultFieldsToCheck: OrganizationFields = [\n 'name',\n 'membersIds',\n 'adminsIds',\n];\n\ntype FieldsToCheck = (typeof defaultFieldsToCheck)[number];\ntype ValidationErrors = Partial<\n Record<(typeof defaultFieldsToCheck)[number], string[]>\n>;\n\nexport const NAME_MIN_LENGTH = 4;\nexport const NAME_MAX_LENGTH = 100;\n\nexport const MEMBERS_MIN_LENGTH = 1;\n\n/**\n * Validates an organization object.\n * @param organization The organization object to validate.\n * @returns An object containing the validation errors for each field.\n */\nexport const validateOrganization = (\n organization: Partial<Organization>,\n fieldsToCheck = defaultFieldsToCheck\n): ValidationErrors => {\n const errors: ValidationErrors = {};\n\n // Define the fields to validate\n const fieldsToValidate = new Set<FieldsToCheck>(fieldsToCheck);\n\n // Validate each field\n for (const field of fieldsToValidate) {\n const value = organization[field];\n\n // Initialize error array for the field\n errors[field] = [];\n\n // Check for name validity\n if (field === 'name') {\n const nameErrors = validateString(\n value,\n 'Name',\n NAME_MIN_LENGTH,\n NAME_MAX_LENGTH\n );\n\n if (nameErrors.length > 0) {\n errors[field] = nameErrors;\n }\n }\n\n if (field === 'membersIds' || field === 'adminsIds') {\n const membersErrors = validateArray<string>(\n value as unknown as string[],\n 'Members',\n 'string',\n undefined,\n MEMBERS_MIN_LENGTH\n );\n\n if (membersErrors.length > 0) {\n errors[field] = membersErrors;\n }\n }\n\n // Remove the error field if there are no errors\n if (errors[field].length === 0) {\n delete errors[field];\n }\n }\n\n return errors;\n};\n"],"mappings":"AAAA,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAK/B,MAAM,uBAA2C;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AACF;AAOO,MAAM,kBAAkB;AACxB,MAAM,kBAAkB;AAExB,MAAM,qBAAqB;AAO3B,MAAM,uBAAuB,CAClC,cACA,gBAAgB,yBACK;AACrB,QAAM,SAA2B,CAAC;AAGlC,QAAM,mBAAmB,IAAI,IAAmB,aAAa;AAG7D,aAAW,SAAS,kBAAkB;AACpC,UAAM,QAAQ,aAAa,KAAK;AAGhC,WAAO,KAAK,IAAI,CAAC;AAGjB,QAAI,UAAU,QAAQ;AACpB,YAAM,aAAa;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAEA,UAAI,WAAW,SAAS,GAAG;AACzB,eAAO,KAAK,IAAI;AAAA,MAClB;AAAA,IACF;AAEA,QAAI,UAAU,gBAAgB,UAAU,aAAa;AACnD,YAAM,gBAAgB;AAAA,QACpB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAEA,UAAI,cAAc,SAAS,GAAG;AAC5B,eAAO,KAAK,IAAI;AAAA,MAClB;AAAA,IACF;AAGA,QAAI,OAAO,KAAK,EAAE,WAAW,GAAG;AAC9B,aAAO,OAAO,KAAK;AAAA,IACrB;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,13 @@
1
+ import { validateString } from './validateString.mjs';
2
+ const validatePhone = (value, entityName = "Phone", minLength = 6, maxLength = 20) => {
3
+ const errors = validateString(value, entityName, minLength, maxLength);
4
+ const phoneRegex = /^\+?\(?\d{3}\)?[-\s.]?\d{3}[-\s.]?\d{4,6}$/;
5
+ if (typeof value === "string" && !phoneRegex.test(value)) {
6
+ errors.push(`${entityName} must be a valid phone number.`);
7
+ }
8
+ return errors;
9
+ };
10
+ export {
11
+ validatePhone
12
+ };
13
+ //# sourceMappingURL=validatePhone.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/utils/validation/validatePhone.ts"],"sourcesContent":["import { validateString } from './validateString';\n\n/**\n * Validates a email field.\n * @param value The value to validate.\n * @param entityName The name of the entity being validated.\n * @param minLength The minimum length of the string.\n * @param maxLength The maximum length of the string.\n * @returns An array of validation errors.\n */\nexport const validatePhone = (\n value: unknown,\n entityName = 'Phone',\n minLength = 6,\n maxLength = 20\n): string[] => {\n const errors = validateString(value, entityName, minLength, maxLength);\n\n const phoneRegex = /^\\+?\\(?\\d{3}\\)?[-\\s.]?\\d{3}[-\\s.]?\\d{4,6}$/;\n\n if (typeof value === 'string' && !phoneRegex.test(value)) {\n errors.push(`${entityName} must be a valid phone number.`);\n }\n\n return errors;\n};\n"],"mappings":"AAAA,SAAS,sBAAsB;AAUxB,MAAM,gBAAgB,CAC3B,OACA,aAAa,SACb,YAAY,GACZ,YAAY,OACC;AACb,QAAM,SAAS,eAAe,OAAO,YAAY,WAAW,SAAS;AAErE,QAAM,aAAa;AAEnB,MAAI,OAAO,UAAU,YAAY,CAAC,WAAW,KAAK,KAAK,GAAG;AACxD,WAAO,KAAK,GAAG,UAAU,gCAAgC;AAAA,EAC3D;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,70 @@
1
+ import { getOrganizationById } from './../../services/organization.service.mjs';
2
+ import { validateArray } from './validateArray.mjs';
3
+ import { validateString } from './validateString.mjs';
4
+ const defaultFieldsToCheck = [
5
+ "name",
6
+ "membersIds",
7
+ "adminsIds",
8
+ "organizationId"
9
+ ];
10
+ const NAME_MIN_LENGTH = 4;
11
+ const NAME_MAX_LENGTH = 100;
12
+ const MEMBERS_MIN_LENGTH = 1;
13
+ const validateProject = async (project, fieldsToCheck = defaultFieldsToCheck) => {
14
+ const errors = {};
15
+ const fieldsToValidate = new Set(fieldsToCheck);
16
+ const organization = await getOrganizationById(project.organizationId ?? "");
17
+ for (const field of fieldsToValidate) {
18
+ const value = project[field];
19
+ errors[field] = [];
20
+ if (field === "name") {
21
+ const nameErrors = validateString(
22
+ value,
23
+ "Name",
24
+ NAME_MIN_LENGTH,
25
+ NAME_MAX_LENGTH
26
+ );
27
+ if (nameErrors.length > 0) {
28
+ errors[field] = nameErrors;
29
+ }
30
+ }
31
+ if (field === "organizationId") {
32
+ const organizationErrors = [];
33
+ if (typeof value !== "string") {
34
+ organizationErrors.push("Organization id must be a string");
35
+ }
36
+ if (!value) {
37
+ organizationErrors.push("Organization id is required");
38
+ }
39
+ if (!organization) {
40
+ organizationErrors.push("Organization not found");
41
+ }
42
+ if (organizationErrors.length > 0) {
43
+ errors[field] = organizationErrors;
44
+ }
45
+ }
46
+ if (field === "membersIds" || field === "adminsIds") {
47
+ const membersErrors = validateArray(
48
+ value,
49
+ "Members",
50
+ "string",
51
+ (item) => (organization?.membersIds).includes(item),
52
+ MEMBERS_MIN_LENGTH
53
+ );
54
+ if (membersErrors.length > 0) {
55
+ errors[field] = membersErrors;
56
+ }
57
+ }
58
+ if (errors[field].length === 0) {
59
+ delete errors[field];
60
+ }
61
+ }
62
+ return errors;
63
+ };
64
+ export {
65
+ MEMBERS_MIN_LENGTH,
66
+ NAME_MAX_LENGTH,
67
+ NAME_MIN_LENGTH,
68
+ validateProject
69
+ };
70
+ //# sourceMappingURL=validateProject.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/utils/validation/validateProject.ts"],"sourcesContent":["/* eslint-disable sonarjs/cognitive-complexity */\nimport { getOrganizationById } from '@services/organization.service';\nimport { validateArray } from './validateArray';\nimport { validateString } from './validateString';\nimport type { Project } from '@/types/project.types';\n\nexport type ProjectFields = (keyof Project)[];\n\nconst defaultFieldsToCheck: ProjectFields = [\n 'name',\n 'membersIds',\n 'adminsIds',\n 'organizationId',\n];\n\ntype FieldsToCheck = (typeof defaultFieldsToCheck)[number];\ntype ValidationErrors = Partial<\n Record<(typeof defaultFieldsToCheck)[number], string[]>\n>;\n\nexport const NAME_MIN_LENGTH = 4;\nexport const NAME_MAX_LENGTH = 100;\n\nexport const MEMBERS_MIN_LENGTH = 1;\n\n/**\n * Validates an project object.\n * @param project The project object to validate.\n * @returns An object containing the validation errors for each field.\n */\nexport const validateProject = async (\n project: Partial<Project>,\n fieldsToCheck = defaultFieldsToCheck\n): Promise<ValidationErrors> => {\n const errors: ValidationErrors = {};\n\n // Define the fields to validate\n const fieldsToValidate = new Set<FieldsToCheck>(fieldsToCheck);\n\n const organization = await getOrganizationById(project.organizationId ?? '');\n\n // Validate each field\n for (const field of fieldsToValidate) {\n const value = project[field];\n\n // Initialize error array for the field\n errors[field] = [];\n\n // Check for name validity\n if (field === 'name') {\n const nameErrors = validateString(\n value,\n 'Name',\n NAME_MIN_LENGTH,\n NAME_MAX_LENGTH\n );\n\n if (nameErrors.length > 0) {\n errors[field] = nameErrors;\n }\n }\n\n if (field === 'organizationId') {\n const organizationErrors: string[] = [];\n\n if (typeof value !== 'string') {\n organizationErrors.push('Organization id must be a string');\n }\n\n if (!value) {\n organizationErrors.push('Organization id is required');\n }\n\n if (!organization) {\n organizationErrors.push('Organization not found');\n }\n\n if (organizationErrors.length > 0) {\n errors[field] = organizationErrors;\n }\n }\n\n if (field === 'membersIds' || field === 'adminsIds') {\n const membersErrors = validateArray<string>(\n value as unknown as string[],\n 'Members',\n 'string',\n (item) =>\n (organization?.membersIds as unknown as string[]).includes(item),\n MEMBERS_MIN_LENGTH\n );\n\n if (membersErrors.length > 0) {\n errors[field] = membersErrors;\n }\n }\n\n // Remove the error field if there are no errors\n if (errors[field].length === 0) {\n delete errors[field];\n }\n }\n\n return errors;\n};\n"],"mappings":"AACA,SAAS,2BAA2B;AACpC,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAK/B,MAAM,uBAAsC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAOO,MAAM,kBAAkB;AACxB,MAAM,kBAAkB;AAExB,MAAM,qBAAqB;AAO3B,MAAM,kBAAkB,OAC7B,SACA,gBAAgB,yBACc;AAC9B,QAAM,SAA2B,CAAC;AAGlC,QAAM,mBAAmB,IAAI,IAAmB,aAAa;AAE7D,QAAM,eAAe,MAAM,oBAAoB,QAAQ,kBAAkB,EAAE;AAG3E,aAAW,SAAS,kBAAkB;AACpC,UAAM,QAAQ,QAAQ,KAAK;AAG3B,WAAO,KAAK,IAAI,CAAC;AAGjB,QAAI,UAAU,QAAQ;AACpB,YAAM,aAAa;AAAA,QACjB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAEA,UAAI,WAAW,SAAS,GAAG;AACzB,eAAO,KAAK,IAAI;AAAA,MAClB;AAAA,IACF;AAEA,QAAI,UAAU,kBAAkB;AAC9B,YAAM,qBAA+B,CAAC;AAEtC,UAAI,OAAO,UAAU,UAAU;AAC7B,2BAAmB,KAAK,kCAAkC;AAAA,MAC5D;AAEA,UAAI,CAAC,OAAO;AACV,2BAAmB,KAAK,6BAA6B;AAAA,MACvD;AAEA,UAAI,CAAC,cAAc;AACjB,2BAAmB,KAAK,wBAAwB;AAAA,MAClD;AAEA,UAAI,mBAAmB,SAAS,GAAG;AACjC,eAAO,KAAK,IAAI;AAAA,MAClB;AAAA,IACF;AAEA,QAAI,UAAU,gBAAgB,UAAU,aAAa;AACnD,YAAM,gBAAgB;AAAA,QACpB;AAAA,QACA;AAAA,QACA;AAAA,QACA,CAAC,UACE,cAAc,YAAmC,SAAS,IAAI;AAAA,QACjE;AAAA,MACF;AAEA,UAAI,cAAc,SAAS,GAAG;AAC5B,eAAO,KAAK,IAAI;AAAA,MAClB;AAAA,IACF;AAGA,QAAI,OAAO,KAAK,EAAE,WAAW,GAAG;AAC9B,aAAO,OAAO,KAAK;AAAA,IACrB;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,15 @@
1
+ const validateString = (value, entityName, minLength, maxLength) => {
2
+ const errors = [];
3
+ if (typeof value !== "string") {
4
+ errors.push(`${entityName} must be a string.`);
5
+ } else if (minLength && value.length < minLength) {
6
+ errors.push(`${entityName} must be at least ${minLength} characters long.`);
7
+ } else if (maxLength && value.length > maxLength) {
8
+ errors.push(`${entityName} must be at most ${maxLength} characters long.`);
9
+ }
10
+ return errors;
11
+ };
12
+ export {
13
+ validateString
14
+ };
15
+ //# sourceMappingURL=validateString.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/utils/validation/validateString.ts"],"sourcesContent":["/**\n * Validates a string field.\n * @param value The value to validate.\n * @param entityName The name of the entity being validated.\n * @param minLength The minimum length of the string.\n * @param maxLength The maximum length of the string.\n * @returns An array of validation errors.\n */\nexport const validateString = (\n value: unknown,\n entityName: string,\n minLength?: number,\n maxLength?: number\n): string[] => {\n const errors: string[] = [];\n\n if (typeof value !== 'string') {\n errors.push(`${entityName} must be a string.`);\n } else if (minLength && value.length < minLength) {\n errors.push(`${entityName} must be at least ${minLength} characters long.`);\n } else if (maxLength && value.length > maxLength) {\n errors.push(`${entityName} must be at most ${maxLength} characters long.`);\n }\n\n return errors;\n};\n"],"mappings":"AAQO,MAAM,iBAAiB,CAC5B,OACA,YACA,WACA,cACa;AACb,QAAM,SAAmB,CAAC;AAE1B,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,KAAK,GAAG,UAAU,oBAAoB;AAAA,EAC/C,WAAW,aAAa,MAAM,SAAS,WAAW;AAChD,WAAO,KAAK,GAAG,UAAU,qBAAqB,SAAS,mBAAmB;AAAA,EAC5E,WAAW,aAAa,MAAM,SAAS,WAAW;AAChD,WAAO,KAAK,GAAG,UAAU,oBAAoB,SAAS,mBAAmB;AAAA,EAC3E;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,47 @@
1
+ import { validateEmail } from './validateEmail.mjs';
2
+ import { validatePhone } from './validatePhone.mjs';
3
+ import { validateString } from './validateString.mjs';
4
+ const defaultFieldsToCheck = ["name", "phone", "email", "phone"];
5
+ const NAMES_MIN_LENGTH = 4;
6
+ const NAMES_MAX_LENGTH = 100;
7
+ const validateUser = (project, fieldsToCheck = defaultFieldsToCheck) => {
8
+ const errors = {};
9
+ const fieldsToValidate = new Set(fieldsToCheck);
10
+ for (const field of fieldsToValidate) {
11
+ const value = project[field];
12
+ errors[field] = [];
13
+ if (field === "name") {
14
+ const nameErrors = validateString(
15
+ value,
16
+ `User ${field}`,
17
+ NAMES_MIN_LENGTH,
18
+ NAMES_MAX_LENGTH
19
+ );
20
+ if (nameErrors.length > 0) {
21
+ errors[field] = nameErrors;
22
+ }
23
+ }
24
+ if (field === "email") {
25
+ const emailErrors = validateEmail(value, "User Email");
26
+ if (emailErrors.length > 0) {
27
+ errors[field] = emailErrors;
28
+ }
29
+ }
30
+ if (field === "phone") {
31
+ const phoneErrors = validatePhone(value, "User Phone", 8, 20);
32
+ if (phoneErrors.length > 0) {
33
+ errors[field] = phoneErrors;
34
+ }
35
+ }
36
+ if (errors[field].length === 0) {
37
+ delete errors[field];
38
+ }
39
+ }
40
+ return errors;
41
+ };
42
+ export {
43
+ NAMES_MAX_LENGTH,
44
+ NAMES_MIN_LENGTH,
45
+ validateUser
46
+ };
47
+ //# sourceMappingURL=validateUser.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/utils/validation/validateUser.ts"],"sourcesContent":["/* eslint-disable sonarjs/cognitive-complexity */\nimport { validateEmail } from './validateEmail';\nimport { validatePhone } from './validatePhone';\nimport { validateString } from './validateString';\nimport type { User } from '@/types/user.types';\n\nexport type UserFields = (keyof User)[];\n\nconst defaultFieldsToCheck: UserFields = ['name', 'phone', 'email', 'phone'];\n\nexport type FieldsToCheck = (typeof defaultFieldsToCheck)[number];\ntype ValidationErrors = Partial<\n Record<(typeof defaultFieldsToCheck)[number], string[]>\n>;\nexport const NAMES_MIN_LENGTH = 4;\nexport const NAMES_MAX_LENGTH = 100;\n\n/**\n * Validates an user object.\n * @param user The user object to validate.\n * @returns An object containing the validation errors for each field.\n */\nexport const validateUser = (\n project: Partial<User>,\n fieldsToCheck = defaultFieldsToCheck\n): ValidationErrors => {\n const errors: ValidationErrors = {};\n\n // Define the fields to validate\n const fieldsToValidate = new Set<FieldsToCheck>(fieldsToCheck);\n\n // Validate each field\n for (const field of fieldsToValidate) {\n const value = project[field];\n\n // Initialize error array for the field\n errors[field] = [];\n\n // Check for name validity\n if (field === 'name') {\n const nameErrors = validateString(\n value,\n `User ${field}`,\n NAMES_MIN_LENGTH,\n NAMES_MAX_LENGTH\n );\n\n if (nameErrors.length > 0) {\n errors[field] = nameErrors;\n }\n }\n\n // Check for email validity\n if (field === 'email') {\n const emailErrors = validateEmail(value, 'User Email');\n\n if (emailErrors.length > 0) {\n errors[field] = emailErrors;\n }\n }\n\n if (field === 'phone') {\n const phoneErrors = validatePhone(value, 'User Phone', 8, 20);\n\n if (phoneErrors.length > 0) {\n errors[field] = phoneErrors;\n }\n }\n\n // Remove the error field if there are no errors\n if (errors[field].length === 0) {\n delete errors[field];\n }\n }\n\n return errors;\n};\n"],"mappings":"AACA,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,sBAAsB;AAK/B,MAAM,uBAAmC,CAAC,QAAQ,SAAS,SAAS,OAAO;AAMpE,MAAM,mBAAmB;AACzB,MAAM,mBAAmB;AAOzB,MAAM,eAAe,CAC1B,SACA,gBAAgB,yBACK;AACrB,QAAM,SAA2B,CAAC;AAGlC,QAAM,mBAAmB,IAAI,IAAmB,aAAa;AAG7D,aAAW,SAAS,kBAAkB;AACpC,UAAM,QAAQ,QAAQ,KAAK;AAG3B,WAAO,KAAK,IAAI,CAAC;AAGjB,QAAI,UAAU,QAAQ;AACpB,YAAM,aAAa;AAAA,QACjB;AAAA,QACA,QAAQ,KAAK;AAAA,QACb;AAAA,QACA;AAAA,MACF;AAEA,UAAI,WAAW,SAAS,GAAG;AACzB,eAAO,KAAK,IAAI;AAAA,MAClB;AAAA,IACF;AAGA,QAAI,UAAU,SAAS;AACrB,YAAM,cAAc,cAAc,OAAO,YAAY;AAErD,UAAI,YAAY,SAAS,GAAG;AAC1B,eAAO,KAAK,IAAI;AAAA,MAClB;AAAA,IACF;AAEA,QAAI,UAAU,SAAS;AACrB,YAAM,cAAc,cAAc,OAAO,cAAc,GAAG,EAAE;AAE5D,UAAI,YAAY,SAAS,GAAG;AAC1B,eAAO,KAAK,IAAI;AAAA,MAClB;AAAA,IACF;AAGA,QAAI,OAAO,KAAK,EAAE,WAAW,GAAG;AAC9B,aAAO,OAAO,KAAK;AAAA,IACrB;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,70 @@
1
+ import { type Dictionary as LocalDictionary } from '@intlayer/core';
2
+ import type { ResponseWithInformation } from '../middlewares/sessionAuth.middleware';
3
+ import { type DictionaryFiltersParams } from '../utils/filtersAndPagination/getDictionaryFiltersAndPagination';
4
+ import type { FiltersAndPagination } from '../utils/filtersAndPagination/getFiltersAndPaginationFromBody';
5
+ import { type ResponseData, type PaginatedResponse } from '../utils/responseData';
6
+ import type { NextFunction, Request } from 'express';
7
+ import type { Dictionary, DictionaryAPI, DictionaryCreationData } from '../types/dictionary.types';
8
+ export type GetDictionariesParams = FiltersAndPagination<DictionaryFiltersParams>;
9
+ export type GetDictionariesResult = PaginatedResponse<DictionaryAPI>;
10
+ /**
11
+ * Retrieves a list of dictionaries based on filters and pagination.
12
+ */
13
+ export declare const getDictionaries: (req: Request<GetDictionariesParams>, res: ResponseWithInformation<GetDictionariesResult>, _next: NextFunction) => Promise<void>;
14
+ export type GetDictionariesKeysResult = ResponseData<string[]>;
15
+ /**
16
+ * Retrieves a list of dictionaries keys based on filters and pagination.
17
+ */
18
+ export declare const getDictionariesKeys: (_req: Request, res: ResponseWithInformation<GetDictionariesKeysResult>, _next: NextFunction) => Promise<void>;
19
+ export type GetDictionaryParams = {
20
+ dictionaryKey: string;
21
+ };
22
+ export type GetDictionaryQuery = {
23
+ version?: number;
24
+ };
25
+ export type GetDictionaryResult = ResponseData<DictionaryAPI>;
26
+ /**
27
+ * Retrieves a list of dictionaries based on filters and pagination.
28
+ */
29
+ export declare const getDictionaryByKey: (req: Request<GetDictionaryParams>, res: ResponseWithInformation<GetDictionaryResult>, _next: NextFunction) => Promise<void>;
30
+ export type AddDictionaryBody = DictionaryCreationData;
31
+ export type AddDictionaryResult = ResponseData<DictionaryAPI>;
32
+ /**
33
+ * Adds a new dictionary to the database.
34
+ */
35
+ export declare const addDictionary: (req: Request<any, any, AddDictionaryBody>, res: ResponseWithInformation<AddDictionaryResult>, _next: NextFunction) => Promise<void>;
36
+ export type PushDictionariesBody = {
37
+ dictionaries: LocalDictionary[];
38
+ };
39
+ type PushDictionariesResultData = {
40
+ newDictionaries: string[];
41
+ updatedDictionaries: string[];
42
+ error: {
43
+ dictionaryId: string;
44
+ message: string;
45
+ }[];
46
+ };
47
+ export type PushDictionariesResult = ResponseData<PushDictionariesResultData>;
48
+ /**
49
+ * Check each dictionaries, add the new ones and update the existing ones.
50
+ * @param req - Express request object.
51
+ * @param res - Express response object.
52
+ * @returns Response containing the created dictionary.
53
+ */
54
+ export declare const pushDictionaries: (req: Request<any, any, PushDictionariesBody>, res: ResponseWithInformation<PushDictionariesResult>, _next: NextFunction) => Promise<void>;
55
+ export type UpdateDictionaryBody = Partial<Dictionary>;
56
+ export type UpdateDictionaryResult = ResponseData<DictionaryAPI>;
57
+ /**
58
+ * Updates an existing dictionary in the database.
59
+ */
60
+ export declare const updateDictionary: (req: Request<any, any, UpdateDictionaryBody>, res: ResponseWithInformation<UpdateDictionaryResult>, _next: NextFunction) => Promise<void>;
61
+ export type DeleteDictionaryParam = {
62
+ dictionaryId: string;
63
+ };
64
+ export type DeleteDictionaryResult = ResponseData<DictionaryAPI>;
65
+ /**
66
+ * Deletes a dictionary from the database by its ID.
67
+ */
68
+ export declare const deleteDictionary: (req: Request<DeleteDictionaryParam>, res: ResponseWithInformation<DeleteDictionaryResult>, _next: NextFunction) => Promise<void>;
69
+ export {};
70
+ //# sourceMappingURL=dictionary.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dictionary.controller.d.ts","sourceRoot":"","sources":["../../../src/controllers/dictionary.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { ResponseData } from '../utils/responseData';
2
+ import { Response, Request, NextFunction } from 'express';
3
+ import { type Token as OAuth2ServerToken } from 'oauth2-server';
4
+ export type GetOAuth2TokenBody = {
5
+ grant_type: 'client_credentials';
6
+ client_id: string;
7
+ client_secret: string;
8
+ };
9
+ export type OAuth2Token = {
10
+ [K in keyof OAuth2ServerToken]: OAuth2ServerToken[K];
11
+ };
12
+ export type GetOAuth2TokenResult = ResponseData<OAuth2Token>;
13
+ export declare const getOAuth2Token: (req: Request, res: Response, _next: NextFunction) => Promise<void>;
14
+ //# sourceMappingURL=oAuth2.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oAuth2.controller.d.ts","sourceRoot":"","sources":["../../../src/controllers/oAuth2.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EACL,KAAK,KAAK,IAAI,iBAAiB,EAGhC,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,oBAAoB,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AACF,MAAM,MAAM,WAAW,GAAG;KACvB,CAAC,IAAI,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,CAAC,CAAC;CACrD,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;AAG7D,eAAO,MAAM,cAAc,QACpB,OAAO,OACP,QAAQ,SACN,YAAY,KAClB,OAAO,CAAC,IAAI,CAuBd,CAAC"}
@@ -0,0 +1,72 @@
1
+ import type { ResponseWithInformation } from '../middlewares/sessionAuth.middleware';
2
+ import type { FiltersAndPagination } from '../utils/filtersAndPagination/getFiltersAndPaginationFromBody';
3
+ import { type OrganizationFiltersParams } from '../utils/filtersAndPagination/getOrganizationFiltersAndPagination';
4
+ import { type PaginatedResponse, type ResponseData } from '../utils/responseData';
5
+ import type { NextFunction, Request } from 'express';
6
+ import type { ObjectId } from 'mongoose';
7
+ import type { Organization, OrganizationCreationData } from '../types/organization.types';
8
+ export type GetOrganizationsParams = FiltersAndPagination<OrganizationFiltersParams>;
9
+ export type GetOrganizationsResult = PaginatedResponse<Organization>;
10
+ /**
11
+ * Retrieves a list of organizations based on filters and pagination.
12
+ */
13
+ export declare const getOrganizations: (req: Request<GetOrganizationsParams>, res: ResponseWithInformation<GetOrganizationsResult>, _next: NextFunction) => Promise<void>;
14
+ export type GetOrganizationParam = {
15
+ organizationId: string;
16
+ };
17
+ export type GetOrganizationResult = ResponseData<Organization>;
18
+ /**
19
+ * Retrieves an organization by its ID.
20
+ */
21
+ export declare const getOrganization: (req: Request<GetOrganizationParam, any, any>, res: ResponseWithInformation<GetOrganizationResult>, _next: NextFunction) => Promise<void>;
22
+ export type AddOrganizationBody = OrganizationCreationData;
23
+ export type AddOrganizationResult = ResponseData<Organization>;
24
+ /**
25
+ * Adds a new organization to the database.
26
+ */
27
+ export declare const addOrganization: (req: Request<any, any, AddOrganizationBody>, res: ResponseWithInformation<AddOrganizationResult>, _next: NextFunction) => Promise<void>;
28
+ export type UpdateOrganizationBody = Partial<Organization>;
29
+ export type UpdateOrganizationResult = ResponseData<Organization>;
30
+ /**
31
+ * Updates an existing organization in the database.
32
+ */
33
+ export declare const updateOrganization: (req: Request<undefined, undefined, UpdateOrganizationBody>, res: ResponseWithInformation<UpdateOrganizationResult>, _next: NextFunction) => Promise<void>;
34
+ export type OrganizationMemberByIdOption = {
35
+ userId: string | ObjectId;
36
+ isAdmin?: boolean;
37
+ };
38
+ export type AddOrganizationMemberBody = {
39
+ userEmail: string;
40
+ };
41
+ export type AddOrganizationMemberResult = ResponseData<Organization>;
42
+ /**
43
+ * Add member to the organization in the database.
44
+ */
45
+ export declare const addOrganizationMember: (req: Request<any, any, AddOrganizationMemberBody>, res: ResponseWithInformation<AddOrganizationMemberResult>, _next: NextFunction) => Promise<void>;
46
+ export type UpdateOrganizationMembersBody = Partial<{
47
+ membersIds: OrganizationMemberByIdOption[];
48
+ }>;
49
+ export type UpdateOrganizationMembersResult = ResponseData<Organization>;
50
+ /**
51
+ * Update members to the organization in the database.
52
+ */
53
+ export declare const updateOrganizationMembers: (req: Request<any, any, UpdateOrganizationMembersBody>, res: ResponseWithInformation<UpdateOrganizationMembersResult>, _next: NextFunction) => Promise<void>;
54
+ export type DeleteOrganizationResult = ResponseData<Organization>;
55
+ /**
56
+ * Deletes an organization from the database by its ID.
57
+ */
58
+ export declare const deleteOrganization: (_req: Request, res: ResponseWithInformation, _next: NextFunction) => Promise<void>;
59
+ export type SelectOrganizationParam = {
60
+ organizationId: ObjectId | string;
61
+ };
62
+ export type SelectOrganizationResult = ResponseData<Organization>;
63
+ /**
64
+ * Select an organization.
65
+ */
66
+ export declare const selectOrganization: (req: Request<SelectOrganizationParam>, res: ResponseWithInformation<SelectOrganizationResult>, _next: NextFunction) => Promise<void>;
67
+ export type UnselectOrganizationResult = ResponseData<null>;
68
+ /**
69
+ * Unselect an organization.
70
+ */
71
+ export declare const unselectOrganization: (_req: Request, res: ResponseWithInformation<UnselectOrganizationResult>, _next: NextFunction) => void;
72
+ //# sourceMappingURL=organization.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization.controller.d.ts","sourceRoot":"","sources":["../../../src/controllers/organization.controller.ts"],"names":[],"mappings":"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"}