@intlayer/backend 8.7.11 → 8.7.13

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 (142) hide show
  1. package/README.md +27 -1
  2. package/dist/assets/utils/AI/askDocQuestion/embeddings/docs/en/benchmark/solid.json +4990 -0
  3. package/dist/assets/utils/AI/askDocQuestion/embeddings/docs/en/benchmark/svelte.json +4987 -0
  4. package/dist/assets/utils/AI/askDocQuestion/embeddings/docs/en/benchmark/vue.json +4975 -0
  5. package/dist/assets/utils/AI/askDocQuestion/embeddings/docs/en/intlayer_with_astro_lit.json +9936 -8930
  6. package/dist/assets/utils/AI/askDocQuestion/embeddings/docs/en/intlayer_with_astro_vanilla.json +7963 -6949
  7. package/dist/assets/utils/AI/askDocQuestion/embeddings/docs/en/readme.json +12908 -12288
  8. package/dist/esm/controllers/oAuth2.controller.mjs +21 -1
  9. package/dist/esm/controllers/oAuth2.controller.mjs.map +1 -1
  10. package/dist/esm/controllers/stripe.controller.mjs +86 -2
  11. package/dist/esm/controllers/stripe.controller.mjs.map +1 -1
  12. package/dist/esm/controllers/translation.controller.mjs +2 -0
  13. package/dist/esm/controllers/translation.controller.mjs.map +1 -1
  14. package/dist/esm/emails/InviteUserEmail.mjs +1541 -1
  15. package/dist/esm/emails/InviteUserEmail.mjs.map +1 -1
  16. package/dist/esm/emails/MagicLinkEmail.mjs +1128 -1
  17. package/dist/esm/emails/MagicLinkEmail.mjs.map +1 -1
  18. package/dist/esm/emails/OAuthTokenCreatedEmail.mjs +1389 -1
  19. package/dist/esm/emails/OAuthTokenCreatedEmail.mjs.map +1 -1
  20. package/dist/esm/emails/PasswordChangeConfirmation.mjs +814 -1
  21. package/dist/esm/emails/PasswordChangeConfirmation.mjs.map +1 -1
  22. package/dist/esm/emails/ResetUserPassword.mjs +1132 -1
  23. package/dist/esm/emails/ResetUserPassword.mjs.map +1 -1
  24. package/dist/esm/emails/SubscriptionPaymentCancellation.mjs +913 -1
  25. package/dist/esm/emails/SubscriptionPaymentCancellation.mjs.map +1 -1
  26. package/dist/esm/emails/SubscriptionPaymentError.mjs +908 -1
  27. package/dist/esm/emails/SubscriptionPaymentError.mjs.map +1 -1
  28. package/dist/esm/emails/SubscriptionPaymentSuccess.mjs +935 -1
  29. package/dist/esm/emails/SubscriptionPaymentSuccess.mjs.map +1 -1
  30. package/dist/esm/emails/ValidateUserEmail.mjs +1111 -1
  31. package/dist/esm/emails/ValidateUserEmail.mjs.map +1 -1
  32. package/dist/esm/emails/Welcome.mjs +1004 -1
  33. package/dist/esm/emails/Welcome.mjs.map +1 -1
  34. package/dist/esm/emails/index.mjs +7 -7
  35. package/dist/esm/index.mjs +8 -2
  36. package/dist/esm/index.mjs.map +1 -1
  37. package/dist/esm/middlewares/oAuth2.middleware.mjs +2 -2
  38. package/dist/esm/middlewares/oAuth2.middleware.mjs.map +1 -1
  39. package/dist/esm/routes/audit.routes.mjs +5 -4
  40. package/dist/esm/routes/audit.routes.mjs.map +1 -1
  41. package/dist/esm/routes/dictionary.routes.mjs +4 -3
  42. package/dist/esm/routes/dictionary.routes.mjs.map +1 -1
  43. package/dist/esm/routes/organization.routes.mjs +3 -2
  44. package/dist/esm/routes/organization.routes.mjs.map +1 -1
  45. package/dist/esm/routes/paramsSchemas.mjs +67 -0
  46. package/dist/esm/routes/paramsSchemas.mjs.map +1 -0
  47. package/dist/esm/routes/project.routes.mjs +2 -1
  48. package/dist/esm/routes/project.routes.mjs.map +1 -1
  49. package/dist/esm/routes/showcaseProject.routes.mjs +5 -4
  50. package/dist/esm/routes/showcaseProject.routes.mjs.map +1 -1
  51. package/dist/esm/routes/stripe.routes.mjs +19 -1
  52. package/dist/esm/routes/stripe.routes.mjs.map +1 -1
  53. package/dist/esm/routes/tags.routes.mjs +3 -2
  54. package/dist/esm/routes/tags.routes.mjs.map +1 -1
  55. package/dist/esm/routes/translate.routes.mjs +6 -5
  56. package/dist/esm/routes/translate.routes.mjs.map +1 -1
  57. package/dist/esm/routes/user.routes.mjs +5 -4
  58. package/dist/esm/routes/user.routes.mjs.map +1 -1
  59. package/dist/esm/schemas/oAuth2.schema.mjs +1 -1
  60. package/dist/esm/schemas/oAuth2.schema.mjs.map +1 -1
  61. package/dist/esm/services/email.service.mjs +338 -38
  62. package/dist/esm/services/email.service.mjs.map +1 -1
  63. package/dist/esm/services/oAuth2.service.mjs +20 -2
  64. package/dist/esm/services/oAuth2.service.mjs.map +1 -1
  65. package/dist/esm/services/subscription.service.mjs +5 -2
  66. package/dist/esm/services/subscription.service.mjs.map +1 -1
  67. package/dist/esm/utils/AI/askDocQuestion/embeddings/docs/en/benchmark/solid.json +4990 -0
  68. package/dist/esm/utils/AI/askDocQuestion/embeddings/docs/en/benchmark/svelte.json +4987 -0
  69. package/dist/esm/utils/AI/askDocQuestion/embeddings/docs/en/benchmark/vue.json +4975 -0
  70. package/dist/esm/utils/AI/askDocQuestion/embeddings/docs/en/intlayer_with_astro_lit.json +9936 -8930
  71. package/dist/esm/utils/AI/askDocQuestion/embeddings/docs/en/intlayer_with_astro_vanilla.json +7963 -6949
  72. package/dist/esm/utils/AI/askDocQuestion/embeddings/docs/en/readme.json +12908 -12288
  73. package/dist/esm/utils/auth/getAuth.mjs +6 -0
  74. package/dist/esm/utils/auth/getAuth.mjs.map +1 -1
  75. package/dist/esm/utils/errors/errorCodes.mjs +3917 -287
  76. package/dist/esm/utils/errors/errorCodes.mjs.map +1 -1
  77. package/dist/esm/utils/mongoDB/connectDB.mjs +5 -0
  78. package/dist/esm/utils/mongoDB/connectDB.mjs.map +1 -1
  79. package/dist/esm/utils/oAuth2.mjs +6 -2
  80. package/dist/esm/utils/oAuth2.mjs.map +1 -1
  81. package/dist/esm/utils/plan.mjs +13 -1
  82. package/dist/esm/utils/plan.mjs.map +1 -1
  83. package/dist/types/controllers/oAuth2.controller.d.ts +11 -1
  84. package/dist/types/controllers/oAuth2.controller.d.ts.map +1 -1
  85. package/dist/types/controllers/stripe.controller.d.ts +22 -2
  86. package/dist/types/controllers/stripe.controller.d.ts.map +1 -1
  87. package/dist/types/controllers/translation.controller.d.ts.map +1 -1
  88. package/dist/types/emails/InviteUserEmail.d.ts +181 -1
  89. package/dist/types/emails/InviteUserEmail.d.ts.map +1 -1
  90. package/dist/types/emails/MagicLinkEmail.d.ts +106 -1
  91. package/dist/types/emails/MagicLinkEmail.d.ts.map +1 -1
  92. package/dist/types/emails/OAuthTokenCreatedEmail.d.ts +166 -1
  93. package/dist/types/emails/OAuthTokenCreatedEmail.d.ts.map +1 -1
  94. package/dist/types/emails/PasswordChangeConfirmation.d.ts +91 -1
  95. package/dist/types/emails/PasswordChangeConfirmation.d.ts.map +1 -1
  96. package/dist/types/emails/ResetUserPassword.d.ts +106 -1
  97. package/dist/types/emails/ResetUserPassword.d.ts.map +1 -1
  98. package/dist/types/emails/SubscriptionPaymentCancellation.d.ts +151 -1
  99. package/dist/types/emails/SubscriptionPaymentCancellation.d.ts.map +1 -1
  100. package/dist/types/emails/SubscriptionPaymentError.d.ts +151 -1
  101. package/dist/types/emails/SubscriptionPaymentError.d.ts.map +1 -1
  102. package/dist/types/emails/SubscriptionPaymentSuccess.d.ts +151 -1
  103. package/dist/types/emails/SubscriptionPaymentSuccess.d.ts.map +1 -1
  104. package/dist/types/emails/ValidateUserEmail.d.ts +106 -1
  105. package/dist/types/emails/ValidateUserEmail.d.ts.map +1 -1
  106. package/dist/types/emails/Welcome.d.ts +106 -1
  107. package/dist/types/emails/Welcome.d.ts.map +1 -1
  108. package/dist/types/emails/index.d.ts +7 -7
  109. package/dist/types/export.d.ts +3 -3
  110. package/dist/types/middlewares/oAuth2.middleware.d.ts.map +1 -1
  111. package/dist/types/routes/audit.routes.d.ts.map +1 -1
  112. package/dist/types/routes/dictionary.routes.d.ts.map +1 -1
  113. package/dist/types/routes/organization.routes.d.ts.map +1 -1
  114. package/dist/types/routes/paramsSchemas.d.ts +102 -0
  115. package/dist/types/routes/paramsSchemas.d.ts.map +1 -0
  116. package/dist/types/routes/project.routes.d.ts.map +1 -1
  117. package/dist/types/routes/showcaseProject.routes.d.ts.map +1 -1
  118. package/dist/types/routes/stripe.routes.d.ts +15 -0
  119. package/dist/types/routes/stripe.routes.d.ts.map +1 -1
  120. package/dist/types/routes/tags.routes.d.ts.map +1 -1
  121. package/dist/types/routes/translate.routes.d.ts.map +1 -1
  122. package/dist/types/routes/user.routes.d.ts.map +1 -1
  123. package/dist/types/schemas/dictionary.schema.d.ts +6 -6
  124. package/dist/types/schemas/discussion.schema.d.ts +9 -9
  125. package/dist/types/schemas/organization.schema.d.ts +9 -9
  126. package/dist/types/schemas/plans.schema.d.ts +6 -6
  127. package/dist/types/schemas/project.schema.d.ts +12 -12
  128. package/dist/types/schemas/session.schema.d.ts +8 -8
  129. package/dist/types/schemas/showcaseProject.schema.d.ts +19 -19
  130. package/dist/types/schemas/tag.schema.d.ts +7 -7
  131. package/dist/types/services/email.service.d.ts.map +1 -1
  132. package/dist/types/services/oAuth2.service.d.ts +6 -1
  133. package/dist/types/services/oAuth2.service.d.ts.map +1 -1
  134. package/dist/types/types/plan.types.d.ts +2 -2
  135. package/dist/types/utils/errors/errorCodes.d.ts +3634 -4
  136. package/dist/types/utils/errors/errorCodes.d.ts.map +1 -1
  137. package/dist/types/utils/mongoDB/connectDB.d.ts.map +1 -1
  138. package/dist/types/utils/oAuth2.d.ts +3 -1
  139. package/dist/types/utils/oAuth2.d.ts.map +1 -1
  140. package/dist/types/utils/plan.d.ts +2 -1
  141. package/dist/types/utils/plan.d.ts.map +1 -1
  142. package/package.json +14 -13
@@ -1,14 +1,14 @@
1
1
  import { logger } from "../logger/index.mjs";
2
- import { InviteUserEmailEN, InviteUserEmailES, InviteUserEmailFR } from "../emails/InviteUserEmail.mjs";
3
- import { MagicLinkEmailEN, MagicLinkEmailES, MagicLinkEmailFR } from "../emails/MagicLinkEmail.mjs";
4
- import { OAuthTokenCreatedEmailEN, OAuthTokenCreatedEmailES, OAuthTokenCreatedEmailFR } from "../emails/OAuthTokenCreatedEmail.mjs";
5
- import { PasswordChangeConfirmationEmailEN, PasswordChangeConfirmationEmailES, PasswordChangeConfirmationEmailFR } from "../emails/PasswordChangeConfirmation.mjs";
6
- import { ResetPasswordEmailEN, ResetPasswordEmailES, ResetPasswordEmailFR } from "../emails/ResetUserPassword.mjs";
7
- import { SubscriptionPaymentCancellationEN, SubscriptionPaymentCancellationES, SubscriptionPaymentCancellationFR } from "../emails/SubscriptionPaymentCancellation.mjs";
8
- import { SubscriptionPaymentErrorEN, SubscriptionPaymentErrorES, SubscriptionPaymentErrorFR } from "../emails/SubscriptionPaymentError.mjs";
9
- import { SubscriptionPaymentSuccessEN, SubscriptionPaymentSuccessES, SubscriptionPaymentSuccessFR } from "../emails/SubscriptionPaymentSuccess.mjs";
10
- import { ValidateUserEmailEN, ValidateUserEmailES, ValidateUserEmailFR } from "../emails/ValidateUserEmail.mjs";
11
- import { WelcomeEmailEN, WelcomeEmailES, WelcomeEmailFR } from "../emails/Welcome.mjs";
2
+ import { InviteUserEmailAR, InviteUserEmailDE, InviteUserEmailEN, InviteUserEmailEN_GB, InviteUserEmailES, InviteUserEmailFR, InviteUserEmailHI, InviteUserEmailID, InviteUserEmailIT, InviteUserEmailJA, InviteUserEmailKO, InviteUserEmailPL, InviteUserEmailPT, InviteUserEmailRU, InviteUserEmailTR, InviteUserEmailUK, InviteUserEmailVI, InviteUserEmailZH } from "../emails/InviteUserEmail.mjs";
3
+ import { MagicLinkEmailAR, MagicLinkEmailDE, MagicLinkEmailEN, MagicLinkEmailEN_GB, MagicLinkEmailES, MagicLinkEmailFR, MagicLinkEmailHI, MagicLinkEmailID, MagicLinkEmailIT, MagicLinkEmailJA, MagicLinkEmailKO, MagicLinkEmailPL, MagicLinkEmailPT, MagicLinkEmailRU, MagicLinkEmailTR, MagicLinkEmailUK, MagicLinkEmailVI, MagicLinkEmailZH } from "../emails/MagicLinkEmail.mjs";
4
+ import { OAuthTokenCreatedEmailAR, OAuthTokenCreatedEmailDE, OAuthTokenCreatedEmailEN, OAuthTokenCreatedEmailEN_GB, OAuthTokenCreatedEmailES, OAuthTokenCreatedEmailFR, OAuthTokenCreatedEmailHI, OAuthTokenCreatedEmailID, OAuthTokenCreatedEmailIT, OAuthTokenCreatedEmailJA, OAuthTokenCreatedEmailKO, OAuthTokenCreatedEmailPL, OAuthTokenCreatedEmailPT, OAuthTokenCreatedEmailRU, OAuthTokenCreatedEmailTR, OAuthTokenCreatedEmailUK, OAuthTokenCreatedEmailVI, OAuthTokenCreatedEmailZH } from "../emails/OAuthTokenCreatedEmail.mjs";
5
+ import { PasswordChangeConfirmationEmailAR, PasswordChangeConfirmationEmailDE, PasswordChangeConfirmationEmailEN, PasswordChangeConfirmationEmailEN_GB, PasswordChangeConfirmationEmailES, PasswordChangeConfirmationEmailFR, PasswordChangeConfirmationEmailHI, PasswordChangeConfirmationEmailID, PasswordChangeConfirmationEmailIT, PasswordChangeConfirmationEmailJA, PasswordChangeConfirmationEmailKO, PasswordChangeConfirmationEmailPL, PasswordChangeConfirmationEmailPT, PasswordChangeConfirmationEmailRU, PasswordChangeConfirmationEmailTR, PasswordChangeConfirmationEmailUK, PasswordChangeConfirmationEmailVI, PasswordChangeConfirmationEmailZH } from "../emails/PasswordChangeConfirmation.mjs";
6
+ import { ResetPasswordEmailAR, ResetPasswordEmailDE, ResetPasswordEmailEN, ResetPasswordEmailEN_GB, ResetPasswordEmailES, ResetPasswordEmailFR, ResetPasswordEmailHI, ResetPasswordEmailID, ResetPasswordEmailIT, ResetPasswordEmailJA, ResetPasswordEmailKO, ResetPasswordEmailPL, ResetPasswordEmailPT, ResetPasswordEmailRU, ResetPasswordEmailTR, ResetPasswordEmailUK, ResetPasswordEmailVI, ResetPasswordEmailZH } from "../emails/ResetUserPassword.mjs";
7
+ import { SubscriptionPaymentCancellationAR, SubscriptionPaymentCancellationDE, SubscriptionPaymentCancellationEN, SubscriptionPaymentCancellationEN_GB, SubscriptionPaymentCancellationES, SubscriptionPaymentCancellationFR, SubscriptionPaymentCancellationHI, SubscriptionPaymentCancellationID, SubscriptionPaymentCancellationIT, SubscriptionPaymentCancellationJA, SubscriptionPaymentCancellationKO, SubscriptionPaymentCancellationPL, SubscriptionPaymentCancellationPT, SubscriptionPaymentCancellationRU, SubscriptionPaymentCancellationTR, SubscriptionPaymentCancellationUK, SubscriptionPaymentCancellationVI, SubscriptionPaymentCancellationZH } from "../emails/SubscriptionPaymentCancellation.mjs";
8
+ import { SubscriptionPaymentErrorAR, SubscriptionPaymentErrorDE, SubscriptionPaymentErrorEN, SubscriptionPaymentErrorEN_GB, SubscriptionPaymentErrorES, SubscriptionPaymentErrorFR, SubscriptionPaymentErrorHI, SubscriptionPaymentErrorID, SubscriptionPaymentErrorIT, SubscriptionPaymentErrorJA, SubscriptionPaymentErrorKO, SubscriptionPaymentErrorPL, SubscriptionPaymentErrorPT, SubscriptionPaymentErrorRU, SubscriptionPaymentErrorTR, SubscriptionPaymentErrorUK, SubscriptionPaymentErrorVI, SubscriptionPaymentErrorZH } from "../emails/SubscriptionPaymentError.mjs";
9
+ import { SubscriptionPaymentSuccessAR, SubscriptionPaymentSuccessDE, SubscriptionPaymentSuccessEN, SubscriptionPaymentSuccessEN_GB, SubscriptionPaymentSuccessES, SubscriptionPaymentSuccessFR, SubscriptionPaymentSuccessHI, SubscriptionPaymentSuccessID, SubscriptionPaymentSuccessIT, SubscriptionPaymentSuccessJA, SubscriptionPaymentSuccessKO, SubscriptionPaymentSuccessPL, SubscriptionPaymentSuccessPT, SubscriptionPaymentSuccessRU, SubscriptionPaymentSuccessTR, SubscriptionPaymentSuccessUK, SubscriptionPaymentSuccessVI, SubscriptionPaymentSuccessZH } from "../emails/SubscriptionPaymentSuccess.mjs";
10
+ import { ValidateUserEmailAR, ValidateUserEmailDE, ValidateUserEmailEN, ValidateUserEmailEN_GB, ValidateUserEmailES, ValidateUserEmailFR, ValidateUserEmailHI, ValidateUserEmailID, ValidateUserEmailIT, ValidateUserEmailJA, ValidateUserEmailKO, ValidateUserEmailPL, ValidateUserEmailPT, ValidateUserEmailRU, ValidateUserEmailTR, ValidateUserEmailUK, ValidateUserEmailVI, ValidateUserEmailZH } from "../emails/ValidateUserEmail.mjs";
11
+ import { WelcomeEmailAR, WelcomeEmailDE, WelcomeEmailEN, WelcomeEmailEN_GB, WelcomeEmailES, WelcomeEmailFR, WelcomeEmailHI, WelcomeEmailID, WelcomeEmailIT, WelcomeEmailJA, WelcomeEmailKO, WelcomeEmailPL, WelcomeEmailPT, WelcomeEmailRU, WelcomeEmailTR, WelcomeEmailUK, WelcomeEmailVI, WelcomeEmailZH } from "../emails/Welcome.mjs";
12
12
  import { t } from "fastify-intlayer";
13
13
  import { jsx } from "react/jsx-runtime";
14
14
  import { Resend } from "resend";
@@ -19,121 +19,421 @@ const getEmailComponents = (locale) => ({
19
19
  template: t({
20
20
  en: InviteUserEmailEN,
21
21
  fr: InviteUserEmailFR,
22
- es: InviteUserEmailES
22
+ es: InviteUserEmailES,
23
+ ru: InviteUserEmailRU,
24
+ ja: InviteUserEmailJA,
25
+ ko: InviteUserEmailKO,
26
+ zh: InviteUserEmailZH,
27
+ de: InviteUserEmailDE,
28
+ ar: InviteUserEmailAR,
29
+ it: InviteUserEmailIT,
30
+ "en-GB": InviteUserEmailEN_GB,
31
+ pt: InviteUserEmailPT,
32
+ hi: InviteUserEmailHI,
33
+ tr: InviteUserEmailTR,
34
+ pl: InviteUserEmailPL,
35
+ id: InviteUserEmailID,
36
+ vi: InviteUserEmailVI,
37
+ uk: InviteUserEmailUK
23
38
  }, locale),
24
39
  subject: t({
25
40
  en: "You have been invited to join Intlayer",
26
41
  fr: "Vous êtes invité à rejoindre Intlayer",
27
- es: "Has sido invitado a unirte a Intlayer"
42
+ es: "Has sido invitado a unirte a Intlayer",
43
+ ru: "Вы были приглашены присоединиться к Intlayer",
44
+ ja: "Intlayerへの招待が届きました",
45
+ ko: "Intlayer에 초대되었습니다",
46
+ zh: "您已受邀加入 Intlayer",
47
+ de: "Sie wurden eingeladen, Intlayer beizutreten",
48
+ ar: "لقد تم دعوتك للانضمام إلى Intlayer",
49
+ it: "Sei stato invitato a unirti a Intlayer",
50
+ "en-GB": "You have been invited to join Intlayer",
51
+ pt: "Você foi convidado a se juntar ao Intlayer",
52
+ hi: "आपको Intlayer में शामिल होने के लिए आमंत्रित किया गया है",
53
+ tr: "Intlayer'a katılmanız için davet edildiniz",
54
+ pl: "Zostałeś zaproszony do dołączenia do Intlayer",
55
+ id: "Anda telah diundang untuk bergabung dengan Intlayer",
56
+ vi: "Bạn đã được mời tham gia Intlayer",
57
+ uk: "Вас запросили приєднатися до Intlayer"
28
58
  }, locale)
29
59
  },
30
60
  validate: {
31
61
  template: t({
32
62
  en: ValidateUserEmailEN,
33
63
  fr: ValidateUserEmailFR,
34
- es: ValidateUserEmailES
64
+ es: ValidateUserEmailES,
65
+ ru: ValidateUserEmailRU,
66
+ ja: ValidateUserEmailJA,
67
+ ko: ValidateUserEmailKO,
68
+ zh: ValidateUserEmailZH,
69
+ de: ValidateUserEmailDE,
70
+ ar: ValidateUserEmailAR,
71
+ it: ValidateUserEmailIT,
72
+ "en-GB": ValidateUserEmailEN_GB,
73
+ pt: ValidateUserEmailPT,
74
+ hi: ValidateUserEmailHI,
75
+ tr: ValidateUserEmailTR,
76
+ pl: ValidateUserEmailPL,
77
+ id: ValidateUserEmailID,
78
+ vi: ValidateUserEmailVI,
79
+ uk: ValidateUserEmailUK
35
80
  }, locale),
36
81
  subject: t({
37
82
  en: "Validate your email for Intlayer",
38
83
  fr: "Validez votre email pour Intlayer",
39
- es: "Valida tu correo electrónico para Intlayer"
84
+ es: "Valida tu correo electrónico para Intlayer",
85
+ ru: "Подтвердите свой адрес электронной почты для Intlayer",
86
+ ja: "Intlayerのメールアドレスを認証してください",
87
+ ko: "Intlayer 이메일 주소를 인증해 주세요",
88
+ zh: "验证您的 Intlayer 电子邮件",
89
+ de: "Bestätigen Sie Ihre E-Mail für Intlayer",
90
+ ar: "تأكيد بريدك الإلكتروني لـ Intlayer",
91
+ it: "Conferma la tua email per Intlayer",
92
+ "en-GB": "Validate your email for Intlayer",
93
+ pt: "Valide seu e-mail para Intlayer",
94
+ hi: "Intlayer के लिए अपना ईमेल सत्यापित करें",
95
+ tr: "Intlayer için e-postanızı doğrulayın",
96
+ pl: "Zweryfikuj swój e-mail dla Intlayer",
97
+ id: "Validasi email Anda per Intlayer",
98
+ vi: "Xác thực email của bạn cho Intlayer",
99
+ uk: "Підтвердьте свою електронну пошту для Intlayer"
40
100
  }, locale)
41
101
  },
42
102
  resetPassword: {
43
103
  template: t({
44
104
  en: ResetPasswordEmailEN,
45
105
  fr: ResetPasswordEmailFR,
46
- es: ResetPasswordEmailES
106
+ es: ResetPasswordEmailES,
107
+ ru: ResetPasswordEmailRU,
108
+ ja: ResetPasswordEmailJA,
109
+ ko: ResetPasswordEmailKO,
110
+ zh: ResetPasswordEmailZH,
111
+ de: ResetPasswordEmailDE,
112
+ ar: ResetPasswordEmailAR,
113
+ it: ResetPasswordEmailIT,
114
+ "en-GB": ResetPasswordEmailEN_GB,
115
+ pt: ResetPasswordEmailPT,
116
+ hi: ResetPasswordEmailHI,
117
+ tr: ResetPasswordEmailTR,
118
+ pl: ResetPasswordEmailPL,
119
+ id: ResetPasswordEmailID,
120
+ vi: ResetPasswordEmailVI,
121
+ uk: ResetPasswordEmailUK
47
122
  }, locale),
48
123
  subject: t({
49
124
  en: "Reset your password for Intlayer",
50
125
  fr: "Réinitialisez votre mot de passe pour Intlayer",
51
- es: "Restablece tu contraseña para Intlayer"
126
+ es: "Restablece tu contraseña para Intlayer",
127
+ ru: "Сброс пароля для Intlayer",
128
+ ja: "Intlayerのパスワードをリセットしてください",
129
+ ko: "Intlayer 비밀번호를 재설정해 주세요",
130
+ zh: "重置您的 Intlayer 密码",
131
+ de: "Setzen Sie Ihr Passwort für Intlayer zurück",
132
+ ar: "إعادة تعيين كلمة المرور لـ Intlayer",
133
+ it: "Reimposta la tua password per Intlayer",
134
+ "en-GB": "Reset your password for Intlayer",
135
+ pt: "Redefina sua senha para Intlayer",
136
+ hi: "Intlayer के लिए अपना पासवर्ड रीसेट करें",
137
+ tr: "Intlayer için şifrenizi sıfırlayın",
138
+ pl: "Zresetuj swoje hasło do Intlayer",
139
+ id: "Reset kata sandi Anda untuk Intlayer",
140
+ vi: "Đặt lại mật khẩu của bạn cho Intlayer",
141
+ uk: "Скидання пароля для Intlayer"
52
142
  }, locale)
53
143
  },
54
144
  welcome: {
55
145
  template: t({
56
146
  en: WelcomeEmailEN,
57
147
  fr: WelcomeEmailFR,
58
- es: WelcomeEmailES
148
+ es: WelcomeEmailES,
149
+ ru: WelcomeEmailRU,
150
+ ja: WelcomeEmailJA,
151
+ ko: WelcomeEmailKO,
152
+ zh: WelcomeEmailZH,
153
+ de: WelcomeEmailDE,
154
+ ar: WelcomeEmailAR,
155
+ it: WelcomeEmailIT,
156
+ "en-GB": WelcomeEmailEN_GB,
157
+ pt: WelcomeEmailPT,
158
+ hi: WelcomeEmailHI,
159
+ tr: WelcomeEmailTR,
160
+ pl: WelcomeEmailPL,
161
+ id: WelcomeEmailID,
162
+ vi: WelcomeEmailVI,
163
+ uk: WelcomeEmailUK
59
164
  }, locale),
60
165
  subject: t({
61
166
  en: "Welcome to Intlayer!",
62
167
  fr: "Bienvenue chez Intlayer!",
63
- es: "¡Bienvenido a Intlayer!"
168
+ es: "¡Bienvenido a Intlayer!",
169
+ ru: "Добро пожаловать в Intlayer!",
170
+ ja: "Intlayerへようこそ!",
171
+ ko: "Intlayer에 오신 것을 환영합니다!",
172
+ zh: "欢迎来到 Intlayer!",
173
+ de: "Willkommen bei Intlayer!",
174
+ ar: "مرحباً بك في Intlayer!",
175
+ it: "Benvenuto in Intlayer!",
176
+ "en-GB": "Welcome to Intlayer!",
177
+ pt: "Bem-vindo ao Intlayer!",
178
+ hi: "Intlayer में आपका स्वागत है!",
179
+ tr: "Intlayer'a hoş geldiniz!",
180
+ pl: "Witaj w Intlayer!",
181
+ id: "Selamat datang di Intlayer!",
182
+ vi: "Chào mừng bạn đến với Intlayer!",
183
+ uk: "Ласкаво просимо до Intlayer!"
64
184
  }, locale)
65
185
  },
66
186
  magicLink: {
67
187
  template: t({
68
188
  en: MagicLinkEmailEN,
69
189
  fr: MagicLinkEmailFR,
70
- es: MagicLinkEmailES
190
+ es: MagicLinkEmailES,
191
+ ru: MagicLinkEmailRU,
192
+ ja: MagicLinkEmailJA,
193
+ ko: MagicLinkEmailKO,
194
+ zh: MagicLinkEmailZH,
195
+ de: MagicLinkEmailDE,
196
+ ar: MagicLinkEmailAR,
197
+ it: MagicLinkEmailIT,
198
+ "en-GB": MagicLinkEmailEN_GB,
199
+ pt: MagicLinkEmailPT,
200
+ hi: MagicLinkEmailHI,
201
+ tr: MagicLinkEmailTR,
202
+ pl: MagicLinkEmailPL,
203
+ id: MagicLinkEmailID,
204
+ vi: MagicLinkEmailVI,
205
+ uk: MagicLinkEmailUK
71
206
  }, locale),
72
207
  subject: t({
73
208
  en: "Sign in to Intlayer",
74
209
  fr: "Connectez-vous à Intlayer",
75
- es: "Inicia sesión en Intlayer"
210
+ es: "Inicia sesión en Intlayer",
211
+ ru: "Войти в Intlayer",
212
+ ja: "Intlayerにサインイン",
213
+ ko: "Intlayer에 로그인하기",
214
+ zh: "登录到 Intlayer",
215
+ de: "Bei Intlayer anmelden",
216
+ ar: "تسجيل الدخول إلى Intlayer",
217
+ it: "Accedi a Intlayer",
218
+ "en-GB": "Sign in to Intlayer",
219
+ pt: "Entrar no Intlayer",
220
+ hi: "Intlayer में साइन इन करें",
221
+ tr: "Intlayer'a giriş yapın",
222
+ pl: "Zaloguj się do Intlayer",
223
+ id: "Masuk ke Intlayer",
224
+ vi: "Đăng nhập vào Intlayer",
225
+ uk: "Увійти в Intlayer"
76
226
  }, locale)
77
227
  },
78
228
  passwordChangeConfirmation: {
79
229
  template: t({
80
230
  en: PasswordChangeConfirmationEmailEN,
81
231
  fr: PasswordChangeConfirmationEmailFR,
82
- es: PasswordChangeConfirmationEmailES
232
+ es: PasswordChangeConfirmationEmailES,
233
+ ru: PasswordChangeConfirmationEmailRU,
234
+ ja: PasswordChangeConfirmationEmailJA,
235
+ ko: PasswordChangeConfirmationEmailKO,
236
+ zh: PasswordChangeConfirmationEmailZH,
237
+ de: PasswordChangeConfirmationEmailDE,
238
+ ar: PasswordChangeConfirmationEmailAR,
239
+ it: PasswordChangeConfirmationEmailIT,
240
+ "en-GB": PasswordChangeConfirmationEmailEN_GB,
241
+ pt: PasswordChangeConfirmationEmailPT,
242
+ hi: PasswordChangeConfirmationEmailHI,
243
+ tr: PasswordChangeConfirmationEmailTR,
244
+ pl: PasswordChangeConfirmationEmailPL,
245
+ id: PasswordChangeConfirmationEmailID,
246
+ vi: PasswordChangeConfirmationEmailVI,
247
+ uk: PasswordChangeConfirmationEmailUK
83
248
  }, locale),
84
249
  subject: t({
85
250
  en: "Your Intlayer password has been changed",
86
251
  fr: "Votre mot de passe Intlayer a été modifié",
87
- es: "Tu contraseña de Intlayer ha sido cambiada"
252
+ es: "Tu contraseña de Intlayer ha sido cambiada",
253
+ ru: "Ваш пароль Intlayer был изменен",
254
+ ja: "Intlayerのパスワードが変更されました",
255
+ ko: "Intlayer 비밀번호가 변경되었습니다",
256
+ zh: "您的 Intlayer 密码已更改",
257
+ de: "Ihr Intlayer-Passwort wurde geändert",
258
+ ar: "تم تغيير كلمة مرور Intlayer الخاصة بك",
259
+ it: "La tua password Intlayer è stata modificata",
260
+ "en-GB": "Your Intlayer password has been changed",
261
+ pt: "Sua senha do Intlayer foi alterada",
262
+ hi: "आपका Intlayer पासवर्ड बदल दिया गया है",
263
+ tr: "Intlayer şifreniz değiştirildi",
264
+ pl: "Twoje hasło do Intlayer zostało zmienione",
265
+ id: "Kata sandi Intlayer Anda telah diubah",
266
+ vi: "Mật khẩu Intlayer của bạn đã được thay đổi",
267
+ uk: "Ваш пароль Intlayer було змінено"
88
268
  }, locale)
89
269
  },
90
270
  subscriptionPaymentSuccess: {
91
271
  template: t({
92
272
  en: SubscriptionPaymentSuccessEN,
93
273
  fr: SubscriptionPaymentSuccessFR,
94
- es: SubscriptionPaymentSuccessES
95
- }),
274
+ es: SubscriptionPaymentSuccessES,
275
+ ru: SubscriptionPaymentSuccessRU,
276
+ ja: SubscriptionPaymentSuccessJA,
277
+ ko: SubscriptionPaymentSuccessKO,
278
+ zh: SubscriptionPaymentSuccessZH,
279
+ de: SubscriptionPaymentSuccessDE,
280
+ ar: SubscriptionPaymentSuccessAR,
281
+ it: SubscriptionPaymentSuccessIT,
282
+ "en-GB": SubscriptionPaymentSuccessEN_GB,
283
+ pt: SubscriptionPaymentSuccessPT,
284
+ hi: SubscriptionPaymentSuccessHI,
285
+ tr: SubscriptionPaymentSuccessTR,
286
+ pl: SubscriptionPaymentSuccessPL,
287
+ id: SubscriptionPaymentSuccessID,
288
+ vi: SubscriptionPaymentSuccessVI,
289
+ uk: SubscriptionPaymentSuccessUK
290
+ }, locale),
96
291
  subject: t({
97
292
  en: "Your payment for Intlayer subscription is confirmed",
98
293
  fr: "Votre paiement pour l'abonnement Intlayer est confirmé",
99
- es: "Tu pago por la suscripción de Intlayer ha sido confirmado"
100
- })
294
+ es: "Tu pago por la suscripción de Intlayer ha sido confirmado",
295
+ ru: "Ваш платеж за подписку Intlayer подтвержден",
296
+ ja: "Intlayerサブスクリプションの支払いが確認されました",
297
+ ko: "Intlayer 구독 결제가 완료되었습니다",
298
+ zh: "您的 Intlayer 订阅付款已确认",
299
+ de: "Ihre Zahlung für das Intlayer-Abonnement wurde bestätigt",
300
+ ar: "تم تأكيد دفعك لاشتراك Intlayer",
301
+ it: "Il tuo pagamento per l'abbonamento Intlayer è confermato",
302
+ "en-GB": "Your payment for Intlayer subscription is confirmed",
303
+ pt: "Seu pagamento para a assinatura Intlayer está confirmado",
304
+ hi: "Intlayer सदस्यता के लिए आपका भुगतान पुष्ट हो गया है",
305
+ tr: "Intlayer aboneliği için ödemeniz onaylandı",
306
+ pl: "Twoja płatność za subskrypcję Intlayer została potwierdzona",
307
+ id: "Pembayaran Anda untuk langganan Intlayer telah dikonfirmasi",
308
+ vi: "Thanh toán cho gói thuê bao Intlayer của bạn đã được xác nhận",
309
+ uk: "Ваш платіж за підписку Intlayer підтверджено"
310
+ }, locale)
101
311
  },
102
312
  subscriptionPaymentCancellation: {
103
313
  template: t({
104
314
  en: SubscriptionPaymentCancellationEN,
105
315
  fr: SubscriptionPaymentCancellationFR,
106
- es: SubscriptionPaymentCancellationES
107
- }),
316
+ es: SubscriptionPaymentCancellationES,
317
+ ru: SubscriptionPaymentCancellationRU,
318
+ ja: SubscriptionPaymentCancellationJA,
319
+ ko: SubscriptionPaymentCancellationKO,
320
+ zh: SubscriptionPaymentCancellationZH,
321
+ de: SubscriptionPaymentCancellationDE,
322
+ ar: SubscriptionPaymentCancellationAR,
323
+ it: SubscriptionPaymentCancellationIT,
324
+ "en-GB": SubscriptionPaymentCancellationEN_GB,
325
+ pt: SubscriptionPaymentCancellationPT,
326
+ hi: SubscriptionPaymentCancellationHI,
327
+ tr: SubscriptionPaymentCancellationTR,
328
+ pl: SubscriptionPaymentCancellationPL,
329
+ id: SubscriptionPaymentCancellationID,
330
+ vi: SubscriptionPaymentCancellationVI,
331
+ uk: SubscriptionPaymentCancellationUK
332
+ }, locale),
108
333
  subject: t({
109
334
  en: "Your Intlayer subscription has been canceled",
110
335
  fr: "Votre abonnement Intlayer a été annulé",
111
- es: "Tu suscripción de Intlayer ha sido cancelada"
112
- })
336
+ es: "Tu suscripción de Intlayer ha sido cancelada",
337
+ ru: "Ваша подписка Intlayer была отменена",
338
+ ja: "Intlayerサブスクリプションがキャンセルされました",
339
+ ko: "Intlayer 구독이 취소되었습니다",
340
+ zh: "您的 Intlayer 订阅已取消",
341
+ de: "Ihr Intlayer-Abonnement wurde gekündigt",
342
+ ar: "تم إلغاء اشتراك Intlayer الخاص بك",
343
+ it: "Il tuo abbonamento Intlayer è stato annullato",
344
+ "en-GB": "Your Intlayer subscription has been cancelled",
345
+ pt: "Sua assinatura do Intlayer foi cancelada",
346
+ hi: "आपकी Intlayer सदस्यता रद्द कर दी गई है",
347
+ tr: "Intlayer aboneliğiniz iptal edildi",
348
+ pl: "Twoja subskrypcja Intlayer została anulowana",
349
+ id: "Langganan Intlayer Anda telah dibatalkan",
350
+ vi: "Gói thuê bao Intlayer của bạn đã bị hủy",
351
+ uk: "Вашу підписку Intlayer скасовано"
352
+ }, locale)
113
353
  },
114
354
  subscriptionPaymentError: {
115
355
  template: t({
116
356
  en: SubscriptionPaymentErrorEN,
117
357
  fr: SubscriptionPaymentErrorFR,
118
- es: SubscriptionPaymentErrorES
119
- }),
358
+ es: SubscriptionPaymentErrorES,
359
+ ru: SubscriptionPaymentErrorRU,
360
+ ja: SubscriptionPaymentErrorJA,
361
+ ko: SubscriptionPaymentErrorKO,
362
+ zh: SubscriptionPaymentErrorZH,
363
+ de: SubscriptionPaymentErrorDE,
364
+ ar: SubscriptionPaymentErrorAR,
365
+ it: SubscriptionPaymentErrorIT,
366
+ "en-GB": SubscriptionPaymentErrorEN_GB,
367
+ pt: SubscriptionPaymentErrorPT,
368
+ hi: SubscriptionPaymentErrorHI,
369
+ tr: SubscriptionPaymentErrorTR,
370
+ pl: SubscriptionPaymentErrorPL,
371
+ id: SubscriptionPaymentErrorID,
372
+ vi: SubscriptionPaymentErrorVI,
373
+ uk: SubscriptionPaymentErrorUK
374
+ }, locale),
120
375
  subject: t({
121
376
  en: "There was an issue with your Intlayer subscription payment",
122
377
  fr: "Un problème est survenu avec votre paiement pour l'abonnement Intlayer",
123
- es: "Hubo un problema con el pago de tu suscripción de Intlayer"
124
- })
378
+ es: "Hubo un problema con el pago de tu suscripción de Intlayer",
379
+ ru: "Возникла проблема с оплатой подписки Intlayer",
380
+ ja: "Intlayerサブスクリプションの支払いに問題が発生しました",
381
+ ko: "Intlayer 구독 결제 중 문제가 발생했습니다",
382
+ zh: "您的 Intlayer 订阅付款出现问题",
383
+ de: "Es gab ein Problem mit Ihrer Intlayer-Abonnementzahlung",
384
+ ar: "كانت هناك مشكلة في دفع اشتراك Intlayer الخاص بك",
385
+ it: "C'è stato un problema con il pagamento dell'abbonamento Intlayer",
386
+ "en-GB": "There was an issue with your Intlayer subscription payment",
387
+ pt: "Houve um problema com o pagamento da sua assinatura Intlayer",
388
+ hi: "आपकी Intlayer सदस्यता के भुगतान में कोई समस्या थी",
389
+ tr: "Intlayer abonelik ödemenizde bir sorun oluştu",
390
+ pl: "Wystąpił problem z płatnością za subskrypcję Intlayer",
391
+ id: "Terjadi masalah dengan pembayaran langganan Intlayer Anda",
392
+ vi: "Đã xảy ra vấn đề với việc thanh toán gói thuê bao Intlayer của bạn",
393
+ uk: "Виникла проблема з оплатою підписки Intlayer"
394
+ }, locale)
125
395
  },
126
396
  oAuthTokenCreated: {
127
397
  template: t({
128
398
  en: OAuthTokenCreatedEmailEN,
129
399
  fr: OAuthTokenCreatedEmailFR,
130
- es: OAuthTokenCreatedEmailES
131
- }),
400
+ es: OAuthTokenCreatedEmailES,
401
+ ru: OAuthTokenCreatedEmailRU,
402
+ ja: OAuthTokenCreatedEmailJA,
403
+ ko: OAuthTokenCreatedEmailKO,
404
+ zh: OAuthTokenCreatedEmailZH,
405
+ de: OAuthTokenCreatedEmailDE,
406
+ ar: OAuthTokenCreatedEmailAR,
407
+ it: OAuthTokenCreatedEmailIT,
408
+ "en-GB": OAuthTokenCreatedEmailEN_GB,
409
+ pt: OAuthTokenCreatedEmailPT,
410
+ hi: OAuthTokenCreatedEmailHI,
411
+ tr: OAuthTokenCreatedEmailTR,
412
+ pl: OAuthTokenCreatedEmailPL,
413
+ id: OAuthTokenCreatedEmailID,
414
+ vi: OAuthTokenCreatedEmailVI,
415
+ uk: OAuthTokenCreatedEmailUK
416
+ }, locale),
132
417
  subject: t({
133
418
  en: "A third-party OAuth application has been added to your Intlayer account",
134
419
  fr: "Une application OAuth tierce a été ajoutée à votre compte Intlayer",
135
- es: "Una aplicación OAuth de terceros ha sido añadida a tu cuenta de Intlayer"
136
- })
420
+ es: "Una aplicación OAuth de terceros ha sido añadida a tu cuenta de Intlayer",
421
+ ru: "Стороннее приложение OAuth было добавлено в ваш аккаунт Intlayer",
422
+ ja: "サードパーティのOAuthアプリケーションがIntlayerアカウントに追加されました",
423
+ ko: "제3자 OAuth 애플리케이션이 Intlayer 계정에 추가되었습니다",
424
+ zh: "一个第三方 OAuth 应用程序已添加到您的 Intlayer 帐户",
425
+ de: "Eine OAuth-Anwendung eines Drittanbieters wurde Ihrem Intlayer-Konto hinzugefügt",
426
+ ar: "تمت إضافة تطبيق OAuth لجهة خارجية إلى حساب Intlayer الخاص بك",
427
+ it: "Un'applicazione OAuth di terze parti è stata aggiunta al tuo account Intlayer",
428
+ "en-GB": "A third-party OAuth application has been added to your Intlayer account",
429
+ pt: "Um aplicativo OAuth de terceiros foi adicionado à sua conta do Intlayer",
430
+ hi: "आपके Intlayer खाते में एक तृतीय-पक्ष OAuth एप्लिकेशन जोड़ा गया है",
431
+ tr: "Intlayer hesabınıza üçüncü taraf bir OAuth uygulaması eklendi",
432
+ pl: "Do Twojego konta Intlayer dodano aplikację OAuth innej firmy",
433
+ id: "Aplikasi OAuth pihak ketiga telah ditambahkan ke akun Intlayer Anda",
434
+ vi: "Một ứng dụng OAuth của bên thứ ba đã được thêm vào tài khoản Intlayer của bạn",
435
+ uk: "До вашого облікового запису Intlayer додано сторонній додаток OAuth"
436
+ }, locale)
137
437
  }
138
438
  });
139
439
  const sendEmail = async ({ type, to, subject, locale, ...props }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"email.service.mjs","names":["EmailComponent"],"sources":["../../../src/services/email.service.tsx"],"sourcesContent":["import {\n InviteUserEmailEN,\n InviteUserEmailES,\n InviteUserEmailFR,\n} from '@emails/InviteUserEmail';\nimport {\n MagicLinkEmailEN,\n MagicLinkEmailES,\n MagicLinkEmailFR,\n} from '@emails/MagicLinkEmail';\nimport {\n OAuthTokenCreatedEmailEN,\n OAuthTokenCreatedEmailES,\n OAuthTokenCreatedEmailFR,\n} from '@emails/OAuthTokenCreatedEmail';\nimport {\n PasswordChangeConfirmationEmailEN,\n PasswordChangeConfirmationEmailES,\n PasswordChangeConfirmationEmailFR,\n} from '@emails/PasswordChangeConfirmation';\nimport {\n ResetPasswordEmailEN,\n ResetPasswordEmailES,\n ResetPasswordEmailFR,\n} from '@emails/ResetUserPassword';\n\nimport {\n SubscriptionPaymentCancellationEN,\n SubscriptionPaymentCancellationES,\n SubscriptionPaymentCancellationFR,\n} from '@emails/SubscriptionPaymentCancellation';\nimport {\n SubscriptionPaymentErrorEN,\n SubscriptionPaymentErrorES,\n SubscriptionPaymentErrorFR,\n} from '@emails/SubscriptionPaymentError';\nimport {\n SubscriptionPaymentSuccessEN,\n SubscriptionPaymentSuccessES,\n SubscriptionPaymentSuccessFR,\n} from '@emails/SubscriptionPaymentSuccess';\nimport {\n ValidateUserEmailEN,\n ValidateUserEmailES,\n ValidateUserEmailFR,\n} from '@emails/ValidateUserEmail';\nimport {\n WelcomeEmailEN,\n WelcomeEmailES,\n WelcomeEmailFR,\n} from '@emails/Welcome';\nimport type { Locale } from '@intlayer/types/allLocales';\nimport { logger } from '@logger';\nimport { t } from 'fastify-intlayer';\nimport type { ComponentProps, JSX } from 'react';\nimport { Resend } from 'resend';\n\ntype EmailComponentsType = (...props: any) => JSX.Element;\ntype EmailComponents = {\n [key: string]: {\n template: EmailComponentsType;\n subject: string;\n };\n};\n\nconst getEmailComponents = (locale?: Locale) =>\n ({\n invite: {\n template: t(\n {\n en: InviteUserEmailEN,\n fr: InviteUserEmailFR,\n es: InviteUserEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'You have been invited to join Intlayer',\n fr: 'Vous êtes invité à rejoindre Intlayer',\n es: 'Has sido invitado a unirte a Intlayer',\n },\n locale\n ),\n },\n validate: {\n template: t(\n {\n en: ValidateUserEmailEN,\n fr: ValidateUserEmailFR,\n es: ValidateUserEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Validate your email for Intlayer',\n fr: 'Validez votre email pour Intlayer',\n es: 'Valida tu correo electrónico para Intlayer',\n },\n locale\n ),\n },\n resetPassword: {\n template: t(\n {\n en: ResetPasswordEmailEN,\n fr: ResetPasswordEmailFR,\n es: ResetPasswordEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Reset your password for Intlayer',\n fr: 'Réinitialisez votre mot de passe pour Intlayer',\n es: 'Restablece tu contraseña para Intlayer',\n },\n locale\n ),\n },\n welcome: {\n template: t(\n {\n en: WelcomeEmailEN,\n fr: WelcomeEmailFR,\n es: WelcomeEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Welcome to Intlayer!',\n fr: 'Bienvenue chez Intlayer!',\n es: '¡Bienvenido a Intlayer!',\n },\n locale\n ),\n },\n magicLink: {\n template: t(\n {\n en: MagicLinkEmailEN,\n fr: MagicLinkEmailFR,\n es: MagicLinkEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Sign in to Intlayer',\n fr: 'Connectez-vous à Intlayer',\n es: 'Inicia sesión en Intlayer',\n },\n locale\n ),\n },\n passwordChangeConfirmation: {\n template: t(\n {\n en: PasswordChangeConfirmationEmailEN,\n fr: PasswordChangeConfirmationEmailFR,\n es: PasswordChangeConfirmationEmailES,\n },\n locale\n ),\n subject: t(\n {\n en: 'Your Intlayer password has been changed',\n fr: 'Votre mot de passe Intlayer a été modifié',\n es: 'Tu contraseña de Intlayer ha sido cambiada',\n },\n locale\n ),\n },\n subscriptionPaymentSuccess: {\n template: t({\n en: SubscriptionPaymentSuccessEN,\n fr: SubscriptionPaymentSuccessFR,\n es: SubscriptionPaymentSuccessES,\n }),\n subject: t({\n en: 'Your payment for Intlayer subscription is confirmed',\n fr: \"Votre paiement pour l'abonnement Intlayer est confirmé\",\n es: 'Tu pago por la suscripción de Intlayer ha sido confirmado',\n }),\n },\n subscriptionPaymentCancellation: {\n template: t({\n en: SubscriptionPaymentCancellationEN,\n fr: SubscriptionPaymentCancellationFR,\n es: SubscriptionPaymentCancellationES,\n }),\n subject: t({\n en: 'Your Intlayer subscription has been canceled',\n fr: 'Votre abonnement Intlayer a été annulé',\n es: 'Tu suscripción de Intlayer ha sido cancelada',\n }),\n },\n subscriptionPaymentError: {\n template: t({\n en: SubscriptionPaymentErrorEN,\n fr: SubscriptionPaymentErrorFR,\n es: SubscriptionPaymentErrorES,\n }),\n subject: t({\n en: 'There was an issue with your Intlayer subscription payment',\n fr: \"Un problème est survenu avec votre paiement pour l'abonnement Intlayer\",\n es: 'Hubo un problema con el pago de tu suscripción de Intlayer',\n }),\n },\n oAuthTokenCreated: {\n template: t({\n en: OAuthTokenCreatedEmailEN,\n fr: OAuthTokenCreatedEmailFR,\n es: OAuthTokenCreatedEmailES,\n }),\n subject: t({\n en: 'A third-party OAuth application has been added to your Intlayer account',\n fr: 'Une application OAuth tierce a été ajoutée à votre compte Intlayer',\n es: 'Una aplicación OAuth de terceros ha sido añadida a tu cuenta de Intlayer',\n }),\n },\n }) satisfies EmailComponents;\n\ntype EmailType = keyof ReturnType<typeof getEmailComponents>;\n\nexport type SendEmailProps<T extends EmailType> = {\n type: T;\n to: string;\n subject?: string;\n locale?: Locale;\n} & ComponentProps<ReturnType<typeof getEmailComponents>[T]['template']>;\n\nexport const sendEmail = async <T extends EmailType>({\n type,\n to,\n subject,\n locale,\n ...props\n}: SendEmailProps<T>) => {\n const resend = new Resend(process.env.RESEND_API_KEY);\n\n const emailComponents = getEmailComponents(locale);\n\n const { template, subject: baseSubject } = emailComponents[type];\n\n type EmailComponentType = (typeof emailComponents)[T]['template'];\n\n const EmailComponent: EmailComponentType = template;\n\n const react = <EmailComponent {...(props as any)} />;\n\n await resend.emails\n .send({\n from: 'Intlayer <no-reply@intlayer.org>',\n to,\n subject: subject ?? baseSubject,\n react,\n })\n .catch((err) => logger.error(err));\n\n logger.info(`Email sent ${type} to ${to}`);\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAiEA,MAAM,sBAAsB,YACzB;CACC,QAAQ;EACN,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,UAAU;EACR,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,eAAe;EACb,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,SAAS;EACP,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,WAAW;EACT,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,4BAA4B;EAC1B,UAAU,EACR;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACD,SAAS,EACP;GACE,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,EACD,OACD;EACF;CACD,4BAA4B;EAC1B,UAAU,EAAE;GACV,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,SAAS,EAAE;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACD,iCAAiC;EAC/B,UAAU,EAAE;GACV,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,SAAS,EAAE;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACD,0BAA0B;EACxB,UAAU,EAAE;GACV,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,SAAS,EAAE;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACD,mBAAmB;EACjB,UAAU,EAAE;GACV,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACF,SAAS,EAAE;GACT,IAAI;GACJ,IAAI;GACJ,IAAI;GACL,CAAC;EACH;CACF;AAWH,MAAa,YAAY,OAA4B,EACnD,MACA,IACA,SACA,QACA,GAAG,YACoB;CACvB,MAAM,SAAS,IAAI,OAAO,QAAQ,IAAI,eAAe;CAIrD,MAAM,EAAE,UAAU,SAAS,gBAFH,mBAAmB,OAEe,CAAC;CAM3D,MAAM,QAAQ,oBAACA,UAAD,EAAgB,GAAK,OAAiB;AAEpD,OAAM,OAAO,OACV,KAAK;EACJ,MAAM;EACN;EACA,SAAS,WAAW;EACpB;EACD,CAAC,CACD,OAAO,QAAQ,OAAO,MAAM,IAAI,CAAC;AAEpC,QAAO,KAAK,cAAc,KAAK,MAAM,KAAK"}
1
+ {"version":3,"file":"email.service.mjs","names":["EmailComponent"],"sources":["../../../src/services/email.service.tsx"],"sourcesContent":["import {\n InviteUserEmailAR,\n InviteUserEmailDE,\n InviteUserEmailEN,\n InviteUserEmailEN_GB,\n InviteUserEmailES,\n InviteUserEmailFR,\n InviteUserEmailHI,\n InviteUserEmailID,\n InviteUserEmailIT,\n InviteUserEmailJA,\n InviteUserEmailKO,\n InviteUserEmailPL,\n InviteUserEmailPT,\n InviteUserEmailRU,\n InviteUserEmailTR,\n InviteUserEmailUK,\n InviteUserEmailVI,\n InviteUserEmailZH,\n} from '@emails/InviteUserEmail';\nimport {\n MagicLinkEmailAR,\n MagicLinkEmailDE,\n MagicLinkEmailEN,\n MagicLinkEmailEN_GB,\n MagicLinkEmailES,\n MagicLinkEmailFR,\n MagicLinkEmailHI,\n MagicLinkEmailID,\n MagicLinkEmailIT,\n MagicLinkEmailJA,\n MagicLinkEmailKO,\n MagicLinkEmailPL,\n MagicLinkEmailPT,\n MagicLinkEmailRU,\n MagicLinkEmailTR,\n MagicLinkEmailUK,\n MagicLinkEmailVI,\n MagicLinkEmailZH,\n} from '@emails/MagicLinkEmail';\nimport {\n OAuthTokenCreatedEmailAR,\n OAuthTokenCreatedEmailDE,\n OAuthTokenCreatedEmailEN,\n OAuthTokenCreatedEmailEN_GB,\n OAuthTokenCreatedEmailES,\n OAuthTokenCreatedEmailFR,\n OAuthTokenCreatedEmailHI,\n OAuthTokenCreatedEmailID,\n OAuthTokenCreatedEmailIT,\n OAuthTokenCreatedEmailJA,\n OAuthTokenCreatedEmailKO,\n OAuthTokenCreatedEmailPL,\n OAuthTokenCreatedEmailPT,\n OAuthTokenCreatedEmailRU,\n OAuthTokenCreatedEmailTR,\n OAuthTokenCreatedEmailUK,\n OAuthTokenCreatedEmailVI,\n OAuthTokenCreatedEmailZH,\n} from '@emails/OAuthTokenCreatedEmail';\nimport {\n PasswordChangeConfirmationEmailAR,\n PasswordChangeConfirmationEmailDE,\n PasswordChangeConfirmationEmailEN,\n PasswordChangeConfirmationEmailEN_GB,\n PasswordChangeConfirmationEmailES,\n PasswordChangeConfirmationEmailFR,\n PasswordChangeConfirmationEmailHI,\n PasswordChangeConfirmationEmailID,\n PasswordChangeConfirmationEmailIT,\n PasswordChangeConfirmationEmailJA,\n PasswordChangeConfirmationEmailKO,\n PasswordChangeConfirmationEmailPL,\n PasswordChangeConfirmationEmailPT,\n PasswordChangeConfirmationEmailRU,\n PasswordChangeConfirmationEmailTR,\n PasswordChangeConfirmationEmailUK,\n PasswordChangeConfirmationEmailVI,\n PasswordChangeConfirmationEmailZH,\n} from '@emails/PasswordChangeConfirmation';\nimport {\n ResetPasswordEmailAR,\n ResetPasswordEmailDE,\n ResetPasswordEmailEN,\n ResetPasswordEmailEN_GB,\n ResetPasswordEmailES,\n ResetPasswordEmailFR,\n ResetPasswordEmailHI,\n ResetPasswordEmailID,\n ResetPasswordEmailIT,\n ResetPasswordEmailJA,\n ResetPasswordEmailKO,\n ResetPasswordEmailPL,\n ResetPasswordEmailPT,\n ResetPasswordEmailRU,\n ResetPasswordEmailTR,\n ResetPasswordEmailUK,\n ResetPasswordEmailVI,\n ResetPasswordEmailZH,\n} from '@emails/ResetUserPassword';\nimport {\n SubscriptionPaymentCancellationAR,\n SubscriptionPaymentCancellationDE,\n SubscriptionPaymentCancellationEN,\n SubscriptionPaymentCancellationEN_GB,\n SubscriptionPaymentCancellationES,\n SubscriptionPaymentCancellationFR,\n SubscriptionPaymentCancellationHI,\n SubscriptionPaymentCancellationID,\n SubscriptionPaymentCancellationIT,\n SubscriptionPaymentCancellationJA,\n SubscriptionPaymentCancellationKO,\n SubscriptionPaymentCancellationPL,\n SubscriptionPaymentCancellationPT,\n SubscriptionPaymentCancellationRU,\n SubscriptionPaymentCancellationTR,\n SubscriptionPaymentCancellationUK,\n SubscriptionPaymentCancellationVI,\n SubscriptionPaymentCancellationZH,\n} from '@emails/SubscriptionPaymentCancellation';\nimport {\n SubscriptionPaymentErrorAR,\n SubscriptionPaymentErrorDE,\n SubscriptionPaymentErrorEN,\n SubscriptionPaymentErrorEN_GB,\n SubscriptionPaymentErrorES,\n SubscriptionPaymentErrorFR,\n SubscriptionPaymentErrorHI,\n SubscriptionPaymentErrorID,\n SubscriptionPaymentErrorIT,\n SubscriptionPaymentErrorJA,\n SubscriptionPaymentErrorKO,\n SubscriptionPaymentErrorPL,\n SubscriptionPaymentErrorPT,\n SubscriptionPaymentErrorRU,\n SubscriptionPaymentErrorTR,\n SubscriptionPaymentErrorUK,\n SubscriptionPaymentErrorVI,\n SubscriptionPaymentErrorZH,\n} from '@emails/SubscriptionPaymentError';\nimport {\n SubscriptionPaymentSuccessAR,\n SubscriptionPaymentSuccessDE,\n SubscriptionPaymentSuccessEN,\n SubscriptionPaymentSuccessEN_GB,\n SubscriptionPaymentSuccessES,\n SubscriptionPaymentSuccessFR,\n SubscriptionPaymentSuccessHI,\n SubscriptionPaymentSuccessID,\n SubscriptionPaymentSuccessIT,\n SubscriptionPaymentSuccessJA,\n SubscriptionPaymentSuccessKO,\n SubscriptionPaymentSuccessPL,\n SubscriptionPaymentSuccessPT,\n SubscriptionPaymentSuccessRU,\n SubscriptionPaymentSuccessTR,\n SubscriptionPaymentSuccessUK,\n SubscriptionPaymentSuccessVI,\n SubscriptionPaymentSuccessZH,\n} from '@emails/SubscriptionPaymentSuccess';\nimport {\n ValidateUserEmailAR,\n ValidateUserEmailDE,\n ValidateUserEmailEN,\n ValidateUserEmailEN_GB,\n ValidateUserEmailES,\n ValidateUserEmailFR,\n ValidateUserEmailHI,\n ValidateUserEmailID,\n ValidateUserEmailIT,\n ValidateUserEmailJA,\n ValidateUserEmailKO,\n ValidateUserEmailPL,\n ValidateUserEmailPT,\n ValidateUserEmailRU,\n ValidateUserEmailTR,\n ValidateUserEmailUK,\n ValidateUserEmailVI,\n ValidateUserEmailZH,\n} from '@emails/ValidateUserEmail';\nimport {\n WelcomeEmailAR,\n WelcomeEmailDE,\n WelcomeEmailEN,\n WelcomeEmailEN_GB,\n WelcomeEmailES,\n WelcomeEmailFR,\n WelcomeEmailHI,\n WelcomeEmailID,\n WelcomeEmailIT,\n WelcomeEmailJA,\n WelcomeEmailKO,\n WelcomeEmailPL,\n WelcomeEmailPT,\n WelcomeEmailRU,\n WelcomeEmailTR,\n WelcomeEmailUK,\n WelcomeEmailVI,\n WelcomeEmailZH,\n} from '@emails/Welcome';\nimport type { Locale } from '@intlayer/types/allLocales';\nimport { logger } from '@logger';\nimport { t } from 'fastify-intlayer';\nimport type { ComponentProps, JSX } from 'react';\nimport { Resend } from 'resend';\n\ntype EmailComponentsType = (...props: any) => JSX.Element;\ntype EmailComponents = {\n [key: string]: {\n template: EmailComponentsType;\n subject: string;\n };\n};\n\nconst getEmailComponents = (locale?: Locale) =>\n ({\n invite: {\n template: t(\n {\n en: InviteUserEmailEN,\n fr: InviteUserEmailFR,\n es: InviteUserEmailES,\n ru: InviteUserEmailRU,\n ja: InviteUserEmailJA,\n ko: InviteUserEmailKO,\n zh: InviteUserEmailZH,\n de: InviteUserEmailDE,\n ar: InviteUserEmailAR,\n it: InviteUserEmailIT,\n 'en-GB': InviteUserEmailEN_GB,\n pt: InviteUserEmailPT,\n hi: InviteUserEmailHI,\n tr: InviteUserEmailTR,\n pl: InviteUserEmailPL,\n id: InviteUserEmailID,\n vi: InviteUserEmailVI,\n uk: InviteUserEmailUK,\n },\n locale\n ),\n subject: t(\n {\n en: 'You have been invited to join Intlayer',\n fr: 'Vous êtes invité à rejoindre Intlayer',\n es: 'Has sido invitado a unirte a Intlayer',\n ru: 'Вы были приглашены присоединиться к Intlayer',\n ja: 'Intlayerへの招待が届きました',\n ko: 'Intlayer에 초대되었습니다',\n zh: '您已受邀加入 Intlayer',\n de: 'Sie wurden eingeladen, Intlayer beizutreten',\n ar: 'لقد تم دعوتك للانضمام إلى Intlayer',\n it: 'Sei stato invitato a unirti a Intlayer',\n 'en-GB': 'You have been invited to join Intlayer',\n pt: 'Você foi convidado a se juntar ao Intlayer',\n hi: 'आपको Intlayer में शामिल होने के लिए आमंत्रित किया गया है',\n tr: \"Intlayer'a katılmanız için davet edildiniz\",\n pl: 'Zostałeś zaproszony do dołączenia do Intlayer',\n id: 'Anda telah diundang untuk bergabung dengan Intlayer',\n vi: 'Bạn đã được mời tham gia Intlayer',\n uk: 'Вас запросили приєднатися до Intlayer',\n },\n locale\n ),\n },\n validate: {\n template: t(\n {\n en: ValidateUserEmailEN,\n fr: ValidateUserEmailFR,\n es: ValidateUserEmailES,\n ru: ValidateUserEmailRU,\n ja: ValidateUserEmailJA,\n ko: ValidateUserEmailKO,\n zh: ValidateUserEmailZH,\n de: ValidateUserEmailDE,\n ar: ValidateUserEmailAR,\n it: ValidateUserEmailIT,\n 'en-GB': ValidateUserEmailEN_GB,\n pt: ValidateUserEmailPT,\n hi: ValidateUserEmailHI,\n tr: ValidateUserEmailTR,\n pl: ValidateUserEmailPL,\n id: ValidateUserEmailID,\n vi: ValidateUserEmailVI,\n uk: ValidateUserEmailUK,\n },\n locale\n ),\n subject: t(\n {\n en: 'Validate your email for Intlayer',\n fr: 'Validez votre email pour Intlayer',\n es: 'Valida tu correo electrónico para Intlayer',\n ru: 'Подтвердите свой адрес электронной почты для Intlayer',\n ja: 'Intlayerのメールアドレスを認証してください',\n ko: 'Intlayer 이메일 주소를 인증해 주세요',\n zh: '验证您的 Intlayer 电子邮件',\n de: 'Bestätigen Sie Ihre E-Mail für Intlayer',\n ar: 'تأكيد بريدك الإلكتروني لـ Intlayer',\n it: 'Conferma la tua email per Intlayer',\n 'en-GB': 'Validate your email for Intlayer',\n pt: 'Valide seu e-mail para Intlayer',\n hi: 'Intlayer के लिए अपना ईमेल सत्यापित करें',\n tr: 'Intlayer için e-postanızı doğrulayın',\n pl: 'Zweryfikuj swój e-mail dla Intlayer',\n id: 'Validasi email Anda per Intlayer',\n vi: 'Xác thực email của bạn cho Intlayer',\n uk: 'Підтвердьте свою електронну пошту для Intlayer',\n },\n locale\n ),\n },\n resetPassword: {\n template: t(\n {\n en: ResetPasswordEmailEN,\n fr: ResetPasswordEmailFR,\n es: ResetPasswordEmailES,\n ru: ResetPasswordEmailRU,\n ja: ResetPasswordEmailJA,\n ko: ResetPasswordEmailKO,\n zh: ResetPasswordEmailZH,\n de: ResetPasswordEmailDE,\n ar: ResetPasswordEmailAR,\n it: ResetPasswordEmailIT,\n 'en-GB': ResetPasswordEmailEN_GB,\n pt: ResetPasswordEmailPT,\n hi: ResetPasswordEmailHI,\n tr: ResetPasswordEmailTR,\n pl: ResetPasswordEmailPL,\n id: ResetPasswordEmailID,\n vi: ResetPasswordEmailVI,\n uk: ResetPasswordEmailUK,\n },\n locale\n ),\n subject: t(\n {\n en: 'Reset your password for Intlayer',\n fr: 'Réinitialisez votre mot de passe pour Intlayer',\n es: 'Restablece tu contraseña para Intlayer',\n ru: 'Сброс пароля для Intlayer',\n ja: 'Intlayerのパスワードをリセットしてください',\n ko: 'Intlayer 비밀번호를 재설정해 주세요',\n zh: '重置您的 Intlayer 密码',\n de: 'Setzen Sie Ihr Passwort für Intlayer zurück',\n ar: 'إعادة تعيين كلمة المرور لـ Intlayer',\n it: 'Reimposta la tua password per Intlayer',\n 'en-GB': 'Reset your password for Intlayer',\n pt: 'Redefina sua senha para Intlayer',\n hi: 'Intlayer के लिए अपना पासवर्ड रीसेट करें',\n tr: 'Intlayer için şifrenizi sıfırlayın',\n pl: 'Zresetuj swoje hasło do Intlayer',\n id: 'Reset kata sandi Anda untuk Intlayer',\n vi: 'Đặt lại mật khẩu của bạn cho Intlayer',\n uk: 'Скидання пароля для Intlayer',\n },\n locale\n ),\n },\n welcome: {\n template: t(\n {\n en: WelcomeEmailEN,\n fr: WelcomeEmailFR,\n es: WelcomeEmailES,\n ru: WelcomeEmailRU,\n ja: WelcomeEmailJA,\n ko: WelcomeEmailKO,\n zh: WelcomeEmailZH,\n de: WelcomeEmailDE,\n ar: WelcomeEmailAR,\n it: WelcomeEmailIT,\n 'en-GB': WelcomeEmailEN_GB,\n pt: WelcomeEmailPT,\n hi: WelcomeEmailHI,\n tr: WelcomeEmailTR,\n pl: WelcomeEmailPL,\n id: WelcomeEmailID,\n vi: WelcomeEmailVI,\n uk: WelcomeEmailUK,\n },\n locale\n ),\n subject: t(\n {\n en: 'Welcome to Intlayer!',\n fr: 'Bienvenue chez Intlayer!',\n es: '¡Bienvenido a Intlayer!',\n ru: 'Добро пожаловать в Intlayer!',\n ja: 'Intlayerへようこそ!',\n ko: 'Intlayer에 오신 것을 환영합니다!',\n zh: '欢迎来到 Intlayer!',\n de: 'Willkommen bei Intlayer!',\n ar: 'مرحباً بك في Intlayer!',\n it: 'Benvenuto in Intlayer!',\n 'en-GB': 'Welcome to Intlayer!',\n pt: 'Bem-vindo ao Intlayer!',\n hi: 'Intlayer में आपका स्वागत है!',\n tr: \"Intlayer'a hoş geldiniz!\",\n pl: 'Witaj w Intlayer!',\n id: 'Selamat datang di Intlayer!',\n vi: 'Chào mừng bạn đến với Intlayer!',\n uk: 'Ласкаво просимо до Intlayer!',\n },\n locale\n ),\n },\n magicLink: {\n template: t(\n {\n en: MagicLinkEmailEN,\n fr: MagicLinkEmailFR,\n es: MagicLinkEmailES,\n ru: MagicLinkEmailRU,\n ja: MagicLinkEmailJA,\n ko: MagicLinkEmailKO,\n zh: MagicLinkEmailZH,\n de: MagicLinkEmailDE,\n ar: MagicLinkEmailAR,\n it: MagicLinkEmailIT,\n 'en-GB': MagicLinkEmailEN_GB,\n pt: MagicLinkEmailPT,\n hi: MagicLinkEmailHI,\n tr: MagicLinkEmailTR,\n pl: MagicLinkEmailPL,\n id: MagicLinkEmailID,\n vi: MagicLinkEmailVI,\n uk: MagicLinkEmailUK,\n },\n locale\n ),\n subject: t(\n {\n en: 'Sign in to Intlayer',\n fr: 'Connectez-vous à Intlayer',\n es: 'Inicia sesión en Intlayer',\n ru: 'Войти в Intlayer',\n ja: 'Intlayerにサインイン',\n ko: 'Intlayer에 로그인하기',\n zh: '登录到 Intlayer',\n de: 'Bei Intlayer anmelden',\n ar: 'تسجيل الدخول إلى Intlayer',\n it: 'Accedi a Intlayer',\n 'en-GB': 'Sign in to Intlayer',\n pt: 'Entrar no Intlayer',\n hi: 'Intlayer में साइन इन करें',\n tr: \"Intlayer'a giriş yapın\",\n pl: 'Zaloguj się do Intlayer',\n id: 'Masuk ke Intlayer',\n vi: 'Đăng nhập vào Intlayer',\n uk: 'Увійти в Intlayer',\n },\n locale\n ),\n },\n passwordChangeConfirmation: {\n template: t(\n {\n en: PasswordChangeConfirmationEmailEN,\n fr: PasswordChangeConfirmationEmailFR,\n es: PasswordChangeConfirmationEmailES,\n ru: PasswordChangeConfirmationEmailRU,\n ja: PasswordChangeConfirmationEmailJA,\n ko: PasswordChangeConfirmationEmailKO,\n zh: PasswordChangeConfirmationEmailZH,\n de: PasswordChangeConfirmationEmailDE,\n ar: PasswordChangeConfirmationEmailAR,\n it: PasswordChangeConfirmationEmailIT,\n 'en-GB': PasswordChangeConfirmationEmailEN_GB,\n pt: PasswordChangeConfirmationEmailPT,\n hi: PasswordChangeConfirmationEmailHI,\n tr: PasswordChangeConfirmationEmailTR,\n pl: PasswordChangeConfirmationEmailPL,\n id: PasswordChangeConfirmationEmailID,\n vi: PasswordChangeConfirmationEmailVI,\n uk: PasswordChangeConfirmationEmailUK,\n },\n locale\n ),\n subject: t(\n {\n en: 'Your Intlayer password has been changed',\n fr: 'Votre mot de passe Intlayer a été modifié',\n es: 'Tu contraseña de Intlayer ha sido cambiada',\n ru: 'Ваш пароль Intlayer был изменен',\n ja: 'Intlayerのパスワードが変更されました',\n ko: 'Intlayer 비밀번호가 변경되었습니다',\n zh: '您的 Intlayer 密码已更改',\n de: 'Ihr Intlayer-Passwort wurde geändert',\n ar: 'تم تغيير كلمة مرور Intlayer الخاصة بك',\n it: 'La tua password Intlayer è stata modificata',\n 'en-GB': 'Your Intlayer password has been changed',\n pt: 'Sua senha do Intlayer foi alterada',\n hi: 'आपका Intlayer पासवर्ड बदल दिया गया है',\n tr: 'Intlayer şifreniz değiştirildi',\n pl: 'Twoje hasło do Intlayer zostało zmienione',\n id: 'Kata sandi Intlayer Anda telah diubah',\n vi: 'Mật khẩu Intlayer của bạn đã được thay đổi',\n uk: 'Ваш пароль Intlayer було змінено',\n },\n locale\n ),\n },\n subscriptionPaymentSuccess: {\n template: t(\n {\n en: SubscriptionPaymentSuccessEN,\n fr: SubscriptionPaymentSuccessFR,\n es: SubscriptionPaymentSuccessES,\n ru: SubscriptionPaymentSuccessRU,\n ja: SubscriptionPaymentSuccessJA,\n ko: SubscriptionPaymentSuccessKO,\n zh: SubscriptionPaymentSuccessZH,\n de: SubscriptionPaymentSuccessDE,\n ar: SubscriptionPaymentSuccessAR,\n it: SubscriptionPaymentSuccessIT,\n 'en-GB': SubscriptionPaymentSuccessEN_GB,\n pt: SubscriptionPaymentSuccessPT,\n hi: SubscriptionPaymentSuccessHI,\n tr: SubscriptionPaymentSuccessTR,\n pl: SubscriptionPaymentSuccessPL,\n id: SubscriptionPaymentSuccessID,\n vi: SubscriptionPaymentSuccessVI,\n uk: SubscriptionPaymentSuccessUK,\n },\n locale\n ),\n subject: t(\n {\n en: 'Your payment for Intlayer subscription is confirmed',\n fr: \"Votre paiement pour l'abonnement Intlayer est confirmé\",\n es: 'Tu pago por la suscripción de Intlayer ha sido confirmado',\n ru: 'Ваш платеж за подписку Intlayer подтвержден',\n ja: 'Intlayerサブスクリプションの支払いが確認されました',\n ko: 'Intlayer 구독 결제가 완료되었습니다',\n zh: '您的 Intlayer 订阅付款已确认',\n de: 'Ihre Zahlung für das Intlayer-Abonnement wurde bestätigt',\n ar: 'تم تأكيد دفعك لاشتراك Intlayer',\n it: \"Il tuo pagamento per l'abbonamento Intlayer è confermato\",\n 'en-GB': 'Your payment for Intlayer subscription is confirmed',\n pt: 'Seu pagamento para a assinatura Intlayer está confirmado',\n hi: 'Intlayer सदस्यता के लिए आपका भुगतान पुष्ट हो गया है',\n tr: 'Intlayer aboneliği için ödemeniz onaylandı',\n pl: 'Twoja płatność za subskrypcję Intlayer została potwierdzona',\n id: 'Pembayaran Anda untuk langganan Intlayer telah dikonfirmasi',\n vi: 'Thanh toán cho gói thuê bao Intlayer của bạn đã được xác nhận',\n uk: 'Ваш платіж за підписку Intlayer підтверджено',\n },\n locale\n ),\n },\n subscriptionPaymentCancellation: {\n template: t(\n {\n en: SubscriptionPaymentCancellationEN,\n fr: SubscriptionPaymentCancellationFR,\n es: SubscriptionPaymentCancellationES,\n ru: SubscriptionPaymentCancellationRU,\n ja: SubscriptionPaymentCancellationJA,\n ko: SubscriptionPaymentCancellationKO,\n zh: SubscriptionPaymentCancellationZH,\n de: SubscriptionPaymentCancellationDE,\n ar: SubscriptionPaymentCancellationAR,\n it: SubscriptionPaymentCancellationIT,\n 'en-GB': SubscriptionPaymentCancellationEN_GB,\n pt: SubscriptionPaymentCancellationPT,\n hi: SubscriptionPaymentCancellationHI,\n tr: SubscriptionPaymentCancellationTR,\n pl: SubscriptionPaymentCancellationPL,\n id: SubscriptionPaymentCancellationID,\n vi: SubscriptionPaymentCancellationVI,\n uk: SubscriptionPaymentCancellationUK,\n },\n locale\n ),\n subject: t(\n {\n en: 'Your Intlayer subscription has been canceled',\n fr: 'Votre abonnement Intlayer a été annulé',\n es: 'Tu suscripción de Intlayer ha sido cancelada',\n ru: 'Ваша подписка Intlayer была отменена',\n ja: 'Intlayerサブスクリプションがキャンセルされました',\n ko: 'Intlayer 구독이 취소되었습니다',\n zh: '您的 Intlayer 订阅已取消',\n de: 'Ihr Intlayer-Abonnement wurde gekündigt',\n ar: 'تم إلغاء اشتراك Intlayer الخاص بك',\n it: 'Il tuo abbonamento Intlayer è stato annullato',\n 'en-GB': 'Your Intlayer subscription has been cancelled',\n pt: 'Sua assinatura do Intlayer foi cancelada',\n hi: 'आपकी Intlayer सदस्यता रद्द कर दी गई है',\n tr: 'Intlayer aboneliğiniz iptal edildi',\n pl: 'Twoja subskrypcja Intlayer została anulowana',\n id: 'Langganan Intlayer Anda telah dibatalkan',\n vi: 'Gói thuê bao Intlayer của bạn đã bị hủy',\n uk: 'Вашу підписку Intlayer скасовано',\n },\n locale\n ),\n },\n subscriptionPaymentError: {\n template: t(\n {\n en: SubscriptionPaymentErrorEN,\n fr: SubscriptionPaymentErrorFR,\n es: SubscriptionPaymentErrorES,\n ru: SubscriptionPaymentErrorRU,\n ja: SubscriptionPaymentErrorJA,\n ko: SubscriptionPaymentErrorKO,\n zh: SubscriptionPaymentErrorZH,\n de: SubscriptionPaymentErrorDE,\n ar: SubscriptionPaymentErrorAR,\n it: SubscriptionPaymentErrorIT,\n 'en-GB': SubscriptionPaymentErrorEN_GB,\n pt: SubscriptionPaymentErrorPT,\n hi: SubscriptionPaymentErrorHI,\n tr: SubscriptionPaymentErrorTR,\n pl: SubscriptionPaymentErrorPL,\n id: SubscriptionPaymentErrorID,\n vi: SubscriptionPaymentErrorVI,\n uk: SubscriptionPaymentErrorUK,\n },\n locale\n ),\n subject: t(\n {\n en: 'There was an issue with your Intlayer subscription payment',\n fr: \"Un problème est survenu avec votre paiement pour l'abonnement Intlayer\",\n es: 'Hubo un problema con el pago de tu suscripción de Intlayer',\n ru: 'Возникла проблема с оплатой подписки Intlayer',\n ja: 'Intlayerサブスクリプションの支払いに問題が発生しました',\n ko: 'Intlayer 구독 결제 중 문제가 발생했습니다',\n zh: '您的 Intlayer 订阅付款出现问题',\n de: 'Es gab ein Problem mit Ihrer Intlayer-Abonnementzahlung',\n ar: 'كانت هناك مشكلة في دفع اشتراك Intlayer الخاص بك',\n it: \"C'è stato un problema con il pagamento dell'abbonamento Intlayer\",\n 'en-GB': 'There was an issue with your Intlayer subscription payment',\n pt: 'Houve um problema com o pagamento da sua assinatura Intlayer',\n hi: 'आपकी Intlayer सदस्यता के भुगतान में कोई समस्या थी',\n tr: 'Intlayer abonelik ödemenizde bir sorun oluştu',\n pl: 'Wystąpił problem z płatnością za subskrypcję Intlayer',\n id: 'Terjadi masalah dengan pembayaran langganan Intlayer Anda',\n vi: 'Đã xảy ra vấn đề với việc thanh toán gói thuê bao Intlayer của bạn',\n uk: 'Виникла проблема з оплатою підписки Intlayer',\n },\n locale\n ),\n },\n oAuthTokenCreated: {\n template: t(\n {\n en: OAuthTokenCreatedEmailEN,\n fr: OAuthTokenCreatedEmailFR,\n es: OAuthTokenCreatedEmailES,\n ru: OAuthTokenCreatedEmailRU,\n ja: OAuthTokenCreatedEmailJA,\n ko: OAuthTokenCreatedEmailKO,\n zh: OAuthTokenCreatedEmailZH,\n de: OAuthTokenCreatedEmailDE,\n ar: OAuthTokenCreatedEmailAR,\n it: OAuthTokenCreatedEmailIT,\n 'en-GB': OAuthTokenCreatedEmailEN_GB,\n pt: OAuthTokenCreatedEmailPT,\n hi: OAuthTokenCreatedEmailHI,\n tr: OAuthTokenCreatedEmailTR,\n pl: OAuthTokenCreatedEmailPL,\n id: OAuthTokenCreatedEmailID,\n vi: OAuthTokenCreatedEmailVI,\n uk: OAuthTokenCreatedEmailUK,\n },\n locale\n ),\n subject: t(\n {\n en: 'A third-party OAuth application has been added to your Intlayer account',\n fr: 'Une application OAuth tierce a été ajoutée à votre compte Intlayer',\n es: 'Una aplicación OAuth de terceros ha sido añadida a tu cuenta de Intlayer',\n ru: 'Стороннее приложение OAuth было добавлено в ваш аккаунт Intlayer',\n ja: 'サードパーティのOAuthアプリケーションがIntlayerアカウントに追加されました',\n ko: '제3자 OAuth 애플리케이션이 Intlayer 계정에 추가되었습니다',\n zh: '一个第三方 OAuth 应用程序已添加到您的 Intlayer 帐户',\n de: 'Eine OAuth-Anwendung eines Drittanbieters wurde Ihrem Intlayer-Konto hinzugefügt',\n ar: 'تمت إضافة تطبيق OAuth لجهة خارجية إلى حساب Intlayer الخاص بك',\n it: \"Un'applicazione OAuth di terze parti è stata aggiunta al tuo account Intlayer\",\n 'en-GB':\n 'A third-party OAuth application has been added to your Intlayer account',\n pt: 'Um aplicativo OAuth de terceiros foi adicionado à sua conta do Intlayer',\n hi: 'आपके Intlayer खाते में एक तृतीय-पक्ष OAuth एप्लिकेशन जोड़ा गया है',\n tr: 'Intlayer hesabınıza üçüncü taraf bir OAuth uygulaması eklendi',\n pl: 'Do Twojego konta Intlayer dodano aplikację OAuth innej firmy',\n id: 'Aplikasi OAuth pihak ketiga telah ditambahkan ke akun Intlayer Anda',\n vi: 'Một ứng dụng OAuth của bên thứ ba đã được thêm vào tài khoản Intlayer của bạn',\n uk: 'До вашого облікового запису Intlayer додано сторонній додаток OAuth',\n },\n locale\n ),\n },\n }) satisfies EmailComponents;\n\ntype EmailType = keyof ReturnType<typeof getEmailComponents>;\n\nexport type SendEmailProps<T extends EmailType> = {\n type: T;\n to: string;\n subject?: string;\n locale?: Locale;\n} & ComponentProps<ReturnType<typeof getEmailComponents>[T]['template']>;\n\nexport const sendEmail = async <T extends EmailType>({\n type,\n to,\n subject,\n locale,\n ...props\n}: SendEmailProps<T>) => {\n const resend = new Resend(process.env.RESEND_API_KEY);\n\n const emailComponents = getEmailComponents(locale);\n\n const { template, subject: baseSubject } = emailComponents[type];\n\n type EmailComponentType = (typeof emailComponents)[T]['template'];\n\n const EmailComponent: EmailComponentType = template;\n\n const react = <EmailComponent {...(props as any)} />;\n\n await resend.emails\n .send({\n from: 'Intlayer <no-reply@intlayer.org>',\n to,\n subject: subject ?? baseSubject,\n react,\n })\n .catch((err) => logger.error(err));\n\n logger.info(`Email sent ${type} to ${to}`);\n};\n"],"mappings":"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"}
@@ -7,7 +7,7 @@ import { getUserById } from "./user.service.mjs";
7
7
  import { mapUserToAPI } from "../utils/mapper/user.mjs";
8
8
  import { mapOrganizationToAPI } from "../utils/mapper/organization.mjs";
9
9
  import { mapProjectToAPI } from "../utils/mapper/project.mjs";
10
- import { getTokenExpireAt } from "../utils/oAuth2.mjs";
10
+ import { getTokenExpireAt, shouldExtendOAuth2Token } from "../utils/oAuth2.mjs";
11
11
  import { randomBytes } from "node:crypto";
12
12
 
13
13
  //#region src/services/oAuth2.service.ts
@@ -122,6 +122,18 @@ const saveToken = async (token, client, user) => {
122
122
  return formatOAuth2Token(formattedAccessToken, client, user, project, organization, token.rights);
123
123
  };
124
124
  /**
125
+ * Sliding-refresh: push the token's expiry forward when it has been used
126
+ * within the refresh threshold. Idempotent and cheap when no extension is due.
127
+ */
128
+ const extendOAuth2AccessToken = async (accessToken) => {
129
+ const nextExpiresAt = getTokenExpireAt();
130
+ await OAuth2AccessTokenModel.updateOne({ accessToken }, { $set: {
131
+ accessTokenExpiresAt: nextExpiresAt,
132
+ expiresIn: nextExpiresAt
133
+ } });
134
+ return nextExpiresAt;
135
+ };
136
+ /**
125
137
  * Method to get the access token
126
138
  *
127
139
  * @param accessToken - The access token
@@ -130,6 +142,12 @@ const saveToken = async (token, client, user) => {
130
142
  const getAccessToken = async (accessToken) => {
131
143
  const token = await OAuth2AccessTokenModel.findOne({ accessToken });
132
144
  if (!token) return false;
145
+ const currentExpiresAt = token.accessTokenExpiresAt ?? token.expiresIn;
146
+ if (currentExpiresAt && shouldExtendOAuth2Token(currentExpiresAt)) {
147
+ const nextExpiresAt = await extendOAuth2AccessToken(accessToken);
148
+ token.accessTokenExpiresAt = nextExpiresAt;
149
+ token.expiresIn = nextExpiresAt;
150
+ }
133
151
  const { userId, clientId } = token;
134
152
  const user = await getUserById(userId);
135
153
  if (!user) return false;
@@ -196,5 +214,5 @@ const getOAuth2AccessTokenContext = async (token) => {
196
214
  };
197
215
 
198
216
  //#endregion
199
- export { formatDBToken, formatOAuth2Token, generateClientCredentials, getAccessToken, getClient, getClientAndProjectByClientId, getOAuth2AccessTokenContext, getUserFromClient, saveToken, validateOAuth2AccessToken, verifyScope };
217
+ export { extendOAuth2AccessToken, formatDBToken, formatOAuth2Token, generateClientCredentials, getAccessToken, getClient, getClientAndProjectByClientId, getOAuth2AccessTokenContext, getUserFromClient, saveToken, validateOAuth2AccessToken, verifyScope };
200
218
  //# sourceMappingURL=oAuth2.service.mjs.map