@intlayer/backend 5.6.0 → 5.7.1

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 (508) hide show
  1. package/README.md +3 -0
  2. package/dist/cjs/controllers/ai.controller.cjs +10 -7
  3. package/dist/cjs/controllers/ai.controller.cjs.map +1 -1
  4. package/dist/cjs/controllers/dictionary.controller.cjs +50 -58
  5. package/dist/cjs/controllers/dictionary.controller.cjs.map +1 -1
  6. package/dist/cjs/controllers/eventListener.controller.cjs +2 -18
  7. package/dist/cjs/controllers/eventListener.controller.cjs.map +1 -1
  8. package/dist/cjs/controllers/newsletter.controller.cjs +38 -3
  9. package/dist/cjs/controllers/newsletter.controller.cjs.map +1 -1
  10. package/dist/cjs/controllers/oAuth2.controller.cjs +3 -3
  11. package/dist/cjs/controllers/oAuth2.controller.cjs.map +1 -1
  12. package/dist/cjs/controllers/organization.controller.cjs +92 -106
  13. package/dist/cjs/controllers/organization.controller.cjs.map +1 -1
  14. package/dist/cjs/controllers/project.controller.cjs +81 -83
  15. package/dist/cjs/controllers/project.controller.cjs.map +1 -1
  16. package/dist/cjs/controllers/projectAccessKey.controller.cjs +30 -24
  17. package/dist/cjs/controllers/projectAccessKey.controller.cjs.map +1 -1
  18. package/dist/cjs/controllers/search.controller.cjs.map +1 -1
  19. package/dist/cjs/controllers/stripe.controller.cjs +4 -25
  20. package/dist/cjs/controllers/stripe.controller.cjs.map +1 -1
  21. package/dist/cjs/controllers/tag.controller.cjs +27 -16
  22. package/dist/cjs/controllers/tag.controller.cjs.map +1 -1
  23. package/dist/cjs/controllers/user.controller.cjs +88 -24
  24. package/dist/cjs/controllers/user.controller.cjs.map +1 -1
  25. package/dist/cjs/emails/InviteUserEmail.cjs +30 -12
  26. package/dist/cjs/emails/InviteUserEmail.cjs.map +1 -1
  27. package/dist/cjs/emails/OAuthTokenCreatedEmail.cjs +266 -0
  28. package/dist/cjs/emails/OAuthTokenCreatedEmail.cjs.map +1 -0
  29. package/dist/cjs/emails/ResetUserPassword.cjs +27 -15
  30. package/dist/cjs/emails/ResetUserPassword.cjs.map +1 -1
  31. package/dist/cjs/emails/ValidateUserEmail.cjs +27 -36
  32. package/dist/cjs/emails/ValidateUserEmail.cjs.map +1 -1
  33. package/dist/cjs/emails/Welcome.cjs +27 -15
  34. package/dist/cjs/emails/Welcome.cjs.map +1 -1
  35. package/dist/cjs/emails/index.cjs +7 -5
  36. package/dist/cjs/emails/index.cjs.map +1 -1
  37. package/dist/cjs/export.cjs +2 -5
  38. package/dist/cjs/export.cjs.map +1 -1
  39. package/dist/cjs/index.cjs +61 -111
  40. package/dist/cjs/index.cjs.map +1 -1
  41. package/dist/cjs/middlewares/oAuth2.middleware.cjs +26 -38
  42. package/dist/cjs/middlewares/oAuth2.middleware.cjs.map +1 -1
  43. package/dist/cjs/middlewares/request.middleware.cjs.map +1 -1
  44. package/dist/cjs/middlewares/sessionAuth.middleware.cjs +17 -138
  45. package/dist/cjs/middlewares/sessionAuth.middleware.cjs.map +1 -1
  46. package/dist/cjs/models/dictionary.model.cjs.map +1 -1
  47. package/dist/cjs/models/discussion.model.cjs.map +1 -1
  48. package/dist/cjs/models/oAuth2.model.cjs +4 -1
  49. package/dist/cjs/models/oAuth2.model.cjs.map +1 -1
  50. package/dist/cjs/models/organization.model.cjs +1 -4
  51. package/dist/cjs/models/organization.model.cjs.map +1 -1
  52. package/dist/cjs/models/project.model.cjs +4 -1
  53. package/dist/cjs/models/project.model.cjs.map +1 -1
  54. package/dist/cjs/models/session.model.cjs +34 -0
  55. package/dist/cjs/models/session.model.cjs.map +1 -0
  56. package/dist/cjs/models/tag.model.cjs.map +1 -1
  57. package/dist/cjs/models/user.model.cjs.map +1 -1
  58. package/dist/cjs/routes/ai.routes.cjs +3 -1
  59. package/dist/cjs/routes/ai.routes.cjs.map +1 -1
  60. package/dist/cjs/routes/dictionary.routes.cjs.map +1 -1
  61. package/dist/cjs/routes/eventListener.routes.cjs +1 -1
  62. package/dist/cjs/routes/eventListener.routes.cjs.map +1 -1
  63. package/dist/cjs/routes/newsletter.routes.cjs.map +1 -1
  64. package/dist/cjs/routes/organization.routes.cjs +8 -8
  65. package/dist/cjs/routes/organization.routes.cjs.map +1 -1
  66. package/dist/cjs/routes/project.routes.cjs +23 -14
  67. package/dist/cjs/routes/project.routes.cjs.map +1 -1
  68. package/dist/cjs/routes/search.routes.cjs.map +1 -1
  69. package/dist/cjs/routes/stripe.routes.cjs.map +1 -1
  70. package/dist/cjs/routes/tags.routes.cjs +4 -4
  71. package/dist/cjs/routes/tags.routes.cjs.map +1 -1
  72. package/dist/cjs/routes/user.routes.cjs +12 -12
  73. package/dist/cjs/routes/user.routes.cjs.map +1 -1
  74. package/dist/cjs/schemas/dictionary.schema.cjs +18 -1
  75. package/dist/cjs/schemas/dictionary.schema.cjs.map +1 -1
  76. package/dist/cjs/schemas/discussion.schema.cjs +18 -1
  77. package/dist/cjs/schemas/discussion.schema.cjs.map +1 -1
  78. package/dist/cjs/schemas/oAuth2.schema.cjs +18 -1
  79. package/dist/cjs/schemas/oAuth2.schema.cjs.map +1 -1
  80. package/dist/cjs/schemas/organization.schema.cjs +21 -1
  81. package/dist/cjs/schemas/organization.schema.cjs.map +1 -1
  82. package/dist/cjs/schemas/plans.schema.cjs +18 -1
  83. package/dist/cjs/schemas/plans.schema.cjs.map +1 -1
  84. package/dist/cjs/schemas/project.schema.cjs +19 -14
  85. package/dist/cjs/schemas/project.schema.cjs.map +1 -1
  86. package/dist/cjs/schemas/session.schema.cjs +63 -0
  87. package/dist/cjs/schemas/session.schema.cjs.map +1 -0
  88. package/dist/cjs/schemas/tag.schema.cjs +18 -1
  89. package/dist/cjs/schemas/tag.schema.cjs.map +1 -1
  90. package/dist/cjs/schemas/user.schema.cjs +18 -48
  91. package/dist/cjs/schemas/user.schema.cjs.map +1 -1
  92. package/dist/cjs/services/dictionary.service.cjs +6 -5
  93. package/dist/cjs/services/dictionary.service.cjs.map +1 -1
  94. package/dist/cjs/services/email.service.cjs +13 -0
  95. package/dist/cjs/services/email.service.cjs.map +1 -1
  96. package/dist/cjs/services/oAuth2.service.cjs +49 -10
  97. package/dist/cjs/services/oAuth2.service.cjs.map +1 -1
  98. package/dist/cjs/services/organization.service.cjs +16 -15
  99. package/dist/cjs/services/organization.service.cjs.map +1 -1
  100. package/dist/cjs/services/project.service.cjs +1 -1
  101. package/dist/cjs/services/project.service.cjs.map +1 -1
  102. package/dist/cjs/services/projectAccessKey.service.cjs +17 -33
  103. package/dist/cjs/services/projectAccessKey.service.cjs.map +1 -1
  104. package/dist/cjs/services/subscription.service.cjs +10 -10
  105. package/dist/cjs/services/subscription.service.cjs.map +1 -1
  106. package/dist/cjs/services/tag.service.cjs.map +1 -1
  107. package/dist/cjs/services/user.service.cjs +2 -42
  108. package/dist/cjs/services/user.service.cjs.map +1 -1
  109. package/dist/cjs/types/dictionary.types.cjs.map +1 -1
  110. package/dist/cjs/types/discussion.types.cjs.map +1 -1
  111. package/dist/cjs/types/oAuth2.types.cjs.map +1 -1
  112. package/dist/cjs/types/organization.types.cjs.map +1 -1
  113. package/dist/cjs/types/plan.types.cjs.map +1 -1
  114. package/dist/cjs/types/project.types.cjs.map +1 -1
  115. package/dist/cjs/types/session.types.cjs.map +1 -1
  116. package/dist/cjs/types/tag.types.cjs.map +1 -1
  117. package/dist/cjs/types/user.types.cjs.map +1 -1
  118. package/dist/cjs/utils/AI/aiSdk.cjs.map +1 -1
  119. package/dist/cjs/utils/AI/askDocQuestion/askDocQuestion.cjs +14 -9
  120. package/dist/cjs/utils/AI/askDocQuestion/askDocQuestion.cjs.map +1 -1
  121. package/dist/cjs/utils/AI/autocomplete/PROMPT.md +18 -2
  122. package/dist/cjs/utils/AI/autocomplete/index.cjs +8 -5
  123. package/dist/cjs/utils/AI/autocomplete/index.cjs.map +1 -1
  124. package/dist/cjs/utils/access.cjs +2 -0
  125. package/dist/cjs/utils/access.cjs.map +1 -0
  126. package/dist/cjs/utils/accessControl.cjs +7 -0
  127. package/dist/cjs/utils/accessControl.cjs.map +1 -1
  128. package/dist/cjs/utils/auth/getAuth.cjs +248 -0
  129. package/dist/cjs/utils/auth/getAuth.cjs.map +1 -0
  130. package/dist/cjs/utils/cors.cjs +55 -0
  131. package/dist/cjs/utils/cors.cjs.map +1 -0
  132. package/dist/cjs/utils/ensureMongoDocumentToObject.cjs.map +1 -1
  133. package/dist/cjs/utils/errors/ErrorHandler.cjs +2 -2
  134. package/dist/cjs/utils/errors/ErrorHandler.cjs.map +1 -1
  135. package/dist/cjs/utils/errors/errorCodes.cjs +114 -153
  136. package/dist/cjs/utils/errors/errorCodes.cjs.map +1 -1
  137. package/dist/cjs/utils/filtersAndPagination/getOrganizationFiltersAndPagination.cjs.map +1 -1
  138. package/dist/cjs/utils/filtersAndPagination/getProjectFiltersAndPagination.cjs.map +1 -1
  139. package/dist/cjs/utils/filtersAndPagination/getTagFiltersAndPagination.cjs.map +1 -1
  140. package/dist/cjs/utils/filtersAndPagination/getUserFiltersAndPagination.cjs +1 -1
  141. package/dist/cjs/utils/filtersAndPagination/getUserFiltersAndPagination.cjs.map +1 -1
  142. package/dist/cjs/utils/mapper/dictionary.cjs.map +1 -1
  143. package/dist/cjs/utils/mapper/organization.cjs +10 -8
  144. package/dist/cjs/utils/mapper/organization.cjs.map +1 -1
  145. package/dist/cjs/utils/mapper/project.cjs +5 -18
  146. package/dist/cjs/utils/mapper/project.cjs.map +1 -1
  147. package/dist/cjs/utils/mapper/tag.cjs +4 -2
  148. package/dist/cjs/utils/mapper/tag.cjs.map +1 -1
  149. package/dist/cjs/utils/mapper/user.cjs +6 -3
  150. package/dist/cjs/utils/mapper/user.cjs.map +1 -1
  151. package/dist/cjs/utils/mergeFunctionTypes.cjs +17 -0
  152. package/dist/cjs/utils/mergeFunctionTypes.cjs.map +1 -0
  153. package/dist/cjs/utils/mongoDB/connectDB.cjs +3 -1
  154. package/dist/cjs/utils/mongoDB/connectDB.cjs.map +1 -1
  155. package/dist/cjs/utils/mongoDB/types.cjs +17 -0
  156. package/dist/cjs/utils/mongoDB/types.cjs.map +1 -0
  157. package/dist/cjs/utils/oAuth2.cjs.map +1 -1
  158. package/dist/cjs/utils/permissions.cjs +166 -0
  159. package/dist/cjs/utils/permissions.cjs.map +1 -0
  160. package/dist/cjs/utils/rateLimiter.cjs +88 -0
  161. package/dist/cjs/utils/rateLimiter.cjs.map +1 -0
  162. package/dist/esm/controllers/ai.controller.mjs +10 -7
  163. package/dist/esm/controllers/ai.controller.mjs.map +1 -1
  164. package/dist/esm/controllers/dictionary.controller.mjs +50 -58
  165. package/dist/esm/controllers/dictionary.controller.mjs.map +1 -1
  166. package/dist/esm/controllers/eventListener.controller.mjs +2 -8
  167. package/dist/esm/controllers/eventListener.controller.mjs.map +1 -1
  168. package/dist/esm/controllers/newsletter.controller.mjs +38 -3
  169. package/dist/esm/controllers/newsletter.controller.mjs.map +1 -1
  170. package/dist/esm/controllers/oAuth2.controller.mjs +2 -2
  171. package/dist/esm/controllers/oAuth2.controller.mjs.map +1 -1
  172. package/dist/esm/controllers/organization.controller.mjs +95 -106
  173. package/dist/esm/controllers/organization.controller.mjs.map +1 -1
  174. package/dist/esm/controllers/project.controller.mjs +81 -83
  175. package/dist/esm/controllers/project.controller.mjs.map +1 -1
  176. package/dist/esm/controllers/projectAccessKey.controller.mjs +30 -24
  177. package/dist/esm/controllers/projectAccessKey.controller.mjs.map +1 -1
  178. package/dist/esm/controllers/search.controller.mjs.map +1 -1
  179. package/dist/esm/controllers/stripe.controller.mjs +4 -25
  180. package/dist/esm/controllers/stripe.controller.mjs.map +1 -1
  181. package/dist/esm/controllers/tag.controller.mjs +27 -16
  182. package/dist/esm/controllers/tag.controller.mjs.map +1 -1
  183. package/dist/esm/controllers/user.controller.mjs +85 -22
  184. package/dist/esm/controllers/user.controller.mjs.map +1 -1
  185. package/dist/esm/emails/InviteUserEmail.mjs +32 -14
  186. package/dist/esm/emails/InviteUserEmail.mjs.map +1 -1
  187. package/dist/esm/emails/OAuthTokenCreatedEmail.mjs +254 -0
  188. package/dist/esm/emails/OAuthTokenCreatedEmail.mjs.map +1 -0
  189. package/dist/esm/emails/ResetUserPassword.mjs +29 -17
  190. package/dist/esm/emails/ResetUserPassword.mjs.map +1 -1
  191. package/dist/esm/emails/ValidateUserEmail.mjs +29 -38
  192. package/dist/esm/emails/ValidateUserEmail.mjs.map +1 -1
  193. package/dist/esm/emails/Welcome.mjs +29 -17
  194. package/dist/esm/emails/Welcome.mjs.map +1 -1
  195. package/dist/esm/emails/index.mjs +3 -2
  196. package/dist/esm/emails/index.mjs.map +1 -1
  197. package/dist/esm/export.mjs +1 -3
  198. package/dist/esm/export.mjs.map +1 -1
  199. package/dist/esm/index.mjs +60 -111
  200. package/dist/esm/index.mjs.map +1 -1
  201. package/dist/esm/middlewares/oAuth2.middleware.mjs +27 -36
  202. package/dist/esm/middlewares/oAuth2.middleware.mjs.map +1 -1
  203. package/dist/esm/middlewares/request.middleware.mjs.map +1 -1
  204. package/dist/esm/middlewares/sessionAuth.middleware.mjs +16 -127
  205. package/dist/esm/middlewares/sessionAuth.middleware.mjs.map +1 -1
  206. package/dist/esm/models/dictionary.model.mjs.map +1 -1
  207. package/dist/esm/models/discussion.model.mjs.map +1 -1
  208. package/dist/esm/models/oAuth2.model.mjs +4 -1
  209. package/dist/esm/models/oAuth2.model.mjs.map +1 -1
  210. package/dist/esm/models/organization.model.mjs +1 -4
  211. package/dist/esm/models/organization.model.mjs.map +1 -1
  212. package/dist/esm/models/project.model.mjs +4 -1
  213. package/dist/esm/models/project.model.mjs.map +1 -1
  214. package/dist/esm/models/session.model.mjs +10 -0
  215. package/dist/esm/models/session.model.mjs.map +1 -0
  216. package/dist/esm/models/tag.model.mjs.map +1 -1
  217. package/dist/esm/models/user.model.mjs.map +1 -1
  218. package/dist/esm/routes/ai.routes.mjs +3 -1
  219. package/dist/esm/routes/ai.routes.mjs.map +1 -1
  220. package/dist/esm/routes/dictionary.routes.mjs.map +1 -1
  221. package/dist/esm/routes/eventListener.routes.mjs +1 -1
  222. package/dist/esm/routes/eventListener.routes.mjs.map +1 -1
  223. package/dist/esm/routes/newsletter.routes.mjs.map +1 -1
  224. package/dist/esm/routes/organization.routes.mjs +8 -8
  225. package/dist/esm/routes/organization.routes.mjs.map +1 -1
  226. package/dist/esm/routes/project.routes.mjs +23 -14
  227. package/dist/esm/routes/project.routes.mjs.map +1 -1
  228. package/dist/esm/routes/search.routes.mjs.map +1 -1
  229. package/dist/esm/routes/stripe.routes.mjs.map +1 -1
  230. package/dist/esm/routes/tags.routes.mjs +4 -4
  231. package/dist/esm/routes/tags.routes.mjs.map +1 -1
  232. package/dist/esm/routes/user.routes.mjs +14 -14
  233. package/dist/esm/routes/user.routes.mjs.map +1 -1
  234. package/dist/esm/schemas/dictionary.schema.mjs +18 -1
  235. package/dist/esm/schemas/dictionary.schema.mjs.map +1 -1
  236. package/dist/esm/schemas/discussion.schema.mjs +18 -1
  237. package/dist/esm/schemas/discussion.schema.mjs.map +1 -1
  238. package/dist/esm/schemas/oAuth2.schema.mjs +18 -1
  239. package/dist/esm/schemas/oAuth2.schema.mjs.map +1 -1
  240. package/dist/esm/schemas/organization.schema.mjs +21 -1
  241. package/dist/esm/schemas/organization.schema.mjs.map +1 -1
  242. package/dist/esm/schemas/plans.schema.mjs +18 -1
  243. package/dist/esm/schemas/plans.schema.mjs.map +1 -1
  244. package/dist/esm/schemas/project.schema.mjs +21 -15
  245. package/dist/esm/schemas/project.schema.mjs.map +1 -1
  246. package/dist/esm/schemas/session.schema.mjs +39 -0
  247. package/dist/esm/schemas/session.schema.mjs.map +1 -0
  248. package/dist/esm/schemas/tag.schema.mjs +21 -4
  249. package/dist/esm/schemas/tag.schema.mjs.map +1 -1
  250. package/dist/esm/schemas/user.schema.mjs +18 -48
  251. package/dist/esm/schemas/user.schema.mjs.map +1 -1
  252. package/dist/esm/services/dictionary.service.mjs +6 -5
  253. package/dist/esm/services/dictionary.service.mjs.map +1 -1
  254. package/dist/esm/services/email.service.mjs +33 -16
  255. package/dist/esm/services/email.service.mjs.map +1 -1
  256. package/dist/esm/services/oAuth2.service.mjs +47 -10
  257. package/dist/esm/services/oAuth2.service.mjs.map +1 -1
  258. package/dist/esm/services/organization.service.mjs +16 -14
  259. package/dist/esm/services/organization.service.mjs.map +1 -1
  260. package/dist/esm/services/project.service.mjs +1 -1
  261. package/dist/esm/services/project.service.mjs.map +1 -1
  262. package/dist/esm/services/projectAccessKey.service.mjs +15 -31
  263. package/dist/esm/services/projectAccessKey.service.mjs.map +1 -1
  264. package/dist/esm/services/subscription.service.mjs +10 -10
  265. package/dist/esm/services/subscription.service.mjs.map +1 -1
  266. package/dist/esm/services/tag.service.mjs.map +1 -1
  267. package/dist/esm/services/user.service.mjs +2 -40
  268. package/dist/esm/services/user.service.mjs.map +1 -1
  269. package/dist/esm/types/user.types.mjs.map +1 -1
  270. package/dist/esm/utils/AI/aiSdk.mjs.map +1 -1
  271. package/dist/esm/utils/AI/askDocQuestion/askDocQuestion.mjs +14 -9
  272. package/dist/esm/utils/AI/askDocQuestion/askDocQuestion.mjs.map +1 -1
  273. package/dist/esm/utils/AI/autocomplete/PROMPT.md +18 -2
  274. package/dist/esm/utils/AI/autocomplete/index.mjs +8 -5
  275. package/dist/esm/utils/AI/autocomplete/index.mjs.map +1 -1
  276. package/dist/esm/utils/access.mjs +1 -0
  277. package/dist/esm/utils/access.mjs.map +1 -0
  278. package/dist/esm/utils/accessControl.mjs +7 -0
  279. package/dist/esm/utils/accessControl.mjs.map +1 -1
  280. package/dist/esm/utils/auth/getAuth.mjs +227 -0
  281. package/dist/esm/utils/auth/getAuth.mjs.map +1 -0
  282. package/dist/esm/utils/cors.mjs +31 -0
  283. package/dist/esm/utils/cors.mjs.map +1 -0
  284. package/dist/esm/utils/ensureMongoDocumentToObject.mjs.map +1 -1
  285. package/dist/esm/utils/errors/ErrorHandler.mjs +2 -2
  286. package/dist/esm/utils/errors/ErrorHandler.mjs.map +1 -1
  287. package/dist/esm/utils/errors/errorCodes.mjs +114 -153
  288. package/dist/esm/utils/errors/errorCodes.mjs.map +1 -1
  289. package/dist/esm/utils/filtersAndPagination/getOrganizationFiltersAndPagination.mjs.map +1 -1
  290. package/dist/esm/utils/filtersAndPagination/getProjectFiltersAndPagination.mjs.map +1 -1
  291. package/dist/esm/utils/filtersAndPagination/getTagFiltersAndPagination.mjs.map +1 -1
  292. package/dist/esm/utils/filtersAndPagination/getUserFiltersAndPagination.mjs +1 -1
  293. package/dist/esm/utils/filtersAndPagination/getUserFiltersAndPagination.mjs.map +1 -1
  294. package/dist/esm/utils/mapper/dictionary.mjs.map +1 -1
  295. package/dist/esm/utils/mapper/organization.mjs +8 -7
  296. package/dist/esm/utils/mapper/organization.mjs.map +1 -1
  297. package/dist/esm/utils/mapper/project.mjs +5 -18
  298. package/dist/esm/utils/mapper/project.mjs.map +1 -1
  299. package/dist/esm/utils/mapper/tag.mjs +4 -2
  300. package/dist/esm/utils/mapper/tag.mjs.map +1 -1
  301. package/dist/esm/utils/mapper/user.mjs +6 -3
  302. package/dist/esm/utils/mapper/user.mjs.map +1 -1
  303. package/dist/esm/utils/mergeFunctionTypes.mjs +1 -0
  304. package/dist/esm/utils/mergeFunctionTypes.mjs.map +1 -0
  305. package/dist/esm/utils/mongoDB/connectDB.mjs +3 -1
  306. package/dist/esm/utils/mongoDB/connectDB.mjs.map +1 -1
  307. package/dist/esm/utils/mongoDB/types.mjs +1 -0
  308. package/dist/esm/utils/mongoDB/types.mjs.map +1 -0
  309. package/dist/esm/utils/oAuth2.mjs +3 -3
  310. package/dist/esm/utils/oAuth2.mjs.map +1 -1
  311. package/dist/esm/utils/permissions.mjs +138 -0
  312. package/dist/esm/utils/permissions.mjs.map +1 -0
  313. package/dist/esm/utils/rateLimiter.mjs +53 -0
  314. package/dist/esm/utils/rateLimiter.mjs.map +1 -0
  315. package/dist/types/controllers/ai.controller.d.ts +12 -10
  316. package/dist/types/controllers/ai.controller.d.ts.map +1 -1
  317. package/dist/types/controllers/dictionary.controller.d.ts +8 -9
  318. package/dist/types/controllers/dictionary.controller.d.ts.map +1 -1
  319. package/dist/types/controllers/eventListener.controller.d.ts +2 -3
  320. package/dist/types/controllers/eventListener.controller.d.ts.map +1 -1
  321. package/dist/types/controllers/newsletter.controller.d.ts +5 -6
  322. package/dist/types/controllers/newsletter.controller.d.ts.map +1 -1
  323. package/dist/types/controllers/oAuth2.controller.d.ts +3 -3
  324. package/dist/types/controllers/oAuth2.controller.d.ts.map +1 -1
  325. package/dist/types/controllers/organization.controller.d.ts +22 -23
  326. package/dist/types/controllers/organization.controller.d.ts.map +1 -1
  327. package/dist/types/controllers/project.controller.d.ts +13 -14
  328. package/dist/types/controllers/project.controller.d.ts.map +1 -1
  329. package/dist/types/controllers/projectAccessKey.controller.d.ts +5 -6
  330. package/dist/types/controllers/projectAccessKey.controller.d.ts.map +1 -1
  331. package/dist/types/controllers/search.controller.d.ts +2 -3
  332. package/dist/types/controllers/search.controller.d.ts.map +1 -1
  333. package/dist/types/controllers/stripe.controller.d.ts +5 -6
  334. package/dist/types/controllers/stripe.controller.d.ts.map +1 -1
  335. package/dist/types/controllers/tag.controller.d.ts +9 -10
  336. package/dist/types/controllers/tag.controller.d.ts.map +1 -1
  337. package/dist/types/controllers/user.controller.d.ts +16 -19
  338. package/dist/types/controllers/user.controller.d.ts.map +1 -1
  339. package/dist/types/emails/InviteUserEmail.d.ts.map +1 -1
  340. package/dist/types/emails/OAuthTokenCreatedEmail.d.ts +21 -0
  341. package/dist/types/emails/OAuthTokenCreatedEmail.d.ts.map +1 -0
  342. package/dist/types/emails/ResetUserPassword.d.ts.map +1 -1
  343. package/dist/types/emails/Welcome.d.ts.map +1 -1
  344. package/dist/types/emails/index.d.ts +3 -2
  345. package/dist/types/emails/index.d.ts.map +1 -1
  346. package/dist/types/export.d.ts +2 -3
  347. package/dist/types/export.d.ts.map +1 -1
  348. package/dist/types/index.d.ts +1 -3
  349. package/dist/types/index.d.ts.map +1 -1
  350. package/dist/types/middlewares/oAuth2.middleware.d.ts +1 -2
  351. package/dist/types/middlewares/oAuth2.middleware.d.ts.map +1 -1
  352. package/dist/types/middlewares/request.middleware.d.ts +3 -3
  353. package/dist/types/middlewares/request.middleware.d.ts.map +1 -1
  354. package/dist/types/middlewares/sessionAuth.middleware.d.ts +3 -25
  355. package/dist/types/middlewares/sessionAuth.middleware.d.ts.map +1 -1
  356. package/dist/types/models/dictionary.model.d.ts +6 -5
  357. package/dist/types/models/dictionary.model.d.ts.map +1 -1
  358. package/dist/types/models/discussion.model.d.ts +7 -2
  359. package/dist/types/models/discussion.model.d.ts.map +1 -1
  360. package/dist/types/models/oAuth2.model.d.ts +3 -2
  361. package/dist/types/models/oAuth2.model.d.ts.map +1 -1
  362. package/dist/types/models/organization.model.d.ts +2 -12
  363. package/dist/types/models/organization.model.d.ts.map +1 -1
  364. package/dist/types/models/project.model.d.ts +2 -11
  365. package/dist/types/models/project.model.d.ts.map +1 -1
  366. package/dist/types/models/session.model.d.ts +3 -0
  367. package/dist/types/models/session.model.d.ts.map +1 -0
  368. package/dist/types/models/tag.model.d.ts.map +1 -1
  369. package/dist/types/models/user.model.d.ts.map +1 -1
  370. package/dist/types/routes/ai.routes.d.ts.map +1 -1
  371. package/dist/types/routes/organization.routes.d.ts +4 -4
  372. package/dist/types/routes/project.routes.d.ts +4 -4
  373. package/dist/types/routes/project.routes.d.ts.map +1 -1
  374. package/dist/types/routes/tags.routes.d.ts +2 -2
  375. package/dist/types/routes/user.routes.d.ts +6 -7
  376. package/dist/types/routes/user.routes.d.ts.map +1 -1
  377. package/dist/types/schemas/dictionary.schema.d.ts +6 -8
  378. package/dist/types/schemas/dictionary.schema.d.ts.map +1 -1
  379. package/dist/types/schemas/discussion.schema.d.ts +7 -5
  380. package/dist/types/schemas/discussion.schema.d.ts.map +1 -1
  381. package/dist/types/schemas/oAuth2.schema.d.ts +4 -3
  382. package/dist/types/schemas/oAuth2.schema.d.ts.map +1 -1
  383. package/dist/types/schemas/organization.schema.d.ts +6 -10
  384. package/dist/types/schemas/organization.schema.d.ts.map +1 -1
  385. package/dist/types/schemas/plans.schema.d.ts +6 -8
  386. package/dist/types/schemas/plans.schema.d.ts.map +1 -1
  387. package/dist/types/schemas/project.schema.d.ts +5 -17
  388. package/dist/types/schemas/project.schema.d.ts.map +1 -1
  389. package/dist/types/schemas/session.schema.d.ts +14 -0
  390. package/dist/types/schemas/session.schema.d.ts.map +1 -0
  391. package/dist/types/schemas/tag.schema.d.ts +6 -8
  392. package/dist/types/schemas/tag.schema.d.ts.map +1 -1
  393. package/dist/types/schemas/user.schema.d.ts +7 -5
  394. package/dist/types/schemas/user.schema.d.ts.map +1 -1
  395. package/dist/types/services/dictionary.service.d.ts +9 -9
  396. package/dist/types/services/dictionary.service.d.ts.map +1 -1
  397. package/dist/types/services/email.service.d.ts +4 -0
  398. package/dist/types/services/email.service.d.ts.map +1 -1
  399. package/dist/types/services/oAuth2.service.d.ts +23 -14
  400. package/dist/types/services/oAuth2.service.d.ts.map +1 -1
  401. package/dist/types/services/organization.service.d.ts +6 -12
  402. package/dist/types/services/organization.service.d.ts.map +1 -1
  403. package/dist/types/services/project.service.d.ts +5 -5
  404. package/dist/types/services/project.service.d.ts.map +1 -1
  405. package/dist/types/services/projectAccessKey.service.d.ts +5 -5
  406. package/dist/types/services/projectAccessKey.service.d.ts.map +1 -1
  407. package/dist/types/services/subscription.service.d.ts +1 -1
  408. package/dist/types/services/subscription.service.d.ts.map +1 -1
  409. package/dist/types/services/tag.service.d.ts +6 -6
  410. package/dist/types/services/tag.service.d.ts.map +1 -1
  411. package/dist/types/services/user.service.d.ts +7 -21
  412. package/dist/types/services/user.service.d.ts.map +1 -1
  413. package/dist/types/types/dictionary.types.d.ts +11 -9
  414. package/dist/types/types/dictionary.types.d.ts.map +1 -1
  415. package/dist/types/types/discussion.types.d.ts +5 -2
  416. package/dist/types/types/discussion.types.d.ts.map +1 -1
  417. package/dist/types/types/oAuth2.types.d.ts +5 -2
  418. package/dist/types/types/oAuth2.types.d.ts.map +1 -1
  419. package/dist/types/types/organization.types.d.ts +11 -8
  420. package/dist/types/types/organization.types.d.ts.map +1 -1
  421. package/dist/types/types/plan.types.d.ts +6 -3
  422. package/dist/types/types/plan.types.d.ts.map +1 -1
  423. package/dist/types/types/project.types.d.ts +25 -25
  424. package/dist/types/types/project.types.d.ts.map +1 -1
  425. package/dist/types/types/session.types.d.ts +31 -17
  426. package/dist/types/types/session.types.d.ts.map +1 -1
  427. package/dist/types/types/tag.types.d.ts +8 -6
  428. package/dist/types/types/tag.types.d.ts.map +1 -1
  429. package/dist/types/types/user.types.d.ts +14 -21
  430. package/dist/types/types/user.types.d.ts.map +1 -1
  431. package/dist/types/utils/AI/aiSdk.d.ts +2 -2
  432. package/dist/types/utils/AI/aiSdk.d.ts.map +1 -1
  433. package/dist/types/utils/AI/askDocQuestion/askDocQuestion.d.ts.map +1 -1
  434. package/dist/types/utils/AI/autocomplete/index.d.ts +4 -1
  435. package/dist/types/utils/AI/autocomplete/index.d.ts.map +1 -1
  436. package/dist/types/utils/access.d.ts +1 -0
  437. package/dist/types/utils/access.d.ts.map +1 -0
  438. package/dist/types/utils/accessControl.d.ts +9 -9
  439. package/dist/types/utils/accessControl.d.ts.map +1 -1
  440. package/dist/types/utils/auth/getAuth.d.ts +7 -0
  441. package/dist/types/utils/auth/getAuth.d.ts.map +1 -0
  442. package/dist/types/utils/cors.d.ts +3 -0
  443. package/dist/types/utils/cors.d.ts.map +1 -0
  444. package/dist/types/utils/ensureMongoDocumentToObject.d.ts +2 -2
  445. package/dist/types/utils/ensureMongoDocumentToObject.d.ts.map +1 -1
  446. package/dist/types/utils/errors/ErrorHandler.d.ts +1 -1
  447. package/dist/types/utils/errors/ErrorHandler.d.ts.map +1 -1
  448. package/dist/types/utils/errors/errorCodes.d.ts +57 -96
  449. package/dist/types/utils/errors/errorCodes.d.ts.map +1 -1
  450. package/dist/types/utils/filtersAndPagination/getOrganizationFiltersAndPagination.d.ts +1 -1
  451. package/dist/types/utils/filtersAndPagination/getOrganizationFiltersAndPagination.d.ts.map +1 -1
  452. package/dist/types/utils/filtersAndPagination/getProjectFiltersAndPagination.d.ts +1 -1
  453. package/dist/types/utils/filtersAndPagination/getProjectFiltersAndPagination.d.ts.map +1 -1
  454. package/dist/types/utils/filtersAndPagination/getTagFiltersAndPagination.d.ts +1 -1
  455. package/dist/types/utils/filtersAndPagination/getTagFiltersAndPagination.d.ts.map +1 -1
  456. package/dist/types/utils/filtersAndPagination/getUserFiltersAndPagination.d.ts +1 -1
  457. package/dist/types/utils/filtersAndPagination/getUserFiltersAndPagination.d.ts.map +1 -1
  458. package/dist/types/utils/mapper/dictionary.d.ts +1 -1
  459. package/dist/types/utils/mapper/dictionary.d.ts.map +1 -1
  460. package/dist/types/utils/mapper/organization.d.ts +3 -2
  461. package/dist/types/utils/mapper/organization.d.ts.map +1 -1
  462. package/dist/types/utils/mapper/project.d.ts +4 -5
  463. package/dist/types/utils/mapper/project.d.ts.map +1 -1
  464. package/dist/types/utils/mapper/tag.d.ts +1 -1
  465. package/dist/types/utils/mapper/tag.d.ts.map +1 -1
  466. package/dist/types/utils/mapper/user.d.ts +2 -2
  467. package/dist/types/utils/mapper/user.d.ts.map +1 -1
  468. package/dist/types/utils/mergeFunctionTypes.d.ts +18 -0
  469. package/dist/types/utils/mergeFunctionTypes.d.ts.map +1 -0
  470. package/dist/types/utils/mongoDB/connectDB.d.ts +1 -1
  471. package/dist/types/utils/mongoDB/connectDB.d.ts.map +1 -1
  472. package/dist/types/utils/mongoDB/types.d.ts +11 -0
  473. package/dist/types/utils/mongoDB/types.d.ts.map +1 -0
  474. package/dist/types/utils/permissions.d.ts +115 -0
  475. package/dist/types/utils/permissions.d.ts.map +1 -0
  476. package/dist/types/utils/rateLimiter.d.ts +4 -0
  477. package/dist/types/utils/rateLimiter.d.ts.map +1 -0
  478. package/package.json +14 -14
  479. package/dist/cjs/controllers/sessionAuth.controller.cjs +0 -839
  480. package/dist/cjs/controllers/sessionAuth.controller.cjs.map +0 -1
  481. package/dist/cjs/routes/sessionAuth.routes.cjs +0 -154
  482. package/dist/cjs/routes/sessionAuth.routes.cjs.map +0 -1
  483. package/dist/cjs/services/sessionAuth.service.cjs +0 -385
  484. package/dist/cjs/services/sessionAuth.service.cjs.map +0 -1
  485. package/dist/cjs/utils/CSRF.cjs +0 -50
  486. package/dist/cjs/utils/CSRF.cjs.map +0 -1
  487. package/dist/cjs/utils/cookies.cjs +0 -59
  488. package/dist/cjs/utils/cookies.cjs.map +0 -1
  489. package/dist/esm/controllers/sessionAuth.controller.mjs +0 -790
  490. package/dist/esm/controllers/sessionAuth.controller.mjs.map +0 -1
  491. package/dist/esm/routes/sessionAuth.routes.mjs +0 -142
  492. package/dist/esm/routes/sessionAuth.routes.mjs.map +0 -1
  493. package/dist/esm/services/sessionAuth.service.mjs +0 -337
  494. package/dist/esm/services/sessionAuth.service.mjs.map +0 -1
  495. package/dist/esm/utils/CSRF.mjs +0 -24
  496. package/dist/esm/utils/CSRF.mjs.map +0 -1
  497. package/dist/esm/utils/cookies.mjs +0 -32
  498. package/dist/esm/utils/cookies.mjs.map +0 -1
  499. package/dist/types/controllers/sessionAuth.controller.d.ts +0 -140
  500. package/dist/types/controllers/sessionAuth.controller.d.ts.map +0 -1
  501. package/dist/types/routes/sessionAuth.routes.d.ts +0 -77
  502. package/dist/types/routes/sessionAuth.routes.d.ts.map +0 -1
  503. package/dist/types/services/sessionAuth.service.d.ts +0 -141
  504. package/dist/types/services/sessionAuth.service.d.ts.map +0 -1
  505. package/dist/types/utils/CSRF.d.ts +0 -3
  506. package/dist/types/utils/CSRF.d.ts.map +0 -1
  507. package/dist/types/utils/cookies.d.ts +0 -12
  508. package/dist/types/utils/cookies.d.ts.map +0 -1
@@ -11,8 +11,8 @@ import {
11
11
  Link,
12
12
  Preview,
13
13
  Section,
14
- Text,
15
- Tailwind
14
+ Tailwind,
15
+ Text
16
16
  } from "@react-email/components";
17
17
  const ValidateUserEmailEN = ({
18
18
  username,
@@ -55,18 +55,15 @@ const ValidateUserEmailEN = ({
55
55
  children: "Validate Email"
56
56
  }
57
57
  ) }),
58
- /* @__PURE__ */ jsxs(Text, { className: "text-[14px] leading-[24px] text-black", children: [
59
- "or copy and paste this URL into your browser:",
60
- " ",
61
- /* @__PURE__ */ jsx(
62
- Link,
63
- {
64
- href: validationLink,
65
- className: "text-[#E879BA] no-underline",
66
- children: validationLink
67
- }
68
- )
69
- ] }),
58
+ /* @__PURE__ */ jsx(Text, { className: "text-[14px] leading-[24px] text-black", children: "or copy and paste this URL into your browser:" }),
59
+ /* @__PURE__ */ jsx(
60
+ Link,
61
+ {
62
+ href: validationLink,
63
+ className: "text-[#8a8a8a] no-underline text-[10px]",
64
+ children: validationLink
65
+ }
66
+ ),
70
67
  /* @__PURE__ */ jsx(Hr, { className: "mx-0 my-[26px] w-full border border-solid border-[#eaeaea]" }),
71
68
  /* @__PURE__ */ jsxs(Text, { className: "text-[12px] leading-[24px] text-[#666666]", children: [
72
69
  "This email was intended for",
@@ -118,18 +115,15 @@ const ValidateUserEmailFR = ({
118
115
  children: "Valider l'e-mail"
119
116
  }
120
117
  ) }),
121
- /* @__PURE__ */ jsxs(Text, { className: "text-[14px] leading-[24px] text-black", children: [
122
- "ou copiez et collez cette URL dans votre navigateur :",
123
- " ",
124
- /* @__PURE__ */ jsx(
125
- Link,
126
- {
127
- href: validationLink,
128
- className: "text-[#E879BA] no-underline",
129
- children: validationLink
130
- }
131
- )
132
- ] }),
118
+ /* @__PURE__ */ jsx(Text, { className: "text-[14px] leading-[24px] text-black", children: "ou copiez et collez cette URL dans votre navigateur :" }),
119
+ /* @__PURE__ */ jsx(
120
+ Link,
121
+ {
122
+ href: validationLink,
123
+ className: "text-[#8a8a8a] no-underline text-[10px]",
124
+ children: validationLink
125
+ }
126
+ ),
133
127
  /* @__PURE__ */ jsx(Hr, { className: "mx-0 my-[26px] w-full border border-solid border-[#eaeaea]" }),
134
128
  /* @__PURE__ */ jsxs(Text, { className: "text-[12px] leading-[24px] text-[#666666]", children: [
135
129
  "Cet e-mail \xE9tait destin\xE9 \xE0",
@@ -181,18 +175,15 @@ const ValidateUserEmailES = ({
181
175
  children: "Validar Email"
182
176
  }
183
177
  ) }),
184
- /* @__PURE__ */ jsxs(Text, { className: "text-[14px] leading-[24px] text-black", children: [
185
- "o copia y pega esta URL en tu navegador:",
186
- " ",
187
- /* @__PURE__ */ jsx(
188
- Link,
189
- {
190
- href: validationLink,
191
- className: "text-[#E879BA] no-underline",
192
- children: validationLink
193
- }
194
- )
195
- ] }),
178
+ /* @__PURE__ */ jsx(Text, { className: "text-[14px] leading-[24px] text-black", children: "o copia y pega esta URL en tu navegador:" }),
179
+ /* @__PURE__ */ jsx(
180
+ Link,
181
+ {
182
+ href: validationLink,
183
+ className: "text-[#8a8a8a] no-underline text-[10px]",
184
+ children: validationLink
185
+ }
186
+ ),
196
187
  /* @__PURE__ */ jsx(Hr, { className: "mx-0 my-[26px] w-full border border-solid border-[#eaeaea]" }),
197
188
  /* @__PURE__ */ jsxs(Text, { className: "text-[12px] leading-[24px] text-[#666666]", children: [
198
189
  "Este correo fue enviado a",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/emails/ValidateUserEmail.tsx"],"sourcesContent":["import {\n Body,\n Button,\n Container,\n Head,\n Heading,\n Hr,\n Html,\n Img,\n Link,\n Preview,\n Section,\n Text,\n Tailwind,\n} from '@react-email/components';\n\nexport type ValidateUserEmailProps = {\n username: string;\n validationLink: string;\n};\n\nexport const ValidateUserEmailEN = ({\n username,\n validationLink,\n}: ValidateUserEmailProps) => {\n const previewText = `Validate your email for Intlayer`;\n\n return (\n <Html>\n <Head />\n <Preview>{previewText}</Preview>\n <Tailwind>\n <Body className=\"m-auto px-2 font-sans\">\n <Container className=\"mx-auto my-[40px] max-w-[465px] rounded-xl border border-solid border-[#eaeaea] bg-white p-[20px]\">\n <Section className=\"mt-[32px]\">\n <Img\n src=\"https://intlayer.org/apple-touch-icon.png\"\n width=\"40\"\n height=\"37\"\n alt=\"Intlayer\"\n className=\"mx-auto my-0\"\n />\n </Section>\n <Heading className=\"mx-0 my-[30px] p-0 text-center text-[24px] font-normal text-black\">\n Validate your email for <strong>Intlayer</strong>\n </Heading>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Hello {username},\n </Text>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Please validate your email address to complete your registration\n on <strong>Intlayer</strong>.\n </Text>\n\n <Section className=\"my-[32px] text-center\">\n <Button\n className=\"rounded-md bg-[#000000] px-5 py-3 text-center text-[12px] font-semibold text-white no-underline\"\n href={validationLink}\n >\n Validate Email\n </Button>\n </Section>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n or copy and paste this URL into your browser:{' '}\n <Link\n href={validationLink}\n className=\"text-[#E879BA] no-underline\"\n >\n {validationLink}\n </Link>\n </Text>\n <Hr className=\"mx-0 my-[26px] w-full border border-solid border-[#eaeaea]\" />\n <Text className=\"text-[12px] leading-[24px] text-[#666666]\">\n This email was intended for{' '}\n <span className=\"text-black\">{username}</span>. If you were not\n expecting this email, you can ignore it. If you are concerned\n about your account's safety, please reply to this email to get in\n touch with us.\n </Text>\n </Container>\n </Body>\n </Tailwind>\n </Html>\n );\n};\n\nexport const ValidateUserEmailFR = ({\n username,\n validationLink,\n}: ValidateUserEmailProps) => {\n const previewText = `Validez votre e-mail pour Intlayer`;\n\n return (\n <Html>\n <Head />\n <Preview>{previewText}</Preview>\n <Tailwind>\n <Body className=\"m-auto px-2 font-sans\">\n <Container className=\"mx-auto my-[40px] max-w-[465px] rounded-xl border border-solid border-[#eaeaea] bg-white p-[20px]\">\n <Section className=\"mt-[32px]\">\n <Img\n src=\"https://intlayer.org/apple-touch-icon.png\"\n width=\"40\"\n height=\"37\"\n alt=\"Intlayer\"\n className=\"mx-auto my-0\"\n />\n </Section>\n <Heading className=\"mx-0 my-[30px] p-0 text-center text-[24px] font-normal text-black\">\n Validez votre e-mail pour <strong>Intlayer</strong>\n </Heading>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Bonjour {username},\n </Text>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Veuillez valider votre adresse e-mail pour compléter votre\n inscription sur <strong>Intlayer</strong>.\n </Text>\n <Section className=\"my-[32px] text-center\">\n <Button\n className=\"rounded-md bg-[#000000] px-5 py-3 text-center text-[12px] font-semibold text-white no-underline\"\n href={validationLink}\n >\n Valider l'e-mail\n </Button>\n </Section>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n ou copiez et collez cette URL dans votre navigateur :{' '}\n <Link\n href={validationLink}\n className=\"text-[#E879BA] no-underline\"\n >\n {validationLink}\n </Link>\n </Text>\n <Hr className=\"mx-0 my-[26px] w-full border border-solid border-[#eaeaea]\" />\n <Text className=\"text-[12px] leading-[24px] text-[#666666]\">\n Cet e-mail était destiné à{' '}\n <span className=\"text-black\">{username}</span>. Si vous\n n'attendiez pas cet e-mail, vous pouvez l'ignorer. Si vous êtes\n préoccupé par la sécurité de votre compte, veuillez répondre à cet\n e-mail pour nous contacter.\n </Text>\n </Container>\n </Body>\n </Tailwind>\n </Html>\n );\n};\n\nexport const ValidateUserEmailES = ({\n username,\n validationLink,\n}: ValidateUserEmailProps) => {\n const previewText = `Valida tu correo electrónico para Intlayer`;\n\n return (\n <Html>\n <Head />\n <Preview>{previewText}</Preview>\n <Tailwind>\n <Body className=\"m-auto px-2 font-sans\">\n <Container className=\"mx-auto my-[40px] max-w-[465px] rounded-xl border border-solid border-[#eaeaea] bg-white p-[20px]\">\n <Section className=\"mt-[32px]\">\n <Img\n src=\"https://intlayer.org/apple-touch-icon.png\"\n width=\"40\"\n height=\"37\"\n alt=\"Intlayer\"\n className=\"mx-auto my-0\"\n />\n </Section>\n <Heading className=\"mx-0 my-[30px] p-0 text-center text-[24px] font-normal text-black\">\n Valida tu correo electrónico para <strong>Intlayer</strong>\n </Heading>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Hola {username},\n </Text>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Por favor valida tu dirección de correo electrónico para completar\n tu registro en <strong>Intlayer</strong>.\n </Text>\n <Section className=\"my-[32px] text-center\">\n <Button\n className=\"rounded-md bg-[#000000] px-5 py-3 text-center text-[12px] font-semibold text-white no-underline\"\n href={validationLink}\n >\n Validar Email\n </Button>\n </Section>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n o copia y pega esta URL en tu navegador:{' '}\n <Link\n href={validationLink}\n className=\"text-[#E879BA] no-underline\"\n >\n {validationLink}\n </Link>\n </Text>\n <Hr className=\"mx-0 my-[26px] w-full border border-solid border-[#eaeaea]\" />\n <Text className=\"text-[12px] leading-[24px] text-[#666666]\">\n Este correo fue enviado a{' '}\n <span className=\"text-black\">{username}</span>. Si no esperabas\n este correo, puedes ignorarlo. Si estás preocupado por la\n seguridad de tu cuenta, por favor responde a este correo para\n contactarte con nosotros.\n </Text>\n </Container>\n </Body>\n </Tailwind>\n </Html>\n );\n};\n\nconst previewProps: ValidateUserEmailProps = {\n username: 'alanturing',\n validationLink: 'https://intlayer.org/validate/foo',\n};\n\nValidateUserEmailEN.PreviewProps = previewProps;\nValidateUserEmailFR.PreviewProps = previewProps;\nValidateUserEmailES.PreviewProps = previewProps;\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/emails/ValidateUserEmail.tsx"],"sourcesContent":["import {\n Body,\n Button,\n Container,\n Head,\n Heading,\n Hr,\n Html,\n Img,\n Link,\n Preview,\n Section,\n Tailwind,\n Text,\n} from '@react-email/components';\n\nexport type ValidateUserEmailProps = {\n username: string;\n validationLink: string;\n};\n\nexport const ValidateUserEmailEN = ({\n username,\n validationLink,\n}: ValidateUserEmailProps) => {\n const previewText = `Validate your email for Intlayer`;\n\n return (\n <Html>\n <Head />\n <Preview>{previewText}</Preview>\n <Tailwind>\n <Body className=\"m-auto px-2 font-sans\">\n <Container className=\"mx-auto my-[40px] max-w-[465px] rounded-xl border border-solid border-[#eaeaea] bg-white p-[20px]\">\n <Section className=\"mt-[32px]\">\n <Img\n src=\"https://intlayer.org/apple-touch-icon.png\"\n width=\"40\"\n height=\"37\"\n alt=\"Intlayer\"\n className=\"mx-auto my-0\"\n />\n </Section>\n <Heading className=\"mx-0 my-[30px] p-0 text-center text-[24px] font-normal text-black\">\n Validate your email for <strong>Intlayer</strong>\n </Heading>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Hello {username},\n </Text>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Please validate your email address to complete your registration\n on <strong>Intlayer</strong>.\n </Text>\n\n <Section className=\"my-[32px] text-center\">\n <Button\n className=\"rounded-md bg-[#000000] px-5 py-3 text-center text-[12px] font-semibold text-white no-underline\"\n href={validationLink}\n >\n Validate Email\n </Button>\n </Section>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n or copy and paste this URL into your browser:\n </Text>\n <Link\n href={validationLink}\n className=\"text-[#8a8a8a] no-underline text-[10px]\"\n >\n {validationLink}\n </Link>\n <Hr className=\"mx-0 my-[26px] w-full border border-solid border-[#eaeaea]\" />\n <Text className=\"text-[12px] leading-[24px] text-[#666666]\">\n This email was intended for{' '}\n <span className=\"text-black\">{username}</span>. If you were not\n expecting this email, you can ignore it. If you are concerned\n about your account's safety, please reply to this email to get in\n touch with us.\n </Text>\n </Container>\n </Body>\n </Tailwind>\n </Html>\n );\n};\n\nexport const ValidateUserEmailFR = ({\n username,\n validationLink,\n}: ValidateUserEmailProps) => {\n const previewText = `Validez votre e-mail pour Intlayer`;\n\n return (\n <Html>\n <Head />\n <Preview>{previewText}</Preview>\n <Tailwind>\n <Body className=\"m-auto px-2 font-sans\">\n <Container className=\"mx-auto my-[40px] max-w-[465px] rounded-xl border border-solid border-[#eaeaea] bg-white p-[20px]\">\n <Section className=\"mt-[32px]\">\n <Img\n src=\"https://intlayer.org/apple-touch-icon.png\"\n width=\"40\"\n height=\"37\"\n alt=\"Intlayer\"\n className=\"mx-auto my-0\"\n />\n </Section>\n <Heading className=\"mx-0 my-[30px] p-0 text-center text-[24px] font-normal text-black\">\n Validez votre e-mail pour <strong>Intlayer</strong>\n </Heading>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Bonjour {username},\n </Text>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Veuillez valider votre adresse e-mail pour compléter votre\n inscription sur <strong>Intlayer</strong>.\n </Text>\n <Section className=\"my-[32px] text-center\">\n <Button\n className=\"rounded-md bg-[#000000] px-5 py-3 text-center text-[12px] font-semibold text-white no-underline\"\n href={validationLink}\n >\n Valider l'e-mail\n </Button>\n </Section>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n ou copiez et collez cette URL dans votre navigateur :\n </Text>\n <Link\n href={validationLink}\n className=\"text-[#8a8a8a] no-underline text-[10px]\"\n >\n {validationLink}\n </Link>\n <Hr className=\"mx-0 my-[26px] w-full border border-solid border-[#eaeaea]\" />\n <Text className=\"text-[12px] leading-[24px] text-[#666666]\">\n Cet e-mail était destiné à{' '}\n <span className=\"text-black\">{username}</span>. Si vous\n n'attendiez pas cet e-mail, vous pouvez l'ignorer. Si vous êtes\n préoccupé par la sécurité de votre compte, veuillez répondre à cet\n e-mail pour nous contacter.\n </Text>\n </Container>\n </Body>\n </Tailwind>\n </Html>\n );\n};\n\nexport const ValidateUserEmailES = ({\n username,\n validationLink,\n}: ValidateUserEmailProps) => {\n const previewText = `Valida tu correo electrónico para Intlayer`;\n\n return (\n <Html>\n <Head />\n <Preview>{previewText}</Preview>\n <Tailwind>\n <Body className=\"m-auto px-2 font-sans\">\n <Container className=\"mx-auto my-[40px] max-w-[465px] rounded-xl border border-solid border-[#eaeaea] bg-white p-[20px]\">\n <Section className=\"mt-[32px]\">\n <Img\n src=\"https://intlayer.org/apple-touch-icon.png\"\n width=\"40\"\n height=\"37\"\n alt=\"Intlayer\"\n className=\"mx-auto my-0\"\n />\n </Section>\n <Heading className=\"mx-0 my-[30px] p-0 text-center text-[24px] font-normal text-black\">\n Valida tu correo electrónico para <strong>Intlayer</strong>\n </Heading>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Hola {username},\n </Text>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Por favor valida tu dirección de correo electrónico para completar\n tu registro en <strong>Intlayer</strong>.\n </Text>\n <Section className=\"my-[32px] text-center\">\n <Button\n className=\"rounded-md bg-[#000000] px-5 py-3 text-center text-[12px] font-semibold text-white no-underline\"\n href={validationLink}\n >\n Validar Email\n </Button>\n </Section>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n o copia y pega esta URL en tu navegador:\n </Text>\n <Link\n href={validationLink}\n className=\"text-[#8a8a8a] no-underline text-[10px]\"\n >\n {validationLink}\n </Link>\n <Hr className=\"mx-0 my-[26px] w-full border border-solid border-[#eaeaea]\" />\n <Text className=\"text-[12px] leading-[24px] text-[#666666]\">\n Este correo fue enviado a{' '}\n <span className=\"text-black\">{username}</span>. Si no esperabas\n este correo, puedes ignorarlo. Si estás preocupado por la\n seguridad de tu cuenta, por favor responde a este correo para\n contactarte con nosotros.\n </Text>\n </Container>\n </Body>\n </Tailwind>\n </Html>\n );\n};\n\nconst previewProps: ValidateUserEmailProps = {\n username: 'alanturing',\n validationLink: 'https://intlayer.org/validate/foo',\n};\n\nValidateUserEmailEN.PreviewProps = previewProps;\nValidateUserEmailFR.PreviewProps = previewProps;\nValidateUserEmailES.PreviewProps = previewProps;\n"],"mappings":"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","names":[]}
@@ -8,11 +8,11 @@ import {
8
8
  Hr,
9
9
  Html,
10
10
  Img,
11
+ Link,
11
12
  Preview,
12
13
  Section,
13
- Text,
14
14
  Tailwind,
15
- Link
15
+ Text
16
16
  } from "@react-email/components";
17
17
  const WelcomeEmailEN = ({ username, loginLink }) => {
18
18
  const previewText = `Welcome to Intlayer!`;
@@ -52,11 +52,15 @@ const WelcomeEmailEN = ({ username, loginLink }) => {
52
52
  children: "Log In to Your Account"
53
53
  }
54
54
  ) }),
55
- /* @__PURE__ */ jsxs(Text, { className: "text-[14px] leading-[24px] text-black", children: [
56
- "or copy and paste this URL into your browser:",
57
- " ",
58
- /* @__PURE__ */ jsx(Link, { href: loginLink, className: "text-[#E879BA] no-underline", children: loginLink })
59
- ] }),
55
+ /* @__PURE__ */ jsx(Text, { className: "text-[14px] leading-[24px] text-black", children: "or copy and paste this URL into your browser:" }),
56
+ /* @__PURE__ */ jsx(
57
+ Link,
58
+ {
59
+ href: loginLink,
60
+ className: "text-[#8a8a8a] no-underline text-[10px]",
61
+ children: loginLink
62
+ }
63
+ ),
60
64
  /* @__PURE__ */ jsx(Hr, { className: "mx-0 my-[26px] w-full border border-solid border-[#eaeaea]" }),
61
65
  /* @__PURE__ */ jsx(Text, { className: "text-[12px] leading-[24px] text-[#666666]", children: "If you have any questions or need help getting started, feel free to reply to this email. We're here to help!" })
62
66
  ] }) }) })
@@ -100,11 +104,15 @@ const WelcomeEmailFR = ({ username, loginLink }) => {
100
104
  children: "Connectez-vous \xE0 votre compte"
101
105
  }
102
106
  ) }),
103
- /* @__PURE__ */ jsxs(Text, { className: "text-[14px] leading-[24px] text-black", children: [
104
- "ou copiez et collez cette URL dans votre navigateur :",
105
- " ",
106
- /* @__PURE__ */ jsx(Link, { href: loginLink, className: "text-[#E879BA] no-underline", children: loginLink })
107
- ] }),
107
+ /* @__PURE__ */ jsx(Text, { className: "text-[14px] leading-[24px] text-black", children: "ou copiez et collez cette URL dans votre navigateur :" }),
108
+ /* @__PURE__ */ jsx(
109
+ Link,
110
+ {
111
+ href: loginLink,
112
+ className: "text-[#8a8a8a] no-underline text-[10px]",
113
+ children: loginLink
114
+ }
115
+ ),
108
116
  /* @__PURE__ */ jsx(Hr, { className: "mx-0 my-[26px] w-full border border-solid border-[#eaeaea]" }),
109
117
  /* @__PURE__ */ jsx(Text, { className: "text-[12px] leading-[24px] text-[#666666]", children: "Si vous avez des questions ou besoin d'aide pour commencer, n'h\xE9sitez pas \xE0 r\xE9pondre \xE0 cet e-mail. Nous sommes l\xE0 pour vous aider !" })
110
118
  ] }) }) })
@@ -148,11 +156,15 @@ const WelcomeEmailES = ({ username, loginLink }) => {
148
156
  children: "Inicia sesi\xF3n en tu cuenta"
149
157
  }
150
158
  ) }),
151
- /* @__PURE__ */ jsxs(Text, { className: "text-[14px] leading-[24px] text-black", children: [
152
- "o copia y pega esta URL en tu navegador:",
153
- " ",
154
- /* @__PURE__ */ jsx(Link, { href: loginLink, className: "text-[#E879BA] no-underline", children: loginLink })
155
- ] }),
159
+ /* @__PURE__ */ jsx(Text, { className: "text-[14px] leading-[24px] text-black", children: "o copia y pega esta URL en tu navegador:" }),
160
+ /* @__PURE__ */ jsx(
161
+ Link,
162
+ {
163
+ href: loginLink,
164
+ className: "text-[#8a8a8a] no-underline text-[10px]",
165
+ children: loginLink
166
+ }
167
+ ),
156
168
  /* @__PURE__ */ jsx(Hr, { className: "mx-0 my-[26px] w-full border border-solid border-[#eaeaea]" }),
157
169
  /* @__PURE__ */ jsx(Text, { className: "text-[12px] leading-[24px] text-[#666666]", children: "Si tienes preguntas o necesitas ayuda para comenzar, no dudes en responder a este correo electr\xF3nico. \xA1Estamos aqu\xED para ayudarte!" })
158
170
  ] }) }) })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/emails/Welcome.tsx"],"sourcesContent":["import {\n Body,\n Button,\n Container,\n Head,\n Heading,\n Hr,\n Html,\n Img,\n Preview,\n Section,\n Text,\n Tailwind,\n Link,\n} from '@react-email/components';\n\nexport type WelcomeEmailProps = {\n username: string;\n loginLink: string;\n};\n\nexport const WelcomeEmailEN = ({ username, loginLink }: WelcomeEmailProps) => {\n const previewText = `Welcome to Intlayer!`;\n\n return (\n <Html>\n <Head />\n <Preview>{previewText}</Preview>\n <Tailwind>\n <Body className=\"m-auto px-2 font-sans\">\n <Container className=\"mx-auto my-[40px] max-w-[465px] rounded-xl border border-solid border-[#eaeaea] bg-white p-[20px]\">\n <Section className=\"mt-[32px]\">\n <Img\n src=\"https://intlayer.org/apple-touch-icon.png\"\n width=\"40\"\n height=\"37\"\n alt=\"Intlayer\"\n className=\"mx-auto my-0\"\n />\n </Section>\n <Heading className=\"mx-0 my-[30px] p-0 text-center text-[24px] font-normal text-black\">\n Welcome to <strong>Intlayer</strong>\n </Heading>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Hello {username},\n </Text>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n We're excited to have you on board! Get started by logging in to\n your <strong>Intlayer</strong> account.\n </Text>\n\n <Section className=\"my-[32px] text-center\">\n <Button\n className=\"rounded-md bg-[#000000] px-5 py-3 text-center text-[12px] font-semibold text-white no-underline\"\n href={loginLink}\n >\n Log In to Your Account\n </Button>\n </Section>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n or copy and paste this URL into your browser:{' '}\n <Link href={loginLink} className=\"text-[#E879BA] no-underline\">\n {loginLink}\n </Link>\n </Text>\n <Hr className=\"mx-0 my-[26px] w-full border border-solid border-[#eaeaea]\" />\n <Text className=\"text-[12px] leading-[24px] text-[#666666]\">\n If you have any questions or need help getting started, feel free\n to reply to this email. We're here to help!\n </Text>\n </Container>\n </Body>\n </Tailwind>\n </Html>\n );\n};\n\nexport const WelcomeEmailFR = ({ username, loginLink }: WelcomeEmailProps) => {\n const previewText = `Bienvenue chez Intlayer !`;\n\n return (\n <Html>\n <Head />\n <Preview>{previewText}</Preview>\n <Tailwind>\n <Body className=\"m-auto px-2 font-sans\">\n <Container className=\"mx-auto my-[40px] max-w-[465px] rounded-xl border border-solid border-[#eaeaea] bg-white p-[20px]\">\n <Section className=\"mt-[32px]\">\n <Img\n src=\"https://intlayer.org/apple-touch-icon.png\"\n width=\"40\"\n height=\"37\"\n alt=\"Intlayer\"\n className=\"mx-auto my-0\"\n />\n </Section>\n <Heading className=\"mx-0 my-[30px] p-0 text-center text-[24px] font-normal text-black\">\n Bienvenue chez <strong>Intlayer</strong>\n </Heading>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Bonjour {username},\n </Text>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Nous sommes ravis de vous avoir parmi nous ! Commencez par vous\n connecter à votre compte <strong>Intlayer</strong>.\n </Text>\n <Section className=\"my-[32px] text-center\">\n <Button\n className=\"rounded-md bg-[#000000] px-5 py-3 text-center text-[12px] font-semibold text-white no-underline\"\n href={loginLink}\n >\n Connectez-vous à votre compte\n </Button>\n </Section>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n ou copiez et collez cette URL dans votre navigateur :{' '}\n <Link href={loginLink} className=\"text-[#E879BA] no-underline\">\n {loginLink}\n </Link>\n </Text>\n <Hr className=\"mx-0 my-[26px] w-full border border-solid border-[#eaeaea]\" />\n <Text className=\"text-[12px] leading-[24px] text-[#666666]\">\n Si vous avez des questions ou besoin d'aide pour commencer,\n n'hésitez pas à répondre à cet e-mail. Nous sommes là pour vous\n aider !\n </Text>\n </Container>\n </Body>\n </Tailwind>\n </Html>\n );\n};\n\nexport const WelcomeEmailES = ({ username, loginLink }: WelcomeEmailProps) => {\n const previewText = `¡Bienvenido a Intlayer!`;\n\n return (\n <Html>\n <Head />\n <Preview>{previewText}</Preview>\n <Tailwind>\n <Body className=\"m-auto px-2 font-sans\">\n <Container className=\"mx-auto my-[40px] max-w-[465px] rounded-xl border border-solid border-[#eaeaea] bg-white p-[20px]\">\n <Section className=\"mt-[32px]\">\n <Img\n src=\"https://intlayer.org/apple-touch-icon.png\"\n width=\"40\"\n height=\"37\"\n alt=\"Intlayer\"\n className=\"mx-auto my-0\"\n />\n </Section>\n <Heading className=\"mx-0 my-[30px] p-0 text-center text-[24px] font-normal text-black\">\n Bienvenido a <strong>Intlayer</strong>\n </Heading>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Hola {username},\n </Text>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n ¡Estamos emocionados de tenerte a bordo! Comienza iniciando sesión\n en tu cuenta de <strong>Intlayer</strong>.\n </Text>\n <Section className=\"my-[32px] text-center\">\n <Button\n className=\"rounded-md bg-[#000000] px-5 py-3 text-center text-[12px] font-semibold text-white no-underline\"\n href={loginLink}\n >\n Inicia sesión en tu cuenta\n </Button>\n </Section>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n o copia y pega esta URL en tu navegador:{' '}\n <Link href={loginLink} className=\"text-[#E879BA] no-underline\">\n {loginLink}\n </Link>\n </Text>\n <Hr className=\"mx-0 my-[26px] w-full border border-solid border-[#eaeaea]\" />\n <Text className=\"text-[12px] leading-[24px] text-[#666666]\">\n Si tienes preguntas o necesitas ayuda para comenzar, no dudes en\n responder a este correo electrónico. ¡Estamos aquí para ayudarte!\n </Text>\n </Container>\n </Body>\n </Tailwind>\n </Html>\n );\n};\n\nconst PreviewProps: WelcomeEmailProps = {\n username: 'alanturing',\n loginLink: 'https://intlayer.org/login',\n};\n\nWelcomeEmailEN.PreviewProps = PreviewProps;\nWelcomeEmailFR.PreviewProps = PreviewProps;\nWelcomeEmailES.PreviewProps = PreviewProps;\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/emails/Welcome.tsx"],"sourcesContent":["import {\n Body,\n Button,\n Container,\n Head,\n Heading,\n Hr,\n Html,\n Img,\n Link,\n Preview,\n Section,\n Tailwind,\n Text,\n} from '@react-email/components';\n\nexport type WelcomeEmailProps = {\n username: string;\n loginLink: string;\n};\n\nexport const WelcomeEmailEN = ({ username, loginLink }: WelcomeEmailProps) => {\n const previewText = `Welcome to Intlayer!`;\n\n return (\n <Html>\n <Head />\n <Preview>{previewText}</Preview>\n <Tailwind>\n <Body className=\"m-auto px-2 font-sans\">\n <Container className=\"mx-auto my-[40px] max-w-[465px] rounded-xl border border-solid border-[#eaeaea] bg-white p-[20px]\">\n <Section className=\"mt-[32px]\">\n <Img\n src=\"https://intlayer.org/apple-touch-icon.png\"\n width=\"40\"\n height=\"37\"\n alt=\"Intlayer\"\n className=\"mx-auto my-0\"\n />\n </Section>\n <Heading className=\"mx-0 my-[30px] p-0 text-center text-[24px] font-normal text-black\">\n Welcome to <strong>Intlayer</strong>\n </Heading>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Hello {username},\n </Text>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n We're excited to have you on board! Get started by logging in to\n your <strong>Intlayer</strong> account.\n </Text>\n\n <Section className=\"my-[32px] text-center\">\n <Button\n className=\"rounded-md bg-[#000000] px-5 py-3 text-center text-[12px] font-semibold text-white no-underline\"\n href={loginLink}\n >\n Log In to Your Account\n </Button>\n </Section>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n or copy and paste this URL into your browser:\n </Text>\n <Link\n href={loginLink}\n className=\"text-[#8a8a8a] no-underline text-[10px]\"\n >\n {loginLink}\n </Link>\n <Hr className=\"mx-0 my-[26px] w-full border border-solid border-[#eaeaea]\" />\n <Text className=\"text-[12px] leading-[24px] text-[#666666]\">\n If you have any questions or need help getting started, feel free\n to reply to this email. We're here to help!\n </Text>\n </Container>\n </Body>\n </Tailwind>\n </Html>\n );\n};\n\nexport const WelcomeEmailFR = ({ username, loginLink }: WelcomeEmailProps) => {\n const previewText = `Bienvenue chez Intlayer !`;\n\n return (\n <Html>\n <Head />\n <Preview>{previewText}</Preview>\n <Tailwind>\n <Body className=\"m-auto px-2 font-sans\">\n <Container className=\"mx-auto my-[40px] max-w-[465px] rounded-xl border border-solid border-[#eaeaea] bg-white p-[20px]\">\n <Section className=\"mt-[32px]\">\n <Img\n src=\"https://intlayer.org/apple-touch-icon.png\"\n width=\"40\"\n height=\"37\"\n alt=\"Intlayer\"\n className=\"mx-auto my-0\"\n />\n </Section>\n <Heading className=\"mx-0 my-[30px] p-0 text-center text-[24px] font-normal text-black\">\n Bienvenue chez <strong>Intlayer</strong>\n </Heading>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Bonjour {username},\n </Text>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Nous sommes ravis de vous avoir parmi nous ! Commencez par vous\n connecter à votre compte <strong>Intlayer</strong>.\n </Text>\n <Section className=\"my-[32px] text-center\">\n <Button\n className=\"rounded-md bg-[#000000] px-5 py-3 text-center text-[12px] font-semibold text-white no-underline\"\n href={loginLink}\n >\n Connectez-vous à votre compte\n </Button>\n </Section>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n ou copiez et collez cette URL dans votre navigateur :\n </Text>\n <Link\n href={loginLink}\n className=\"text-[#8a8a8a] no-underline text-[10px]\"\n >\n {loginLink}\n </Link>\n <Hr className=\"mx-0 my-[26px] w-full border border-solid border-[#eaeaea]\" />\n <Text className=\"text-[12px] leading-[24px] text-[#666666]\">\n Si vous avez des questions ou besoin d'aide pour commencer,\n n'hésitez pas à répondre à cet e-mail. Nous sommes là pour vous\n aider !\n </Text>\n </Container>\n </Body>\n </Tailwind>\n </Html>\n );\n};\n\nexport const WelcomeEmailES = ({ username, loginLink }: WelcomeEmailProps) => {\n const previewText = `¡Bienvenido a Intlayer!`;\n\n return (\n <Html>\n <Head />\n <Preview>{previewText}</Preview>\n <Tailwind>\n <Body className=\"m-auto px-2 font-sans\">\n <Container className=\"mx-auto my-[40px] max-w-[465px] rounded-xl border border-solid border-[#eaeaea] bg-white p-[20px]\">\n <Section className=\"mt-[32px]\">\n <Img\n src=\"https://intlayer.org/apple-touch-icon.png\"\n width=\"40\"\n height=\"37\"\n alt=\"Intlayer\"\n className=\"mx-auto my-0\"\n />\n </Section>\n <Heading className=\"mx-0 my-[30px] p-0 text-center text-[24px] font-normal text-black\">\n Bienvenido a <strong>Intlayer</strong>\n </Heading>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n Hola {username},\n </Text>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n ¡Estamos emocionados de tenerte a bordo! Comienza iniciando sesión\n en tu cuenta de <strong>Intlayer</strong>.\n </Text>\n <Section className=\"my-[32px] text-center\">\n <Button\n className=\"rounded-md bg-[#000000] px-5 py-3 text-center text-[12px] font-semibold text-white no-underline\"\n href={loginLink}\n >\n Inicia sesión en tu cuenta\n </Button>\n </Section>\n <Text className=\"text-[14px] leading-[24px] text-black\">\n o copia y pega esta URL en tu navegador:\n </Text>\n <Link\n href={loginLink}\n className=\"text-[#8a8a8a] no-underline text-[10px]\"\n >\n {loginLink}\n </Link>\n <Hr className=\"mx-0 my-[26px] w-full border border-solid border-[#eaeaea]\" />\n <Text className=\"text-[12px] leading-[24px] text-[#666666]\">\n Si tienes preguntas o necesitas ayuda para comenzar, no dudes en\n responder a este correo electrónico. ¡Estamos aquí para ayudarte!\n </Text>\n </Container>\n </Body>\n </Tailwind>\n </Html>\n );\n};\n\nconst PreviewProps: WelcomeEmailProps = {\n username: 'alanturing',\n loginLink: 'https://intlayer.org/login',\n};\n\nWelcomeEmailEN.PreviewProps = PreviewProps;\nWelcomeEmailFR.PreviewProps = PreviewProps;\nWelcomeEmailES.PreviewProps = PreviewProps;\n"],"mappings":"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","names":[]}
@@ -1,6 +1,7 @@
1
1
  export * from "./InviteUserEmail.mjs";
2
- export * from "./ValidateUserEmail.mjs";
3
- export * from "./Welcome.mjs";
2
+ export * from "./OAuthTokenCreatedEmail.mjs";
4
3
  export * from "./PasswordChangeConfirmation.mjs";
5
4
  export * from "./ResetUserPassword.mjs";
5
+ export * from "./ValidateUserEmail.mjs";
6
+ export * from "./Welcome.mjs";
6
7
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/emails/index.ts"],"sourcesContent":["export * from './InviteUserEmail';\nexport * from './ValidateUserEmail';\nexport * from './Welcome';\nexport * from './PasswordChangeConfirmation';\nexport * from './ResetUserPassword';\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/emails/index.ts"],"sourcesContent":["export * from './InviteUserEmail';\nexport * from './OAuthTokenCreatedEmail';\nexport * from './PasswordChangeConfirmation';\nexport * from './ResetUserPassword';\nexport * from './ValidateUserEmail';\nexport * from './Welcome';\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
@@ -2,10 +2,9 @@ import { getDictionaryRoutes } from "./routes/dictionary.routes.mjs";
2
2
  import { getNewsletterRoutes } from "./routes/newsletter.routes.mjs";
3
3
  import { getOrganizationRoutes } from "./routes/organization.routes.mjs";
4
4
  import { getProjectRoutes } from "./routes/project.routes.mjs";
5
- import { getSessionAuthRoutes } from "./routes/sessionAuth.routes.mjs";
6
5
  import { getUserRoutes } from "./routes/user.routes.mjs";
7
6
  export * from "./utils/AI/aiSdk.mjs";
8
- export * from "./utils/cookies.mjs";
7
+ export * from "./utils/auth/getAuth.mjs";
9
8
  export * from "./utils/httpStatusCodes.mjs";
10
9
  export * from "./utils/responseData.mjs";
11
10
  export {
@@ -13,7 +12,6 @@ export {
13
12
  getNewsletterRoutes,
14
13
  getOrganizationRoutes,
15
14
  getProjectRoutes,
16
- getSessionAuthRoutes,
17
15
  getUserRoutes
18
16
  };
19
17
  //# sourceMappingURL=export.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/export.ts"],"sourcesContent":["// Routes\nexport { getDictionaryRoutes } from '@routes/dictionary.routes';\nexport { getNewsletterRoutes } from '@routes/newsletter.routes';\nexport { getOrganizationRoutes } from '@routes/organization.routes';\nexport { getProjectRoutes } from '@routes/project.routes';\nexport { getSessionAuthRoutes } from '@routes/sessionAuth.routes';\nexport { getUserRoutes } from '@routes/user.routes';\n\n// Controllers types\nexport type * from '@controllers/ai.controller';\nexport type * from '@controllers/dictionary.controller';\nexport type * from '@controllers/eventListener.controller';\nexport type * from '@controllers/newsletter.controller';\nexport type * from '@controllers/oAuth2.controller';\nexport type * from '@controllers/organization.controller';\nexport type * from '@controllers/project.controller';\nexport type * from '@controllers/projectAccessKey.controller';\nexport type * from '@controllers/search.controller';\nexport type * from '@controllers/sessionAuth.controller';\nexport type * from '@controllers/stripe.controller';\nexport type * from '@controllers/tag.controller';\nexport type * from '@controllers/user.controller';\n\n// Objects types\nexport type * from '@/types/dictionary.types';\nexport type * from '@/types/oAuth2.types';\nexport type * from '@/types/organization.types';\nexport type * from '@/types/plan.types';\nexport type * from '@/types/project.types';\nexport type * from '@/types/tag.types';\nexport type * from '@/types/user.types';\n\n// Utils\nexport * from '@utils/AI/aiSdk';\nexport * from '@utils/cookies';\nexport * from '@utils/httpStatusCodes';\nexport * from '@utils/responseData';\n"],"mappings":"AACA,SAAS,2BAA2B;AACpC,SAAS,2BAA2B;AACpC,SAAS,6BAA6B;AACtC,SAAS,wBAAwB;AACjC,SAAS,4BAA4B;AACrC,SAAS,qBAAqB;AA2B9B,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../src/export.ts"],"sourcesContent":["// Routes\nexport { getDictionaryRoutes } from '@routes/dictionary.routes';\nexport { getNewsletterRoutes } from '@routes/newsletter.routes';\nexport { getOrganizationRoutes } from '@routes/organization.routes';\nexport { getProjectRoutes } from '@routes/project.routes';\nexport { getUserRoutes } from '@routes/user.routes';\n\n// Controllers types\nexport type * from '@controllers/ai.controller';\nexport type * from '@controllers/dictionary.controller';\nexport type * from '@controllers/eventListener.controller';\nexport type * from '@controllers/newsletter.controller';\nexport type * from '@controllers/oAuth2.controller';\nexport type * from '@controllers/organization.controller';\nexport type * from '@controllers/project.controller';\nexport type * from '@controllers/projectAccessKey.controller';\nexport type * from '@controllers/search.controller';\nexport type * from '@controllers/stripe.controller';\nexport type * from '@controllers/tag.controller';\nexport type * from '@controllers/user.controller';\n\n// Objects types\nexport type * from '@/types/dictionary.types';\nexport type * from '@/types/oAuth2.types';\nexport type * from '@/types/organization.types';\nexport type * from '@/types/plan.types';\nexport type * from '@/types/project.types';\nexport type * from '@/types/session.types';\nexport type * from '@/types/tag.types';\nexport type * from '@/types/user.types';\n\n// Utils\nexport * from '@utils/AI/aiSdk';\nexport * from '@utils/auth/getAuth';\nexport * from '@utils/httpStatusCodes';\nexport * from '@utils/responseData';\n"],"mappings":"AACA,SAAS,2BAA2B;AACpC,SAAS,2BAA2B;AACpC,SAAS,6BAA6B;AACtC,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AA2B9B,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
@@ -1,3 +1,4 @@
1
+ import { toNodeHandler } from "better-auth/node";
1
2
  import compression from "compression";
2
3
  import cookieParser from "cookie-parser";
3
4
  import cors from "cors";
@@ -5,17 +6,12 @@ import dotenv from "dotenv";
5
6
  import express from "express";
6
7
  import { intlayer, t } from "express-intlayer";
7
8
  import helmet from "helmet";
9
+ import { getOAuth2AccessToken } from "./controllers/oAuth2.controller.mjs";
8
10
  import {
9
11
  attachOAuthInstance,
10
- authenticateOAuth2
12
+ oAuth2Middleware
11
13
  } from "./middlewares/oAuth2.middleware.mjs";
12
14
  import { logAPIRequestURL } from "./middlewares/request.middleware.mjs";
13
- import {
14
- checkAdmin,
15
- checkOrganization,
16
- checkProject,
17
- checkUser
18
- } from "./middlewares/sessionAuth.middleware.mjs";
19
15
  import { aiRoute, aiRouter } from "./routes/ai.routes.mjs";
20
16
  import { dictionaryRoute, dictionaryRouter } from "./routes/dictionary.routes.mjs";
21
17
  import {
@@ -29,118 +25,71 @@ import {
29
25
  } from "./routes/organization.routes.mjs";
30
26
  import { projectRoute, projectRouter } from "./routes/project.routes.mjs";
31
27
  import { searchRoute, searchRouter } from "./routes/search.routes.mjs";
32
- import { sessionAuthRouter } from "./routes/sessionAuth.routes.mjs";
33
28
  import { stripeRoute, stripeRouter } from "./routes/stripe.routes.mjs";
34
29
  import { tagRoute, tagRouter } from "./routes/tags.routes.mjs";
35
30
  import { userRoute, userRouter } from "./routes/user.routes.mjs";
36
31
  import { stripeWebhook } from "./webhooks/stripe.webhook.mjs";
37
- import { getOAuth2Token } from "./controllers/oAuth2.controller.mjs";
38
- import {
39
- getSessionInformation,
40
- setCSRFToken
41
- } from "./controllers/sessionAuth.controller.mjs";
42
- import { doubleCsrfProtection } from "./utils/CSRF.mjs";
32
+ import { getAuth } from "./utils/auth/getAuth.mjs";
43
33
  import { connectDB } from "./utils/mongoDB/connectDB.mjs";
34
+ import { ipLimiter } from "./utils/rateLimiter.mjs";
35
+ import { authMiddleware } from "./middlewares/sessionAuth.middleware.mjs";
36
+ import { corsOptions } from "./utils/cors.mjs";
44
37
  import { logger } from "./logger/index.mjs";
45
- const app = express();
46
- app.disable("x-powered-by");
47
- app.use(helmet());
48
- const env = app.get("env");
49
- logger.info(`run as ${env}`);
50
- dotenv.config({
51
- path: [`.env.${env}.local`, `.env.${env}`, ".env.local", ".env"]
52
- });
53
- app.use(cookieParser());
54
- app.use(intlayer());
55
- const isDev = env === "development";
56
- connectDB();
57
- app.post(
58
- "/webhook/stripe",
59
- express.raw({ type: "application/json" }),
60
- stripeWebhook
61
- );
62
- app.use(compression());
63
- app.use(express.json({ limit: "50mb" }));
64
- app.use(express.urlencoded({ extended: true }));
65
- const whitelist = [process.env.CLIENT_URL];
66
- const corsOptions = {
67
- origin: (origin, callback) => {
68
- if (!origin) return callback(null, true);
69
- if (whitelist.includes(origin)) {
70
- logger.info("whitelisted origin", origin);
71
- return callback(null, true);
72
- }
73
- logger.info("non whitelisted origin", origin);
74
- callback(null, origin);
75
- },
76
- allowedHeaders: [
77
- "authorization",
78
- "Content-Type",
79
- "credentials",
80
- "cache-control",
81
- "Access-Control-Allow-Origin",
82
- "private-state-token-redemption",
83
- "private-state-token-issuance",
84
- "browsing-topics"
85
- ],
86
- exposedHeaders: [""],
87
- preflightContinue: false,
88
- methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
89
- credentials: true
90
- };
91
- app.use(cors(corsOptions));
92
- app.get("/", (_req, res) => {
93
- res.send(
94
- t({
95
- en: "Ok - locale: en",
96
- fr: "Ok - locale: fr",
97
- es: "Ok - locale: es"
98
- })
38
+ const startServer = async () => {
39
+ const app = express();
40
+ app.disable("x-powered-by");
41
+ app.use(helmet());
42
+ app.set("trust proxy", 1);
43
+ const env = app.get("env");
44
+ logger.info(`run as ${env}`);
45
+ dotenv.config({
46
+ path: [`.env.${env}.local`, `.env.${env}`, ".env.local", ".env"]
47
+ });
48
+ app.use(cookieParser());
49
+ app.use(intlayer());
50
+ app.use(/(.*)/, ipLimiter);
51
+ const dbClient = await connectDB();
52
+ app.post(
53
+ "/webhook/stripe",
54
+ express.raw({ type: "application/json" }),
55
+ stripeWebhook
99
56
  );
100
- });
101
- app.use(/(.*)/, checkUser);
102
- app.use(/(.*)/, checkOrganization);
103
- app.use(/(.*)/, checkProject);
104
- app.use(/(.*)/, checkAdmin);
105
- if (isDev) {
106
- app.use(logAPIRequestURL);
107
- }
108
- app.get("/session", getSessionInformation);
109
- app.use("/api/auth", sessionAuthRouter);
110
- app.get("/csrf-token", setCSRFToken);
111
- app.use(/(.*)/, attachOAuthInstance);
112
- app.post("/oauth2/token", getOAuth2Token);
113
- app.use(/(.*)/, (req, res, next) => {
114
- if (!res.locals.authType) {
115
- return authenticateOAuth2(
116
- req,
117
- res,
118
- next
57
+ app.use(compression());
58
+ app.use(express.urlencoded({ extended: true }));
59
+ app.use(cors(corsOptions));
60
+ app.get("/", (_req, res) => {
61
+ res.send(
62
+ t({
63
+ en: "Ok - locale: en",
64
+ fr: "Ok - locale: fr",
65
+ es: "Ok - locale: es"
66
+ })
119
67
  );
68
+ });
69
+ const auth = getAuth(dbClient);
70
+ app.all("/api/auth/{*any}", toNodeHandler(auth));
71
+ app.use(/(.*)/, authMiddleware(auth));
72
+ app.use(/(.*)/, attachOAuthInstance);
73
+ app.post("/oauth2/token", getOAuth2AccessToken);
74
+ app.use(/(.*)/, oAuth2Middleware);
75
+ app.use(express.json());
76
+ const isDev = env === "development";
77
+ if (isDev) {
78
+ app.use(logAPIRequestURL);
120
79
  }
121
- next();
122
- });
123
- app.use(/(.*)/, (req, res, next) => {
124
- if (res.locals.authType === "session") {
125
- return doubleCsrfProtection(req, res, next);
126
- }
127
- next();
128
- });
129
- app.use(userRoute, userRouter);
130
- app.use(organizationRoute, organizationRouter);
131
- app.use(projectRoute, projectRouter);
132
- app.use(tagRoute, tagRouter);
133
- app.use(dictionaryRoute, dictionaryRouter);
134
- app.use(stripeRoute, stripeRouter);
135
- app.use(aiRoute, aiRouter);
136
- app.use(eventListenerRoute, eventListenerRouter);
137
- app.use(searchRoute, searchRouter);
138
- app.use(newsletterRoute, newsletterRouter);
139
- app.listen(process.env.PORT, () => {
140
- logger.info(`Listening on port ${process.env.PORT}`);
141
- });
142
- var index_default = app;
143
- export {
144
- index_default as default
80
+ app.use(userRoute, userRouter);
81
+ app.use(organizationRoute, organizationRouter);
82
+ app.use(projectRoute, projectRouter);
83
+ app.use(tagRoute, tagRouter);
84
+ app.use(dictionaryRoute, dictionaryRouter);
85
+ app.use(stripeRoute, stripeRouter);
86
+ app.use(aiRoute, aiRouter);
87
+ app.use(eventListenerRoute, eventListenerRouter);
88
+ app.use(searchRoute, searchRouter);
89
+ app.use(newsletterRoute, newsletterRouter);
90
+ app.listen(process.env.PORT, () => {
91
+ logger.info(`Listening on port ${process.env.PORT}`);
92
+ });
145
93
  };
94
+ startServer();
146
95
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["// Libraries\nimport compression from 'compression';\nimport cookieParser from 'cookie-parser';\nimport cors, { type CorsOptions } from 'cors';\nimport dotenv from 'dotenv';\nimport express, { type Express } from 'express';\nimport { intlayer, t } from 'express-intlayer';\nimport helmet from 'helmet';\n\n// Middlewares\nimport {\n type RequestWithOAuth2Information,\n attachOAuthInstance,\n authenticateOAuth2,\n} from '@middlewares/oAuth2.middleware';\nimport { logAPIRequestURL } from '@middlewares/request.middleware';\nimport {\n type ResponseWithInformation,\n checkAdmin,\n checkOrganization,\n checkProject,\n checkUser,\n} from '@middlewares/sessionAuth.middleware';\n\n// Routes\nimport { aiRoute, aiRouter } from '@routes/ai.routes';\nimport { dictionaryRoute, dictionaryRouter } from '@routes/dictionary.routes';\nimport {\n eventListenerRoute,\n eventListenerRouter,\n} from '@routes/eventListener.routes';\nimport { newsletterRoute, newsletterRouter } from '@routes/newsletter.routes';\nimport {\n organizationRoute,\n organizationRouter,\n} from '@routes/organization.routes';\nimport { projectRoute, projectRouter } from '@routes/project.routes';\nimport { searchRoute, searchRouter } from '@routes/search.routes';\nimport { sessionAuthRouter } from '@routes/sessionAuth.routes';\nimport { stripeRoute, stripeRouter } from '@routes/stripe.routes';\nimport { tagRoute, tagRouter } from '@routes/tags.routes';\nimport { userRoute, userRouter } from '@routes/user.routes';\n\n// Webhooks\nimport { stripeWebhook } from '@webhooks/stripe.webhook';\n\n// Controllers\nimport { getOAuth2Token } from '@controllers/oAuth2.controller';\nimport {\n getSessionInformation,\n setCSRFToken,\n} from '@controllers/sessionAuth.controller';\n\n// Utils\nimport { doubleCsrfProtection } from '@utils/CSRF';\nimport { connectDB } from '@utils/mongoDB/connectDB';\n\n// Logger\nimport { logger } from './logger/index';\n\nconst app: Express = express();\n\napp.disable('x-powered-by'); // Disabled to prevent attackers from knowing that the app is running Express\napp.use(helmet());\n\n// Environment variables\nconst env = app.get('env');\n\nlogger.info(`run as ${env}`);\n\ndotenv.config({\n path: [`.env.${env}.local`, `.env.${env}`, '.env.local', '.env'],\n});\n\n// Parse incoming requests with cookies\napp.use(cookieParser());\n\n// Load internationalization request handler\napp.use(intlayer());\n\nconst isDev = env === 'development';\n\n// Connect to MongoDB\nconnectDB();\n\n// Stripe\napp.post(\n '/webhook/stripe',\n express.raw({ type: 'application/json' }),\n stripeWebhook\n);\n\n// Compress all HTTP responses\napp.use(compression());\n\n// Parse incoming requests with JSON payloads\napp.use(express.json({ limit: '50mb' }));\n\n// Parse incoming requests with urlencoded payloads\napp.use(express.urlencoded({ extended: true }));\n\nconst whitelist = [process.env.CLIENT_URL!];\n\n// CORS\nconst corsOptions: CorsOptions = {\n origin: (origin, callback) => {\n // Allow requests with no origin (like mobile apps or curl requests)\n if (!origin) return callback(null, true);\n\n if (whitelist.includes(origin)) {\n logger.info('whitelisted origin', origin);\n return callback(null, true);\n }\n\n logger.info('non whitelisted origin', origin);\n // Reflect the request's origin (echo back the origin header)\n callback(null, origin);\n },\n allowedHeaders: [\n 'authorization',\n 'Content-Type',\n 'credentials',\n 'cache-control',\n 'Access-Control-Allow-Origin',\n 'private-state-token-redemption',\n 'private-state-token-issuance',\n 'browsing-topics',\n ],\n exposedHeaders: [''],\n preflightContinue: false,\n methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',\n credentials: true,\n};\napp.use(cors(corsOptions));\n\n// Liveness check\napp.get('/', (_req, res) => {\n res.send(\n t({\n en: 'Ok - locale: en',\n fr: 'Ok - locale: fr',\n es: 'Ok - locale: es',\n })\n );\n});\n\n// middleware - jwt & session auth\napp.use(/(.*)/, checkUser);\napp.use(/(.*)/, checkOrganization);\napp.use(/(.*)/, checkProject);\napp.use(/(.*)/, checkAdmin);\n\n// debug\nif (isDev) {\n app.use(logAPIRequestURL);\n}\n\n// Sessions\napp.get('/session', getSessionInformation);\napp.use('/api/auth', sessionAuthRouter);\n\n// CSRF\napp.get('/csrf-token', setCSRFToken);\n\n// oAuth2\napp.use(/(.*)/, attachOAuthInstance);\napp.post('/oauth2/token', getOAuth2Token); // Route to get the token\napp.use(/(.*)/, (req, res, next) => {\n // If the request is not already authenticated check the oAuth2 token\n if (!res.locals.authType) {\n return authenticateOAuth2(\n req as RequestWithOAuth2Information,\n res as ResponseWithInformation,\n next\n );\n }\n next();\n});\n\n// CSRF protection\napp.use(/(.*)/, (req, res, next) => {\n // If the request is authenticated using the session auth check the CSRF token\n if (res.locals.authType === 'session') {\n return doubleCsrfProtection(req, res, next);\n }\n next();\n});\n\n// Routes\napp.use(userRoute, userRouter);\napp.use(organizationRoute, organizationRouter);\napp.use(projectRoute, projectRouter);\napp.use(tagRoute, tagRouter);\napp.use(dictionaryRoute, dictionaryRouter);\napp.use(stripeRoute, stripeRouter);\napp.use(aiRoute, aiRouter);\napp.use(eventListenerRoute, eventListenerRouter);\napp.use(searchRoute, searchRouter);\napp.use(newsletterRoute, newsletterRouter);\n\n// Server\napp.listen(process.env.PORT, () => {\n logger.info(`Listening on port ${process.env.PORT}`);\n});\n\n// Export tu use as serverless function\nexport default app;\n"],"mappings":"AACA,OAAO,iBAAiB;AACxB,OAAO,kBAAkB;AACzB,OAAO,UAAgC;AACvC,OAAO,YAAY;AACnB,OAAO,aAA+B;AACtC,SAAS,UAAU,SAAS;AAC5B,OAAO,YAAY;AAGnB;AAAA,EAEE;AAAA,EACA;AAAA,OACK;AACP,SAAS,wBAAwB;AACjC;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,SAAS,gBAAgB;AAClC,SAAS,iBAAiB,wBAAwB;AAClD;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,iBAAiB,wBAAwB;AAClD;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,cAAc,qBAAqB;AAC5C,SAAS,aAAa,oBAAoB;AAC1C,SAAS,yBAAyB;AAClC,SAAS,aAAa,oBAAoB;AAC1C,SAAS,UAAU,iBAAiB;AACpC,SAAS,WAAW,kBAAkB;AAGtC,SAAS,qBAAqB;AAG9B,SAAS,sBAAsB;AAC/B;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAGP,SAAS,4BAA4B;AACrC,SAAS,iBAAiB;AAG1B,SAAS,cAAc;AAEvB,MAAM,MAAe,QAAQ;AAE7B,IAAI,QAAQ,cAAc;AAC1B,IAAI,IAAI,OAAO,CAAC;AAGhB,MAAM,MAAM,IAAI,IAAI,KAAK;AAEzB,OAAO,KAAK,UAAU,GAAG,EAAE;AAE3B,OAAO,OAAO;AAAA,EACZ,MAAM,CAAC,QAAQ,GAAG,UAAU,QAAQ,GAAG,IAAI,cAAc,MAAM;AACjE,CAAC;AAGD,IAAI,IAAI,aAAa,CAAC;AAGtB,IAAI,IAAI,SAAS,CAAC;AAElB,MAAM,QAAQ,QAAQ;AAGtB,UAAU;AAGV,IAAI;AAAA,EACF;AAAA,EACA,QAAQ,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAAA,EACxC;AACF;AAGA,IAAI,IAAI,YAAY,CAAC;AAGrB,IAAI,IAAI,QAAQ,KAAK,EAAE,OAAO,OAAO,CAAC,CAAC;AAGvC,IAAI,IAAI,QAAQ,WAAW,EAAE,UAAU,KAAK,CAAC,CAAC;AAE9C,MAAM,YAAY,CAAC,QAAQ,IAAI,UAAW;AAG1C,MAAM,cAA2B;AAAA,EAC/B,QAAQ,CAAC,QAAQ,aAAa;AAE5B,QAAI,CAAC,OAAQ,QAAO,SAAS,MAAM,IAAI;AAEvC,QAAI,UAAU,SAAS,MAAM,GAAG;AAC9B,aAAO,KAAK,sBAAsB,MAAM;AACxC,aAAO,SAAS,MAAM,IAAI;AAAA,IAC5B;AAEA,WAAO,KAAK,0BAA0B,MAAM;AAE5C,aAAS,MAAM,MAAM;AAAA,EACvB;AAAA,EACA,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,gBAAgB,CAAC,EAAE;AAAA,EACnB,mBAAmB;AAAA,EACnB,SAAS;AAAA,EACT,aAAa;AACf;AACA,IAAI,IAAI,KAAK,WAAW,CAAC;AAGzB,IAAI,IAAI,KAAK,CAAC,MAAM,QAAQ;AAC1B,MAAI;AAAA,IACF,EAAE;AAAA,MACA,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN,CAAC;AAAA,EACH;AACF,CAAC;AAGD,IAAI,IAAI,QAAQ,SAAS;AACzB,IAAI,IAAI,QAAQ,iBAAiB;AACjC,IAAI,IAAI,QAAQ,YAAY;AAC5B,IAAI,IAAI,QAAQ,UAAU;AAG1B,IAAI,OAAO;AACT,MAAI,IAAI,gBAAgB;AAC1B;AAGA,IAAI,IAAI,YAAY,qBAAqB;AACzC,IAAI,IAAI,aAAa,iBAAiB;AAGtC,IAAI,IAAI,eAAe,YAAY;AAGnC,IAAI,IAAI,QAAQ,mBAAmB;AACnC,IAAI,KAAK,iBAAiB,cAAc;AACxC,IAAI,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS;AAElC,MAAI,CAAC,IAAI,OAAO,UAAU;AACxB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,OAAK;AACP,CAAC;AAGD,IAAI,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS;AAElC,MAAI,IAAI,OAAO,aAAa,WAAW;AACrC,WAAO,qBAAqB,KAAK,KAAK,IAAI;AAAA,EAC5C;AACA,OAAK;AACP,CAAC;AAGD,IAAI,IAAI,WAAW,UAAU;AAC7B,IAAI,IAAI,mBAAmB,kBAAkB;AAC7C,IAAI,IAAI,cAAc,aAAa;AACnC,IAAI,IAAI,UAAU,SAAS;AAC3B,IAAI,IAAI,iBAAiB,gBAAgB;AACzC,IAAI,IAAI,aAAa,YAAY;AACjC,IAAI,IAAI,SAAS,QAAQ;AACzB,IAAI,IAAI,oBAAoB,mBAAmB;AAC/C,IAAI,IAAI,aAAa,YAAY;AACjC,IAAI,IAAI,iBAAiB,gBAAgB;AAGzC,IAAI,OAAO,QAAQ,IAAI,MAAM,MAAM;AACjC,SAAO,KAAK,qBAAqB,QAAQ,IAAI,IAAI,EAAE;AACrD,CAAC;AAGD,IAAO,gBAAQ;","names":[]}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["// Libraries\nimport { toNodeHandler } from 'better-auth/node';\nimport compression from 'compression';\nimport cookieParser from 'cookie-parser';\nimport cors from 'cors';\nimport dotenv from 'dotenv';\nimport express, { type Express } from 'express';\nimport { intlayer, t } from 'express-intlayer';\nimport helmet from 'helmet';\n\n// Middlewares\nimport { getOAuth2AccessToken } from '@controllers/oAuth2.controller';\nimport {\n attachOAuthInstance,\n oAuth2Middleware,\n} from '@middlewares/oAuth2.middleware';\nimport { logAPIRequestURL } from '@middlewares/request.middleware';\n\n// Services\n\n// Routes\nimport { aiRoute, aiRouter } from '@routes/ai.routes';\nimport { dictionaryRoute, dictionaryRouter } from '@routes/dictionary.routes';\nimport {\n eventListenerRoute,\n eventListenerRouter,\n} from '@routes/eventListener.routes';\nimport { newsletterRoute, newsletterRouter } from '@routes/newsletter.routes';\nimport {\n organizationRoute,\n organizationRouter,\n} from '@routes/organization.routes';\nimport { projectRoute, projectRouter } from '@routes/project.routes';\nimport { searchRoute, searchRouter } from '@routes/search.routes';\nimport { stripeRoute, stripeRouter } from '@routes/stripe.routes';\nimport { tagRoute, tagRouter } from '@routes/tags.routes';\nimport { userRoute, userRouter } from '@routes/user.routes';\n\n// Webhooks\nimport { stripeWebhook } from '@webhooks/stripe.webhook';\n\n// Utils\nimport { getAuth } from '@utils/auth/getAuth';\nimport { connectDB } from '@utils/mongoDB/connectDB';\nimport { ipLimiter } from '@utils/rateLimiter';\n\n// Logger\nimport { authMiddleware } from '@middlewares/sessionAuth.middleware';\nimport { corsOptions } from '@utils/cors';\nimport { logger } from './logger/index';\n\nconst startServer = async () => {\n const app: Express = express();\n\n // Headers security\n app.disable('x-powered-by'); // Disabled to prevent attackers from knowing that the app is running Express\n app.use(helmet());\n app.set('trust proxy', 1);\n\n // Environment variables\n const env = app.get('env');\n\n logger.info(`run as ${env}`);\n\n dotenv.config({\n path: [`.env.${env}.local`, `.env.${env}`, '.env.local', '.env'],\n });\n\n // Parse incoming requests with cookies\n app.use(cookieParser());\n\n // Load internationalization request handler\n app.use(intlayer());\n\n // Rate limiter\n app.use(/(.*)/, ipLimiter);\n\n // Connect to MongoDB\n const dbClient = await connectDB();\n\n // Stripe\n app.post(\n '/webhook/stripe',\n express.raw({ type: 'application/json' }),\n stripeWebhook\n );\n\n // Compress all HTTP responses\n app.use(compression());\n\n // Parse incoming requests with urlencoded payloads\n app.use(express.urlencoded({ extended: true }));\n\n // CORS\n app.use(cors(corsOptions));\n\n // Liveness check\n app.get('/', (_req, res) => {\n res.send(\n t({\n en: 'Ok - locale: en',\n fr: 'Ok - locale: fr',\n es: 'Ok - locale: es',\n })\n );\n });\n\n // Session Auth\n const auth = getAuth(dbClient);\n app.all('/api/auth/{*any}', toNodeHandler(auth));\n app.use(/(.*)/, authMiddleware(auth));\n\n // oAuth2 Auth\n app.use(/(.*)/, attachOAuthInstance);\n app.post('/oauth2/token', getOAuth2AccessToken); // Route to get the token\n app.use(/(.*)/, oAuth2Middleware);\n\n // Body parser\n app.use(express.json()); // Should be placed after auth. Attach body to next routes\n\n // debug\n const isDev = env === 'development';\n if (isDev) {\n app.use(logAPIRequestURL);\n }\n\n // Routes\n app.use(userRoute, userRouter);\n app.use(organizationRoute, organizationRouter);\n app.use(projectRoute, projectRouter);\n app.use(tagRoute, tagRouter);\n app.use(dictionaryRoute, dictionaryRouter);\n app.use(stripeRoute, stripeRouter);\n app.use(aiRoute, aiRouter);\n app.use(eventListenerRoute, eventListenerRouter);\n app.use(searchRoute, searchRouter);\n app.use(newsletterRoute, newsletterRouter);\n\n // Server\n app.listen(process.env.PORT, () => {\n logger.info(`Listening on port ${process.env.PORT}`);\n });\n};\n\nstartServer();\n"],"mappings":"AACA,SAAS,qBAAqB;AAC9B,OAAO,iBAAiB;AACxB,OAAO,kBAAkB;AACzB,OAAO,UAAU;AACjB,OAAO,YAAY;AACnB,OAAO,aAA+B;AACtC,SAAS,UAAU,SAAS;AAC5B,OAAO,YAAY;AAGnB,SAAS,4BAA4B;AACrC;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,wBAAwB;AAKjC,SAAS,SAAS,gBAAgB;AAClC,SAAS,iBAAiB,wBAAwB;AAClD;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,iBAAiB,wBAAwB;AAClD;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,cAAc,qBAAqB;AAC5C,SAAS,aAAa,oBAAoB;AAC1C,SAAS,aAAa,oBAAoB;AAC1C,SAAS,UAAU,iBAAiB;AACpC,SAAS,WAAW,kBAAkB;AAGtC,SAAS,qBAAqB;AAG9B,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAC1B,SAAS,iBAAiB;AAG1B,SAAS,sBAAsB;AAC/B,SAAS,mBAAmB;AAC5B,SAAS,cAAc;AAEvB,MAAM,cAAc,YAAY;AAC9B,QAAM,MAAe,QAAQ;AAG7B,MAAI,QAAQ,cAAc;AAC1B,MAAI,IAAI,OAAO,CAAC;AAChB,MAAI,IAAI,eAAe,CAAC;AAGxB,QAAM,MAAM,IAAI,IAAI,KAAK;AAEzB,SAAO,KAAK,UAAU,GAAG,EAAE;AAE3B,SAAO,OAAO;AAAA,IACZ,MAAM,CAAC,QAAQ,GAAG,UAAU,QAAQ,GAAG,IAAI,cAAc,MAAM;AAAA,EACjE,CAAC;AAGD,MAAI,IAAI,aAAa,CAAC;AAGtB,MAAI,IAAI,SAAS,CAAC;AAGlB,MAAI,IAAI,QAAQ,SAAS;AAGzB,QAAM,WAAW,MAAM,UAAU;AAGjC,MAAI;AAAA,IACF;AAAA,IACA,QAAQ,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAAA,IACxC;AAAA,EACF;AAGA,MAAI,IAAI,YAAY,CAAC;AAGrB,MAAI,IAAI,QAAQ,WAAW,EAAE,UAAU,KAAK,CAAC,CAAC;AAG9C,MAAI,IAAI,KAAK,WAAW,CAAC;AAGzB,MAAI,IAAI,KAAK,CAAC,MAAM,QAAQ;AAC1B,QAAI;AAAA,MACF,EAAE;AAAA,QACA,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAGD,QAAM,OAAO,QAAQ,QAAQ;AAC7B,MAAI,IAAI,oBAAoB,cAAc,IAAI,CAAC;AAC/C,MAAI,IAAI,QAAQ,eAAe,IAAI,CAAC;AAGpC,MAAI,IAAI,QAAQ,mBAAmB;AACnC,MAAI,KAAK,iBAAiB,oBAAoB;AAC9C,MAAI,IAAI,QAAQ,gBAAgB;AAGhC,MAAI,IAAI,QAAQ,KAAK,CAAC;AAGtB,QAAM,QAAQ,QAAQ;AACtB,MAAI,OAAO;AACT,QAAI,IAAI,gBAAgB;AAAA,EAC1B;AAGA,MAAI,IAAI,WAAW,UAAU;AAC7B,MAAI,IAAI,mBAAmB,kBAAkB;AAC7C,MAAI,IAAI,cAAc,aAAa;AACnC,MAAI,IAAI,UAAU,SAAS;AAC3B,MAAI,IAAI,iBAAiB,gBAAgB;AACzC,MAAI,IAAI,aAAa,YAAY;AACjC,MAAI,IAAI,SAAS,QAAQ;AACzB,MAAI,IAAI,oBAAoB,mBAAmB;AAC/C,MAAI,IAAI,aAAa,YAAY;AACjC,MAAI,IAAI,iBAAiB,gBAAgB;AAGzC,MAAI,OAAO,QAAQ,IAAI,MAAM,MAAM;AACjC,WAAO,KAAK,qBAAqB,QAAQ,IAAI,IAAI,EAAE;AAAA,EACrD,CAAC;AACH;AAEA,YAAY;","names":[]}