@intlayer/backend 8.12.2 → 8.12.4-canary.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 (415) hide show
  1. package/dist/assets/utils/AI/askDocQuestion/embeddings/docs/en/bundle_optimization.json +9954 -6953
  2. package/dist/assets/utils/AI/askDocQuestion/embeddings/docs/en/configuration.json +1 -1
  3. package/dist/esm/controllers/ai.controller.mjs.map +1 -1
  4. package/dist/esm/controllers/audit.controller.mjs.map +1 -1
  5. package/dist/esm/controllers/bitbucket.controller.mjs.map +1 -1
  6. package/dist/esm/controllers/cliSessionToken.controller.mjs.map +1 -1
  7. package/dist/esm/controllers/demo.controller.mjs +32 -25
  8. package/dist/esm/controllers/demo.controller.mjs.map +1 -1
  9. package/dist/esm/controllers/dictionary.controller.mjs +1 -0
  10. package/dist/esm/controllers/dictionary.controller.mjs.map +1 -1
  11. package/dist/esm/controllers/environment.controller.mjs.map +1 -1
  12. package/dist/esm/controllers/eventListener.controller.mjs.map +1 -1
  13. package/dist/esm/controllers/github.controller.mjs.map +1 -1
  14. package/dist/esm/controllers/gitlab.controller.mjs.map +1 -1
  15. package/dist/esm/controllers/newsletter.controller.mjs.map +1 -1
  16. package/dist/esm/controllers/oAuth2.controller.mjs.map +1 -1
  17. package/dist/esm/controllers/organization.controller.mjs.map +1 -1
  18. package/dist/esm/controllers/project.controller.mjs.map +1 -1
  19. package/dist/esm/controllers/projectAccessKey.controller.mjs.map +1 -1
  20. package/dist/esm/controllers/projectMemberAccess.controller.mjs.map +1 -1
  21. package/dist/esm/controllers/recursiveAudit.controller.mjs.map +1 -1
  22. package/dist/esm/controllers/reviewer.controller.mjs.map +1 -1
  23. package/dist/esm/controllers/searchDoc.controller.mjs.map +1 -1
  24. package/dist/esm/controllers/showcaseProject.controller.mjs.map +1 -1
  25. package/dist/esm/controllers/stripe.controller.mjs.map +1 -1
  26. package/dist/esm/controllers/tag.controller.mjs.map +1 -1
  27. package/dist/esm/controllers/translation.controller.mjs.map +1 -1
  28. package/dist/esm/controllers/user.controller.mjs.map +1 -1
  29. package/dist/esm/emails/AffiliateActivatedEmail.mjs.map +1 -1
  30. package/dist/esm/emails/AffiliateConversionEmail.mjs.map +1 -1
  31. package/dist/esm/emails/AffiliateInvitationEmail.mjs.map +1 -1
  32. package/dist/esm/emails/AffiliateWelcomeEmail.mjs.map +1 -1
  33. package/dist/esm/emails/InviteUserEmail.mjs.map +1 -1
  34. package/dist/esm/emails/MagicLinkEmail.mjs.map +1 -1
  35. package/dist/esm/emails/MissionRequestedClientEmail.mjs.map +1 -1
  36. package/dist/esm/emails/MissionRequestedReviewerEmail.mjs.map +1 -1
  37. package/dist/esm/emails/OAuthTokenCreatedEmail.mjs.map +1 -1
  38. package/dist/esm/emails/PasswordChangeConfirmation.mjs.map +1 -1
  39. package/dist/esm/emails/ResetUserPassword.mjs.map +1 -1
  40. package/dist/esm/emails/ReviewerApplicationEmail.mjs.map +1 -1
  41. package/dist/esm/emails/ReviewerApprovedEmail.mjs.map +1 -1
  42. package/dist/esm/emails/ReviewerContactEmail.mjs.map +1 -1
  43. package/dist/esm/emails/SubscriptionPaymentCancellation.mjs.map +1 -1
  44. package/dist/esm/emails/SubscriptionPaymentError.mjs.map +1 -1
  45. package/dist/esm/emails/SubscriptionPaymentSuccess.mjs.map +1 -1
  46. package/dist/esm/emails/ValidateUserEmail.mjs.map +1 -1
  47. package/dist/esm/emails/Welcome.mjs.map +1 -1
  48. package/dist/esm/index.mjs +1 -1
  49. package/dist/esm/index.mjs.map +1 -1
  50. package/dist/esm/logger/index.mjs.map +1 -1
  51. package/dist/esm/middlewares/oAuth2.middleware.mjs.map +1 -1
  52. package/dist/esm/middlewares/sessionAuth.middleware.mjs.map +1 -1
  53. package/dist/esm/routes/ai.routes.mjs.map +1 -1
  54. package/dist/esm/routes/audit.routes.mjs.map +1 -1
  55. package/dist/esm/routes/bitbucket.routes.mjs.map +1 -1
  56. package/dist/esm/routes/demo.routes.mjs.map +1 -1
  57. package/dist/esm/routes/dictionary.routes.mjs.map +1 -1
  58. package/dist/esm/routes/environment.routes.mjs.map +1 -1
  59. package/dist/esm/routes/eventListener.routes.mjs.map +1 -1
  60. package/dist/esm/routes/github.routes.mjs.map +1 -1
  61. package/dist/esm/routes/gitlab.routes.mjs.map +1 -1
  62. package/dist/esm/routes/newsletter.routes.mjs.map +1 -1
  63. package/dist/esm/routes/organization.routes.mjs.map +1 -1
  64. package/dist/esm/routes/paramsSchemas.mjs.map +1 -1
  65. package/dist/esm/routes/project.routes.mjs.map +1 -1
  66. package/dist/esm/routes/reviewer.routes.mjs.map +1 -1
  67. package/dist/esm/routes/search.routes.mjs.map +1 -1
  68. package/dist/esm/routes/showcaseProject.routes.mjs.map +1 -1
  69. package/dist/esm/routes/stripe.routes.mjs.map +1 -1
  70. package/dist/esm/routes/tags.routes.mjs.map +1 -1
  71. package/dist/esm/routes/translate.routes.mjs.map +1 -1
  72. package/dist/esm/routes/user.routes.mjs.map +1 -1
  73. package/dist/esm/schemas/account.schema.mjs.map +1 -1
  74. package/dist/esm/schemas/affiliate.schema.mjs.map +1 -1
  75. package/dist/esm/schemas/affiliateInvitation.schema.mjs.map +1 -1
  76. package/dist/esm/schemas/audit.schema.mjs.map +1 -1
  77. package/dist/esm/schemas/auditJob.schema.mjs.map +1 -1
  78. package/dist/esm/schemas/auditPage.schema.mjs.map +1 -1
  79. package/dist/esm/schemas/cliSessionToken.schema.mjs.map +1 -1
  80. package/dist/esm/schemas/dictionary.schema.mjs.map +1 -1
  81. package/dist/esm/schemas/discussion.schema.mjs.map +1 -1
  82. package/dist/esm/schemas/oAuth2.schema.mjs.map +1 -1
  83. package/dist/esm/schemas/organization.schema.mjs.map +1 -1
  84. package/dist/esm/schemas/plans.schema.mjs.map +1 -1
  85. package/dist/esm/schemas/project.schema.mjs.map +1 -1
  86. package/dist/esm/schemas/promoCode.schema.mjs.map +1 -1
  87. package/dist/esm/schemas/reviewer.schema.mjs.map +1 -1
  88. package/dist/esm/schemas/session.schema.mjs.map +1 -1
  89. package/dist/esm/schemas/showcaseProject.schema.mjs.map +1 -1
  90. package/dist/esm/schemas/tag.schema.mjs.map +1 -1
  91. package/dist/esm/schemas/user.schema.mjs.map +1 -1
  92. package/dist/esm/services/affiliate.service.mjs.map +1 -1
  93. package/dist/esm/services/audit/analysis/analyzeBundleContent.mjs.map +1 -1
  94. package/dist/esm/services/audit/analysis/analyzeLinguisticStructure.mjs.map +1 -1
  95. package/dist/esm/services/audit/analysis/analyzeMetadata.mjs.map +1 -1
  96. package/dist/esm/services/audit/analysis/analyzeRobots.mjs.map +1 -1
  97. package/dist/esm/services/audit/analysis/analyzeSitemap.mjs.map +1 -1
  98. package/dist/esm/services/audit/analysis/analyzeUrlStructure.mjs.map +1 -1
  99. package/dist/esm/services/audit/analysis/calculateScore.mjs.map +1 -1
  100. package/dist/esm/services/audit/checkers/bundleChecker.mjs.map +1 -1
  101. package/dist/esm/services/audit/checkers/linguisticChecker.mjs.map +1 -1
  102. package/dist/esm/services/audit/checkers/metadataChecker.mjs.map +1 -1
  103. package/dist/esm/services/audit/checkers/pageChecker.mjs.map +1 -1
  104. package/dist/esm/services/audit/checkers/robotsChecker.mjs.map +1 -1
  105. package/dist/esm/services/audit/checkers/sitemapChecker.mjs.map +1 -1
  106. package/dist/esm/services/audit/checkers/urlChecker.mjs.map +1 -1
  107. package/dist/esm/services/audit/recursiveAudit.service.mjs.map +1 -1
  108. package/dist/esm/services/audit/seoAudit.service.mjs.map +1 -1
  109. package/dist/esm/services/bitbucket.service.mjs.map +1 -1
  110. package/dist/esm/services/ci.service.mjs.map +1 -1
  111. package/dist/esm/services/cliSessionToken.service.mjs.map +1 -1
  112. package/dist/esm/services/dictionary.service.mjs.map +1 -1
  113. package/dist/esm/services/email.service.mjs.map +1 -1
  114. package/dist/esm/services/environment.service.mjs.map +1 -1
  115. package/dist/esm/services/github.service.mjs.map +1 -1
  116. package/dist/esm/services/gitlab.service.mjs.map +1 -1
  117. package/dist/esm/services/oAuth2.service.mjs.map +1 -1
  118. package/dist/esm/services/organization.service.mjs.map +1 -1
  119. package/dist/esm/services/project/projectScreenshot.service.mjs.map +1 -1
  120. package/dist/esm/services/project.service.mjs.map +1 -1
  121. package/dist/esm/services/projectAccessKey.service.mjs.map +1 -1
  122. package/dist/esm/services/promoCode.service.mjs.map +1 -1
  123. package/dist/esm/services/reviewer/pictureUpload.service.mjs.map +1 -1
  124. package/dist/esm/services/reviewer.service.mjs.map +1 -1
  125. package/dist/esm/services/reviewerMessage.service.mjs.map +1 -1
  126. package/dist/esm/services/reviewerMission.service.mjs.map +1 -1
  127. package/dist/esm/services/session.service.mjs.map +1 -1
  128. package/dist/esm/services/showcase/showcaseProject.service.mjs.map +1 -1
  129. package/dist/esm/services/showcase/showcaseScan.service.mjs.map +1 -1
  130. package/dist/esm/services/showcase/showcaseUploadScreenshot.service.mjs.map +1 -1
  131. package/dist/esm/services/showcase/showcaseVerifyBundle.service.mjs.map +1 -1
  132. package/dist/esm/services/showcase/showcaseVerifyGithub.service.mjs.map +1 -1
  133. package/dist/esm/services/subscription.service.mjs.map +1 -1
  134. package/dist/esm/services/tag.service.mjs.map +1 -1
  135. package/dist/esm/services/translationQueue.service.mjs.map +1 -1
  136. package/dist/esm/services/translationWorker.service.mjs.map +1 -1
  137. package/dist/esm/services/user/avatarUpload.service.mjs.map +1 -1
  138. package/dist/esm/services/user.service.mjs.map +1 -1
  139. package/dist/esm/services/webhook.service.mjs.map +1 -1
  140. package/dist/esm/types/user.types.mjs.map +1 -1
  141. package/dist/esm/utils/AI/askDocQuestion/askDocQuestion.mjs.map +1 -1
  142. package/dist/esm/utils/AI/askDocQuestion/embeddings/docs/en/bundle_optimization.json +9954 -6953
  143. package/dist/esm/utils/AI/askDocQuestion/embeddings/docs/en/configuration.json +1 -1
  144. package/dist/esm/utils/AI/askDocQuestion/indexMarkdownFiles.mjs.map +1 -1
  145. package/dist/esm/utils/AI/auditDictionary/index.mjs.map +1 -1
  146. package/dist/esm/utils/AI/auditDictionaryField/index.mjs.map +1 -1
  147. package/dist/esm/utils/AI/auditDictionaryMetadata/index.mjs.map +1 -1
  148. package/dist/esm/utils/AI/auditTag/index.mjs.map +1 -1
  149. package/dist/esm/utils/AI/autocomplete/index.mjs.map +1 -1
  150. package/dist/esm/utils/AI/chat/index.mjs.map +1 -1
  151. package/dist/esm/utils/AI/chat/mcpInProcessTools.mjs.map +1 -1
  152. package/dist/esm/utils/AI/chat/sessionTools.mjs.map +1 -1
  153. package/dist/esm/utils/AI/customQuery/index.mjs.map +1 -1
  154. package/dist/esm/utils/AI/getProjectAIOptions.mjs.map +1 -1
  155. package/dist/esm/utils/AI/translateDictionaryDB.mjs.map +1 -1
  156. package/dist/esm/utils/AI/translateJSON/index.mjs.map +1 -1
  157. package/dist/esm/utils/accessControl.mjs.map +1 -1
  158. package/dist/esm/utils/auth/getAuth.mjs.map +1 -1
  159. package/dist/esm/utils/cors.mjs +2 -13
  160. package/dist/esm/utils/cors.mjs.map +1 -1
  161. package/dist/esm/utils/demoDictionaries.mjs.map +1 -1
  162. package/dist/esm/utils/ensureArrayQueryFilter.mjs.map +1 -1
  163. package/dist/esm/utils/ensureMongoDocumentToObject.mjs.map +1 -1
  164. package/dist/esm/utils/errors/ErrorHandler.mjs.map +1 -1
  165. package/dist/esm/utils/errors/ErrorsClass.mjs.map +1 -1
  166. package/dist/esm/utils/errors/errorCodes.mjs.map +1 -1
  167. package/dist/esm/utils/errors/index.mjs +1 -0
  168. package/dist/esm/utils/filtersAndPagination/getDictionaryFiltersAndPagination.mjs.map +1 -1
  169. package/dist/esm/utils/filtersAndPagination/getDiscussionFiltersAndPagination.mjs.map +1 -1
  170. package/dist/esm/utils/filtersAndPagination/getFiltersAndPaginationFromBody.mjs.map +1 -1
  171. package/dist/esm/utils/filtersAndPagination/getOrganizationFiltersAndPagination.mjs.map +1 -1
  172. package/dist/esm/utils/filtersAndPagination/getProjectFiltersAndPagination.mjs.map +1 -1
  173. package/dist/esm/utils/filtersAndPagination/getTagFiltersAndPagination.mjs.map +1 -1
  174. package/dist/esm/utils/filtersAndPagination/getUserFiltersAndPagination.mjs.map +1 -1
  175. package/dist/esm/utils/getFaviconUrl.mjs.map +1 -1
  176. package/dist/esm/utils/github/connectGithub.mjs.map +1 -1
  177. package/dist/esm/utils/httpStatusCodes.mjs.map +1 -1
  178. package/dist/esm/utils/image/resizeImage.mjs.map +1 -1
  179. package/dist/esm/utils/mapper/dictionary.mjs.map +1 -1
  180. package/dist/esm/utils/mapper/organization.mjs.map +1 -1
  181. package/dist/esm/utils/mapper/project.mjs.map +1 -1
  182. package/dist/esm/utils/mapper/session.mjs.map +1 -1
  183. package/dist/esm/utils/mapper/showcaseProject.mjs.map +1 -1
  184. package/dist/esm/utils/mapper/tag.mjs.map +1 -1
  185. package/dist/esm/utils/mapper/user.mjs.map +1 -1
  186. package/dist/esm/utils/mongoDB/connectDB.mjs.map +1 -1
  187. package/dist/esm/utils/oAuth2.mjs.map +1 -1
  188. package/dist/esm/utils/permissions.mjs.map +1 -1
  189. package/dist/esm/utils/plan.mjs.map +1 -1
  190. package/dist/esm/utils/puppeteer/launchBrowser.mjs.map +1 -1
  191. package/dist/esm/utils/rateLimiter.mjs.map +1 -1
  192. package/dist/esm/utils/redis/connectRedis.mjs.map +1 -1
  193. package/dist/esm/utils/removeObjectKeys.mjs.map +1 -1
  194. package/dist/esm/utils/responseData.mjs.map +1 -1
  195. package/dist/esm/utils/s3/s3Client.mjs.map +1 -1
  196. package/dist/esm/utils/validation/validateDictionary.mjs.map +1 -1
  197. package/dist/esm/utils/validation/validateOrganization.mjs.map +1 -1
  198. package/dist/esm/utils/validation/validateProject.mjs.map +1 -1
  199. package/dist/esm/utils/validation/validateTag.mjs.map +1 -1
  200. package/dist/esm/utils/validation/validateUser.mjs.map +1 -1
  201. package/dist/esm/webhooks/stripe.webhook.mjs.map +1 -1
  202. package/dist/types/controllers/ai.controller.d.ts.map +1 -1
  203. package/dist/types/controllers/bitbucket.controller.d.ts.map +1 -1
  204. package/dist/types/controllers/cliSessionToken.controller.d.ts.map +1 -1
  205. package/dist/types/controllers/demo.controller.d.ts.map +1 -1
  206. package/dist/types/controllers/dictionary.controller.d.ts.map +1 -1
  207. package/dist/types/controllers/environment.controller.d.ts.map +1 -1
  208. package/dist/types/controllers/eventListener.controller.d.ts.map +1 -1
  209. package/dist/types/controllers/github.controller.d.ts.map +1 -1
  210. package/dist/types/controllers/gitlab.controller.d.ts.map +1 -1
  211. package/dist/types/controllers/newsletter.controller.d.ts.map +1 -1
  212. package/dist/types/controllers/oAuth2.controller.d.ts.map +1 -1
  213. package/dist/types/controllers/organization.controller.d.ts.map +1 -1
  214. package/dist/types/controllers/project.controller.d.ts.map +1 -1
  215. package/dist/types/controllers/projectAccessKey.controller.d.ts.map +1 -1
  216. package/dist/types/controllers/projectMemberAccess.controller.d.ts.map +1 -1
  217. package/dist/types/controllers/recursiveAudit.controller.d.ts.map +1 -1
  218. package/dist/types/controllers/reviewer.controller.d.ts.map +1 -1
  219. package/dist/types/controllers/searchDoc.controller.d.ts.map +1 -1
  220. package/dist/types/controllers/showcaseProject.controller.d.ts.map +1 -1
  221. package/dist/types/controllers/stripe.controller.d.ts.map +1 -1
  222. package/dist/types/controllers/tag.controller.d.ts.map +1 -1
  223. package/dist/types/controllers/translation.controller.d.ts.map +1 -1
  224. package/dist/types/controllers/user.controller.d.ts.map +1 -1
  225. package/dist/types/emails/AffiliateActivatedEmail.d.ts +20 -18
  226. package/dist/types/emails/AffiliateActivatedEmail.d.ts.map +1 -1
  227. package/dist/types/emails/AffiliateConversionEmail.d.ts +21 -19
  228. package/dist/types/emails/AffiliateConversionEmail.d.ts.map +1 -1
  229. package/dist/types/emails/AffiliateInvitationEmail.d.ts +20 -18
  230. package/dist/types/emails/AffiliateInvitationEmail.d.ts.map +1 -1
  231. package/dist/types/emails/AffiliateWelcomeEmail.d.ts +20 -18
  232. package/dist/types/emails/AffiliateWelcomeEmail.d.ts.map +1 -1
  233. package/dist/types/emails/InviteUserEmail.d.ts +20 -18
  234. package/dist/types/emails/InviteUserEmail.d.ts.map +1 -1
  235. package/dist/types/emails/MagicLinkEmail.d.ts +20 -18
  236. package/dist/types/emails/MagicLinkEmail.d.ts.map +1 -1
  237. package/dist/types/emails/MissionRequestedClientEmail.d.ts +20 -18
  238. package/dist/types/emails/MissionRequestedClientEmail.d.ts.map +1 -1
  239. package/dist/types/emails/MissionRequestedReviewerEmail.d.ts +20 -18
  240. package/dist/types/emails/MissionRequestedReviewerEmail.d.ts.map +1 -1
  241. package/dist/types/emails/OAuthTokenCreatedEmail.d.ts +20 -18
  242. package/dist/types/emails/OAuthTokenCreatedEmail.d.ts.map +1 -1
  243. package/dist/types/emails/PasswordChangeConfirmation.d.ts +20 -18
  244. package/dist/types/emails/PasswordChangeConfirmation.d.ts.map +1 -1
  245. package/dist/types/emails/ResetUserPassword.d.ts +20 -18
  246. package/dist/types/emails/ResetUserPassword.d.ts.map +1 -1
  247. package/dist/types/emails/ReviewerApplicationEmail.d.ts +20 -18
  248. package/dist/types/emails/ReviewerApplicationEmail.d.ts.map +1 -1
  249. package/dist/types/emails/ReviewerApprovedEmail.d.ts +20 -18
  250. package/dist/types/emails/ReviewerApprovedEmail.d.ts.map +1 -1
  251. package/dist/types/emails/ReviewerContactEmail.d.ts +3 -1
  252. package/dist/types/emails/ReviewerContactEmail.d.ts.map +1 -1
  253. package/dist/types/emails/SubscriptionPaymentCancellation.d.ts +20 -18
  254. package/dist/types/emails/SubscriptionPaymentCancellation.d.ts.map +1 -1
  255. package/dist/types/emails/SubscriptionPaymentError.d.ts +20 -18
  256. package/dist/types/emails/SubscriptionPaymentError.d.ts.map +1 -1
  257. package/dist/types/emails/SubscriptionPaymentSuccess.d.ts +20 -18
  258. package/dist/types/emails/SubscriptionPaymentSuccess.d.ts.map +1 -1
  259. package/dist/types/emails/ValidateUserEmail.d.ts +20 -18
  260. package/dist/types/emails/ValidateUserEmail.d.ts.map +1 -1
  261. package/dist/types/emails/Welcome.d.ts +20 -18
  262. package/dist/types/emails/Welcome.d.ts.map +1 -1
  263. package/dist/types/export.d.ts +1 -1
  264. package/dist/types/logger/index.d.ts +3 -1
  265. package/dist/types/logger/index.d.ts.map +1 -1
  266. package/dist/types/middlewares/oAuth2.middleware.d.ts.map +1 -1
  267. package/dist/types/middlewares/sessionAuth.middleware.d.ts.map +1 -1
  268. package/dist/types/routes/demo.routes.d.ts.map +1 -1
  269. package/dist/types/schemas/account.schema.d.ts +35 -34
  270. package/dist/types/schemas/account.schema.d.ts.map +1 -1
  271. package/dist/types/schemas/affiliate.schema.d.ts +109 -108
  272. package/dist/types/schemas/affiliate.schema.d.ts.map +1 -1
  273. package/dist/types/schemas/affiliateInvitation.schema.d.ts +49 -48
  274. package/dist/types/schemas/affiliateInvitation.schema.d.ts.map +1 -1
  275. package/dist/types/schemas/audit.schema.d.ts.map +1 -1
  276. package/dist/types/schemas/auditJob.schema.d.ts +6 -6
  277. package/dist/types/schemas/auditPage.schema.d.ts +6 -6
  278. package/dist/types/schemas/cliSessionToken.schema.d.ts +14 -13
  279. package/dist/types/schemas/cliSessionToken.schema.d.ts.map +1 -1
  280. package/dist/types/schemas/dictionary.schema.d.ts +60 -59
  281. package/dist/types/schemas/dictionary.schema.d.ts.map +1 -1
  282. package/dist/types/schemas/discussion.schema.d.ts +51 -50
  283. package/dist/types/schemas/discussion.schema.d.ts.map +1 -1
  284. package/dist/types/schemas/oAuth2.schema.d.ts +18 -17
  285. package/dist/types/schemas/oAuth2.schema.d.ts.map +1 -1
  286. package/dist/types/schemas/organization.schema.d.ts +45 -44
  287. package/dist/types/schemas/organization.schema.d.ts.map +1 -1
  288. package/dist/types/schemas/plans.schema.d.ts +45 -44
  289. package/dist/types/schemas/plans.schema.d.ts.map +1 -1
  290. package/dist/types/schemas/project.schema.d.ts +73 -72
  291. package/dist/types/schemas/project.schema.d.ts.map +1 -1
  292. package/dist/types/schemas/promoCode.schema.d.ts +61 -60
  293. package/dist/types/schemas/promoCode.schema.d.ts.map +1 -1
  294. package/dist/types/schemas/reviewer.schema.d.ts +221 -220
  295. package/dist/types/schemas/reviewer.schema.d.ts.map +1 -1
  296. package/dist/types/schemas/session.schema.d.ts +54 -52
  297. package/dist/types/schemas/session.schema.d.ts.map +1 -1
  298. package/dist/types/schemas/showcaseProject.schema.d.ts +61 -60
  299. package/dist/types/schemas/showcaseProject.schema.d.ts.map +1 -1
  300. package/dist/types/schemas/tag.schema.d.ts +45 -44
  301. package/dist/types/schemas/tag.schema.d.ts.map +1 -1
  302. package/dist/types/schemas/user.schema.d.ts +71 -70
  303. package/dist/types/schemas/user.schema.d.ts.map +1 -1
  304. package/dist/types/services/affiliate.service.d.ts.map +1 -1
  305. package/dist/types/services/audit/analysis/analyzeBundleContent.d.ts.map +1 -1
  306. package/dist/types/services/audit/analysis/analyzeLinguisticStructure.d.ts.map +1 -1
  307. package/dist/types/services/audit/analysis/analyzeRobots.d.ts.map +1 -1
  308. package/dist/types/services/audit/analysis/analyzeSitemap.d.ts.map +1 -1
  309. package/dist/types/services/audit/analysis/calculateScore.d.ts.map +1 -1
  310. package/dist/types/services/audit/checkers/bundleChecker.d.ts.map +1 -1
  311. package/dist/types/services/audit/recursiveAudit.service.d.ts +5 -4
  312. package/dist/types/services/audit/recursiveAudit.service.d.ts.map +1 -1
  313. package/dist/types/services/audit/types.d.ts.map +1 -1
  314. package/dist/types/services/bitbucket.service.d.ts.map +1 -1
  315. package/dist/types/services/cliSessionToken.service.d.ts.map +1 -1
  316. package/dist/types/services/dictionary.service.d.ts.map +1 -1
  317. package/dist/types/services/email.service.d.ts.map +1 -1
  318. package/dist/types/services/github.service.d.ts.map +1 -1
  319. package/dist/types/services/gitlab.service.d.ts.map +1 -1
  320. package/dist/types/services/oAuth2.service.d.ts.map +1 -1
  321. package/dist/types/services/organization.service.d.ts.map +1 -1
  322. package/dist/types/services/project/projectScreenshot.service.d.ts.map +1 -1
  323. package/dist/types/services/project.service.d.ts.map +1 -1
  324. package/dist/types/services/promoCode.service.d.ts.map +1 -1
  325. package/dist/types/services/reviewer/pictureUpload.service.d.ts.map +1 -1
  326. package/dist/types/services/reviewer.service.d.ts.map +1 -1
  327. package/dist/types/services/reviewerMessage.service.d.ts.map +1 -1
  328. package/dist/types/services/reviewerMission.service.d.ts.map +1 -1
  329. package/dist/types/services/session.service.d.ts.map +1 -1
  330. package/dist/types/services/showcase/showcaseProject.service.d.ts.map +1 -1
  331. package/dist/types/services/showcase/showcaseScan.service.d.ts.map +1 -1
  332. package/dist/types/services/showcase/showcaseUploadScreenshot.service.d.ts.map +1 -1
  333. package/dist/types/services/showcase/showcaseVerifyBundle.service.d.ts.map +1 -1
  334. package/dist/types/services/showcase/showcaseVerifyGithub.service.d.ts.map +1 -1
  335. package/dist/types/services/subscription.service.d.ts.map +1 -1
  336. package/dist/types/services/tag.service.d.ts.map +1 -1
  337. package/dist/types/services/translationQueue.service.d.ts +2 -1
  338. package/dist/types/services/translationQueue.service.d.ts.map +1 -1
  339. package/dist/types/services/translationWorker.service.d.ts.map +1 -1
  340. package/dist/types/services/user/avatarUpload.service.d.ts.map +1 -1
  341. package/dist/types/services/user.service.d.ts.map +1 -1
  342. package/dist/types/services/webhook.service.d.ts.map +1 -1
  343. package/dist/types/types/Routes.d.ts.map +1 -1
  344. package/dist/types/types/account.types.d.ts.map +1 -1
  345. package/dist/types/types/affiliate.types.d.ts.map +1 -1
  346. package/dist/types/types/affiliateInvitation.types.d.ts.map +1 -1
  347. package/dist/types/types/dictionary.types.d.ts.map +1 -1
  348. package/dist/types/types/discussion.types.d.ts.map +1 -1
  349. package/dist/types/types/oAuth2.types.d.ts.map +1 -1
  350. package/dist/types/types/organization.types.d.ts.map +1 -1
  351. package/dist/types/types/plan.types.d.ts.map +1 -1
  352. package/dist/types/types/project.types.d.ts.map +1 -1
  353. package/dist/types/types/promoCode.types.d.ts.map +1 -1
  354. package/dist/types/types/reviewer.types.d.ts.map +1 -1
  355. package/dist/types/types/session.types.d.ts.map +1 -1
  356. package/dist/types/types/showcaseProject.types.d.ts.map +1 -1
  357. package/dist/types/types/tag.types.d.ts.map +1 -1
  358. package/dist/types/types/user.types.d.ts.map +1 -1
  359. package/dist/types/utils/AI/askDocQuestion/askDocQuestion.d.ts.map +1 -1
  360. package/dist/types/utils/AI/askDocQuestion/indexMarkdownFiles.d.ts.map +1 -1
  361. package/dist/types/utils/AI/auditDictionary/index.d.ts.map +1 -1
  362. package/dist/types/utils/AI/auditDictionaryField/index.d.ts.map +1 -1
  363. package/dist/types/utils/AI/auditDictionaryMetadata/index.d.ts.map +1 -1
  364. package/dist/types/utils/AI/auditTag/index.d.ts.map +1 -1
  365. package/dist/types/utils/AI/autocomplete/index.d.ts.map +1 -1
  366. package/dist/types/utils/AI/chat/index.d.ts.map +1 -1
  367. package/dist/types/utils/AI/chat/mcpInProcessTools.d.ts.map +1 -1
  368. package/dist/types/utils/AI/chat/sessionTools.d.ts +25 -24
  369. package/dist/types/utils/AI/chat/sessionTools.d.ts.map +1 -1
  370. package/dist/types/utils/AI/customQuery/index.d.ts.map +1 -1
  371. package/dist/types/utils/AI/translateDictionaryDB.d.ts.map +1 -1
  372. package/dist/types/utils/AI/translateJSON/index.d.ts.map +1 -1
  373. package/dist/types/utils/auth/getAuth.d.ts.map +1 -1
  374. package/dist/types/utils/cors.d.ts +1 -7
  375. package/dist/types/utils/cors.d.ts.map +1 -1
  376. package/dist/types/utils/demoDictionaries.d.ts.map +1 -1
  377. package/dist/types/utils/ensureArrayQueryFilter.d.ts.map +1 -1
  378. package/dist/types/utils/errors/ErrorHandler.d.ts +8 -6
  379. package/dist/types/utils/errors/ErrorHandler.d.ts.map +1 -1
  380. package/dist/types/utils/errors/ErrorsClass.d.ts.map +1 -1
  381. package/dist/types/utils/errors/errorCodes.d.ts.map +1 -1
  382. package/dist/types/utils/filtersAndPagination/getDictionaryFiltersAndPagination.d.ts.map +1 -1
  383. package/dist/types/utils/filtersAndPagination/getDiscussionFiltersAndPagination.d.ts.map +1 -1
  384. package/dist/types/utils/filtersAndPagination/getFiltersAndPaginationFromBody.d.ts.map +1 -1
  385. package/dist/types/utils/filtersAndPagination/getOrganizationFiltersAndPagination.d.ts.map +1 -1
  386. package/dist/types/utils/filtersAndPagination/getProjectFiltersAndPagination.d.ts.map +1 -1
  387. package/dist/types/utils/filtersAndPagination/getTagFiltersAndPagination.d.ts +7 -6
  388. package/dist/types/utils/filtersAndPagination/getTagFiltersAndPagination.d.ts.map +1 -1
  389. package/dist/types/utils/filtersAndPagination/getUserFiltersAndPagination.d.ts.map +1 -1
  390. package/dist/types/utils/getFaviconUrl.d.ts.map +1 -1
  391. package/dist/types/utils/github/connectGithub.d.ts.map +1 -1
  392. package/dist/types/utils/httpStatusCodes.d.ts.map +1 -1
  393. package/dist/types/utils/image/resizeImage.d.ts.map +1 -1
  394. package/dist/types/utils/mapper/dictionary.d.ts.map +1 -1
  395. package/dist/types/utils/mapper/project.d.ts.map +1 -1
  396. package/dist/types/utils/mapper/session.d.ts.map +1 -1
  397. package/dist/types/utils/mapper/showcaseProject.d.ts.map +1 -1
  398. package/dist/types/utils/mapper/tag.d.ts.map +1 -1
  399. package/dist/types/utils/mergeFunctionTypes.d.ts.map +1 -1
  400. package/dist/types/utils/mongoDB/connectDB.d.ts.map +1 -1
  401. package/dist/types/utils/mongoDB/types.d.ts.map +1 -1
  402. package/dist/types/utils/oAuth2.d.ts.map +1 -1
  403. package/dist/types/utils/permissions.d.ts +2 -1
  404. package/dist/types/utils/permissions.d.ts.map +1 -1
  405. package/dist/types/utils/plan.d.ts.map +1 -1
  406. package/dist/types/utils/rateLimiter.d.ts.map +1 -1
  407. package/dist/types/utils/redis/connectRedis.d.ts.map +1 -1
  408. package/dist/types/utils/responseData.d.ts.map +1 -1
  409. package/dist/types/utils/s3/s3Client.d.ts.map +1 -1
  410. package/dist/types/utils/validation/validateDictionary.d.ts.map +1 -1
  411. package/dist/types/utils/validation/validateOrganization.d.ts.map +1 -1
  412. package/dist/types/utils/validation/validateProject.d.ts.map +1 -1
  413. package/dist/types/utils/validation/validateTag.d.ts.map +1 -1
  414. package/dist/types/utils/validation/validateUser.d.ts.map +1 -1
  415. package/package.json +17 -17
@@ -1 +1 @@
1
- {"version":3,"file":"plan.mjs","names":[],"sources":["../../../src/utils/plan.ts"],"sourcesContent":["import type { Plan } from '@/types/plan.types';\n\n/**\n * Retrieves the plan type based on the price ID.\n * @param priceId - The price ID to retrieve the plan type from.\n * @returns The plan type and period.\n */\nexport const retrievePlanInformation = (\n priceId: string\n): Pick<Plan, 'period' | 'type'> => {\n switch (priceId) {\n case process.env.STRIPE_PREMIUM_YEARLY_PRICE_ID!:\n return { period: 'YEARLY', type: 'PREMIUM' };\n case process.env.STRIPE_PREMIUM_MONTHLY_PRICE_ID!:\n return { period: 'MONTHLY', type: 'PREMIUM' };\n case process.env.STRIPE_ENTERPRISE_YEARLY_PRICE_ID!:\n return { period: 'YEARLY', type: 'ENTERPRISE' };\n case process.env.STRIPE_ENTERPRISE_MONTHLY_PRICE_ID!:\n return { period: 'MONTHLY', type: 'ENTERPRISE' };\n case process.env.STRIPE_ONE_TIME_PAYMENT_PRICE_ID!:\n return { period: 'LIFETIME', type: 'LIFETIME' };\n default:\n return { period: undefined, type: 'FREE' };\n }\n};\n\nexport const isLifetimePriceId = (priceId: string): boolean =>\n Boolean(\n process.env.STRIPE_ONE_TIME_PAYMENT_PRICE_ID &&\n priceId === process.env.STRIPE_ONE_TIME_PAYMENT_PRICE_ID\n );\n\ntype PlanDetails = {\n numberOfOrganizationUsers?: number;\n numberOfProjects?: number;\n totalStorage?: number;\n SeoAI: boolean;\n contentAI: boolean;\n};\n\nconst planDetails: Record<Plan['type'], PlanDetails> = {\n FREE: {\n numberOfOrganizationUsers: 2,\n numberOfProjects: 2,\n totalStorage: 100, // 100 MB\n SeoAI: false,\n contentAI: false,\n },\n PREMIUM: {\n numberOfOrganizationUsers: 20,\n numberOfProjects: 10,\n totalStorage: 500, // 500 MB\n SeoAI: false,\n contentAI: true,\n },\n ENTERPRISE: {\n numberOfOrganizationUsers: undefined,\n numberOfProjects: undefined,\n totalStorage: undefined,\n SeoAI: true,\n contentAI: true,\n },\n LIFETIME: {\n numberOfOrganizationUsers: undefined,\n numberOfProjects: undefined,\n totalStorage: undefined,\n SeoAI: true,\n contentAI: true,\n },\n};\n\nexport const getPlanDetails = (plan?: Plan): PlanDetails => {\n if (plan?.status !== 'active') {\n return planDetails.FREE;\n }\n\n return planDetails[plan.type];\n};\n"],"mappings":";;;;;;AAOA,MAAa,2BACX,YACkC;CAClC,QAAQ,SAAR;EACE,KAAK,QAAQ,IAAI,gCACf,OAAO;GAAE,QAAQ;GAAU,MAAM;EAAU;EAC7C,KAAK,QAAQ,IAAI,iCACf,OAAO;GAAE,QAAQ;GAAW,MAAM;EAAU;EAC9C,KAAK,QAAQ,IAAI,mCACf,OAAO;GAAE,QAAQ;GAAU,MAAM;EAAa;EAChD,KAAK,QAAQ,IAAI,oCACf,OAAO;GAAE,QAAQ;GAAW,MAAM;EAAa;EACjD,KAAK,QAAQ,IAAI,kCACf,OAAO;GAAE,QAAQ;GAAY,MAAM;EAAW;EAChD,SACE,OAAO;GAAE,QAAQ;GAAW,MAAM;EAAO;CAC7C;AACF;AAEA,MAAa,qBAAqB,YAChC,QACE,QAAQ,IAAI,oCACV,YAAY,QAAQ,IAAI,gCAC5B;AAUF,MAAM,cAAiD;CACrD,MAAM;EACJ,2BAA2B;EAC3B,kBAAkB;EAClB,cAAc;EACd,OAAO;EACP,WAAW;CACb;CACA,SAAS;EACP,2BAA2B;EAC3B,kBAAkB;EAClB,cAAc;EACd,OAAO;EACP,WAAW;CACb;CACA,YAAY;EACV,2BAA2B;EAC3B,kBAAkB;EAClB,cAAc;EACd,OAAO;EACP,WAAW;CACb;CACA,UAAU;EACR,2BAA2B;EAC3B,kBAAkB;EAClB,cAAc;EACd,OAAO;EACP,WAAW;CACb;AACF;AAEA,MAAa,kBAAkB,SAA6B;CAC1D,IAAI,MAAM,WAAW,UACnB,OAAO,YAAY;CAGrB,OAAO,YAAY,KAAK;AAC1B"}
1
+ {"version":3,"file":"plan.mjs","names":[],"sources":["../../../src/utils/plan.ts"],"sourcesContent":["import type { Plan } from '@/types/plan.types';\n\n/**\n * Retrieves the plan type based on the price ID.\n * @param priceId - The price ID to retrieve the plan type from.\n * @returns The plan type and period.\n */\nexport const retrievePlanInformation = (\n priceId: string\n): Pick<Plan, 'period' | 'type'> => {\n switch (priceId) {\n case process.env.STRIPE_PREMIUM_YEARLY_PRICE_ID!:\n return { period: 'YEARLY', type: 'PREMIUM' };\n case process.env.STRIPE_PREMIUM_MONTHLY_PRICE_ID!:\n return { period: 'MONTHLY', type: 'PREMIUM' };\n case process.env.STRIPE_ENTERPRISE_YEARLY_PRICE_ID!:\n return { period: 'YEARLY', type: 'ENTERPRISE' };\n case process.env.STRIPE_ENTERPRISE_MONTHLY_PRICE_ID!:\n return { period: 'MONTHLY', type: 'ENTERPRISE' };\n case process.env.STRIPE_ONE_TIME_PAYMENT_PRICE_ID!:\n return { period: 'LIFETIME', type: 'LIFETIME' };\n default:\n return { period: undefined, type: 'FREE' };\n }\n};\n\nexport const isLifetimePriceId = (priceId: string): boolean =>\n Boolean(\n process.env.STRIPE_ONE_TIME_PAYMENT_PRICE_ID &&\n priceId === process.env.STRIPE_ONE_TIME_PAYMENT_PRICE_ID\n );\n\ntype PlanDetails = {\n numberOfOrganizationUsers?: number;\n numberOfProjects?: number;\n totalStorage?: number;\n SeoAI: boolean;\n contentAI: boolean;\n};\n\nconst planDetails: Record<Plan['type'], PlanDetails> = {\n FREE: {\n numberOfOrganizationUsers: 2,\n numberOfProjects: 2,\n totalStorage: 100, // 100 MB\n SeoAI: false,\n contentAI: false,\n },\n PREMIUM: {\n numberOfOrganizationUsers: 20,\n numberOfProjects: 10,\n totalStorage: 500, // 500 MB\n SeoAI: false,\n contentAI: true,\n },\n ENTERPRISE: {\n numberOfOrganizationUsers: undefined,\n numberOfProjects: undefined,\n totalStorage: undefined,\n SeoAI: true,\n contentAI: true,\n },\n LIFETIME: {\n numberOfOrganizationUsers: undefined,\n numberOfProjects: undefined,\n totalStorage: undefined,\n SeoAI: true,\n contentAI: true,\n },\n};\n\nexport const getPlanDetails = (plan?: Plan): PlanDetails => {\n if (plan?.status !== 'active') {\n return planDetails.FREE;\n }\n\n return planDetails[plan.type];\n};\n"],"mappings":";;;;;;AAOA,MAAa,2BACX,YACkC;AAClC,SAAQ,SAAR;EACE,KAAK,QAAQ,IAAI,+BACf,QAAO;GAAE,QAAQ;GAAU,MAAM;GAAW;EAC9C,KAAK,QAAQ,IAAI,gCACf,QAAO;GAAE,QAAQ;GAAW,MAAM;GAAW;EAC/C,KAAK,QAAQ,IAAI,kCACf,QAAO;GAAE,QAAQ;GAAU,MAAM;GAAc;EACjD,KAAK,QAAQ,IAAI,mCACf,QAAO;GAAE,QAAQ;GAAW,MAAM;GAAc;EAClD,KAAK,QAAQ,IAAI,iCACf,QAAO;GAAE,QAAQ;GAAY,MAAM;GAAY;EACjD,QACE,QAAO;GAAE,QAAQ;GAAW,MAAM;GAAQ;;;AAIhD,MAAa,qBAAqB,YAChC,QACE,QAAQ,IAAI,oCACV,YAAY,QAAQ,IAAI,iCAC3B;AAUH,MAAM,cAAiD;CACrD,MAAM;EACJ,2BAA2B;EAC3B,kBAAkB;EAClB,cAAc;EACd,OAAO;EACP,WAAW;EACZ;CACD,SAAS;EACP,2BAA2B;EAC3B,kBAAkB;EAClB,cAAc;EACd,OAAO;EACP,WAAW;EACZ;CACD,YAAY;EACV,2BAA2B;EAC3B,kBAAkB;EAClB,cAAc;EACd,OAAO;EACP,WAAW;EACZ;CACD,UAAU;EACR,2BAA2B;EAC3B,kBAAkB;EAClB,cAAc;EACd,OAAO;EACP,WAAW;EACZ;CACF;AAED,MAAa,kBAAkB,SAA6B;AAC1D,KAAI,MAAM,WAAW,SACnB,QAAO,YAAY;AAGrB,QAAO,YAAY,KAAK"}
@@ -1 +1 @@
1
- {"version":3,"file":"launchBrowser.mjs","names":[],"sources":["../../../../src/utils/puppeteer/launchBrowser.ts"],"sourcesContent":["import puppeteer, { type Browser, type LaunchOptions } from 'puppeteer';\n\nconst defaultArgs = [\n '--headless',\n '--no-sandbox',\n '--disable-setuid-sandbox',\n '--disable-dev-shm-usage',\n '--disable-gpu',\n '--no-zygote',\n '--disable-software-rasterizer',\n '--disable-crash-reporter',\n '--no-first-run',\n '--disable-features=Translate,BackForwardCache',\n];\n\nexport const launchBrowser = (overrides?: LaunchOptions): Promise<Browser> =>\n puppeteer.launch({\n headless: true,\n executablePath: process.env.PUPPETEER_EXECUTABLE_PATH,\n args: defaultArgs,\n pipe: false,\n dumpio: false,\n ...overrides,\n });\n"],"mappings":";;;AAEA,MAAM,cAAc;CAClB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,MAAa,iBAAiB,cAC5B,UAAU,OAAO;CACf,UAAU;CACV,gBAAgB,QAAQ,IAAI;CAC5B,MAAM;CACN,MAAM;CACN,QAAQ;CACR,GAAG;AACL,CAAC"}
1
+ {"version":3,"file":"launchBrowser.mjs","names":[],"sources":["../../../../src/utils/puppeteer/launchBrowser.ts"],"sourcesContent":["import puppeteer, { type Browser, type LaunchOptions } from 'puppeteer';\n\nconst defaultArgs = [\n '--headless',\n '--no-sandbox',\n '--disable-setuid-sandbox',\n '--disable-dev-shm-usage',\n '--disable-gpu',\n '--no-zygote',\n '--disable-software-rasterizer',\n '--disable-crash-reporter',\n '--no-first-run',\n '--disable-features=Translate,BackForwardCache',\n];\n\nexport const launchBrowser = (overrides?: LaunchOptions): Promise<Browser> =>\n puppeteer.launch({\n headless: true,\n executablePath: process.env.PUPPETEER_EXECUTABLE_PATH,\n args: defaultArgs,\n pipe: false,\n dumpio: false,\n ...overrides,\n });\n"],"mappings":";;;AAEA,MAAM,cAAc;CAClB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAa,iBAAiB,cAC5B,UAAU,OAAO;CACf,UAAU;CACV,gBAAgB,QAAQ,IAAI;CAC5B,MAAM;CACN,MAAM;CACN,QAAQ;CACR,GAAG;CACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"rateLimiter.mjs","names":[],"sources":["../../../src/utils/rateLimiter.ts"],"sourcesContent":["import type { RateLimitOptions } from '@fastify/rate-limit';\nimport type { FastifyRequest } from 'fastify';\nimport { ErrorHandler } from './errors';\n\n// Helper function to normalize IP addresses (similar to express-rate-limit's ipKeyGenerator)\nconst normalizeIP = (ip: string | undefined): string => {\n if (!ip) return 'unknown';\n // Normalize IPv6 mapped IPv4 addresses\n if (ip.startsWith('::ffff:')) {\n return ip.substring(7);\n }\n return ip;\n};\n\n// -------------------------------------------------------------\n// Create the rate-limiter instances once at module load-time so\n// that the hit counters are shared across every incoming request.\n// -------------------------------------------------------------\n\nexport const ipLimiter: RateLimitOptions = {\n max: 500, // 500 requests\n timeWindow: 60 * 1000, // 1-minute window\n enableDraftSpec: true,\n // Use a custom key generator that handles proxy headers securely\n keyGenerator: (request: FastifyRequest) => {\n const ip =\n request.ip ??\n request.socket?.remoteAddress ??\n request.headers['x-forwarded-for'] ??\n 'unknown';\n return normalizeIP(typeof ip === 'string' ? ip : ip[0]);\n },\n errorResponseBuilder: (_request: FastifyRequest, context) => {\n // context.ttl is already the remaining time in milliseconds\n const retryAfter = Math.ceil(context.ttl / 1000);\n const errorResponse = ErrorHandler.formatGenericErrorResponse(\n 'RATE_LIMIT_EXCEEDED',\n {\n limit: `${context.max} per minute`,\n retryAfter,\n }\n );\n return {\n statusCode: errorResponse.status,\n ...errorResponse,\n };\n },\n};\n\nexport const unauthenticatedChatBotLimiter: RateLimitOptions = {\n max: 3, // 3 requests\n timeWindow: 60 * 60 * 1000, // 1-hour window\n enableDraftSpec: true,\n // Skip rate limiting if user is authenticated (allowList returns true to skip)\n allowList: (request: FastifyRequest) => {\n return Boolean(request.session?.user);\n },\n // Use a custom key generator that handles proxy headers securely\n keyGenerator: (request: FastifyRequest) => {\n const ip =\n request.ip ??\n request.socket?.remoteAddress ??\n request.headers['x-forwarded-for'] ??\n 'unknown';\n return normalizeIP(typeof ip === 'string' ? ip : ip[0]);\n },\n errorResponseBuilder: (_request: FastifyRequest, context) => {\n // context.ttl is already the remaining time in milliseconds\n const retryAfter = Math.ceil(context.ttl / 1000);\n const errorResponse = ErrorHandler.formatGenericErrorResponse(\n 'RATE_LIMIT_EXCEEDED_UNAUTHENTICATED',\n {\n limit: `${context.max} per hour`,\n retryAfter,\n }\n );\n return {\n statusCode: errorResponse.status,\n ...errorResponse,\n };\n },\n};\n"],"mappings":";;;AAKA,MAAM,eAAe,OAAmC;CACtD,IAAI,CAAC,IAAI,OAAO;CAEhB,IAAI,GAAG,WAAW,SAAS,GACzB,OAAO,GAAG,UAAU,CAAC;CAEvB,OAAO;AACT;AAOA,MAAa,YAA8B;CACzC,KAAK;CACL,YAAY,KAAK;CACjB,iBAAiB;CAEjB,eAAe,YAA4B;EACzC,MAAM,KACJ,QAAQ,MACR,QAAQ,QAAQ,iBAChB,QAAQ,QAAQ,sBAChB;EACF,OAAO,YAAY,OAAO,OAAO,WAAW,KAAK,GAAG,EAAE;CACxD;CACA,uBAAuB,UAA0B,YAAY;EAE3D,MAAM,aAAa,KAAK,KAAK,QAAQ,MAAM,GAAI;EAC/C,MAAM,gBAAgB,aAAa,2BACjC,uBACA;GACE,OAAO,GAAG,QAAQ,IAAI;GACtB;EACF,CACF;EACA,OAAO;GACL,YAAY,cAAc;GAC1B,GAAG;EACL;CACF;AACF;AAEA,MAAa,gCAAkD;CAC7D,KAAK;CACL,YAAY,OAAU;CACtB,iBAAiB;CAEjB,YAAY,YAA4B;EACtC,OAAO,QAAQ,QAAQ,SAAS,IAAI;CACtC;CAEA,eAAe,YAA4B;EACzC,MAAM,KACJ,QAAQ,MACR,QAAQ,QAAQ,iBAChB,QAAQ,QAAQ,sBAChB;EACF,OAAO,YAAY,OAAO,OAAO,WAAW,KAAK,GAAG,EAAE;CACxD;CACA,uBAAuB,UAA0B,YAAY;EAE3D,MAAM,aAAa,KAAK,KAAK,QAAQ,MAAM,GAAI;EAC/C,MAAM,gBAAgB,aAAa,2BACjC,uCACA;GACE,OAAO,GAAG,QAAQ,IAAI;GACtB;EACF,CACF;EACA,OAAO;GACL,YAAY,cAAc;GAC1B,GAAG;EACL;CACF;AACF"}
1
+ {"version":3,"file":"rateLimiter.mjs","names":[],"sources":["../../../src/utils/rateLimiter.ts"],"sourcesContent":["import type { RateLimitOptions } from '@fastify/rate-limit';\nimport type { FastifyRequest } from 'fastify';\nimport { ErrorHandler } from './errors';\n\n// Helper function to normalize IP addresses (similar to express-rate-limit's ipKeyGenerator)\nconst normalizeIP = (ip: string | undefined): string => {\n if (!ip) return 'unknown';\n // Normalize IPv6 mapped IPv4 addresses\n if (ip.startsWith('::ffff:')) {\n return ip.substring(7);\n }\n return ip;\n};\n\n// -------------------------------------------------------------\n// Create the rate-limiter instances once at module load-time so\n// that the hit counters are shared across every incoming request.\n// -------------------------------------------------------------\n\nexport const ipLimiter: RateLimitOptions = {\n max: 500, // 500 requests\n timeWindow: 60 * 1000, // 1-minute window\n enableDraftSpec: true,\n // Use a custom key generator that handles proxy headers securely\n keyGenerator: (request: FastifyRequest) => {\n const ip =\n request.ip ??\n request.socket?.remoteAddress ??\n request.headers['x-forwarded-for'] ??\n 'unknown';\n return normalizeIP(typeof ip === 'string' ? ip : ip[0]);\n },\n errorResponseBuilder: (_request: FastifyRequest, context) => {\n // context.ttl is already the remaining time in milliseconds\n const retryAfter = Math.ceil(context.ttl / 1000);\n const errorResponse = ErrorHandler.formatGenericErrorResponse(\n 'RATE_LIMIT_EXCEEDED',\n {\n limit: `${context.max} per minute`,\n retryAfter,\n }\n );\n return {\n statusCode: errorResponse.status,\n ...errorResponse,\n };\n },\n};\n\nexport const unauthenticatedChatBotLimiter: RateLimitOptions = {\n max: 3, // 3 requests\n timeWindow: 60 * 60 * 1000, // 1-hour window\n enableDraftSpec: true,\n // Skip rate limiting if user is authenticated (allowList returns true to skip)\n allowList: (request: FastifyRequest) => {\n return Boolean(request.session?.user);\n },\n // Use a custom key generator that handles proxy headers securely\n keyGenerator: (request: FastifyRequest) => {\n const ip =\n request.ip ??\n request.socket?.remoteAddress ??\n request.headers['x-forwarded-for'] ??\n 'unknown';\n return normalizeIP(typeof ip === 'string' ? ip : ip[0]);\n },\n errorResponseBuilder: (_request: FastifyRequest, context) => {\n // context.ttl is already the remaining time in milliseconds\n const retryAfter = Math.ceil(context.ttl / 1000);\n const errorResponse = ErrorHandler.formatGenericErrorResponse(\n 'RATE_LIMIT_EXCEEDED_UNAUTHENTICATED',\n {\n limit: `${context.max} per hour`,\n retryAfter,\n }\n );\n return {\n statusCode: errorResponse.status,\n ...errorResponse,\n };\n },\n};\n"],"mappings":";;;AAKA,MAAM,eAAe,OAAmC;AACtD,KAAI,CAAC,GAAI,QAAO;AAEhB,KAAI,GAAG,WAAW,UAAU,CAC1B,QAAO,GAAG,UAAU,EAAE;AAExB,QAAO;;AAQT,MAAa,YAA8B;CACzC,KAAK;CACL,YAAY,KAAK;CACjB,iBAAiB;CAEjB,eAAe,YAA4B;EACzC,MAAM,KACJ,QAAQ,MACR,QAAQ,QAAQ,iBAChB,QAAQ,QAAQ,sBAChB;AACF,SAAO,YAAY,OAAO,OAAO,WAAW,KAAK,GAAG,GAAG;;CAEzD,uBAAuB,UAA0B,YAAY;EAE3D,MAAM,aAAa,KAAK,KAAK,QAAQ,MAAM,IAAK;EAChD,MAAM,gBAAgB,aAAa,2BACjC,uBACA;GACE,OAAO,GAAG,QAAQ,IAAI;GACtB;GACD,CACF;AACD,SAAO;GACL,YAAY,cAAc;GAC1B,GAAG;GACJ;;CAEJ;AAED,MAAa,gCAAkD;CAC7D,KAAK;CACL,YAAY,OAAU;CACtB,iBAAiB;CAEjB,YAAY,YAA4B;AACtC,SAAO,QAAQ,QAAQ,SAAS,KAAK;;CAGvC,eAAe,YAA4B;EACzC,MAAM,KACJ,QAAQ,MACR,QAAQ,QAAQ,iBAChB,QAAQ,QAAQ,sBAChB;AACF,SAAO,YAAY,OAAO,OAAO,WAAW,KAAK,GAAG,GAAG;;CAEzD,uBAAuB,UAA0B,YAAY;EAE3D,MAAM,aAAa,KAAK,KAAK,QAAQ,MAAM,IAAK;EAChD,MAAM,gBAAgB,aAAa,2BACjC,uCACA;GACE,OAAO,GAAG,QAAQ,IAAI;GACtB;GACD,CACF;AACD,SAAO;GACL,YAAY,cAAc;GAC1B,GAAG;GACJ;;CAEJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"connectRedis.mjs","names":[],"sources":["../../../../src/utils/redis/connectRedis.ts"],"sourcesContent":["import { logger } from '@logger';\nimport Redis from 'ioredis';\n\nlet redisClientInstance: Redis | null = null;\n\nexport const connectRedis = async (): Promise<Redis> => {\n try {\n if (redisClientInstance) {\n return redisClientInstance;\n }\n\n const redisUrl = process.env.REDIS_URL;\n\n if (!redisUrl) {\n const errorMessage = 'REDIS_URL is not defined';\n logger.error(errorMessage);\n throw new Error(errorMessage);\n }\n\n const client = new Redis(redisUrl, {\n maxRetriesPerRequest: null,\n lazyConnect: true, // We want to await connection\n });\n\n client.on('error', (err) => {\n logger.error('Redis connection error:', err);\n });\n\n await client.connect();\n\n logger.info('Redis connected');\n\n redisClientInstance = client;\n\n return redisClientInstance;\n } catch (error) {\n const errorMessage = `Redis connection error - ${(error as Error).message}`;\n\n logger.error(errorMessage);\n throw new Error(errorMessage);\n }\n};\n\n/**\n * Get the Redis client instance.\n * Must be called after connectRedis() has been executed.\n */\nexport const getRedisClient = (): Redis => {\n if (!redisClientInstance) {\n throw new Error('Redis not connected. Call connectRedis() first.');\n }\n return redisClientInstance;\n};\n"],"mappings":";;;;AAGA,IAAI,sBAAoC;AAExC,MAAa,eAAe,YAA4B;CACtD,IAAI;EACF,IAAI,qBACF,OAAO;EAGT,MAAM,WAAW,QAAQ,IAAI;EAE7B,IAAI,CAAC,UAAU;GACb,MAAM,eAAe;GACrB,OAAO,MAAM,YAAY;GACzB,MAAM,IAAI,MAAM,YAAY;EAC9B;EAEA,MAAM,SAAS,IAAI,MAAM,UAAU;GACjC,sBAAsB;GACtB,aAAa;EACf,CAAC;EAED,OAAO,GAAG,UAAU,QAAQ;GAC1B,OAAO,MAAM,2BAA2B,GAAG;EAC7C,CAAC;EAED,MAAM,OAAO,QAAQ;EAErB,OAAO,KAAK,iBAAiB;EAE7B,sBAAsB;EAEtB,OAAO;CACT,SAAS,OAAO;EACd,MAAM,eAAe,4BAA6B,MAAgB;EAElE,OAAO,MAAM,YAAY;EACzB,MAAM,IAAI,MAAM,YAAY;CAC9B;AACF;;;;;AAMA,MAAa,uBAA8B;CACzC,IAAI,CAAC,qBACH,MAAM,IAAI,MAAM,iDAAiD;CAEnE,OAAO;AACT"}
1
+ {"version":3,"file":"connectRedis.mjs","names":[],"sources":["../../../../src/utils/redis/connectRedis.ts"],"sourcesContent":["import { logger } from '@logger';\nimport Redis from 'ioredis';\n\nlet redisClientInstance: Redis | null = null;\n\nexport const connectRedis = async (): Promise<Redis> => {\n try {\n if (redisClientInstance) {\n return redisClientInstance;\n }\n\n const redisUrl = process.env.REDIS_URL;\n\n if (!redisUrl) {\n const errorMessage = 'REDIS_URL is not defined';\n logger.error(errorMessage);\n throw new Error(errorMessage);\n }\n\n const client = new Redis(redisUrl, {\n maxRetriesPerRequest: null,\n lazyConnect: true, // We want to await connection\n });\n\n client.on('error', (err) => {\n logger.error('Redis connection error:', err);\n });\n\n await client.connect();\n\n logger.info('Redis connected');\n\n redisClientInstance = client;\n\n return redisClientInstance;\n } catch (error) {\n const errorMessage = `Redis connection error - ${(error as Error).message}`;\n\n logger.error(errorMessage);\n throw new Error(errorMessage);\n }\n};\n\n/**\n * Get the Redis client instance.\n * Must be called after connectRedis() has been executed.\n */\nexport const getRedisClient = (): Redis => {\n if (!redisClientInstance) {\n throw new Error('Redis not connected. Call connectRedis() first.');\n }\n return redisClientInstance;\n};\n"],"mappings":";;;;AAGA,IAAI,sBAAoC;AAExC,MAAa,eAAe,YAA4B;AACtD,KAAI;AACF,MAAI,oBACF,QAAO;EAGT,MAAM,WAAW,QAAQ,IAAI;AAE7B,MAAI,CAAC,UAAU;GACb,MAAM,eAAe;AACrB,UAAO,MAAM,aAAa;AAC1B,SAAM,IAAI,MAAM,aAAa;;EAG/B,MAAM,SAAS,IAAI,MAAM,UAAU;GACjC,sBAAsB;GACtB,aAAa;GACd,CAAC;AAEF,SAAO,GAAG,UAAU,QAAQ;AAC1B,UAAO,MAAM,2BAA2B,IAAI;IAC5C;AAEF,QAAM,OAAO,SAAS;AAEtB,SAAO,KAAK,kBAAkB;AAE9B,wBAAsB;AAEtB,SAAO;UACA,OAAO;EACd,MAAM,eAAe,4BAA6B,MAAgB;AAElE,SAAO,MAAM,aAAa;AAC1B,QAAM,IAAI,MAAM,aAAa;;;;;;;AAQjC,MAAa,uBAA8B;AACzC,KAAI,CAAC,oBACH,OAAM,IAAI,MAAM,kDAAkD;AAEpE,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"removeObjectKeys.mjs","names":[],"sources":["../../../src/utils/removeObjectKeys.ts"],"sourcesContent":["export const removeObjectKeys = <\n T extends Record<string, unknown>,\n K extends (keyof T)[],\n>(\n obj: T,\n keys: K\n): Omit<T, K[number]> => {\n const result = { ...obj };\n for (const key of keys) {\n delete result[key];\n }\n\n return result;\n};\n"],"mappings":";AAAA,MAAa,oBAIX,KACA,SACuB;CACvB,MAAM,SAAS,EAAE,GAAG,IAAI;CACxB,KAAK,MAAM,OAAO,MAChB,OAAO,OAAO;CAGhB,OAAO;AACT"}
1
+ {"version":3,"file":"removeObjectKeys.mjs","names":[],"sources":["../../../src/utils/removeObjectKeys.ts"],"sourcesContent":["export const removeObjectKeys = <\n T extends Record<string, unknown>,\n K extends (keyof T)[],\n>(\n obj: T,\n keys: K\n): Omit<T, K[number]> => {\n const result = { ...obj };\n for (const key of keys) {\n delete result[key];\n }\n\n return result;\n};\n"],"mappings":";AAAA,MAAa,oBAIX,KACA,SACuB;CACvB,MAAM,SAAS,EAAE,GAAG,KAAK;AACzB,MAAK,MAAM,OAAO,KAChB,QAAO,OAAO;AAGhB,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"responseData.mjs","names":[],"sources":["../../../src/utils/responseData.ts"],"sourcesContent":["import { HttpStatusCodes } from '@utils/httpStatusCodes';\n\ntype ErrorData = {\n code: string;\n title: string;\n message: string;\n} & object;\n\nexport type ResponseData<T = null> = {\n message?: string;\n description?: string;\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 message?: string;\n description?: string;\n data: T;\n status?: ValidResponseStatus;\n error?: null;\n};\n\ntype ErrorResponseArgs = {\n error: ErrorData | ErrorData[];\n status: HttpStatusCodes;\n data?: null;\n message?: null;\n description?: 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 message,\n description,\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 message,\n description,\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 message: message ?? undefined,\n description: description ?? undefined,\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 message?: string;\n description?: string;\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 message?: null;\n description?: null;\n data?: null;\n\n page?: null;\n pageSize?: null;\n totalPages?: null;\n totalItems?: null;\n};\n\nexport function formatPaginatedResponse<T>({\n message,\n description,\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 message,\n description,\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 message: message ?? undefined,\n description: description ?? undefined,\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":";;;AA6CA,MAAM,mBACJ,WAEA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA;AAYF,SAAgB,eAAkB,EAChC,SACA,aACA,MACA,OACA,gBAC8D;CAG9D,OAAO;EACL,SAHc,gBAAgB,MAGxB;EACN,SAAS,WAAW;EACpB,aAAa,eAAe;EAC5B,MAAM,QAAQ;EACd,OAAO,SAAS;EAChB;CACF;AACF;AAmDA,SAAgB,wBAA2B,EACzC,cACA,SACA,aACA,MACA,OACA,MACA,UACA,YACA,cAGoD;CAGpD,OAAO;EACL,SAHc,gBAAgB,MAGxB;EACN,SAAS,WAAW;EACpB,aAAa,eAAe;EAC5B,MAAM,QAAQ;EACd,OAAO,SAAS;EAChB;EACA,MAAM,QAAQ;EACd,WAAW,YAAY;EACvB,aAAa,cAAc;EAC3B,aAAa,cAAc;CAC7B;AACF"}
1
+ {"version":3,"file":"responseData.mjs","names":[],"sources":["../../../src/utils/responseData.ts"],"sourcesContent":["import { HttpStatusCodes } from '@utils/httpStatusCodes';\n\ntype ErrorData = {\n code: string;\n title: string;\n message: string;\n} & object;\n\nexport type ResponseData<T = null> = {\n message?: string;\n description?: string;\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 message?: string;\n description?: string;\n data: T;\n status?: ValidResponseStatus;\n error?: null;\n};\n\ntype ErrorResponseArgs = {\n error: ErrorData | ErrorData[];\n status: HttpStatusCodes;\n data?: null;\n message?: null;\n description?: 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 message,\n description,\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 message,\n description,\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 message: message ?? undefined,\n description: description ?? undefined,\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 message?: string;\n description?: string;\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 message?: null;\n description?: null;\n data?: null;\n\n page?: null;\n pageSize?: null;\n totalPages?: null;\n totalItems?: null;\n};\n\nexport function formatPaginatedResponse<T>({\n message,\n description,\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 message,\n description,\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 message: message ?? undefined,\n description: description ?? undefined,\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":";;;AA6CA,MAAM,mBACJ,WAEA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA;AAYF,SAAgB,eAAkB,EAChC,SACA,aACA,MACA,OACA,gBAC8D;AAG9D,QAAO;EACL,SAHc,gBAAgB,OAGvB;EACP,SAAS,WAAW;EACpB,aAAa,eAAe;EAC5B,MAAM,QAAQ;EACd,OAAO,SAAS;EAChB;EACD;;AAoDH,SAAgB,wBAA2B,EACzC,cACA,SACA,aACA,MACA,OACA,MACA,UACA,YACA,cAGoD;AAGpD,QAAO;EACL,SAHc,gBAAgB,OAGvB;EACP,SAAS,WAAW;EACpB,aAAa,eAAe;EAC5B,MAAM,QAAQ;EACd,OAAO,SAAS;EAChB;EACA,MAAM,QAAQ;EACd,WAAW,YAAY;EACvB,aAAa,cAAc;EAC3B,aAAa,cAAc;EAC5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"s3Client.mjs","names":[],"sources":["../../../../src/utils/s3/s3Client.ts"],"sourcesContent":["import { S3Client } from '@aws-sdk/client-s3';\n\nlet cachedClient: S3Client | null = null;\n\nexport const getS3Client = (): S3Client => {\n if (!cachedClient) {\n cachedClient = new S3Client({\n region: 'auto',\n endpoint: process.env.S3_ENDPOINT,\n forcePathStyle: true,\n credentials: {\n accessKeyId: process.env.S3_ACCESS_KEY_ID!,\n secretAccessKey: process.env.S3_SECRET_ACCESS_KEY!,\n },\n });\n }\n\n return cachedClient;\n};\n"],"mappings":";;;AAEA,IAAI,eAAgC;AAEpC,MAAa,oBAA8B;CACzC,IAAI,CAAC,cACH,eAAe,IAAI,SAAS;EAC1B,QAAQ;EACR,UAAU,QAAQ,IAAI;EACtB,gBAAgB;EAChB,aAAa;GACX,aAAa,QAAQ,IAAI;GACzB,iBAAiB,QAAQ,IAAI;EAC/B;CACF,CAAC;CAGH,OAAO;AACT"}
1
+ {"version":3,"file":"s3Client.mjs","names":[],"sources":["../../../../src/utils/s3/s3Client.ts"],"sourcesContent":["import { S3Client } from '@aws-sdk/client-s3';\n\nlet cachedClient: S3Client | null = null;\n\nexport const getS3Client = (): S3Client => {\n if (!cachedClient) {\n cachedClient = new S3Client({\n region: 'auto',\n endpoint: process.env.S3_ENDPOINT,\n forcePathStyle: true,\n credentials: {\n accessKeyId: process.env.S3_ACCESS_KEY_ID!,\n secretAccessKey: process.env.S3_SECRET_ACCESS_KEY!,\n },\n });\n }\n\n return cachedClient;\n};\n"],"mappings":";;;AAEA,IAAI,eAAgC;AAEpC,MAAa,oBAA8B;AACzC,KAAI,CAAC,aACH,gBAAe,IAAI,SAAS;EAC1B,QAAQ;EACR,UAAU,QAAQ,IAAI;EACtB,gBAAgB;EAChB,aAAa;GACX,aAAa,QAAQ,IAAI;GACzB,iBAAiB,QAAQ,IAAI;GAC9B;EACF,CAAC;AAGJ,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"validateDictionary.mjs","names":[],"sources":["../../../../src/utils/validation/validateDictionary.ts"],"sourcesContent":["import { findProjects } from '@services/project.service';\nimport { z } from 'zod';\nimport type { Dictionary } from '@/types/dictionary.types';\n\nexport type DictionaryFields = (keyof Dictionary)[];\n\nconst defaultFieldsToCheck: DictionaryFields = ['projectIds'];\n\nexport type FieldsToCheck = (typeof defaultFieldsToCheck)[number];\ntype ValidationErrors = Partial<\n Record<(typeof defaultFieldsToCheck)[number], string[]>\n>;\n\nconst dictionaryZodSchema = z.object({\n projectIds: z\n .array(\n z.string({\n message: 'Project id must be a string',\n })\n )\n .min(1, 'Project id is required'),\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 mask = fieldsToCheck.reduce(\n (acc, curr) => {\n acc[curr as string] = true;\n return acc;\n },\n {} as Record<string, true>\n );\n\n const schema = dictionaryZodSchema.pick(mask as any);\n const parsed = schema.safeParse(dictionary);\n\n const errors: ValidationErrors = parsed.success\n ? {}\n : (parsed.error.flatten().fieldErrors as ValidationErrors);\n\n if (\n fieldsToCheck.includes('projectIds') &&\n dictionary.projectIds &&\n !errors.projectIds\n ) {\n try {\n const projects = await findProjects({\n _id: dictionary.projectIds as unknown as string[],\n });\n\n if (!projects || projects.length !== dictionary.projectIds.length) {\n errors.projectIds = errors.projectIds || [];\n errors.projectIds.push('Project not found'); // Some or all projects were not found\n }\n } catch (e) {\n errors.projectIds = errors.projectIds || [];\n errors.projectIds.push('Project not found');\n }\n }\n\n return errors;\n};\n"],"mappings":";;;;AAMA,MAAM,uBAAyC,CAAC,YAAY;AAO5D,MAAM,sBAAsB,EAAE,OAAO,EACnC,YAAY,EACT,MACC,EAAE,OAAO,EACP,SAAS,8BACX,CAAC,CACH,CAAC,CACA,IAAI,GAAG,wBAAwB,EACpC,CAAC;;;;;;AAOD,MAAa,qBAAqB,OAChC,YACA,gBAAgB,yBACc;CAC9B,MAAM,OAAO,cAAc,QACxB,KAAK,SAAS;EACb,IAAI,QAAkB;EACtB,OAAO;CACT,GACA,CAAC,CACH;CAGA,MAAM,SADS,oBAAoB,KAAK,IACpB,CAAC,CAAC,UAAU,UAAU;CAE1C,MAAM,SAA2B,OAAO,UACpC,CAAC,IACA,OAAO,MAAM,QAAQ,CAAC,CAAC;CAE5B,IACE,cAAc,SAAS,YAAY,KACnC,WAAW,cACX,CAAC,OAAO,YAER,IAAI;EACF,MAAM,WAAW,MAAM,aAAa,EAClC,KAAK,WAAW,WAClB,CAAC;EAED,IAAI,CAAC,YAAY,SAAS,WAAW,WAAW,WAAW,QAAQ;GACjE,OAAO,aAAa,OAAO,cAAc,CAAC;GAC1C,OAAO,WAAW,KAAK,mBAAmB;EAC5C;CACF,SAAS,GAAG;EACV,OAAO,aAAa,OAAO,cAAc,CAAC;EAC1C,OAAO,WAAW,KAAK,mBAAmB;CAC5C;CAGF,OAAO;AACT"}
1
+ {"version":3,"file":"validateDictionary.mjs","names":[],"sources":["../../../../src/utils/validation/validateDictionary.ts"],"sourcesContent":["import { findProjects } from '@services/project.service';\nimport { z } from 'zod';\nimport type { Dictionary } from '@/types/dictionary.types';\n\nexport type DictionaryFields = (keyof Dictionary)[];\n\nconst defaultFieldsToCheck: DictionaryFields = ['projectIds'];\n\nexport type FieldsToCheck = (typeof defaultFieldsToCheck)[number];\ntype ValidationErrors = Partial<\n Record<(typeof defaultFieldsToCheck)[number], string[]>\n>;\n\nconst dictionaryZodSchema = z.object({\n projectIds: z\n .array(\n z.string({\n message: 'Project id must be a string',\n })\n )\n .min(1, 'Project id is required'),\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 mask = fieldsToCheck.reduce(\n (acc, curr) => {\n acc[curr as string] = true;\n return acc;\n },\n {} as Record<string, true>\n );\n\n const schema = dictionaryZodSchema.pick(mask as any);\n const parsed = schema.safeParse(dictionary);\n\n const errors: ValidationErrors = parsed.success\n ? {}\n : (parsed.error.flatten().fieldErrors as ValidationErrors);\n\n if (\n fieldsToCheck.includes('projectIds') &&\n dictionary.projectIds &&\n !errors.projectIds\n ) {\n try {\n const projects = await findProjects({\n _id: dictionary.projectIds as unknown as string[],\n });\n\n if (!projects || projects.length !== dictionary.projectIds.length) {\n errors.projectIds = errors.projectIds || [];\n errors.projectIds.push('Project not found'); // Some or all projects were not found\n }\n } catch (e) {\n errors.projectIds = errors.projectIds || [];\n errors.projectIds.push('Project not found');\n }\n }\n\n return errors;\n};\n"],"mappings":";;;;AAMA,MAAM,uBAAyC,CAAC,aAAa;AAO7D,MAAM,sBAAsB,EAAE,OAAO,EACnC,YAAY,EACT,MACC,EAAE,OAAO,EACP,SAAS,+BACV,CAAC,CACH,CACA,IAAI,GAAG,yBAAyB,EACpC,CAAC;;;;;;AAOF,MAAa,qBAAqB,OAChC,YACA,gBAAgB,yBACc;CAC9B,MAAM,OAAO,cAAc,QACxB,KAAK,SAAS;AACb,MAAI,QAAkB;AACtB,SAAO;IAET,EAAE,CACH;CAGD,MAAM,SADS,oBAAoB,KAAK,KACnB,CAAC,UAAU,WAAW;CAE3C,MAAM,SAA2B,OAAO,UACpC,EAAE,GACD,OAAO,MAAM,SAAS,CAAC;AAE5B,KACE,cAAc,SAAS,aAAa,IACpC,WAAW,cACX,CAAC,OAAO,WAER,KAAI;EACF,MAAM,WAAW,MAAM,aAAa,EAClC,KAAK,WAAW,YACjB,CAAC;AAEF,MAAI,CAAC,YAAY,SAAS,WAAW,WAAW,WAAW,QAAQ;AACjE,UAAO,aAAa,OAAO,cAAc,EAAE;AAC3C,UAAO,WAAW,KAAK,oBAAoB;;UAEtC,GAAG;AACV,SAAO,aAAa,OAAO,cAAc,EAAE;AAC3C,SAAO,WAAW,KAAK,oBAAoB;;AAI/C,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"validateOrganization.mjs","names":[],"sources":["../../../../src/utils/validation/validateOrganization.ts"],"sourcesContent":["import { z } from 'zod';\nimport type { Organization, OrganizationAPI } from '@/types/organization.types';\n\nexport type OrganizationFields = (keyof Organization)[];\n\nconst defaultFieldsToCheck: OrganizationFields = [\n 'name',\n 'membersIds',\n 'adminsIds',\n];\n\nexport type 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\nconst organizationZodSchema = z.object({\n name: z\n .string({\n message: 'Name must be a string.',\n })\n .min(\n NAME_MIN_LENGTH,\n `Name must be at least ${NAME_MIN_LENGTH} characters long.`\n )\n .max(\n NAME_MAX_LENGTH,\n `Name must be at most ${NAME_MAX_LENGTH} characters long.`\n ),\n membersIds: z\n .array(z.coerce.string())\n .min(\n MEMBERS_MIN_LENGTH,\n `Members must be at least ${MEMBERS_MIN_LENGTH} items long.`\n ),\n adminsIds: z\n .array(z.coerce.string())\n .min(\n MEMBERS_MIN_LENGTH,\n `Members must be at least ${MEMBERS_MIN_LENGTH} items long.`\n ),\n});\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 | OrganizationAPI>,\n fieldsToCheck = defaultFieldsToCheck\n): ValidationErrors => {\n const mask = fieldsToCheck.reduce(\n (acc, curr) => {\n acc[curr as string] = true;\n return acc;\n },\n {} as Record<string, true>\n );\n\n const schema = organizationZodSchema.pick(mask as any);\n const parsed = schema.safeParse(organization);\n\n if (parsed.success) {\n return {};\n }\n\n return parsed.error.flatten().fieldErrors as ValidationErrors;\n};\n"],"mappings":";;;AAKA,MAAM,uBAA2C;CAC/C;CACA;CACA;AACF;AAOA,MAAa,kBAAkB;AAC/B,MAAa,kBAAkB;AAE/B,MAAa,qBAAqB;AAElC,MAAM,wBAAwB,EAAE,OAAO;CACrC,MAAM,EACH,OAAO,EACN,SAAS,yBACX,CAAC,CAAC,CACD,OAEC,2BAAyC,kBAC3C,CAAC,CACA,SAEC,4BAAwC,kBAC1C;CACF,YAAY,EACT,MAAM,EAAE,OAAO,OAAO,CAAC,CAAC,CACxB,OAEC,8BAA+C,aACjD;CACF,WAAW,EACR,MAAM,EAAE,OAAO,OAAO,CAAC,CAAC,CACxB,OAEC,8BAA+C,aACjD;AACJ,CAAC;;;;;;AAOD,MAAa,wBACX,cACA,gBAAgB,yBACK;CACrB,MAAM,OAAO,cAAc,QACxB,KAAK,SAAS;EACb,IAAI,QAAkB;EACtB,OAAO;CACT,GACA,CAAC,CACH;CAGA,MAAM,SADS,sBAAsB,KAAK,IACtB,CAAC,CAAC,UAAU,YAAY;CAE5C,IAAI,OAAO,SACT,OAAO,CAAC;CAGV,OAAO,OAAO,MAAM,QAAQ,CAAC,CAAC;AAChC"}
1
+ {"version":3,"file":"validateOrganization.mjs","names":[],"sources":["../../../../src/utils/validation/validateOrganization.ts"],"sourcesContent":["import { z } from 'zod';\nimport type { Organization, OrganizationAPI } from '@/types/organization.types';\n\nexport type OrganizationFields = (keyof Organization)[];\n\nconst defaultFieldsToCheck: OrganizationFields = [\n 'name',\n 'membersIds',\n 'adminsIds',\n];\n\nexport type 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\nconst organizationZodSchema = z.object({\n name: z\n .string({\n message: 'Name must be a string.',\n })\n .min(\n NAME_MIN_LENGTH,\n `Name must be at least ${NAME_MIN_LENGTH} characters long.`\n )\n .max(\n NAME_MAX_LENGTH,\n `Name must be at most ${NAME_MAX_LENGTH} characters long.`\n ),\n membersIds: z\n .array(z.coerce.string())\n .min(\n MEMBERS_MIN_LENGTH,\n `Members must be at least ${MEMBERS_MIN_LENGTH} items long.`\n ),\n adminsIds: z\n .array(z.coerce.string())\n .min(\n MEMBERS_MIN_LENGTH,\n `Members must be at least ${MEMBERS_MIN_LENGTH} items long.`\n ),\n});\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 | OrganizationAPI>,\n fieldsToCheck = defaultFieldsToCheck\n): ValidationErrors => {\n const mask = fieldsToCheck.reduce(\n (acc, curr) => {\n acc[curr as string] = true;\n return acc;\n },\n {} as Record<string, true>\n );\n\n const schema = organizationZodSchema.pick(mask as any);\n const parsed = schema.safeParse(organization);\n\n if (parsed.success) {\n return {};\n }\n\n return parsed.error.flatten().fieldErrors as ValidationErrors;\n};\n"],"mappings":";;;AAKA,MAAM,uBAA2C;CAC/C;CACA;CACA;CACD;AAOD,MAAa,kBAAkB;AAC/B,MAAa,kBAAkB;AAE/B,MAAa,qBAAqB;AAElC,MAAM,wBAAwB,EAAE,OAAO;CACrC,MAAM,EACH,OAAO,EACN,SAAS,0BACV,CAAC,CACD,OAEC,2BAAyC,mBAC1C,CACA,SAEC,4BAAwC,mBACzC;CACH,YAAY,EACT,MAAM,EAAE,OAAO,QAAQ,CAAC,CACxB,OAEC,8BAA+C,cAChD;CACH,WAAW,EACR,MAAM,EAAE,OAAO,QAAQ,CAAC,CACxB,OAEC,8BAA+C,cAChD;CACJ,CAAC;;;;;;AAOF,MAAa,wBACX,cACA,gBAAgB,yBACK;CACrB,MAAM,OAAO,cAAc,QACxB,KAAK,SAAS;AACb,MAAI,QAAkB;AACtB,SAAO;IAET,EAAE,CACH;CAGD,MAAM,SADS,sBAAsB,KAAK,KACrB,CAAC,UAAU,aAAa;AAE7C,KAAI,OAAO,QACT,QAAO,EAAE;AAGX,QAAO,OAAO,MAAM,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"validateProject.mjs","names":[],"sources":["../../../../src/utils/validation/validateProject.ts"],"sourcesContent":["import { getOrganizationById } from '@services/organization.service';\nimport { z } from 'zod';\nimport type { Project, ProjectAPI } from '@/types/project.types';\n\nexport type ProjectFields = (keyof Project)[];\n\nconst defaultFieldsToCheck: ProjectFields = [\n 'name',\n 'membersIds',\n 'adminsIds',\n 'organizationId',\n];\n\nexport type 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\nconst projectZodSchema = z.object({\n name: z\n .string({\n message: 'Name must be a string.',\n })\n .min(\n NAME_MIN_LENGTH,\n `Name must be at least ${NAME_MIN_LENGTH} characters long.`\n )\n .max(\n NAME_MAX_LENGTH,\n `Name must be at most ${NAME_MAX_LENGTH} characters long.`\n ),\n organizationId: z.string({\n message: 'Organization id must be a string',\n }),\n membersIds: z\n .array(\n z.string({\n message: 'Members must contain only string elements.',\n })\n )\n .min(\n MEMBERS_MIN_LENGTH,\n `Members must be at least ${MEMBERS_MIN_LENGTH} items long.`\n ),\n adminsIds: z\n .array(\n z.string({\n message: 'Members must contain only string elements.',\n })\n )\n .min(\n MEMBERS_MIN_LENGTH,\n `Members must be at least ${MEMBERS_MIN_LENGTH} items long.`\n ),\n});\n\n/**\n * Validates a project object.\n * @param project The project object to validate.\n * @param fieldsToCheck The fields to validate.\n * @returns An object containing the validation errors for each field.\n */\nexport const validateProject = async (\n project: Partial<Project | ProjectAPI>,\n fieldsToCheck = defaultFieldsToCheck\n): Promise<ValidationErrors> => {\n const mask = fieldsToCheck.reduce(\n (acc, curr) => {\n if (curr in projectZodSchema.shape) {\n acc[curr as string] = true;\n }\n return acc;\n },\n {} as Record<string, true>\n );\n\n const schema = projectZodSchema.pick(mask as any);\n const parsed = schema.safeParse(project);\n\n const errors: ValidationErrors = parsed.success\n ? {}\n : (parsed.error.flatten().fieldErrors as ValidationErrors);\n\n // Async validations\n if (\n fieldsToCheck.includes('organizationId') ||\n fieldsToCheck.includes('membersIds') ||\n fieldsToCheck.includes('adminsIds')\n ) {\n try {\n if (\n fieldsToCheck.includes('organizationId') &&\n project.organizationId &&\n !errors.organizationId\n ) {\n // Only run DB check if Zod passed the basic string presence checks\n const organization = await getOrganizationById(\n project.organizationId.toString()\n );\n if (!organization) {\n errors.organizationId = ['Organization not found'];\n }\n }\n\n if (project.organizationId) {\n const organization = await getOrganizationById(\n project.organizationId.toString()\n );\n if (organization) {\n const orgMembers = organization.membersIds.map(String);\n\n if (fieldsToCheck.includes('membersIds') && project.membersIds) {\n const invalidMembers = project.membersIds.filter(\n (id) => !orgMembers.includes(String(id))\n );\n if (invalidMembers.length > 0) {\n errors.membersIds = errors.membersIds || [];\n errors.membersIds.push('Members must contain valid elements.');\n }\n }\n\n if (fieldsToCheck.includes('adminsIds') && project.adminsIds) {\n const invalidAdmins = project.adminsIds.filter(\n (id) => !orgMembers.includes(String(id))\n );\n if (invalidAdmins.length > 0) {\n errors.adminsIds = errors.adminsIds || [];\n errors.adminsIds.push('Members must contain valid elements.');\n }\n }\n }\n } else if (\n fieldsToCheck.includes('membersIds') ||\n fieldsToCheck.includes('adminsIds')\n ) {\n if (fieldsToCheck.includes('membersIds')) {\n errors.membersIds = errors.membersIds || [];\n errors.membersIds.push(\n 'Organization id is required to validate project members'\n );\n }\n if (fieldsToCheck.includes('adminsIds')) {\n errors.adminsIds = errors.adminsIds || [];\n errors.adminsIds.push(\n 'Organization id is required to validate project members'\n );\n }\n }\n } catch (e) {\n if (fieldsToCheck.includes('organizationId') && project.organizationId) {\n errors.organizationId = ['Organization not found'];\n }\n }\n }\n\n // Final cleanup of empty error arrays (in case of manual manipulation)\n for (const key of Object.keys(errors)) {\n if (errors[key as keyof ValidationErrors]?.length === 0) {\n delete errors[key as keyof ValidationErrors];\n }\n }\n\n return errors;\n};\n"],"mappings":";;;;AAMA,MAAM,uBAAsC;CAC1C;CACA;CACA;CACA;AACF;AAOA,MAAa,kBAAkB;AAC/B,MAAa,kBAAkB;AAE/B,MAAa,qBAAqB;AAElC,MAAM,mBAAmB,EAAE,OAAO;CAChC,MAAM,EACH,OAAO,EACN,SAAS,yBACX,CAAC,CAAC,CACD,OAEC,2BAAyC,kBAC3C,CAAC,CACA,SAEC,4BAAwC,kBAC1C;CACF,gBAAgB,EAAE,OAAO,EACvB,SAAS,mCACX,CAAC;CACD,YAAY,EACT,MACC,EAAE,OAAO,EACP,SAAS,6CACX,CAAC,CACH,CAAC,CACA,OAEC,8BAA+C,aACjD;CACF,WAAW,EACR,MACC,EAAE,OAAO,EACP,SAAS,6CACX,CAAC,CACH,CAAC,CACA,OAEC,8BAA+C,aACjD;AACJ,CAAC;;;;;;;AAQD,MAAa,kBAAkB,OAC7B,SACA,gBAAgB,yBACc;CAC9B,MAAM,OAAO,cAAc,QACxB,KAAK,SAAS;EACb,IAAI,QAAQ,iBAAiB,OAC3B,IAAI,QAAkB;EAExB,OAAO;CACT,GACA,CAAC,CACH;CAGA,MAAM,SADS,iBAAiB,KAAK,IACjB,CAAC,CAAC,UAAU,OAAO;CAEvC,MAAM,SAA2B,OAAO,UACpC,CAAC,IACA,OAAO,MAAM,QAAQ,CAAC,CAAC;CAG5B,IACE,cAAc,SAAS,gBAAgB,KACvC,cAAc,SAAS,YAAY,KACnC,cAAc,SAAS,WAAW,GAElC,IAAI;EACF,IACE,cAAc,SAAS,gBAAgB,KACvC,QAAQ,kBACR,CAAC,OAAO,gBAMR;OAAI,CAAC,MAHsB,oBACzB,QAAQ,eAAe,SAAS,CAClC,GAEE,OAAO,iBAAiB,CAAC,wBAAwB;EACnD;EAGF,IAAI,QAAQ,gBAAgB;GAC1B,MAAM,eAAe,MAAM,oBACzB,QAAQ,eAAe,SAAS,CAClC;GACA,IAAI,cAAc;IAChB,MAAM,aAAa,aAAa,WAAW,IAAI,MAAM;IAErD,IAAI,cAAc,SAAS,YAAY,KAAK,QAAQ,YAIlD;SAHuB,QAAQ,WAAW,QACvC,OAAO,CAAC,WAAW,SAAS,OAAO,EAAE,CAAC,CAExB,CAAC,CAAC,SAAS,GAAG;MAC7B,OAAO,aAAa,OAAO,cAAc,CAAC;MAC1C,OAAO,WAAW,KAAK,sCAAsC;KAC/D;;IAGF,IAAI,cAAc,SAAS,WAAW,KAAK,QAAQ,WAIjD;SAHsB,QAAQ,UAAU,QACrC,OAAO,CAAC,WAAW,SAAS,OAAO,EAAE,CAAC,CAEzB,CAAC,CAAC,SAAS,GAAG;MAC5B,OAAO,YAAY,OAAO,aAAa,CAAC;MACxC,OAAO,UAAU,KAAK,sCAAsC;KAC9D;;GAEJ;EACF,OAAO,IACL,cAAc,SAAS,YAAY,KACnC,cAAc,SAAS,WAAW,GAClC;GACA,IAAI,cAAc,SAAS,YAAY,GAAG;IACxC,OAAO,aAAa,OAAO,cAAc,CAAC;IAC1C,OAAO,WAAW,KAChB,yDACF;GACF;GACA,IAAI,cAAc,SAAS,WAAW,GAAG;IACvC,OAAO,YAAY,OAAO,aAAa,CAAC;IACxC,OAAO,UAAU,KACf,yDACF;GACF;EACF;CACF,SAAS,GAAG;EACV,IAAI,cAAc,SAAS,gBAAgB,KAAK,QAAQ,gBACtD,OAAO,iBAAiB,CAAC,wBAAwB;CAErD;CAIF,KAAK,MAAM,OAAO,OAAO,KAAK,MAAM,GAClC,IAAI,OAAO,IAA8B,EAAE,WAAW,GACpD,OAAO,OAAO;CAIlB,OAAO;AACT"}
1
+ {"version":3,"file":"validateProject.mjs","names":[],"sources":["../../../../src/utils/validation/validateProject.ts"],"sourcesContent":["import { getOrganizationById } from '@services/organization.service';\nimport { z } from 'zod';\nimport type { Project, ProjectAPI } from '@/types/project.types';\n\nexport type ProjectFields = (keyof Project)[];\n\nconst defaultFieldsToCheck: ProjectFields = [\n 'name',\n 'membersIds',\n 'adminsIds',\n 'organizationId',\n];\n\nexport type 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\nconst projectZodSchema = z.object({\n name: z\n .string({\n message: 'Name must be a string.',\n })\n .min(\n NAME_MIN_LENGTH,\n `Name must be at least ${NAME_MIN_LENGTH} characters long.`\n )\n .max(\n NAME_MAX_LENGTH,\n `Name must be at most ${NAME_MAX_LENGTH} characters long.`\n ),\n organizationId: z.string({\n message: 'Organization id must be a string',\n }),\n membersIds: z\n .array(\n z.string({\n message: 'Members must contain only string elements.',\n })\n )\n .min(\n MEMBERS_MIN_LENGTH,\n `Members must be at least ${MEMBERS_MIN_LENGTH} items long.`\n ),\n adminsIds: z\n .array(\n z.string({\n message: 'Members must contain only string elements.',\n })\n )\n .min(\n MEMBERS_MIN_LENGTH,\n `Members must be at least ${MEMBERS_MIN_LENGTH} items long.`\n ),\n});\n\n/**\n * Validates a project object.\n * @param project The project object to validate.\n * @param fieldsToCheck The fields to validate.\n * @returns An object containing the validation errors for each field.\n */\nexport const validateProject = async (\n project: Partial<Project | ProjectAPI>,\n fieldsToCheck = defaultFieldsToCheck\n): Promise<ValidationErrors> => {\n const mask = fieldsToCheck.reduce(\n (acc, curr) => {\n if (curr in projectZodSchema.shape) {\n acc[curr as string] = true;\n }\n return acc;\n },\n {} as Record<string, true>\n );\n\n const schema = projectZodSchema.pick(mask as any);\n const parsed = schema.safeParse(project);\n\n const errors: ValidationErrors = parsed.success\n ? {}\n : (parsed.error.flatten().fieldErrors as ValidationErrors);\n\n // Async validations\n if (\n fieldsToCheck.includes('organizationId') ||\n fieldsToCheck.includes('membersIds') ||\n fieldsToCheck.includes('adminsIds')\n ) {\n try {\n if (\n fieldsToCheck.includes('organizationId') &&\n project.organizationId &&\n !errors.organizationId\n ) {\n // Only run DB check if Zod passed the basic string presence checks\n const organization = await getOrganizationById(\n project.organizationId.toString()\n );\n if (!organization) {\n errors.organizationId = ['Organization not found'];\n }\n }\n\n if (project.organizationId) {\n const organization = await getOrganizationById(\n project.organizationId.toString()\n );\n if (organization) {\n const orgMembers = organization.membersIds.map(String);\n\n if (fieldsToCheck.includes('membersIds') && project.membersIds) {\n const invalidMembers = project.membersIds.filter(\n (id) => !orgMembers.includes(String(id))\n );\n if (invalidMembers.length > 0) {\n errors.membersIds = errors.membersIds || [];\n errors.membersIds.push('Members must contain valid elements.');\n }\n }\n\n if (fieldsToCheck.includes('adminsIds') && project.adminsIds) {\n const invalidAdmins = project.adminsIds.filter(\n (id) => !orgMembers.includes(String(id))\n );\n if (invalidAdmins.length > 0) {\n errors.adminsIds = errors.adminsIds || [];\n errors.adminsIds.push('Members must contain valid elements.');\n }\n }\n }\n } else if (\n fieldsToCheck.includes('membersIds') ||\n fieldsToCheck.includes('adminsIds')\n ) {\n if (fieldsToCheck.includes('membersIds')) {\n errors.membersIds = errors.membersIds || [];\n errors.membersIds.push(\n 'Organization id is required to validate project members'\n );\n }\n if (fieldsToCheck.includes('adminsIds')) {\n errors.adminsIds = errors.adminsIds || [];\n errors.adminsIds.push(\n 'Organization id is required to validate project members'\n );\n }\n }\n } catch (e) {\n if (fieldsToCheck.includes('organizationId') && project.organizationId) {\n errors.organizationId = ['Organization not found'];\n }\n }\n }\n\n // Final cleanup of empty error arrays (in case of manual manipulation)\n for (const key of Object.keys(errors)) {\n if (errors[key as keyof ValidationErrors]?.length === 0) {\n delete errors[key as keyof ValidationErrors];\n }\n }\n\n return errors;\n};\n"],"mappings":";;;;AAMA,MAAM,uBAAsC;CAC1C;CACA;CACA;CACA;CACD;AAOD,MAAa,kBAAkB;AAC/B,MAAa,kBAAkB;AAE/B,MAAa,qBAAqB;AAElC,MAAM,mBAAmB,EAAE,OAAO;CAChC,MAAM,EACH,OAAO,EACN,SAAS,0BACV,CAAC,CACD,OAEC,2BAAyC,mBAC1C,CACA,SAEC,4BAAwC,mBACzC;CACH,gBAAgB,EAAE,OAAO,EACvB,SAAS,oCACV,CAAC;CACF,YAAY,EACT,MACC,EAAE,OAAO,EACP,SAAS,8CACV,CAAC,CACH,CACA,OAEC,8BAA+C,cAChD;CACH,WAAW,EACR,MACC,EAAE,OAAO,EACP,SAAS,8CACV,CAAC,CACH,CACA,OAEC,8BAA+C,cAChD;CACJ,CAAC;;;;;;;AAQF,MAAa,kBAAkB,OAC7B,SACA,gBAAgB,yBACc;CAC9B,MAAM,OAAO,cAAc,QACxB,KAAK,SAAS;AACb,MAAI,QAAQ,iBAAiB,MAC3B,KAAI,QAAkB;AAExB,SAAO;IAET,EAAE,CACH;CAGD,MAAM,SADS,iBAAiB,KAAK,KAChB,CAAC,UAAU,QAAQ;CAExC,MAAM,SAA2B,OAAO,UACpC,EAAE,GACD,OAAO,MAAM,SAAS,CAAC;AAG5B,KACE,cAAc,SAAS,iBAAiB,IACxC,cAAc,SAAS,aAAa,IACpC,cAAc,SAAS,YAAY,CAEnC,KAAI;AACF,MACE,cAAc,SAAS,iBAAiB,IACxC,QAAQ,kBACR,CAAC,OAAO,gBAMR;OAAI,CAAC,MAHsB,oBACzB,QAAQ,eAAe,UAAU,CAClC,CAEC,QAAO,iBAAiB,CAAC,yBAAyB;;AAItD,MAAI,QAAQ,gBAAgB;GAC1B,MAAM,eAAe,MAAM,oBACzB,QAAQ,eAAe,UAAU,CAClC;AACD,OAAI,cAAc;IAChB,MAAM,aAAa,aAAa,WAAW,IAAI,OAAO;AAEtD,QAAI,cAAc,SAAS,aAAa,IAAI,QAAQ,YAIlD;SAHuB,QAAQ,WAAW,QACvC,OAAO,CAAC,WAAW,SAAS,OAAO,GAAG,CAAC,CAExB,CAAC,SAAS,GAAG;AAC7B,aAAO,aAAa,OAAO,cAAc,EAAE;AAC3C,aAAO,WAAW,KAAK,uCAAuC;;;AAIlE,QAAI,cAAc,SAAS,YAAY,IAAI,QAAQ,WAIjD;SAHsB,QAAQ,UAAU,QACrC,OAAO,CAAC,WAAW,SAAS,OAAO,GAAG,CAAC,CAEzB,CAAC,SAAS,GAAG;AAC5B,aAAO,YAAY,OAAO,aAAa,EAAE;AACzC,aAAO,UAAU,KAAK,uCAAuC;;;;aAKnE,cAAc,SAAS,aAAa,IACpC,cAAc,SAAS,YAAY,EACnC;AACA,OAAI,cAAc,SAAS,aAAa,EAAE;AACxC,WAAO,aAAa,OAAO,cAAc,EAAE;AAC3C,WAAO,WAAW,KAChB,0DACD;;AAEH,OAAI,cAAc,SAAS,YAAY,EAAE;AACvC,WAAO,YAAY,OAAO,aAAa,EAAE;AACzC,WAAO,UAAU,KACf,0DACD;;;UAGE,GAAG;AACV,MAAI,cAAc,SAAS,iBAAiB,IAAI,QAAQ,eACtD,QAAO,iBAAiB,CAAC,yBAAyB;;AAMxD,MAAK,MAAM,OAAO,OAAO,KAAK,OAAO,CACnC,KAAI,OAAO,MAAgC,WAAW,EACpD,QAAO,OAAO;AAIlB,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"validateTag.mjs","names":[],"sources":["../../../../src/utils/validation/validateTag.ts"],"sourcesContent":["import { getOrganizationById } from '@services/organization.service';\nimport { z } from 'zod';\nimport type { Tag } from '@/types/tag.types';\n\nexport type TagFields = (keyof Tag)[];\n\nconst defaultFieldsToCheck: TagFields = ['name'];\n\nexport type FieldsToCheck = (typeof defaultFieldsToCheck)[number];\ntype ValidationErrors = Partial<\n Record<(typeof defaultFieldsToCheck)[number], string[]>\n>;\n\nexport const KEY_MIN_LENGTH = 4;\nexport const KEY_MAX_LENGTH = 20;\n\nexport const NAME_MIN_LENGTH = 4;\nexport const NAME_MAX_LENGTH = 50;\n\nconst tagZodSchema = z.object({\n key: z\n .string({\n message: 'Key must be a string.',\n })\n .min(\n KEY_MIN_LENGTH,\n `Key must be at least ${KEY_MIN_LENGTH} characters long.`\n )\n .max(\n KEY_MAX_LENGTH,\n `Key must be at most ${KEY_MAX_LENGTH} characters long.`\n ),\n name: z\n .string({\n message: 'Name must be a string.',\n })\n .min(\n NAME_MIN_LENGTH,\n `Name must be at least ${NAME_MIN_LENGTH} characters long.`\n )\n .max(\n NAME_MAX_LENGTH,\n `Name must be at most ${NAME_MAX_LENGTH} characters long.`\n ),\n organizationId: z.string({\n message: 'Organization id must be a string',\n }),\n});\n\n/**\n * Validates a tag object.\n * @param tag The tag object to validate.\n * @returns An object containing the validation errors for each field.\n */\nexport const validateTag = async (\n tag: Partial<Tag>,\n fieldsToCheck = defaultFieldsToCheck\n): Promise<ValidationErrors> => {\n const mask = fieldsToCheck.reduce(\n (acc, curr) => {\n acc[curr as string] = true;\n return acc;\n },\n {} as Record<string, true>\n );\n\n const schema = tagZodSchema.pick(mask as any);\n const parsed = schema.safeParse(tag);\n\n const errors: ValidationErrors = parsed.success\n ? {}\n : (parsed.error.flatten().fieldErrors as ValidationErrors);\n\n if (\n fieldsToCheck.includes('organizationId') &&\n tag.organizationId &&\n !errors.organizationId\n ) {\n try {\n const organization = await getOrganizationById(\n tag.organizationId.toString()\n );\n if (!organization) {\n errors.organizationId = ['Organization not found'];\n }\n } catch (e) {\n errors.organizationId = ['Organization not found'];\n }\n }\n\n return errors;\n};\n"],"mappings":";;;;AAMA,MAAM,uBAAkC,CAAC,MAAM;AAO/C,MAAa,iBAAiB;AAC9B,MAAa,iBAAiB;AAE9B,MAAa,kBAAkB;AAC/B,MAAa,kBAAkB;AAE/B,MAAM,eAAe,EAAE,OAAO;CAC5B,KAAK,EACF,OAAO,EACN,SAAS,wBACX,CAAC,CAAC,CACD,OAEC,0BAAuC,kBACzC,CAAC,CACA,QAEC,0BAAsC,kBACxC;CACF,MAAM,EACH,OAAO,EACN,SAAS,yBACX,CAAC,CAAC,CACD,OAEC,2BAAyC,kBAC3C,CAAC,CACA,QAEC,2BAAwC,kBAC1C;CACF,gBAAgB,EAAE,OAAO,EACvB,SAAS,mCACX,CAAC;AACH,CAAC;;;;;;AAOD,MAAa,cAAc,OACzB,KACA,gBAAgB,yBACc;CAC9B,MAAM,OAAO,cAAc,QACxB,KAAK,SAAS;EACb,IAAI,QAAkB;EACtB,OAAO;CACT,GACA,CAAC,CACH;CAGA,MAAM,SADS,aAAa,KAAK,IACb,CAAC,CAAC,UAAU,GAAG;CAEnC,MAAM,SAA2B,OAAO,UACpC,CAAC,IACA,OAAO,MAAM,QAAQ,CAAC,CAAC;CAE5B,IACE,cAAc,SAAS,gBAAgB,KACvC,IAAI,kBACJ,CAAC,OAAO,gBAER,IAAI;EAIF,IAAI,CAAC,MAHsB,oBACzB,IAAI,eAAe,SAAS,CAC9B,GAEE,OAAO,iBAAiB,CAAC,wBAAwB;CAErD,SAAS,GAAG;EACV,OAAO,iBAAiB,CAAC,wBAAwB;CACnD;CAGF,OAAO;AACT"}
1
+ {"version":3,"file":"validateTag.mjs","names":[],"sources":["../../../../src/utils/validation/validateTag.ts"],"sourcesContent":["import { getOrganizationById } from '@services/organization.service';\nimport { z } from 'zod';\nimport type { Tag } from '@/types/tag.types';\n\nexport type TagFields = (keyof Tag)[];\n\nconst defaultFieldsToCheck: TagFields = ['name'];\n\nexport type FieldsToCheck = (typeof defaultFieldsToCheck)[number];\ntype ValidationErrors = Partial<\n Record<(typeof defaultFieldsToCheck)[number], string[]>\n>;\n\nexport const KEY_MIN_LENGTH = 4;\nexport const KEY_MAX_LENGTH = 20;\n\nexport const NAME_MIN_LENGTH = 4;\nexport const NAME_MAX_LENGTH = 50;\n\nconst tagZodSchema = z.object({\n key: z\n .string({\n message: 'Key must be a string.',\n })\n .min(\n KEY_MIN_LENGTH,\n `Key must be at least ${KEY_MIN_LENGTH} characters long.`\n )\n .max(\n KEY_MAX_LENGTH,\n `Key must be at most ${KEY_MAX_LENGTH} characters long.`\n ),\n name: z\n .string({\n message: 'Name must be a string.',\n })\n .min(\n NAME_MIN_LENGTH,\n `Name must be at least ${NAME_MIN_LENGTH} characters long.`\n )\n .max(\n NAME_MAX_LENGTH,\n `Name must be at most ${NAME_MAX_LENGTH} characters long.`\n ),\n organizationId: z.string({\n message: 'Organization id must be a string',\n }),\n});\n\n/**\n * Validates a tag object.\n * @param tag The tag object to validate.\n * @returns An object containing the validation errors for each field.\n */\nexport const validateTag = async (\n tag: Partial<Tag>,\n fieldsToCheck = defaultFieldsToCheck\n): Promise<ValidationErrors> => {\n const mask = fieldsToCheck.reduce(\n (acc, curr) => {\n acc[curr as string] = true;\n return acc;\n },\n {} as Record<string, true>\n );\n\n const schema = tagZodSchema.pick(mask as any);\n const parsed = schema.safeParse(tag);\n\n const errors: ValidationErrors = parsed.success\n ? {}\n : (parsed.error.flatten().fieldErrors as ValidationErrors);\n\n if (\n fieldsToCheck.includes('organizationId') &&\n tag.organizationId &&\n !errors.organizationId\n ) {\n try {\n const organization = await getOrganizationById(\n tag.organizationId.toString()\n );\n if (!organization) {\n errors.organizationId = ['Organization not found'];\n }\n } catch (e) {\n errors.organizationId = ['Organization not found'];\n }\n }\n\n return errors;\n};\n"],"mappings":";;;;AAMA,MAAM,uBAAkC,CAAC,OAAO;AAOhD,MAAa,iBAAiB;AAC9B,MAAa,iBAAiB;AAE9B,MAAa,kBAAkB;AAC/B,MAAa,kBAAkB;AAE/B,MAAM,eAAe,EAAE,OAAO;CAC5B,KAAK,EACF,OAAO,EACN,SAAS,yBACV,CAAC,CACD,OAEC,0BAAuC,mBACxC,CACA,QAEC,0BAAsC,mBACvC;CACH,MAAM,EACH,OAAO,EACN,SAAS,0BACV,CAAC,CACD,OAEC,2BAAyC,mBAC1C,CACA,QAEC,2BAAwC,mBACzC;CACH,gBAAgB,EAAE,OAAO,EACvB,SAAS,oCACV,CAAC;CACH,CAAC;;;;;;AAOF,MAAa,cAAc,OACzB,KACA,gBAAgB,yBACc;CAC9B,MAAM,OAAO,cAAc,QACxB,KAAK,SAAS;AACb,MAAI,QAAkB;AACtB,SAAO;IAET,EAAE,CACH;CAGD,MAAM,SADS,aAAa,KAAK,KACZ,CAAC,UAAU,IAAI;CAEpC,MAAM,SAA2B,OAAO,UACpC,EAAE,GACD,OAAO,MAAM,SAAS,CAAC;AAE5B,KACE,cAAc,SAAS,iBAAiB,IACxC,IAAI,kBACJ,CAAC,OAAO,eAER,KAAI;AAIF,MAAI,CAAC,MAHsB,oBACzB,IAAI,eAAe,UAAU,CAC9B,CAEC,QAAO,iBAAiB,CAAC,yBAAyB;UAE7C,GAAG;AACV,SAAO,iBAAiB,CAAC,yBAAyB;;AAItD,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"validateUser.mjs","names":[],"sources":["../../../../src/utils/validation/validateUser.ts"],"sourcesContent":["import { z } from 'zod';\nimport type { User, UserAPI } from '@/types/user.types';\n\nexport type UserFields = (keyof User)[];\n\nconst defaultFieldsToCheck: UserFields = ['name', 'email', 'phone'];\n\nexport type FieldsToCheck = (typeof defaultFieldsToCheck)[number];\ntype ValidationErrors = Partial<\n Record<(typeof defaultFieldsToCheck)[number], string[]>\n>;\n\nexport const NAMES_MIN_LENGTH = 4;\nexport const NAMES_MAX_LENGTH = 100;\n\nconst userZodSchema = z.object({\n name: z\n .string({\n message: 'User Name must be a string.',\n })\n .min(\n NAMES_MIN_LENGTH,\n `User Name must be at least ${NAMES_MIN_LENGTH} characters long.`\n )\n .max(\n NAMES_MAX_LENGTH,\n `User Name must be at most ${NAMES_MAX_LENGTH} characters long.`\n ),\n email: z\n .string({\n message: 'User Email must be a string.',\n })\n .email('User Email must be a valid email address.'),\n phone: z\n .string({\n message: 'User Phone must be a string.',\n })\n .min(8, 'User Phone must be at least 8 characters long.')\n .max(20, 'User Phone must be at most 20 characters long.')\n .regex(\n /^\\+?\\(?\\d{3}\\)?[-\\s.]?\\d{3}[-\\s.]?\\d{4,6}$/,\n 'User Phone must be a valid phone number.'\n ),\n});\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 user: Partial<User | UserAPI>,\n fieldsToCheck = defaultFieldsToCheck\n): ValidationErrors => {\n const knownKeys = new Set(Object.keys(userZodSchema.shape));\n const mask = fieldsToCheck.reduce(\n (acc, curr) => {\n if (knownKeys.has(curr as string)) {\n acc[curr as string] = true;\n }\n return acc;\n },\n {} as Record<string, true>\n );\n\n if (Object.keys(mask).length === 0) return {};\n\n const schema = userZodSchema.pick(mask as any);\n const parsed = schema.safeParse(user);\n\n if (parsed.success) {\n return {};\n }\n\n return parsed.error.flatten().fieldErrors as ValidationErrors;\n};\n"],"mappings":";;;AAKA,MAAM,uBAAmC;CAAC;CAAQ;CAAS;AAAO;AAOlE,MAAa,mBAAmB;AAChC,MAAa,mBAAmB;AAEhC,MAAM,gBAAgB,EAAE,OAAO;CAC7B,MAAM,EACH,OAAO,EACN,SAAS,8BACX,CAAC,CAAC,CACD,OAEC,gCAA+C,kBACjD,CAAC,CACA,SAEC,iCAA8C,kBAChD;CACF,OAAO,EACJ,OAAO,EACN,SAAS,+BACX,CAAC,CAAC,CACD,MAAM,2CAA2C;CACpD,OAAO,EACJ,OAAO,EACN,SAAS,+BACX,CAAC,CAAC,CACD,IAAI,GAAG,gDAAgD,CAAC,CACxD,IAAI,IAAI,gDAAgD,CAAC,CACzD,MACC,8CACA,0CACF;AACJ,CAAC;;;;;;AAOD,MAAa,gBACX,MACA,gBAAgB,yBACK;CACrB,MAAM,YAAY,IAAI,IAAI,OAAO,KAAK,cAAc,KAAK,CAAC;CAC1D,MAAM,OAAO,cAAc,QACxB,KAAK,SAAS;EACb,IAAI,UAAU,IAAI,IAAc,GAC9B,IAAI,QAAkB;EAExB,OAAO;CACT,GACA,CAAC,CACH;CAEA,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,WAAW,GAAG,OAAO,CAAC;CAG5C,MAAM,SADS,cAAc,KAAK,IACd,CAAC,CAAC,UAAU,IAAI;CAEpC,IAAI,OAAO,SACT,OAAO,CAAC;CAGV,OAAO,OAAO,MAAM,QAAQ,CAAC,CAAC;AAChC"}
1
+ {"version":3,"file":"validateUser.mjs","names":[],"sources":["../../../../src/utils/validation/validateUser.ts"],"sourcesContent":["import { z } from 'zod';\nimport type { User, UserAPI } from '@/types/user.types';\n\nexport type UserFields = (keyof User)[];\n\nconst defaultFieldsToCheck: UserFields = ['name', 'email', 'phone'];\n\nexport type FieldsToCheck = (typeof defaultFieldsToCheck)[number];\ntype ValidationErrors = Partial<\n Record<(typeof defaultFieldsToCheck)[number], string[]>\n>;\n\nexport const NAMES_MIN_LENGTH = 4;\nexport const NAMES_MAX_LENGTH = 100;\n\nconst userZodSchema = z.object({\n name: z\n .string({\n message: 'User Name must be a string.',\n })\n .min(\n NAMES_MIN_LENGTH,\n `User Name must be at least ${NAMES_MIN_LENGTH} characters long.`\n )\n .max(\n NAMES_MAX_LENGTH,\n `User Name must be at most ${NAMES_MAX_LENGTH} characters long.`\n ),\n email: z\n .string({\n message: 'User Email must be a string.',\n })\n .email('User Email must be a valid email address.'),\n phone: z\n .string({\n message: 'User Phone must be a string.',\n })\n .min(8, 'User Phone must be at least 8 characters long.')\n .max(20, 'User Phone must be at most 20 characters long.')\n .regex(\n /^\\+?\\(?\\d{3}\\)?[-\\s.]?\\d{3}[-\\s.]?\\d{4,6}$/,\n 'User Phone must be a valid phone number.'\n ),\n});\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 user: Partial<User | UserAPI>,\n fieldsToCheck = defaultFieldsToCheck\n): ValidationErrors => {\n const knownKeys = new Set(Object.keys(userZodSchema.shape));\n const mask = fieldsToCheck.reduce(\n (acc, curr) => {\n if (knownKeys.has(curr as string)) {\n acc[curr as string] = true;\n }\n return acc;\n },\n {} as Record<string, true>\n );\n\n if (Object.keys(mask).length === 0) return {};\n\n const schema = userZodSchema.pick(mask as any);\n const parsed = schema.safeParse(user);\n\n if (parsed.success) {\n return {};\n }\n\n return parsed.error.flatten().fieldErrors as ValidationErrors;\n};\n"],"mappings":";;;AAKA,MAAM,uBAAmC;CAAC;CAAQ;CAAS;CAAQ;AAOnE,MAAa,mBAAmB;AAChC,MAAa,mBAAmB;AAEhC,MAAM,gBAAgB,EAAE,OAAO;CAC7B,MAAM,EACH,OAAO,EACN,SAAS,+BACV,CAAC,CACD,OAEC,gCAA+C,mBAChD,CACA,SAEC,iCAA8C,mBAC/C;CACH,OAAO,EACJ,OAAO,EACN,SAAS,gCACV,CAAC,CACD,MAAM,4CAA4C;CACrD,OAAO,EACJ,OAAO,EACN,SAAS,gCACV,CAAC,CACD,IAAI,GAAG,iDAAiD,CACxD,IAAI,IAAI,iDAAiD,CACzD,MACC,8CACA,2CACD;CACJ,CAAC;;;;;;AAOF,MAAa,gBACX,MACA,gBAAgB,yBACK;CACrB,MAAM,YAAY,IAAI,IAAI,OAAO,KAAK,cAAc,MAAM,CAAC;CAC3D,MAAM,OAAO,cAAc,QACxB,KAAK,SAAS;AACb,MAAI,UAAU,IAAI,KAAe,CAC/B,KAAI,QAAkB;AAExB,SAAO;IAET,EAAE,CACH;AAED,KAAI,OAAO,KAAK,KAAK,CAAC,WAAW,EAAG,QAAO,EAAE;CAG7C,MAAM,SADS,cAAc,KAAK,KACb,CAAC,UAAU,KAAK;AAErC,KAAI,OAAO,QACT,QAAO,EAAE;AAGX,QAAO,OAAO,MAAM,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"stripe.webhook.mjs","names":["emailService.sendEmail"],"sources":["../../../src/webhooks/stripe.webhook.ts"],"sourcesContent":["import type { Locale } from '@intlayer/types/allLocales';\nimport { logger } from '@logger';\nimport {\n convertReferral,\n getAffiliateById,\n markAffiliateActive,\n payAffiliateCommission,\n} from '@services/affiliate.service';\nimport * as emailService from '@services/email.service';\nimport { getOrganizationById } from '@services/organization.service';\nimport {\n addOrUpdateSubscription,\n cancelSubscription,\n changeSubscriptionStatus,\n} from '@services/subscription.service';\nimport { getUserById } from '@services/user.service';\nimport { GenericError } from '@utils/errors';\nimport type { FastifyReply, FastifyRequest } from 'fastify';\nimport Stripe from 'stripe';\nimport type { Plan } from '@/types/plan.types';\n\ntype SubscriptionMetadata = {\n locale: Locale; // Localization setting (e.g., 'en', 'fr', 'es')\n userId: string; // ID of the user associated with the subscription\n organizationId: string; // ID of the organization associated with the subscription\n};\n\n/**\n * Stripe webhook handler for processing subscription and invoice events.\n * @param req - Fastify request object.\n * @param reply - Fastify response object.\n */\nexport const stripeWebhook = async (\n req: FastifyRequest,\n reply: FastifyReply\n) => {\n // Initialize the Stripe client with the secret key\n if (!process.env.STRIPE_SECRET_KEY) {\n logger.error('STRIPE_SECRET_KEY is missing');\n reply.status(500).send('Configuration Error');\n return;\n }\n const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!);\n\n const endpointSecret = process.env.STRIPE_WEBHOOK_SECRET; // Webhook secret for verifying event signatures\n const sig = req.headers['stripe-signature'] as string; // Retrieve the signature from the webhook request headers\n\n if (!endpointSecret) {\n logger.error('STRIPE_WEBHOOK_SECRET is missing');\n reply.status(500).send('Configuration Error');\n return;\n }\n\n if (!sig) {\n logger.error('Stripe signature is missing');\n reply.status(400).send('Webhook Error: Missing signature');\n return;\n }\n\n let event: Stripe.Event;\n\n // Verify the webhook signature to ensure the request is authentic\n try {\n // Pass the raw buffer attached by the custom parser, not request.body\n const rawBody = (req as any).rawBody;\n\n if (!rawBody) {\n throw new Error('Raw body is missing from request');\n }\n\n event = await stripe.webhooks.constructEventAsync(\n rawBody as string | Buffer,\n sig,\n endpointSecret\n );\n } catch (err) {\n logger.error(\n `Webhook signature verification failed: ${(err as Error).message}`\n );\n // Respond with a 400 status code if the signature verification fails\n reply.status(400).send(`Webhook Error: ${(err as Error).message}`);\n return;\n }\n\n // Utility function to extract metadata from a Stripe customer\n const extractMetadata = async (customerId: string) => {\n const customer = await stripe.customers.retrieve(customerId); // Retrieve customer details from Stripe\n const metadata = (customer as Stripe.Customer)\n .metadata as SubscriptionMetadata; // Return the metadata object\n return metadata;\n };\n\n // Handles subscription-related events (creation, update, deletion)\n const handleSubscriptionEvent = async (\n subscription: Stripe.Subscription,\n statusOverride?: Plan['status'] // Optionally override the subscription status\n ) => {\n const { id: subscriptionId, customer } = subscription;\n const priceId = subscription.items.data[0]?.price?.id; // Extract the price ID from subscription items\n\n if (!customer) {\n throw new GenericError('STRIPE_SUBSCRIPTION_NO_CUSTOMER');\n }\n\n const customerId = customer as string;\n const { locale, userId, organizationId } =\n await extractMetadata(customerId); // Extract metadata from the customer\n\n // Set localization in request locals if available\n if (locale && req.intlayer) {\n req.intlayer.locale = locale;\n }\n\n const organization = await getOrganizationById(organizationId); // Fetch organization details by ID\n\n if (!organization) {\n throw new GenericError('ORGANIZATION_NOT_FOUND');\n }\n\n const user = await getUserById(userId);\n\n if (!user) {\n throw new GenericError('USER_NOT_FOUND');\n }\n\n const status = statusOverride ?? subscription.status; // Use the provided status override or the subscription's status\n\n // Update or create a subscription record in the database\n const updatedPlan = await addOrUpdateSubscription(\n subscriptionId,\n priceId!,\n customerId,\n userId,\n organization,\n status\n );\n\n if (status === 'active') {\n await emailService.sendEmail({\n type: 'subscriptionPaymentSuccess',\n to: user.email,\n email: user.email,\n subscriptionStartDate: new Date().toLocaleDateString(),\n manageSubscriptionLink: `${process.env.APP_URL}/organization`,\n username: user.name,\n organizationName: organization.name,\n planName: updatedPlan?.type ?? 'Unknown',\n billingLink: `${process.env.APP_URL}/organization`,\n });\n await emailService.sendEmail({\n type: 'subscriptionPaymentSuccess',\n to: 'contact@intlayer.org',\n email: user.email,\n subscriptionStartDate: new Date().toLocaleDateString(),\n manageSubscriptionLink: `${process.env.APP_URL}/organization`,\n username: user.name,\n organizationName: organization.name,\n planName: updatedPlan?.type ?? 'Unknown',\n billingLink: `${process.env.APP_URL}/organization`,\n });\n }\n if (status === 'canceled') {\n await emailService.sendEmail({\n type: 'subscriptionPaymentCancellation',\n to: user.email,\n email: user.email,\n cancellationDate: new Date(\n (subscription as any).current_period_end * 1000\n ).toLocaleDateString(),\n reactivateLink: `${process.env.APP_URL}/pricing`,\n username: user.name,\n organizationName: organization.name,\n planName: updatedPlan?.type ?? 'Unknown',\n billingLink: `${process.env.APP_URL}/organization`,\n });\n }\n };\n\n // Handles invoice-related events (payment success or failure)\n const handleInvoiceEvent = async (\n invoice: Stripe.Invoice,\n status: 'active' | 'incomplete'\n ) => {\n const subscriptionId =\n typeof (invoice as any).subscription === 'string'\n ? (invoice as any).subscription\n : (invoice as any).subscription?.id;\n\n if (!subscriptionId) {\n logger.warn('Subscription ID is undefined in invoice.');\n return;\n }\n\n const customerId = invoice.customer as string;\n\n // 1. Extract metadata first to guarantee we have the correct organizationId\n const { locale, userId, organizationId } =\n await extractMetadata(customerId);\n\n if (locale && req.intlayer) {\n req.intlayer.locale = locale;\n }\n\n const organization = await getOrganizationById(organizationId);\n\n if (!organization) {\n throw new GenericError('ORGANIZATION_NOT_FOUND');\n }\n\n // 2. Prevent duplicate subscriptions by canceling the OLD subscription, not the new one\n if (\n organization.plan?.subscriptionId &&\n organization.plan.subscriptionId !== subscriptionId\n ) {\n try {\n await stripe.subscriptions.cancel(organization.plan.subscriptionId);\n } catch (err) {\n // Suppress errors if the old subscription is already canceled\n logger.info(\n `Old subscription ${organization.plan.subscriptionId} could not be canceled or is already canceled. ${err}`\n );\n }\n }\n\n // 3. Update the database to reflect the new subscription status\n await changeSubscriptionStatus(\n subscriptionId,\n status,\n userId,\n organizationId\n );\n\n // 4. Convert affiliate referral and notify affiliate\n if (status === 'active') {\n const amountPaid =\n typeof (invoice as any).amount_paid === 'number'\n ? (invoice as any).amount_paid\n : undefined;\n const currency = invoice.currency ?? 'usd';\n\n const referral = await convertReferral(\n subscriptionId,\n amountPaid,\n currency,\n organizationId\n );\n\n if (referral) {\n const affiliate = await getAffiliateById(String(referral.affiliateId));\n if (affiliate) {\n const affiliateUser = await getUserById(String(affiliate.userId));\n if (affiliateUser) {\n const appUrl = process.env.APP_URL;\n await emailService.sendEmail({\n type: 'affiliateConversion',\n to: affiliateUser.email,\n commissionRate: affiliate.commissionRate,\n commissionAmount: referral.commissionAmount ?? 0,\n commissionCurrency: referral.commissionCurrency ?? currency,\n organizationName: organization.name,\n dashboardLink: `${appUrl}/affiliation`,\n });\n }\n }\n await payAffiliateCommission(referral);\n }\n }\n };\n\n // Handles charge-related events (one-time payments)\n const handleChargeEvent = async (charge: Stripe.Charge) => {\n const { customer, metadata, status, paid } = charge;\n\n if (!paid || status !== 'succeeded') {\n return;\n }\n\n const { organizationId, userId, priceId, purchaseType } = metadata || {};\n\n if (purchaseType === 'lifetime' && organizationId && userId && priceId) {\n const customerId = customer as string;\n const { locale } = await extractMetadata(customerId);\n\n // Set localization in request locals if available\n if (locale && req.intlayer) {\n req.intlayer.locale = locale;\n }\n\n const organization = await getOrganizationById(organizationId);\n\n if (!organization) {\n throw new GenericError('ORGANIZATION_NOT_FOUND');\n }\n\n const user = await getUserById(userId);\n\n if (!user) {\n throw new GenericError('USER_NOT_FOUND');\n }\n\n const updatedPlan = await addOrUpdateSubscription(\n charge.id,\n priceId,\n customerId,\n userId,\n organization,\n 'active'\n );\n\n // Convert any pending referral — use payment_intent ID (matches what was stored in trackReferral)\n const referralKey = (charge.payment_intent as string) ?? charge.id;\n const referral = await convertReferral(\n referralKey,\n charge.amount,\n charge.currency\n );\n\n const appUrl = process.env.APP_URL;\n\n await emailService.sendEmail({\n type: 'subscriptionPaymentSuccess',\n to: user.email,\n email: user.email,\n subscriptionStartDate: new Date().toLocaleDateString(),\n manageSubscriptionLink: `${appUrl}/organization`,\n username: user.name,\n organizationName: organization.name,\n planName: updatedPlan?.type ?? 'Unknown',\n billingLink: `${appUrl}/organization`,\n locale,\n });\n await emailService.sendEmail({\n type: 'subscriptionPaymentSuccess',\n to: 'contact@intlayer.org',\n email: user.email,\n subscriptionStartDate: new Date().toLocaleDateString(),\n manageSubscriptionLink: `${appUrl}/organization`,\n username: user.name,\n organizationName: organization.name,\n planName: updatedPlan?.type ?? 'Unknown',\n billingLink: `${appUrl}/organization`,\n locale,\n });\n\n if (referral) {\n const affiliate = await getAffiliateById(String(referral.affiliateId));\n if (affiliate) {\n const affiliateUser = await getUserById(String(affiliate.userId));\n if (affiliateUser) {\n await emailService.sendEmail({\n type: 'affiliateConversion',\n to: affiliateUser.email,\n commissionRate: affiliate.commissionRate,\n commissionAmount: referral.commissionAmount ?? 0,\n commissionCurrency:\n referral.commissionCurrency ?? charge.currency,\n organizationName: organization.name,\n dashboardLink: `${appUrl}/affiliation`,\n });\n }\n }\n await payAffiliateCommission(referral);\n }\n }\n };\n\n try {\n // Log the event type for debugging and monitoring\n logger.info(`Triggered event type ${event.type}`);\n\n // Handle specific event types\n switch (event.type) {\n case 'customer.subscription.created': {\n logger.info(`Handled event type ${event.type}`);\n // Process a new subscription creation event\n await handleSubscriptionEvent(event.data.object as Stripe.Subscription);\n break;\n }\n case 'customer.subscription.updated': {\n logger.info(`Handled event type ${event.type}`);\n // Process a subscription update event\n await handleSubscriptionEvent(event.data.object as Stripe.Subscription);\n break;\n }\n case 'customer.subscription.deleted': {\n logger.info(`Handled event type ${event.type}`);\n const subscription = event.data\n .object as unknown as Stripe.Subscription;\n const customerId = subscription.customer as string;\n const { locale, organizationId } = await extractMetadata(customerId);\n\n // Set localization in request locals if available\n if (locale && req.intlayer) {\n req.intlayer.locale = locale;\n }\n\n // Handle subscription deletion by canceling it in the database\n await cancelSubscription(subscription.id, organizationId);\n break;\n }\n case 'invoice.payment_succeeded': {\n logger.info(`Handled event type ${event.type}`);\n await handleInvoiceEvent(event.data.object as Stripe.Invoice, 'active');\n break;\n }\n case 'invoice_payment.paid': {\n logger.info(`Handled event type ${event.type}`);\n // The invoice_payment.paid object is InvoicePayment, not Invoice.\n // Fetch the full invoice to reuse the same handler.\n const invoicePayment = event.data.object as any;\n const invoiceId =\n typeof invoicePayment.invoice === 'string'\n ? invoicePayment.invoice\n : invoicePayment.invoice?.id;\n if (invoiceId) {\n const fullInvoice = await stripe.invoices.retrieve(invoiceId);\n await handleInvoiceEvent(fullInvoice as Stripe.Invoice, 'active');\n }\n break;\n }\n case 'invoice.payment_failed': {\n logger.info(`Handled event type ${event.type}`);\n // Handle failed invoice payment\n await handleInvoiceEvent(\n event.data.object as Stripe.Invoice,\n 'incomplete'\n );\n break;\n }\n case 'charge.succeeded':\n case 'charge.updated': {\n logger.info(`Handled event type ${event.type}`);\n // Handle charge events (e.g. one-time payments)\n await handleChargeEvent(event.data.object as Stripe.Charge);\n break;\n }\n case 'account.updated': {\n logger.info(`Handled event type ${event.type}`);\n const account = event.data.object as Stripe.Account;\n if (\n account.charges_enabled &&\n account.details_submitted &&\n account.id\n ) {\n const affiliate = await markAffiliateActive(account.id, {\n chargesEnabled: account.charges_enabled,\n payoutsEnabled: account.payouts_enabled ?? false,\n });\n\n if (affiliate) {\n const user = await getUserById(String(affiliate.userId));\n if (user) {\n process.env.APP_URL;\n const appUrl = process.env.APP_URL ?? 'https://app.intlayer.org';\n const referralLink = `${appUrl}/pricing?ref=${affiliate.referralCode}`;\n await emailService.sendEmail({\n type: 'affiliateActivated',\n to: user.email,\n dashboardLink: `${appUrl}/affiliation`,\n commissionRate: affiliate.commissionRate,\n referralLink,\n });\n }\n }\n }\n break;\n }\n default:\n // Log unhandled event types for visibility\n logger.info(`Unhandled event type ${event.type}`);\n }\n\n // Respond to Stripe to confirm the event was processed successfully\n reply.send();\n } catch (error) {\n // Log errors for debugging and respond with a 500 status code\n logger.error(\n `Error handling event ${event?.type ?? 'unknown'}: ${(error as Error).message}`\n );\n reply.status(500).send('Server Error');\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"stripe.webhook.mjs","names":["emailService.sendEmail"],"sources":["../../../src/webhooks/stripe.webhook.ts"],"sourcesContent":["import type { Locale } from '@intlayer/types/allLocales';\nimport { logger } from '@logger';\nimport {\n convertReferral,\n getAffiliateById,\n markAffiliateActive,\n payAffiliateCommission,\n} from '@services/affiliate.service';\nimport * as emailService from '@services/email.service';\nimport { getOrganizationById } from '@services/organization.service';\nimport {\n addOrUpdateSubscription,\n cancelSubscription,\n changeSubscriptionStatus,\n} from '@services/subscription.service';\nimport { getUserById } from '@services/user.service';\nimport { GenericError } from '@utils/errors';\nimport type { FastifyReply, FastifyRequest } from 'fastify';\nimport Stripe from 'stripe';\nimport type { Plan } from '@/types/plan.types';\n\ntype SubscriptionMetadata = {\n locale: Locale; // Localization setting (e.g., 'en', 'fr', 'es')\n userId: string; // ID of the user associated with the subscription\n organizationId: string; // ID of the organization associated with the subscription\n};\n\n/**\n * Stripe webhook handler for processing subscription and invoice events.\n * @param req - Fastify request object.\n * @param reply - Fastify response object.\n */\nexport const stripeWebhook = async (\n req: FastifyRequest,\n reply: FastifyReply\n) => {\n // Initialize the Stripe client with the secret key\n if (!process.env.STRIPE_SECRET_KEY) {\n logger.error('STRIPE_SECRET_KEY is missing');\n reply.status(500).send('Configuration Error');\n return;\n }\n const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!);\n\n const endpointSecret = process.env.STRIPE_WEBHOOK_SECRET; // Webhook secret for verifying event signatures\n const sig = req.headers['stripe-signature'] as string; // Retrieve the signature from the webhook request headers\n\n if (!endpointSecret) {\n logger.error('STRIPE_WEBHOOK_SECRET is missing');\n reply.status(500).send('Configuration Error');\n return;\n }\n\n if (!sig) {\n logger.error('Stripe signature is missing');\n reply.status(400).send('Webhook Error: Missing signature');\n return;\n }\n\n let event: Stripe.Event;\n\n // Verify the webhook signature to ensure the request is authentic\n try {\n // Pass the raw buffer attached by the custom parser, not request.body\n const rawBody = (req as any).rawBody;\n\n if (!rawBody) {\n throw new Error('Raw body is missing from request');\n }\n\n event = await stripe.webhooks.constructEventAsync(\n rawBody as string | Buffer,\n sig,\n endpointSecret\n );\n } catch (err) {\n logger.error(\n `Webhook signature verification failed: ${(err as Error).message}`\n );\n // Respond with a 400 status code if the signature verification fails\n reply.status(400).send(`Webhook Error: ${(err as Error).message}`);\n return;\n }\n\n // Utility function to extract metadata from a Stripe customer\n const extractMetadata = async (customerId: string) => {\n const customer = await stripe.customers.retrieve(customerId); // Retrieve customer details from Stripe\n const metadata = (customer as Stripe.Customer)\n .metadata as SubscriptionMetadata; // Return the metadata object\n return metadata;\n };\n\n // Handles subscription-related events (creation, update, deletion)\n const handleSubscriptionEvent = async (\n subscription: Stripe.Subscription,\n statusOverride?: Plan['status'] // Optionally override the subscription status\n ) => {\n const { id: subscriptionId, customer } = subscription;\n const priceId = subscription.items.data[0]?.price?.id; // Extract the price ID from subscription items\n\n if (!customer) {\n throw new GenericError('STRIPE_SUBSCRIPTION_NO_CUSTOMER');\n }\n\n const customerId = customer as string;\n const { locale, userId, organizationId } =\n await extractMetadata(customerId); // Extract metadata from the customer\n\n // Set localization in request locals if available\n if (locale && req.intlayer) {\n req.intlayer.locale = locale;\n }\n\n const organization = await getOrganizationById(organizationId); // Fetch organization details by ID\n\n if (!organization) {\n throw new GenericError('ORGANIZATION_NOT_FOUND');\n }\n\n const user = await getUserById(userId);\n\n if (!user) {\n throw new GenericError('USER_NOT_FOUND');\n }\n\n const status = statusOverride ?? subscription.status; // Use the provided status override or the subscription's status\n\n // Update or create a subscription record in the database\n const updatedPlan = await addOrUpdateSubscription(\n subscriptionId,\n priceId!,\n customerId,\n userId,\n organization,\n status\n );\n\n if (status === 'active') {\n await emailService.sendEmail({\n type: 'subscriptionPaymentSuccess',\n to: user.email,\n email: user.email,\n subscriptionStartDate: new Date().toLocaleDateString(),\n manageSubscriptionLink: `${process.env.APP_URL}/organization`,\n username: user.name,\n organizationName: organization.name,\n planName: updatedPlan?.type ?? 'Unknown',\n billingLink: `${process.env.APP_URL}/organization`,\n });\n await emailService.sendEmail({\n type: 'subscriptionPaymentSuccess',\n to: 'contact@intlayer.org',\n email: user.email,\n subscriptionStartDate: new Date().toLocaleDateString(),\n manageSubscriptionLink: `${process.env.APP_URL}/organization`,\n username: user.name,\n organizationName: organization.name,\n planName: updatedPlan?.type ?? 'Unknown',\n billingLink: `${process.env.APP_URL}/organization`,\n });\n }\n if (status === 'canceled') {\n await emailService.sendEmail({\n type: 'subscriptionPaymentCancellation',\n to: user.email,\n email: user.email,\n cancellationDate: new Date(\n (subscription as any).current_period_end * 1000\n ).toLocaleDateString(),\n reactivateLink: `${process.env.APP_URL}/pricing`,\n username: user.name,\n organizationName: organization.name,\n planName: updatedPlan?.type ?? 'Unknown',\n billingLink: `${process.env.APP_URL}/organization`,\n });\n }\n };\n\n // Handles invoice-related events (payment success or failure)\n const handleInvoiceEvent = async (\n invoice: Stripe.Invoice,\n status: 'active' | 'incomplete'\n ) => {\n const subscriptionId =\n typeof (invoice as any).subscription === 'string'\n ? (invoice as any).subscription\n : (invoice as any).subscription?.id;\n\n if (!subscriptionId) {\n logger.warn('Subscription ID is undefined in invoice.');\n return;\n }\n\n const customerId = invoice.customer as string;\n\n // 1. Extract metadata first to guarantee we have the correct organizationId\n const { locale, userId, organizationId } =\n await extractMetadata(customerId);\n\n if (locale && req.intlayer) {\n req.intlayer.locale = locale;\n }\n\n const organization = await getOrganizationById(organizationId);\n\n if (!organization) {\n throw new GenericError('ORGANIZATION_NOT_FOUND');\n }\n\n // 2. Prevent duplicate subscriptions by canceling the OLD subscription, not the new one\n if (\n organization.plan?.subscriptionId &&\n organization.plan.subscriptionId !== subscriptionId\n ) {\n try {\n await stripe.subscriptions.cancel(organization.plan.subscriptionId);\n } catch (err) {\n // Suppress errors if the old subscription is already canceled\n logger.info(\n `Old subscription ${organization.plan.subscriptionId} could not be canceled or is already canceled. ${err}`\n );\n }\n }\n\n // 3. Update the database to reflect the new subscription status\n await changeSubscriptionStatus(\n subscriptionId,\n status,\n userId,\n organizationId\n );\n\n // 4. Convert affiliate referral and notify affiliate\n if (status === 'active') {\n const amountPaid =\n typeof (invoice as any).amount_paid === 'number'\n ? (invoice as any).amount_paid\n : undefined;\n const currency = invoice.currency ?? 'usd';\n\n const referral = await convertReferral(\n subscriptionId,\n amountPaid,\n currency,\n organizationId\n );\n\n if (referral) {\n const affiliate = await getAffiliateById(String(referral.affiliateId));\n if (affiliate) {\n const affiliateUser = await getUserById(String(affiliate.userId));\n if (affiliateUser) {\n const appUrl = process.env.APP_URL;\n await emailService.sendEmail({\n type: 'affiliateConversion',\n to: affiliateUser.email,\n commissionRate: affiliate.commissionRate,\n commissionAmount: referral.commissionAmount ?? 0,\n commissionCurrency: referral.commissionCurrency ?? currency,\n organizationName: organization.name,\n dashboardLink: `${appUrl}/affiliation`,\n });\n }\n }\n await payAffiliateCommission(referral);\n }\n }\n };\n\n // Handles charge-related events (one-time payments)\n const handleChargeEvent = async (charge: Stripe.Charge) => {\n const { customer, metadata, status, paid } = charge;\n\n if (!paid || status !== 'succeeded') {\n return;\n }\n\n const { organizationId, userId, priceId, purchaseType } = metadata || {};\n\n if (purchaseType === 'lifetime' && organizationId && userId && priceId) {\n const customerId = customer as string;\n const { locale } = await extractMetadata(customerId);\n\n // Set localization in request locals if available\n if (locale && req.intlayer) {\n req.intlayer.locale = locale;\n }\n\n const organization = await getOrganizationById(organizationId);\n\n if (!organization) {\n throw new GenericError('ORGANIZATION_NOT_FOUND');\n }\n\n const user = await getUserById(userId);\n\n if (!user) {\n throw new GenericError('USER_NOT_FOUND');\n }\n\n const updatedPlan = await addOrUpdateSubscription(\n charge.id,\n priceId,\n customerId,\n userId,\n organization,\n 'active'\n );\n\n // Convert any pending referral — use payment_intent ID (matches what was stored in trackReferral)\n const referralKey = (charge.payment_intent as string) ?? charge.id;\n const referral = await convertReferral(\n referralKey,\n charge.amount,\n charge.currency\n );\n\n const appUrl = process.env.APP_URL;\n\n await emailService.sendEmail({\n type: 'subscriptionPaymentSuccess',\n to: user.email,\n email: user.email,\n subscriptionStartDate: new Date().toLocaleDateString(),\n manageSubscriptionLink: `${appUrl}/organization`,\n username: user.name,\n organizationName: organization.name,\n planName: updatedPlan?.type ?? 'Unknown',\n billingLink: `${appUrl}/organization`,\n locale,\n });\n await emailService.sendEmail({\n type: 'subscriptionPaymentSuccess',\n to: 'contact@intlayer.org',\n email: user.email,\n subscriptionStartDate: new Date().toLocaleDateString(),\n manageSubscriptionLink: `${appUrl}/organization`,\n username: user.name,\n organizationName: organization.name,\n planName: updatedPlan?.type ?? 'Unknown',\n billingLink: `${appUrl}/organization`,\n locale,\n });\n\n if (referral) {\n const affiliate = await getAffiliateById(String(referral.affiliateId));\n if (affiliate) {\n const affiliateUser = await getUserById(String(affiliate.userId));\n if (affiliateUser) {\n await emailService.sendEmail({\n type: 'affiliateConversion',\n to: affiliateUser.email,\n commissionRate: affiliate.commissionRate,\n commissionAmount: referral.commissionAmount ?? 0,\n commissionCurrency:\n referral.commissionCurrency ?? charge.currency,\n organizationName: organization.name,\n dashboardLink: `${appUrl}/affiliation`,\n });\n }\n }\n await payAffiliateCommission(referral);\n }\n }\n };\n\n try {\n // Log the event type for debugging and monitoring\n logger.info(`Triggered event type ${event.type}`);\n\n // Handle specific event types\n switch (event.type) {\n case 'customer.subscription.created': {\n logger.info(`Handled event type ${event.type}`);\n // Process a new subscription creation event\n await handleSubscriptionEvent(event.data.object as Stripe.Subscription);\n break;\n }\n case 'customer.subscription.updated': {\n logger.info(`Handled event type ${event.type}`);\n // Process a subscription update event\n await handleSubscriptionEvent(event.data.object as Stripe.Subscription);\n break;\n }\n case 'customer.subscription.deleted': {\n logger.info(`Handled event type ${event.type}`);\n const subscription = event.data\n .object as unknown as Stripe.Subscription;\n const customerId = subscription.customer as string;\n const { locale, organizationId } = await extractMetadata(customerId);\n\n // Set localization in request locals if available\n if (locale && req.intlayer) {\n req.intlayer.locale = locale;\n }\n\n // Handle subscription deletion by canceling it in the database\n await cancelSubscription(subscription.id, organizationId);\n break;\n }\n case 'invoice.payment_succeeded': {\n logger.info(`Handled event type ${event.type}`);\n await handleInvoiceEvent(event.data.object as Stripe.Invoice, 'active');\n break;\n }\n case 'invoice_payment.paid': {\n logger.info(`Handled event type ${event.type}`);\n // The invoice_payment.paid object is InvoicePayment, not Invoice.\n // Fetch the full invoice to reuse the same handler.\n const invoicePayment = event.data.object as any;\n const invoiceId =\n typeof invoicePayment.invoice === 'string'\n ? invoicePayment.invoice\n : invoicePayment.invoice?.id;\n if (invoiceId) {\n const fullInvoice = await stripe.invoices.retrieve(invoiceId);\n await handleInvoiceEvent(fullInvoice as Stripe.Invoice, 'active');\n }\n break;\n }\n case 'invoice.payment_failed': {\n logger.info(`Handled event type ${event.type}`);\n // Handle failed invoice payment\n await handleInvoiceEvent(\n event.data.object as Stripe.Invoice,\n 'incomplete'\n );\n break;\n }\n case 'charge.succeeded':\n case 'charge.updated': {\n logger.info(`Handled event type ${event.type}`);\n // Handle charge events (e.g. one-time payments)\n await handleChargeEvent(event.data.object as Stripe.Charge);\n break;\n }\n case 'account.updated': {\n logger.info(`Handled event type ${event.type}`);\n const account = event.data.object as Stripe.Account;\n if (\n account.charges_enabled &&\n account.details_submitted &&\n account.id\n ) {\n const affiliate = await markAffiliateActive(account.id, {\n chargesEnabled: account.charges_enabled,\n payoutsEnabled: account.payouts_enabled ?? false,\n });\n\n if (affiliate) {\n const user = await getUserById(String(affiliate.userId));\n if (user) {\n process.env.APP_URL;\n const appUrl = process.env.APP_URL ?? 'https://app.intlayer.org';\n const referralLink = `${appUrl}/pricing?ref=${affiliate.referralCode}`;\n await emailService.sendEmail({\n type: 'affiliateActivated',\n to: user.email,\n dashboardLink: `${appUrl}/affiliation`,\n commissionRate: affiliate.commissionRate,\n referralLink,\n });\n }\n }\n }\n break;\n }\n default:\n // Log unhandled event types for visibility\n logger.info(`Unhandled event type ${event.type}`);\n }\n\n // Respond to Stripe to confirm the event was processed successfully\n reply.send();\n } catch (error) {\n // Log errors for debugging and respond with a 500 status code\n logger.error(\n `Error handling event ${event?.type ?? 'unknown'}: ${(error as Error).message}`\n );\n reply.status(500).send('Server Error');\n }\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ai.controller.d.ts","names":[],"sources":["../../../src/controllers/ai.controller.ts"],"mappings":"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"}
1
+ {"version":3,"file":"ai.controller.d.ts","names":[],"sources":["../../../src/controllers/ai.controller.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bitbucket.controller.d.ts","names":[],"sources":["../../../src/controllers/bitbucket.controller.ts"],"mappings":";;;;;KAMY,8BAAA;EACV,WAAW;AAAA;AAAA,KAGD,yBAAA,GAA4B,YAAY;EAClD,OAAO;AAAA;AAAA,cAGI,UAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,8BAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAqBS,yBAAA;EACV,IAAI;AAAA;AAAA,KAGM,2BAAA,GAA8B,YAAY;EACpD,KAAK;AAAA;AAAA,cAGM,YAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,yBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAqBS,6BAAA;EACV,KAAK;AAAA;AAAA,KAGK,wBAAA,GAA2B,YAAY,CACjD,mBAAA;AAAA,cAGW,SAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,6BAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA+BS,wBAAA;EACV,KAAA;EACA,SAAA;EACA,QAAA;EACA,MAAA;AAAA;AAAA,KAGU,0BAAA,GAA6B,YAAY;EACnD,SAAA;EACA,WAAA;AAAA;AA/EF;;;AAAA,cAqFa,WAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,wBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA0CS,0BAAA;EACV,KAAA;EACA,SAAA;EACA,QAAA;EACA,MAAA;EACA,IAAA;AAAA;AAAA,KAGU,4BAAA,GAA+B,YAAY;EACrD,OAAO;AAAA;AAAA,cAGI,aAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,0BAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA"}
1
+ {"version":3,"file":"bitbucket.controller.d.ts","names":[],"sources":["../../../src/controllers/bitbucket.controller.ts"],"mappings":";;;;;KAMY,8BAAA;EACV,WAAA;AAAA;AAAA,KAGU,yBAAA,GAA4B,YAAA;EACtC,OAAA;AAAA;AAAA,cAGW,UAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,8BAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAqBS,yBAAA;EACV,IAAA;AAAA;AAAA,KAGU,2BAAA,GAA8B,YAAA;EACxC,KAAA;AAAA;AAAA,cAGW,YAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,yBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAqBS,6BAAA;EACV,KAAA;AAAA;AAAA,KAGU,wBAAA,GAA2B,YAAA,CACrC,mBAAA;AAAA,cAGW,SAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,6BAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA+BS,wBAAA;EACV,KAAA;EACA,SAAA;EACA,QAAA;EACA,MAAA;AAAA;AAAA,KAGU,0BAAA,GAA6B,YAAA;EACvC,SAAA;EACA,WAAA;AAAA;AA/EF;;;AAAA,cAqFa,WAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,wBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA0CS,0BAAA;EACV,KAAA;EACA,SAAA;EACA,QAAA;EACA,MAAA;EACA,IAAA;AAAA;AAAA,KAGU,4BAAA,GAA+B,YAAA;EACzC,OAAA;AAAA;AAAA,cAGW,aAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,0BAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"cliSessionToken.controller.d.ts","names":[],"sources":["../../../src/controllers/cliSessionToken.controller.ts"],"mappings":";;;;;KAQY,2BAAA,GAA8B,YAAY;EACpD,KAAA;EACA,SAAA,EAAW,IAAA;AAAA;AAAA,KAGD,qBAAA,GAAwB,YAAY;EAC9C,OAAA,EAAS,UAAA;AAAA;;;;;cAOE,4BAAA,GACX,OAAA,EAAS,cAAA,EACT,KAAA,EAAO,YAAA,KACN,OAAA;AAXH;;;;AAAA,cAqDa,sBAAA,GACX,OAAA,EAAS,cAAA,EACT,KAAA,EAAO,YAAA,KACN,OAAA"}
1
+ {"version":3,"file":"cliSessionToken.controller.d.ts","names":[],"sources":["../../../src/controllers/cliSessionToken.controller.ts"],"mappings":";;;;;KAQY,2BAAA,GAA8B,YAAA;EACxC,KAAA;EACA,SAAA,EAAW,IAAA;AAAA;AAAA,KAGD,qBAAA,GAAwB,YAAA;EAClC,OAAA,EAAS,UAAA;AAAA;;;;;cAOE,4BAAA,GACX,OAAA,EAAS,cAAA,EACT,KAAA,EAAO,YAAA,KACN,OAAA;AAXH;;;;AAAA,cAqDa,sBAAA,GACX,OAAA,EAAS,cAAA,EACT,KAAA,EAAO,YAAA,KACN,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"demo.controller.d.ts","names":[],"sources":["../../../src/controllers/demo.controller.ts"],"mappings":";;;cA8Ia,qBAAA,GACX,OAAA,EAAS,cAAA,EACT,KAAA,EAAO,YAAA,KACN,OAAA"}
1
+ {"version":3,"file":"demo.controller.d.ts","names":[],"sources":["../../../src/controllers/demo.controller.ts"],"mappings":";;;cAqJa,qBAAA,GACX,OAAA,EAAS,cAAA,EACT,KAAA,EAAO,YAAA,KACN,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"dictionary.controller.d.ts","names":[],"sources":["../../../src/controllers/dictionary.controller.ts"],"mappings":";;;;;;;;KAuCY,qBAAA,GACV,oBAAoB,CAAC,uBAAA;AAAA,KACX,qBAAA,GAAwB,iBAAiB,CAAC,aAAA;AAFtD;;;AAAA,cAyBa,eAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,qBAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA4DS,yBAAA,GAA4B,YAAY;;;AAtFe;cA2FtD,mBAAA,GACX,QAAA,EAAU,cAAA,EACV,KAAA,EAAO,YAAA,KAAY,OAAA;AAAA,KA2CT,oCAAA,GAAuC,YAAA,CACjD,MAAA,CAAO,YAAA;EAAgB,GAAA;EAAa,SAAA;AAAA;;;;cAMzB,8BAAA,GACX,QAAA,EAAU,cAAA,EACV,KAAA,EAAO,YAAA,KAAY,OAAA;AAAA,KAsDT,mBAAA;EAAwB,aAAa;AAAA;AAAA,KACrC,kBAAA;EAAuB,OAAO;AAAA;AAAA,KAC9B,mBAAA,GAAsB,YAAY,CAAC,aAAA;;AA/KrC;AA4DV;cAwHa,kBAAA,GACX,OAAA,EAAS,cAAA;EACP,MAAA,EAAQ,mBAAA;EACR,WAAA,EAAa,kBAAA;AAAA,IAEf,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAuDS,iBAAA;EAAsB,UAAA,EAAY,sBAAsB;AAAA;AAAA,KACxD,mBAAA,GAAsB,YAAY,CAAC,aAAA;;;;cAKlC,aAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,iBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA8HS,oBAAA;EACV,YAAA,EAAc,UAAe;AAAA;AAAA,KAE1B,0BAAA;EACH,eAAA;IACE,GAAA;IACA,OAAA,EAAS,iBAAA;IACT,EAAA;EAAA;EAEF,mBAAA;IACE,GAAA;IACA,OAAA,EAAS,iBAAA;IACT,EAAA;EAAA;EAEF,oBAAA;IACE,GAAA;IACA,OAAA,EAAS,iBAAA;IACT,EAAA;EAAA;EAEF,KAAA;IACE,EAAA;IACA,GAAA;IACA,OAAA,EAAS,iBAAA;IACT,OAAA;EAAA;AAAA;AAAA,KAGQ,sBAAA,GAAyB,YAAY,CAAC,0BAAA;;;;cAKrC,gBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,oBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAySS,qBAAA;EAA0B,YAAY;AAAA;AAAA,KACtC,oBAAA,GAAuB,OAAO,CAAC,YAAA;AAAA,KAC/B,sBAAA,GAAyB,YAAY,CAAC,aAAA;;AAxhBD;AACjD;cA4hBa,gBAAA,GACX,OAAA,EAAS,cAAA;EACP,MAAA,EAAQ,qBAAA;EACR,IAAA,EAAM,oBAAA;AAAA,IAER,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAoHS,qBAAA;EAA0B,YAAY;AAAA;AAAA,KACtC,sBAAA,GAAyB,YAAY,CAAC,aAAA;AAtpBU;AAK5D;;AAL4D,cA2pB/C,gBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA,EAAQ,qBAAA;AAAA,IAClC,KAAA,EAAO,YAAA,KACN,OAAA"}
1
+ {"version":3,"file":"dictionary.controller.d.ts","names":[],"sources":["../../../src/controllers/dictionary.controller.ts"],"mappings":";;;;;;;;KAuCY,qBAAA,GACV,oBAAA,CAAqB,uBAAA;AAAA,KACX,qBAAA,GAAwB,iBAAA,CAAkB,aAAA;AAFtD;;;AAAA,cAyBa,eAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,qBAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA4DS,yBAAA,GAA4B,YAAA;;;;cAK3B,mBAAA,GACX,QAAA,EAAU,cAAA,EACV,KAAA,EAAO,YAAA,KAAY,OAAA;AAAA,KA2CT,oCAAA,GAAuC,YAAA,CACjD,MAAA,CAAO,YAAA;EAAgB,GAAA;EAAa,SAAA;AAAA;;;;cAMzB,8BAAA,GACX,QAAA,EAAU,cAAA,EACV,KAAA,EAAO,YAAA,KAAY,OAAA;AAAA,KAsDT,mBAAA;EAAwB,aAAA;AAAA;AAAA,KACxB,kBAAA;EAAuB,OAAA;AAAA;AAAA,KACvB,mBAAA,GAAsB,YAAA,CAAa,aAAA;;;AAnH/C;cAwHa,kBAAA,GACX,OAAA,EAAS,cAAA;EACP,MAAA,EAAQ,mBAAA;EACR,WAAA,EAAa,kBAAA;AAAA,IAEf,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA8DS,iBAAA;EAAsB,UAAA,EAAY,sBAAA;AAAA;AAAA,KAClC,mBAAA,GAAsB,YAAA,CAAa,aAAA;;;;cAKlC,aAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,iBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA8HS,oBAAA;EACV,YAAA,EAAc,UAAA;AAAA;AAAA,KAEX,0BAAA;EACH,eAAA;IACE,GAAA;IACA,OAAA,EAAS,iBAAA;IACT,EAAA;EAAA;EAEF,mBAAA;IACE,GAAA;IACA,OAAA,EAAS,iBAAA;IACT,EAAA;EAAA;EAEF,oBAAA;IACE,GAAA;IACA,OAAA,EAAS,iBAAA;IACT,EAAA;EAAA;EAEF,KAAA;IACE,EAAA;IACA,GAAA;IACA,OAAA,EAAS,iBAAA;IACT,OAAA;EAAA;AAAA;AAAA,KAGQ,sBAAA,GAAyB,YAAA,CAAa,0BAAA;;;;cAKrC,gBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,oBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAySS,qBAAA;EAA0B,YAAA;AAAA;AAAA,KAC1B,oBAAA,GAAuB,OAAA,CAAQ,YAAA;AAAA,KAC/B,sBAAA,GAAyB,YAAA,CAAa,aAAA;;;AA9hBlD;cAmiBa,gBAAA,GACX,OAAA,EAAS,cAAA;EACP,MAAA,EAAQ,qBAAA;EACR,IAAA,EAAM,oBAAA;AAAA,IAER,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAoHS,qBAAA;EAA0B,YAAA;AAAA;AAAA,KAC1B,sBAAA,GAAyB,YAAA,CAAa,aAAA;;AAxpBlD;;cA6pBa,gBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA,EAAQ,qBAAA;AAAA,IAClC,KAAA,EAAO,YAAA,KACN,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"environment.controller.d.ts","names":[],"sources":["../../../src/controllers/environment.controller.ts"],"mappings":";;;;;KAmDY,kBAAA,GAAqB,IAAI,CACnC,eAAA;AAAA,KAGU,oBAAA,GAAuB,YAAY,CAAC,cAAA;AAAA,cAEnC,cAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,kBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAiFS,uBAAA;EAA4B,aAAa;AAAA;AAAA,KACzC,qBAAA,GAAwB,OAAA,CAClC,IAAA,CAAK,eAAA;AAAA,KAEK,uBAAA,GAA0B,YAAY,CAAC,cAAA;AAAA,cAEtC,iBAAA,GACX,OAAA,EAAS,cAAA;EACP,MAAA,EAAQ,uBAAA;EACR,IAAA,EAAM,qBAAA;AAAA,IAER,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAyES,uBAAA;EAA4B,aAAa;AAAA;AAAA,KACzC,uBAAA,GAA0B,YAAY,CAAC,cAAA;AAAA,cAEtC,iBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA,EAAQ,uBAAA;AAAA,IAClC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA2FS,uBAAA;EAA4B,aAAa;AAAA;AAAA,KACzC,uBAAA,GAA0B,YAAY,CAAC,cAAA;AAAA,cAEtC,iBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA,EAAQ,uBAAA;AAAA,IAClC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA6ES,kCAAA,GACV,YAAY,CAAC,cAAA;AA3VL;AAiFV;;;AAjFU,cAiWG,4BAAA,GACX,OAAA,EAAS,cAAA,EACT,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA+DS,sBAAA;EACV,mBAAA;EACA,mBAAA;EACA,QAAA;EACA,cAAA;EACA,oBAAA;AAAA;AAAA,KAEU,wBAAA,GAA2B,YAAY;EACjD,oBAAA;EACA,mBAAA;EACA,qBAAA;AAAA;AAAA,cAGW,kBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,sBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA"}
1
+ {"version":3,"file":"environment.controller.d.ts","names":[],"sources":["../../../src/controllers/environment.controller.ts"],"mappings":";;;;;KAmDY,kBAAA,GAAqB,IAAA,CAC/B,eAAA;AAAA,KAGU,oBAAA,GAAuB,YAAA,CAAa,cAAA;AAAA,cAEnC,cAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,kBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAiFS,uBAAA;EAA4B,aAAA;AAAA;AAAA,KAC5B,qBAAA,GAAwB,OAAA,CAClC,IAAA,CAAK,eAAA;AAAA,KAEK,uBAAA,GAA0B,YAAA,CAAa,cAAA;AAAA,cAEtC,iBAAA,GACX,OAAA,EAAS,cAAA;EACP,MAAA,EAAQ,uBAAA;EACR,IAAA,EAAM,qBAAA;AAAA,IAER,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAyES,uBAAA;EAA4B,aAAA;AAAA;AAAA,KAC5B,uBAAA,GAA0B,YAAA,CAAa,cAAA;AAAA,cAEtC,iBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA,EAAQ,uBAAA;AAAA,IAClC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA2FS,uBAAA;EAA4B,aAAA;AAAA;AAAA,KAC5B,uBAAA,GAA0B,YAAA,CAAa,cAAA;AAAA,cAEtC,iBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA,EAAQ,uBAAA;AAAA,IAClC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA6ES,kCAAA,GACV,YAAA,CAAa,cAAA;;AA1Qf;;;cAgRa,4BAAA,GACX,OAAA,EAAS,cAAA,EACT,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA+DS,sBAAA;EACV,mBAAA;EACA,mBAAA;EACA,QAAA;EACA,cAAA;EACA,oBAAA;AAAA;AAAA,KAEU,wBAAA,GAA2B,YAAA;EACrC,oBAAA;EACA,mBAAA;EACA,qBAAA;AAAA;AAAA,cAGW,kBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,sBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"eventListener.controller.d.ts","names":[],"sources":["../../../src/controllers/eventListener.controller.ts"],"mappings":";;;;KAKY,QAAA;AAAA,KACA,MAAA;AAAA,KAEA,gBAAA;EACV,MAAA,EAAQ,QAAA;EACR,MAAA,EAAQ,MAAM;EACd,IAAA;AAAA;AAAA,KAUU,uBAAA;EACV,UAAA,EAAY,aAAa;EACzB,MAAA;AAAA;AAAA,cAGW,oBAAA,GAAwB,IAA+B,EAAzB,uBAAuB;AAAA,KAoBtD,8BAAA;EAAmC,WAAW;AAAA;;;;cAK7C,eAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA,EAAQ,8BAAA;AAAA,IAClC,KAAA,EAAO,YAAA,KAAY,OAAA"}
1
+ {"version":3,"file":"eventListener.controller.d.ts","names":[],"sources":["../../../src/controllers/eventListener.controller.ts"],"mappings":";;;;KAKY,QAAA;AAAA,KACA,MAAA;AAAA,KAEA,gBAAA;EACV,MAAA,EAAQ,QAAA;EACR,MAAA,EAAQ,MAAA;EACR,IAAA;AAAA;AAAA,KAUU,uBAAA;EACV,UAAA,EAAY,aAAA;EACZ,MAAA;AAAA;AAAA,cAGW,oBAAA,GAAwB,IAAA,EAAM,uBAAA;AAAA,KAoB/B,8BAAA;EAAmC,WAAA;AAAA;;;;cAKlC,eAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA,EAAQ,8BAAA;AAAA,IAClC,KAAA,EAAO,YAAA,KAAY,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"github.controller.d.ts","names":[],"sources":["../../../src/controllers/github.controller.ts"],"mappings":";;;;;KAKY,2BAAA;EACV,WAAA;EACA,KAAK;AAAA;AAAA,KAGK,sBAAA,GAAyB,YAAY;EAC/C,OAAO;AAAA;AAAA,cAGI,UAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,2BAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAqBS,sBAAA;EACV,IAAI;AAAA;AAAA,KAGM,wBAAA,GAA2B,YAAY;EACjD,KAAK;AAAA;AAAA,cAGM,YAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,sBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAqBS,0BAAA;EACV,KAAK;AAAA;AAAA,KAGK,qBAAA,GAAwB,YAAY,CAC9C,gBAAA;AAAA,cAGW,SAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,0BAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA8BS,qBAAA;EACV,KAAA;EACA,KAAA;EACA,UAAA;EACA,MAAA;AAAA;AAAA,KAGU,uBAAA,GAA0B,YAAY;EAChD,SAAA;EACA,WAAA;AAAA;;;;cAMW,WAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,qBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA4CS,uBAAA;EACV,KAAA;EACA,KAAA;EACA,UAAA;EACA,MAAA;EACA,IAAA;AAAA;AAAA,KAGU,yBAAA,GAA4B,YAAY;EAClD,OAAO;AAAA;AAAA,cAGI,aAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,uBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,cAmDU,QAAA,GACX,OAAA,EAAS,cAAA,EACT,KAAA,EAAO,YAAA,KACN,OAAA"}
1
+ {"version":3,"file":"github.controller.d.ts","names":[],"sources":["../../../src/controllers/github.controller.ts"],"mappings":";;;;;KAKY,2BAAA;EACV,WAAA;EACA,KAAA;AAAA;AAAA,KAGU,sBAAA,GAAyB,YAAA;EACnC,OAAA;AAAA;AAAA,cAGW,UAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,2BAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAqBS,sBAAA;EACV,IAAA;AAAA;AAAA,KAGU,wBAAA,GAA2B,YAAA;EACrC,KAAA;AAAA;AAAA,cAGW,YAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,sBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAqBS,0BAAA;EACV,KAAA;AAAA;AAAA,KAGU,qBAAA,GAAwB,YAAA,CAClC,gBAAA;AAAA,cAGW,SAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,0BAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA8BS,qBAAA;EACV,KAAA;EACA,KAAA;EACA,UAAA;EACA,MAAA;AAAA;AAAA,KAGU,uBAAA,GAA0B,YAAA;EACpC,SAAA;EACA,WAAA;AAAA;;;;cAMW,WAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,qBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA4CS,uBAAA;EACV,KAAA;EACA,KAAA;EACA,UAAA;EACA,MAAA;EACA,IAAA;AAAA;AAAA,KAGU,yBAAA,GAA4B,YAAA;EACtC,OAAA;AAAA;AAAA,cAGW,aAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,uBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,cAmDU,QAAA,GACX,OAAA,EAAS,cAAA,EACT,KAAA,EAAO,YAAA,KACN,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"gitlab.controller.d.ts","names":[],"sources":["../../../src/controllers/gitlab.controller.ts"],"mappings":";;;;;KAMY,2BAAA;EACV,WAAA;EACA,WAAA;EACA,KAAA;AAAA;AAAA,KAGU,sBAAA,GAAyB,YAAY;EAC/C,OAAO;AAAA;AAAA,cAGI,UAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,2BAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAyBS,sBAAA;EACV,IAAA;EACA,WAAA;EACA,WAAA;AAAA;AAAA,KAGU,wBAAA,GAA2B,YAAY;EACjD,KAAK;AAAA;AAAA,cAGM,YAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,sBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAyBS,6BAAA;EACV,KAAA;EACA,WAAW;AAAA;AAAA,KAGD,wBAAA,GAA2B,YAAY,CACjD,aAAA;AAAA,cAGW,YAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,6BAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA+BS,qBAAA;EACV,KAAA;EACA,SAAA;EACA,MAAA;EACA,WAAA;AAAA;AAAA,KAGU,uBAAA,GAA0B,YAAY;EAChD,SAAA;EACA,WAAA;AAAA;;;AAvFW;cA6FA,WAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,qBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAyCS,uBAAA;EACV,KAAA;EACA,SAAA;EACA,MAAA;EACA,IAAA;EACA,WAAA;AAAA;AAAA,KAGU,yBAAA,GAA4B,YAAY;EAClD,OAAO;AAAA;AAAA,cAGI,aAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,uBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA"}
1
+ {"version":3,"file":"gitlab.controller.d.ts","names":[],"sources":["../../../src/controllers/gitlab.controller.ts"],"mappings":";;;;;KAMY,2BAAA;EACV,WAAA;EACA,WAAA;EACA,KAAA;AAAA;AAAA,KAGU,sBAAA,GAAyB,YAAA;EACnC,OAAA;AAAA;AAAA,cAGW,UAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,2BAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAyBS,sBAAA;EACV,IAAA;EACA,WAAA;EACA,WAAA;AAAA;AAAA,KAGU,wBAAA,GAA2B,YAAA;EACrC,KAAA;AAAA;AAAA,cAGW,YAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,sBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAyBS,6BAAA;EACV,KAAA;EACA,WAAA;AAAA;AAAA,KAGU,wBAAA,GAA2B,YAAA,CACrC,aAAA;AAAA,cAGW,YAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,6BAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA+BS,qBAAA;EACV,KAAA;EACA,SAAA;EACA,MAAA;EACA,WAAA;AAAA;AAAA,KAGU,uBAAA,GAA0B,YAAA;EACpC,SAAA;EACA,WAAA;AAAA;;;;cAMW,WAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,qBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAyCS,uBAAA;EACV,KAAA;EACA,SAAA;EACA,MAAA;EACA,IAAA;EACA,WAAA;AAAA;AAAA,KAGU,yBAAA,GAA4B,YAAA;EACtC,OAAA;AAAA;AAAA,cAGW,aAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,uBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"newsletter.controller.d.ts","names":[],"sources":["../../../src/controllers/newsletter.controller.ts"],"mappings":";;;;;KAUY,0BAAA;EACV,KAAA;EACA,SAAA,EAAW,UAAA,GAAa,UAAU;AAAA;AAAA,KAExB,4BAAA,GAA+B,YAAY,CAAC,OAAA;;;;;;cAO3C,qBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,0BAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAyGS,4BAAA;EACV,MAAA;EACA,SAAA,EAAW,UAAA,GAAa,UAAU;AAAA;AA9GpC;;;;AAAA,cAqHa,yBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,4BAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;;;;cAuGU,mBAAA,GACX,QAAA,EAAU,cAAA,EACV,KAAA,EAAO,YAAA,KACN,OAAA"}
1
+ {"version":3,"file":"newsletter.controller.d.ts","names":[],"sources":["../../../src/controllers/newsletter.controller.ts"],"mappings":";;;;;KAUY,0BAAA;EACV,KAAA;EACA,SAAA,EAAW,UAAA,GAAa,UAAA;AAAA;AAAA,KAEd,4BAAA,GAA+B,YAAA,CAAa,OAAA;;;;;;cAO3C,qBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,0BAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAyGS,4BAAA;EACV,MAAA;EACA,SAAA,EAAW,UAAA,GAAa,UAAA;AAAA;AA9G1B;;;;AAAA,cAqHa,yBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,4BAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;;;;cAuGU,mBAAA,GACX,QAAA,EAAU,cAAA,EACV,KAAA,EAAO,YAAA,KACN,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"oAuth2.controller.d.ts","names":[],"sources":["../../../src/controllers/oAuth2.controller.ts"],"mappings":";;;;;KAWY,kBAAA;EACV,UAAA;EACA,SAAA;EACA,aAAA;AAAA;AAAA,KAEU,oBAAA,GAAuB,YAAY,CAAC,WAAA;AAAA,cAGnC,oBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,kBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAwBS,uBAAA,GAA0B,YAAY;EAChD,WAAA;EACA,oBAAA,EAAsB,IAAA;AAAA;;;AAhCmC;AAG3D;;cAqCa,iBAAA,GACX,OAAA,EAAS,cAAA,EACT,KAAA,EAAO,YAAA,KACN,OAAA"}
1
+ {"version":3,"file":"oAuth2.controller.d.ts","names":[],"sources":["../../../src/controllers/oAuth2.controller.ts"],"mappings":";;;;;KAWY,kBAAA;EACV,UAAA;EACA,SAAA;EACA,aAAA;AAAA;AAAA,KAEU,oBAAA,GAAuB,YAAA,CAAa,WAAA;AAAA,cAGnC,oBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,kBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAwBS,uBAAA,GAA0B,YAAA;EACpC,WAAA;EACA,oBAAA,EAAsB,IAAA;AAAA;;;;AA7BxB;;cAqCa,iBAAA,GACX,OAAA,EAAS,cAAA,EACT,KAAA,EAAO,YAAA,KACN,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"organization.controller.d.ts","names":[],"sources":["../../../src/controllers/organization.controller.ts"],"mappings":";;;;;;;;;KAmCY,sBAAA,GACV,oBAAoB,CAAC,yBAAA;AAAA,KACX,sBAAA,GAAyB,iBAAiB,CAAC,eAAA;AAFvD;;;AAAA,cAOa,gBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,sBAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KAAY,OAAA;AAAA,KAiDT,oBAAA;EAAyB,cAAc;AAAA;AAAA,KACvC,qBAAA,GAAwB,YAAY,CAAC,eAAA;AApDjD;;;AAAA,cAyDa,eAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA,EAAQ,oBAAA;AAAA,IAClC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAwCS,mBAAA,GAAsB,wBAAwB;AAAA,KAC9C,qBAAA,GAAwB,YAAY,CAAC,eAAA;;;;cAKpC,eAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,mBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAuES,sBAAA,GAAyB,OAAO,CAAC,YAAA;AAAA,KACjC,wBAAA,GAA2B,YAAY,CAAC,eAAA;;AAnL/B;AAiDrB;cAuIa,kBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,sBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAuFS,yBAAA;EACV,SAAS;AAAA;AAAA,KAEC,2BAAA,GAA8B,YAAY,CAAC,eAAA;;AAnOS;AAKhE;cAmOa,qBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,yBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAgIS,6BAAA,GAAgC,OAAA;EAC1C,UAAA,GAAa,IAAA,GAAO,OAAA;EACpB,SAAA,GAAY,IAAA,GAAO,OAAA;AAAA;AAAA,KAET,+BAAA,GAAkC,YAAY,CAAC,eAAA;;;;cAK9C,yBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,6BAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAiHS,mCAAA;EAAwC,cAAc;AAAA;AAAA,KACtD,iCAAA,GAAoC,OAAA;EAC9C,UAAA,GAAa,IAAA,GAAO,OAAA;EACpB,SAAA,GAAY,IAAA,GAAO,OAAA;AAAA;AAAA,KAET,mCAAA,GAAsC,YAAY,CAAC,eAAA;AA5b/D;;;AAAA,cAica,6BAAA,GACX,OAAA,EAAS,cAAA;EACP,MAAA,EAAQ,mCAAA;EACR,IAAA,EAAM,iCAAA;AAAA,IAER,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAmHS,wBAAA,GAA2B,YAAY,CAAC,eAAA;;;;cAKvC,kBAAA,GACX,QAAA,EAAU,cAAA,EACV,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAkIS,iCAAA;EAAsC,cAAc;AAAA;AAAA,KACpD,iCAAA,GAAoC,YAAY,CAAC,eAAA;;;;cAKhD,2BAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA,EAAQ,iCAAA;AAAA,IAClC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAuES,uBAAA;EACV,cAAA,WAAyB,KAAA,CAAM,QAAQ;AAAA;AAAA,KAE7B,wBAAA,GAA2B,YAAY,CAAC,eAAA;;AAxsBK;AACzD;cA4sBa,kBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA,EAAQ,uBAAA;AAAA,IAClC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA0GS,0BAAA,GAA6B,YAAY;AApzBrD;;;AAAA,cAyzBa,oBAAA,GACX,QAAA,EAAU,cAAA,EACV,KAAA,EAAO,YAAA,KACN,OAAA"}
1
+ {"version":3,"file":"organization.controller.d.ts","names":[],"sources":["../../../src/controllers/organization.controller.ts"],"mappings":";;;;;;;;;KAmCY,sBAAA,GACV,oBAAA,CAAqB,yBAAA;AAAA,KACX,sBAAA,GAAyB,iBAAA,CAAkB,eAAA;AAFvD;;;AAAA,cAOa,gBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,sBAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KAAY,OAAA;AAAA,KAiDT,oBAAA;EAAyB,cAAA;AAAA;AAAA,KACzB,qBAAA,GAAwB,YAAA,CAAa,eAAA;AApDjD;;;AAAA,cAyDa,eAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA,EAAQ,oBAAA;AAAA,IAClC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAwCS,mBAAA,GAAsB,wBAAA;AAAA,KACtB,qBAAA,GAAwB,YAAA,CAAa,eAAA;;;;cAKpC,eAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,mBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAuES,sBAAA,GAAyB,OAAA,CAAQ,YAAA;AAAA,KACjC,wBAAA,GAA2B,YAAA,CAAa,eAAA;;;AAlIpD;cAuIa,kBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,sBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAuFS,yBAAA;EACV,SAAA;AAAA;AAAA,KAEU,2BAAA,GAA8B,YAAA,CAAa,eAAA;;;AA9NvD;cAmOa,qBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,yBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAgIS,6BAAA,GAAgC,OAAA;EAC1C,UAAA,GAAa,IAAA,GAAO,OAAA;EACpB,SAAA,GAAY,IAAA,GAAO,OAAA;AAAA;AAAA,KAET,+BAAA,GAAkC,YAAA,CAAa,eAAA;;;;cAK9C,yBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,6BAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAiHS,mCAAA;EAAwC,cAAA;AAAA;AAAA,KACxC,iCAAA,GAAoC,OAAA;EAC9C,UAAA,GAAa,IAAA,GAAO,OAAA;EACpB,SAAA,GAAY,IAAA,GAAO,OAAA;AAAA;AAAA,KAET,mCAAA,GAAsC,YAAA,CAAa,eAAA;AA5b/D;;;AAAA,cAica,6BAAA,GACX,OAAA,EAAS,cAAA;EACP,MAAA,EAAQ,mCAAA;EACR,IAAA,EAAM,iCAAA;AAAA,IAER,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAmHS,wBAAA,GAA2B,YAAA,CAAa,eAAA;;;;cAKvC,kBAAA,GACX,QAAA,EAAU,cAAA,EACV,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAkIS,iCAAA;EAAsC,cAAA;AAAA;AAAA,KACtC,iCAAA,GAAoC,YAAA,CAAa,eAAA;;;;cAKhD,2BAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA,EAAQ,iCAAA;AAAA,IAClC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAuES,uBAAA;EACV,cAAA,WAAyB,KAAA,CAAM,QAAA;AAAA;AAAA,KAErB,wBAAA,GAA2B,YAAA,CAAa,eAAA;;;AAvsBpD;cA4sBa,kBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA,EAAQ,uBAAA;AAAA,IAClC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA0GS,0BAAA,GAA6B,YAAA;AApzBzC;;;AAAA,cAyzBa,oBAAA,GACX,QAAA,EAAU,cAAA,EACV,KAAA,EAAO,YAAA,KACN,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"project.controller.d.ts","names":[],"sources":["../../../src/controllers/project.controller.ts"],"mappings":"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"}
1
+ {"version":3,"file":"project.controller.d.ts","names":[],"sources":["../../../src/controllers/project.controller.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"projectAccessKey.controller.d.ts","names":[],"sources":["../../../src/controllers/projectAccessKey.controller.ts"],"mappings":";;;;;KAaY,mBAAA,GAAsB,aAAa;AAAA,KACnC,uBAAA,GAA0B,YAAY,CAAC,YAAA;AADnD;;;AAAA,cAMa,eAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,mBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA2GS,mBAAA;EAAwB,QAAQ;AAAA;AAAA,KAChC,uBAAA,GAA0B,YAAY;AA/GlD;;;AAAA,cAoHa,eAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,mBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAqGS,oBAAA;EAAyB,QAAQ;AAAA;AAAA,KACjC,wBAAA,GAA2B,YAAY,CAAC,YAAA;;;;cAKvC,gBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,oBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA"}
1
+ {"version":3,"file":"projectAccessKey.controller.d.ts","names":[],"sources":["../../../src/controllers/projectAccessKey.controller.ts"],"mappings":";;;;;KAaY,mBAAA,GAAsB,aAAA;AAAA,KACtB,uBAAA,GAA0B,YAAA,CAAa,YAAA;AADnD;;;AAAA,cAMa,eAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,mBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA2GS,mBAAA;EAAwB,QAAA;AAAA;AAAA,KACxB,uBAAA,GAA0B,YAAA;AA/GtC;;;AAAA,cAoHa,eAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,mBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAqGS,oBAAA;EAAyB,QAAA;AAAA;AAAA,KACzB,wBAAA,GAA2B,YAAA,CAAa,YAAA;;;;cAKvC,gBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,oBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"projectMemberAccess.controller.d.ts","names":[],"sources":["../../../src/controllers/projectMemberAccess.controller.ts"],"mappings":";;;;;KAWY,wBAAA;EAA6B,MAAM;AAAA;AAAA,KAEnC,sBAAA;2FAEV,qBAAA,4BAJ6C;EAM7C,cAAc;AAAA;AAAA,KAGJ,wBAAA,GACV,YAAY,CAAC,8BAAA;;AAJC;AAGhB;;cAOa,kBAAA,GACX,OAAA,EAAS,cAAA;EACP,MAAA,EAAQ,wBAAA;EACR,IAAA,EAAM,sBAAA;AAAA,IAER,KAAA,EAAO,YAAA,KACN,OAAA"}
1
+ {"version":3,"file":"projectMemberAccess.controller.d.ts","names":[],"sources":["../../../src/controllers/projectMemberAccess.controller.ts"],"mappings":";;;;;KAWY,wBAAA;EAA6B,MAAA;AAAA;AAAA,KAE7B,sBAAA;2FAEV,qBAAA,4BAJ6C;EAM7C,cAAA;AAAA;AAAA,KAGU,wBAAA,GACV,YAAA,CAAa,8BAAA;;;AADf;;cAOa,kBAAA,GACX,OAAA,EAAS,cAAA;EACP,MAAA,EAAQ,wBAAA;EACR,IAAA,EAAM,sBAAA;AAAA,IAER,KAAA,EAAO,YAAA,KACN,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"recursiveAudit.controller.d.ts","names":[],"sources":["../../../src/controllers/recursiveAudit.controller.ts"],"mappings":";;;KAUY,yBAAA;EACV,KAAK;AAAA;AAAA,KAGK,kBAAA;EACV,IAAI;AAAA;AAAA,KAGM,qBAAA;EACV,GAAA;EACA,SAAA;EACA,MAAA;EACA,MAAA;EAOA,QAAA;EACA,cAAA;EACA,kBAAA;EACA,SAAA,EAAW,IAAA;EACX,SAAA,EAAW,IAAI;AAAA;AAAA,KAGL,sBAAA;EACV,GAAA;EACA,GAAA;EACA,MAAA;EACA,KAAA;EACA,KAAA;EACA,OAAA;AAAA;AAAA,KAGU,6BAAA;EACV,GAAA,EAAK,qBAAA;EACL,KAAA,EAAO,sBAAsB;AAAA;AAAA,cAGlB,YAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA;IAAe,GAAA;EAAA;AAAA,IACzC,KAAA,EAAO,YAAA,KAAY,OAAA;AAAA,cAsBR,mBAAA,GACX,OAAA,EAAS,cAAA;EACP,WAAA;IAAe,GAAA;EAAA;EACf,IAAA;IAAQ,IAAA;EAAA;AAAA,IAEV,KAAA,EAAO,YAAA,KAAY,OAAA;AAAA,cAkBR,uBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA;IAAU,KAAA;EAAA;AAAA,IACpC,KAAA,EAAO,YAAA,KAAY,OAAA;AAAA,cAmBR,oBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA;IAAU,KAAA;EAAA;AAAA,IACpC,KAAA,EAAO,YAAA,KAAY,OAAA;AAAA,cAmBR,mBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA;IAAU,KAAA;EAAA;AAAA,IACpC,KAAA,EAAO,YAAA,KAAY,OAAA;AAAA,cAmBR,oBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA;IAAU,KAAA;EAAA;AAAA,IACpC,KAAA,EAAO,YAAA,KAAY,OAAA"}
1
+ {"version":3,"file":"recursiveAudit.controller.d.ts","names":[],"sources":["../../../src/controllers/recursiveAudit.controller.ts"],"mappings":";;;KAUY,yBAAA;EACV,KAAA;AAAA;AAAA,KAGU,kBAAA;EACV,IAAA;AAAA;AAAA,KAGU,qBAAA;EACV,GAAA;EACA,SAAA;EACA,MAAA;EACA,MAAA;EAOA,QAAA;EACA,cAAA;EACA,kBAAA;EACA,SAAA,EAAW,IAAA;EACX,SAAA,EAAW,IAAA;AAAA;AAAA,KAGD,sBAAA;EACV,GAAA;EACA,GAAA;EACA,MAAA;EACA,KAAA;EACA,KAAA;EACA,OAAA;AAAA;AAAA,KAGU,6BAAA;EACV,GAAA,EAAK,qBAAA;EACL,KAAA,EAAO,sBAAA;AAAA;AAAA,cAGI,YAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA;IAAe,GAAA;EAAA;AAAA,IACzC,KAAA,EAAO,YAAA,KAAY,OAAA;AAAA,cAsBR,mBAAA,GACX,OAAA,EAAS,cAAA;EACP,WAAA;IAAe,GAAA;EAAA;EACf,IAAA;IAAQ,IAAA;EAAA;AAAA,IAEV,KAAA,EAAO,YAAA,KAAY,OAAA;AAAA,cAkBR,uBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA;IAAU,KAAA;EAAA;AAAA,IACpC,KAAA,EAAO,YAAA,KAAY,OAAA;AAAA,cAmBR,oBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA;IAAU,KAAA;EAAA;AAAA,IACpC,KAAA,EAAO,YAAA,KAAY,OAAA;AAAA,cAmBR,mBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA;IAAU,KAAA;EAAA;AAAA,IACpC,KAAA,EAAO,YAAA,KAAY,OAAA;AAAA,cAmBR,oBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA;IAAU,KAAA;EAAA;AAAA,IACpC,KAAA,EAAO,YAAA,KAAY,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"reviewer.controller.d.ts","names":[],"sources":["../../../src/controllers/reviewer.controller.ts"],"mappings":"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"}
1
+ {"version":3,"file":"reviewer.controller.d.ts","names":[],"sources":["../../../src/controllers/reviewer.controller.ts"],"mappings":";;;;;KAuCY,mBAAA;EACV,IAAA;EACA,QAAA;EACA,UAAA;EACA,QAAA;EACA,SAAA;EACA,eAAA;EACA,eAAA;EACA,UAAA;AAAA;AAAA,KAGU,uBAAA;EACV,GAAA;EACA,GAAA;EACA,KAAA;AAAA;AAAA,KAGU,qBAAA;EACV,OAAA,EAAS,uBAAA;EACT,SAAA;EACA,SAAA;AAAA;AAAA,cAGW,cAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,mBAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,cA4EU,oBAAA,GACX,OAAA,EAAS,cAAA;EACP,WAAA,EAAa,IAAA,CACX,mBAAA;AAAA,IAIJ,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,cAqCU,eAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA;IAAU,UAAA;EAAA;AAAA,IACpC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAsCS,oBAAA;EACV,GAAA;EACA,aAAA;IAAiB,IAAA;IAAc,EAAA;EAAA;EAC/B,UAAA,GAAa,gBAAA;EACb,YAAA;EACA,WAAA;IAAgB,MAAA;IAAiB,QAAA;IAAmB,SAAA;EAAA;AAAA;AAAA,cAGzC,kBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,oBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA8DS,kBAAA,GAAqB,OAAA,CAAQ,oBAAA;EACvC,YAAA;EACA,QAAA;AAAA;AAAA,cAGW,qBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,kBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,cA8CU,uBAAA,GACX,OAAA,EAAS,cAAA,EACT,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,cA2CU,oBAAA,GACX,OAAA,EAAS,cAAA,EACT,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,cAiBU,iBAAA,GACX,OAAA,EAAS,cAAA;EACP,WAAA;IACE,IAAA;IACA,QAAA;IACA,MAAA;EAAA;AAAA,IAGJ,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,cA6BU,uBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA;IAAU,UAAA;EAAA;AAAA,IACpC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAgGS,2BAAA,GAA8B,YAAA,CAAa,kBAAA;AAAA,cA4I1C,yBAAA,GAAyB,OAAA,EAxIpB,cAAA,EAAc,KAAA,EAAS,YAAA,KAAe,OAAA;AAAA,cAyI3C,0BAAA,GAA0B,OAAA,EAzIrB,cAAA,EAAc,KAAA,EAAS,YAAA,KAAe,OAAA;AAAA,cA6I3C,kBAAA,GACX,OAAA,EAAS,cAAA;EACP,MAAA;IAAU,UAAA;EAAA;EACV,WAAA;IAAe,IAAA;IAAe,QAAA;EAAA;AAAA,IAEhC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAqBS,gBAAA;EAAqB,MAAA;EAAgB,OAAA;AAAA;AAAA,cAEpC,YAAA,GACX,OAAA,EAAS,cAAA;EACP,MAAA;IAAU,SAAA;EAAA;EACV,IAAA,EAAM,gBAAA;AAAA,IAER,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAiFS,mBAAA;EACV,aAAA;EACA,YAAA;EACA,YAAA;AAAA;AAAA,cAGW,eAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,mBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAYS,iBAAA;EACV,UAAA;EACA,aAAA;EACA,YAAA;EACA,aAAA;EACA,SAAA;EACA,KAAA;AAAA;AAAA,cAGW,aAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,iBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,cA8FU,aAAA,GACX,OAAA,EAAS,cAAA;EACP,WAAA;IACE,IAAA;IACA,IAAA;IACA,QAAA;EAAA;AAAA,IAGJ,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,cAwDU,cAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA;IAAU,SAAA;EAAA;AAAA,IACpC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAkCS,uBAAA;EAA4B,MAAA,EAAQ,aAAA;AAAA;AAAA,cAEnC,mBAAA,GACX,OAAA,EAAS,cAAA;EACP,MAAA;IAAU,SAAA;EAAA;EACV,IAAA,EAAM,uBAAA;AAAA,IAER,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,cAqEU,cAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA;IAAU,SAAA;EAAA;AAAA,IACpC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAuCS,eAAA;EAAoB,OAAA;AAAA;AAAA,cAEnB,WAAA,GACX,OAAA,EAAS,cAAA;EACP,MAAA;IAAU,SAAA;EAAA;EACV,IAAA,EAAM,eAAA;AAAA,IAER,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,cAwCU,OAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA;IAAU,SAAA;EAAA;AAAA,IACpC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,cA4EU,mBAAA,GACX,QAAA,EAAU,cAAA;EAAiB,MAAA;IAAU,SAAA;EAAA;AAAA,IACrC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,cAMU,cAAA,GACX,QAAA,EAAU,cAAA;EAAiB,MAAA;IAAU,SAAA;EAAA;AAAA,IACrC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,cAKU,aAAA,GACX,QAAA,EAAU,cAAA,EACV,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,cAOU,eAAA,GACX,OAAA,EAAS,cAAA;EACP,MAAA;IAAU,UAAA;EAAA;EACV,IAAA;IAAQ,OAAA;EAAA;AAAA,IAEV,KAAA,EAAO,YAAA,KACN,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"searchDoc.controller.d.ts","names":[],"sources":["../../../src/controllers/searchDoc.controller.ts"],"mappings":";;;;KAIY,mBAAA;EACV,KAAA;EACA,KAAA;EACA,aAAA;AAAA;AAAA,KAGU,eAAA;EACV,OAAA;EACA,WAAA;EACA,OAAA;EACA,MAAA;EACA,OAAA;AAAA;AAAA,KAGU,mBAAA,GAAsB,YAAY,YAAY,eAAA;AAAA,cAE7C,aAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,mBAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KAAY,OAAA"}
1
+ {"version":3,"file":"searchDoc.controller.d.ts","names":[],"sources":["../../../src/controllers/searchDoc.controller.ts"],"mappings":";;;;KAIY,mBAAA;EACV,KAAA;EACA,KAAA;EACA,aAAA;AAAA;AAAA,KAGU,eAAA;EACV,OAAA;EACA,WAAA;EACA,OAAA;EACA,MAAA;EACA,OAAA;AAAA;AAAA,KAGU,mBAAA,GAAsB,YAAA,YAAwB,eAAA;AAAA,cAE7C,aAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,mBAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KAAY,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"showcaseProject.controller.d.ts","names":[],"sources":["../../../src/controllers/showcaseProject.controller.ts"],"mappings":";;;;;;cAoCM,mBAAA,EAAmB,CAAA,CAAA,SAAA;;;;;;KAUb,yBAAA,GAA4B,CAAA,CAAE,KAAK,QAAQ,mBAAA;AAAA,KAC3C,2BAAA,GAA8B,YAAY,CAAC,kBAAA;;;;;cAM1C,qBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,yBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA0GS,wBAAA;EACV,IAAA;EACA,QAAA;EACA,MAAA;EACA,gBAAA;EACA,YAAA;AAAA;AAAA,KAEU,yBAAA,GAA4B,iBAAiB,CAAC,kBAAA;;;;cAK7C,mBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,wBAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA+CS,4BAAA;EAAiC,SAAS;AAAA;AAAA,KAC1C,4BAAA,GAA+B,YAAY,CAAC,kBAAA;;;;cAK3C,sBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA,EAAQ,4BAAA;AAAA,IAClC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAqBS,6BAAA;EACV,SAAA;EACA,KAAK;AAAA;AAAA,KAEK,8BAAA,GAAiC,YAAY,CAAC,kBAAA;;;;cAK7C,wBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,6BAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAgCS,wBAAA;EAA6B,SAAS;AAAA;AAAA,KACtC,0BAAA,GAA6B,YAAY;EACnD,OAAA;EACA,SAAA;EACA,SAAA;EACA,WAAA;AAAA;;;AAjQwE;AAC1E;cAuQa,oBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,wBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAkCS,0BAAA;EAA+B,SAAS;AAAA;AAAA,KACxC,4BAAA,GAA+B,YAAY;EACrD,OAAA;EACA,SAAA;EACA,SAAA;EACA,WAAA;AAAA;;;;;cAOW,sBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,0BAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,cAgCG,mBAAA,EAAmB,CAAA,CAAA,SAAA;;;;;;;;KAsBb,yBAAA,GAA4B,CAAA,CAAE,KAAK,QAAQ,mBAAA;AAAA,KAC3C,2BAAA;EAAgC,SAAS;AAAA;AAAA,KACzC,2BAAA,GAA8B,YAAY,CAAC,kBAAA;AA3PzC;AAEd;;;AAFc,cAiQD,4BAAA,GACX,OAAA,EAAS,cAAA;EACP,MAAA,EAAQ,2BAAA;EACR,IAAA,EAAM,yBAAA;AAAA,IAER,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAiFS,2BAAA;EAAgC,SAAS;AAAA;;;;;cAMxC,4BAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA,EAAQ,2BAAA;AAAA,IAClC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAmCS,yBAAA;EAA8B,SAAS;AAAA;;;AA1XzC;AA+CV;;cAkVa,mBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA,EAAQ,yBAAA;AAAA,IAClC,KAAA,EAAO,YAAA,KACN,OAAA"}
1
+ {"version":3,"file":"showcaseProject.controller.d.ts","names":[],"sources":["../../../src/controllers/showcaseProject.controller.ts"],"mappings":";;;;;;cAoCM,mBAAA,EAAmB,CAAA,CAAA,SAAA;;;;;;KAUb,yBAAA,GAA4B,CAAA,CAAE,KAAA,QAAa,mBAAA;AAAA,KAC3C,2BAAA,GAA8B,YAAA,CAAa,kBAAA;;;;;cAM1C,qBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,yBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA0GS,wBAAA;EACV,IAAA;EACA,QAAA;EACA,MAAA;EACA,gBAAA;EACA,YAAA;AAAA;AAAA,KAEU,yBAAA,GAA4B,iBAAA,CAAkB,kBAAA;;;;cAK7C,mBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,wBAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KA+CS,4BAAA;EAAiC,SAAA;AAAA;AAAA,KACjC,4BAAA,GAA+B,YAAA,CAAa,kBAAA;;;;cAK3C,sBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA,EAAQ,4BAAA;AAAA,IAClC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAqBS,6BAAA;EACV,SAAA;EACA,KAAA;AAAA;AAAA,KAEU,8BAAA,GAAiC,YAAA,CAAa,kBAAA;;;;cAK7C,wBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,WAAA,EAAa,6BAAA;AAAA,IACvC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAgCS,wBAAA;EAA6B,SAAA;AAAA;AAAA,KAC7B,0BAAA,GAA6B,YAAA;EACvC,OAAA;EACA,SAAA;EACA,SAAA;EACA,WAAA;AAAA;;;;AAhQF;cAuQa,oBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,wBAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAkCS,0BAAA;EAA+B,SAAA;AAAA;AAAA,KAC/B,4BAAA,GAA+B,YAAA;EACzC,OAAA;EACA,SAAA;EACA,SAAA;EACA,WAAA;AAAA;;;;;cAOW,sBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,IAAA,EAAM,0BAAA;AAAA,IAChC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,cAgCG,mBAAA,EAAmB,CAAA,CAAA,SAAA;;;;;;;;KAsBb,yBAAA,GAA4B,CAAA,CAAE,KAAA,QAAa,mBAAA;AAAA,KAC3C,2BAAA;EAAgC,SAAA;AAAA;AAAA,KAChC,2BAAA,GAA8B,YAAA,CAAa,kBAAA;;AAzPvD;;;cA+Pa,4BAAA,GACX,OAAA,EAAS,cAAA;EACP,MAAA,EAAQ,2BAAA;EACR,IAAA,EAAM,yBAAA;AAAA,IAER,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAiFS,2BAAA;EAAgC,SAAA;AAAA;;;;;cAM/B,4BAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA,EAAQ,2BAAA;AAAA,IAClC,KAAA,EAAO,YAAA,KACN,OAAA;AAAA,KAmCS,yBAAA;EAA8B,SAAA;AAAA;;;;AA3U1C;;cAkVa,mBAAA,GACX,OAAA,EAAS,cAAA;EAAiB,MAAA,EAAQ,yBAAA;AAAA,IAClC,KAAA,EAAO,YAAA,KACN,OAAA"}