@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.
- package/README.md +27 -1
- package/dist/assets/utils/AI/askDocQuestion/embeddings/docs/en/benchmark/solid.json +4990 -0
- package/dist/assets/utils/AI/askDocQuestion/embeddings/docs/en/benchmark/svelte.json +4987 -0
- package/dist/assets/utils/AI/askDocQuestion/embeddings/docs/en/benchmark/vue.json +4975 -0
- package/dist/assets/utils/AI/askDocQuestion/embeddings/docs/en/intlayer_with_astro_lit.json +9936 -8930
- package/dist/assets/utils/AI/askDocQuestion/embeddings/docs/en/intlayer_with_astro_vanilla.json +7963 -6949
- package/dist/assets/utils/AI/askDocQuestion/embeddings/docs/en/readme.json +12908 -12288
- package/dist/esm/controllers/oAuth2.controller.mjs +21 -1
- package/dist/esm/controllers/oAuth2.controller.mjs.map +1 -1
- package/dist/esm/controllers/stripe.controller.mjs +86 -2
- package/dist/esm/controllers/stripe.controller.mjs.map +1 -1
- package/dist/esm/controllers/translation.controller.mjs +2 -0
- package/dist/esm/controllers/translation.controller.mjs.map +1 -1
- package/dist/esm/emails/InviteUserEmail.mjs +1541 -1
- package/dist/esm/emails/InviteUserEmail.mjs.map +1 -1
- package/dist/esm/emails/MagicLinkEmail.mjs +1128 -1
- package/dist/esm/emails/MagicLinkEmail.mjs.map +1 -1
- package/dist/esm/emails/OAuthTokenCreatedEmail.mjs +1389 -1
- package/dist/esm/emails/OAuthTokenCreatedEmail.mjs.map +1 -1
- package/dist/esm/emails/PasswordChangeConfirmation.mjs +814 -1
- package/dist/esm/emails/PasswordChangeConfirmation.mjs.map +1 -1
- package/dist/esm/emails/ResetUserPassword.mjs +1132 -1
- package/dist/esm/emails/ResetUserPassword.mjs.map +1 -1
- package/dist/esm/emails/SubscriptionPaymentCancellation.mjs +913 -1
- package/dist/esm/emails/SubscriptionPaymentCancellation.mjs.map +1 -1
- package/dist/esm/emails/SubscriptionPaymentError.mjs +908 -1
- package/dist/esm/emails/SubscriptionPaymentError.mjs.map +1 -1
- package/dist/esm/emails/SubscriptionPaymentSuccess.mjs +935 -1
- package/dist/esm/emails/SubscriptionPaymentSuccess.mjs.map +1 -1
- package/dist/esm/emails/ValidateUserEmail.mjs +1111 -1
- package/dist/esm/emails/ValidateUserEmail.mjs.map +1 -1
- package/dist/esm/emails/Welcome.mjs +1004 -1
- package/dist/esm/emails/Welcome.mjs.map +1 -1
- package/dist/esm/emails/index.mjs +7 -7
- package/dist/esm/index.mjs +8 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/middlewares/oAuth2.middleware.mjs +2 -2
- package/dist/esm/middlewares/oAuth2.middleware.mjs.map +1 -1
- package/dist/esm/routes/audit.routes.mjs +5 -4
- package/dist/esm/routes/audit.routes.mjs.map +1 -1
- package/dist/esm/routes/dictionary.routes.mjs +4 -3
- package/dist/esm/routes/dictionary.routes.mjs.map +1 -1
- package/dist/esm/routes/organization.routes.mjs +3 -2
- package/dist/esm/routes/organization.routes.mjs.map +1 -1
- package/dist/esm/routes/paramsSchemas.mjs +67 -0
- package/dist/esm/routes/paramsSchemas.mjs.map +1 -0
- package/dist/esm/routes/project.routes.mjs +2 -1
- package/dist/esm/routes/project.routes.mjs.map +1 -1
- package/dist/esm/routes/showcaseProject.routes.mjs +5 -4
- package/dist/esm/routes/showcaseProject.routes.mjs.map +1 -1
- package/dist/esm/routes/stripe.routes.mjs +19 -1
- package/dist/esm/routes/stripe.routes.mjs.map +1 -1
- package/dist/esm/routes/tags.routes.mjs +3 -2
- package/dist/esm/routes/tags.routes.mjs.map +1 -1
- package/dist/esm/routes/translate.routes.mjs +6 -5
- package/dist/esm/routes/translate.routes.mjs.map +1 -1
- package/dist/esm/routes/user.routes.mjs +5 -4
- package/dist/esm/routes/user.routes.mjs.map +1 -1
- package/dist/esm/schemas/oAuth2.schema.mjs +1 -1
- package/dist/esm/schemas/oAuth2.schema.mjs.map +1 -1
- package/dist/esm/services/email.service.mjs +338 -38
- package/dist/esm/services/email.service.mjs.map +1 -1
- package/dist/esm/services/oAuth2.service.mjs +20 -2
- package/dist/esm/services/oAuth2.service.mjs.map +1 -1
- package/dist/esm/services/subscription.service.mjs +5 -2
- package/dist/esm/services/subscription.service.mjs.map +1 -1
- package/dist/esm/utils/AI/askDocQuestion/embeddings/docs/en/benchmark/solid.json +4990 -0
- package/dist/esm/utils/AI/askDocQuestion/embeddings/docs/en/benchmark/svelte.json +4987 -0
- package/dist/esm/utils/AI/askDocQuestion/embeddings/docs/en/benchmark/vue.json +4975 -0
- package/dist/esm/utils/AI/askDocQuestion/embeddings/docs/en/intlayer_with_astro_lit.json +9936 -8930
- package/dist/esm/utils/AI/askDocQuestion/embeddings/docs/en/intlayer_with_astro_vanilla.json +7963 -6949
- package/dist/esm/utils/AI/askDocQuestion/embeddings/docs/en/readme.json +12908 -12288
- package/dist/esm/utils/auth/getAuth.mjs +6 -0
- package/dist/esm/utils/auth/getAuth.mjs.map +1 -1
- package/dist/esm/utils/errors/errorCodes.mjs +3917 -287
- package/dist/esm/utils/errors/errorCodes.mjs.map +1 -1
- package/dist/esm/utils/mongoDB/connectDB.mjs +5 -0
- package/dist/esm/utils/mongoDB/connectDB.mjs.map +1 -1
- package/dist/esm/utils/oAuth2.mjs +6 -2
- package/dist/esm/utils/oAuth2.mjs.map +1 -1
- package/dist/esm/utils/plan.mjs +13 -1
- package/dist/esm/utils/plan.mjs.map +1 -1
- package/dist/types/controllers/oAuth2.controller.d.ts +11 -1
- package/dist/types/controllers/oAuth2.controller.d.ts.map +1 -1
- package/dist/types/controllers/stripe.controller.d.ts +22 -2
- package/dist/types/controllers/stripe.controller.d.ts.map +1 -1
- package/dist/types/controllers/translation.controller.d.ts.map +1 -1
- package/dist/types/emails/InviteUserEmail.d.ts +181 -1
- package/dist/types/emails/InviteUserEmail.d.ts.map +1 -1
- package/dist/types/emails/MagicLinkEmail.d.ts +106 -1
- package/dist/types/emails/MagicLinkEmail.d.ts.map +1 -1
- package/dist/types/emails/OAuthTokenCreatedEmail.d.ts +166 -1
- package/dist/types/emails/OAuthTokenCreatedEmail.d.ts.map +1 -1
- package/dist/types/emails/PasswordChangeConfirmation.d.ts +91 -1
- package/dist/types/emails/PasswordChangeConfirmation.d.ts.map +1 -1
- package/dist/types/emails/ResetUserPassword.d.ts +106 -1
- package/dist/types/emails/ResetUserPassword.d.ts.map +1 -1
- package/dist/types/emails/SubscriptionPaymentCancellation.d.ts +151 -1
- package/dist/types/emails/SubscriptionPaymentCancellation.d.ts.map +1 -1
- package/dist/types/emails/SubscriptionPaymentError.d.ts +151 -1
- package/dist/types/emails/SubscriptionPaymentError.d.ts.map +1 -1
- package/dist/types/emails/SubscriptionPaymentSuccess.d.ts +151 -1
- package/dist/types/emails/SubscriptionPaymentSuccess.d.ts.map +1 -1
- package/dist/types/emails/ValidateUserEmail.d.ts +106 -1
- package/dist/types/emails/ValidateUserEmail.d.ts.map +1 -1
- package/dist/types/emails/Welcome.d.ts +106 -1
- package/dist/types/emails/Welcome.d.ts.map +1 -1
- package/dist/types/emails/index.d.ts +7 -7
- package/dist/types/export.d.ts +3 -3
- package/dist/types/middlewares/oAuth2.middleware.d.ts.map +1 -1
- package/dist/types/routes/audit.routes.d.ts.map +1 -1
- package/dist/types/routes/dictionary.routes.d.ts.map +1 -1
- package/dist/types/routes/organization.routes.d.ts.map +1 -1
- package/dist/types/routes/paramsSchemas.d.ts +102 -0
- package/dist/types/routes/paramsSchemas.d.ts.map +1 -0
- package/dist/types/routes/project.routes.d.ts.map +1 -1
- package/dist/types/routes/showcaseProject.routes.d.ts.map +1 -1
- package/dist/types/routes/stripe.routes.d.ts +15 -0
- package/dist/types/routes/stripe.routes.d.ts.map +1 -1
- package/dist/types/routes/tags.routes.d.ts.map +1 -1
- package/dist/types/routes/translate.routes.d.ts.map +1 -1
- package/dist/types/routes/user.routes.d.ts.map +1 -1
- package/dist/types/schemas/dictionary.schema.d.ts +6 -6
- package/dist/types/schemas/discussion.schema.d.ts +9 -9
- package/dist/types/schemas/organization.schema.d.ts +9 -9
- package/dist/types/schemas/plans.schema.d.ts +6 -6
- package/dist/types/schemas/project.schema.d.ts +12 -12
- package/dist/types/schemas/session.schema.d.ts +8 -8
- package/dist/types/schemas/showcaseProject.schema.d.ts +19 -19
- package/dist/types/schemas/tag.schema.d.ts +7 -7
- package/dist/types/services/email.service.d.ts.map +1 -1
- package/dist/types/services/oAuth2.service.d.ts +6 -1
- package/dist/types/services/oAuth2.service.d.ts.map +1 -1
- package/dist/types/types/plan.types.d.ts +2 -2
- package/dist/types/utils/errors/errorCodes.d.ts +3634 -4
- package/dist/types/utils/errors/errorCodes.d.ts.map +1 -1
- package/dist/types/utils/mongoDB/connectDB.d.ts.map +1 -1
- package/dist/types/utils/oAuth2.d.ts +3 -1
- package/dist/types/utils/oAuth2.d.ts.map +1 -1
- package/dist/types/utils/plan.d.ts +2 -1
- package/dist/types/utils/plan.d.ts.map +1 -1
- 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
|