@hszrdm/core 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/.medusa/server/src/admin/index.js +4041 -2995
  2. package/.medusa/server/src/admin/index.mjs +4043 -2997
  3. package/.medusa/server/src/api/admin/ai-translations/apply/route.d.ts +11 -0
  4. package/.medusa/server/src/api/admin/ai-translations/apply/route.js +102 -0
  5. package/.medusa/server/src/api/admin/ai-translations/preview/route.d.ts +10 -0
  6. package/.medusa/server/src/api/admin/ai-translations/preview/route.js +141 -0
  7. package/.medusa/server/src/api/admin/ai-translations/route.d.ts +2 -0
  8. package/.medusa/server/src/api/admin/ai-translations/route.js +19 -0
  9. package/.medusa/server/src/api/admin/email/preview/route.d.ts +2 -0
  10. package/.medusa/server/src/api/admin/email/preview/route.js +20 -0
  11. package/.medusa/server/src/api/admin/email/templates/[id]/route.d.ts +4 -0
  12. package/.medusa/server/src/api/admin/email/templates/[id]/route.js +25 -0
  13. package/.medusa/server/src/api/admin/email/templates/route.d.ts +3 -0
  14. package/.medusa/server/src/api/admin/email/templates/route.js +40 -0
  15. package/.medusa/server/src/api/admin/email/test-send/route.d.ts +2 -0
  16. package/.medusa/server/src/api/admin/email/test-send/route.js +64 -0
  17. package/.medusa/server/src/api/admin/newsletter/campaigns/[id]/cancel/route.d.ts +2 -0
  18. package/.medusa/server/src/api/admin/newsletter/campaigns/[id]/cancel/route.js +15 -0
  19. package/.medusa/server/src/api/admin/newsletter/campaigns/[id]/route.d.ts +4 -0
  20. package/.medusa/server/src/api/admin/newsletter/campaigns/[id]/route.js +39 -0
  21. package/.medusa/server/src/api/admin/newsletter/campaigns/[id]/send/route.d.ts +2 -0
  22. package/.medusa/server/src/api/admin/newsletter/campaigns/[id]/send/route.js +14 -0
  23. package/.medusa/server/src/api/admin/newsletter/campaigns/[id]/stats/route.d.ts +2 -0
  24. package/.medusa/server/src/api/admin/newsletter/campaigns/[id]/stats/route.js +17 -0
  25. package/.medusa/server/src/api/admin/newsletter/campaigns/[id]/test-send/route.d.ts +2 -0
  26. package/.medusa/server/src/api/admin/newsletter/campaigns/[id]/test-send/route.js +23 -0
  27. package/.medusa/server/src/api/admin/newsletter/campaigns/route.d.ts +3 -0
  28. package/.medusa/server/src/api/admin/newsletter/campaigns/route.js +40 -0
  29. package/.medusa/server/src/api/admin/newsletter/subscribers/export/route.d.ts +2 -0
  30. package/.medusa/server/src/api/admin/newsletter/subscribers/export/route.js +74 -0
  31. package/.medusa/server/src/api/admin/newsletter/subscribers/route.d.ts +2 -0
  32. package/.medusa/server/src/api/admin/newsletter/subscribers/route.js +57 -0
  33. package/.medusa/server/src/api/admin/product-reviews/[id]/route.d.ts +7 -0
  34. package/.medusa/server/src/api/admin/product-reviews/[id]/route.js +40 -0
  35. package/.medusa/server/src/api/admin/product-reviews/route.d.ts +2 -0
  36. package/.medusa/server/src/api/admin/product-reviews/route.js +31 -0
  37. package/.medusa/server/src/api/hooks/email/status/route.d.ts +2 -0
  38. package/.medusa/server/src/api/hooks/email/status/route.js +69 -0
  39. package/.medusa/server/src/api/middlewares.js +9 -1
  40. package/.medusa/server/src/api/store/account/wishlist/[productId]/route.d.ts +2 -0
  41. package/.medusa/server/src/api/store/account/wishlist/[productId]/route.js +18 -0
  42. package/.medusa/server/src/api/store/account/wishlist/merge/route.d.ts +6 -0
  43. package/.medusa/server/src/api/store/account/wishlist/merge/route.js +51 -0
  44. package/.medusa/server/src/api/store/account/wishlist/route.d.ts +7 -0
  45. package/.medusa/server/src/api/store/account/wishlist/route.js +76 -0
  46. package/.medusa/server/src/api/store/cms/entries/[slug]/route.js +4 -4
  47. package/.medusa/server/src/api/store/cms/entries/route.js +4 -4
  48. package/.medusa/server/src/api/store/email/track/click/[token]/route.d.ts +2 -0
  49. package/.medusa/server/src/api/store/email/track/click/[token]/route.js +19 -0
  50. package/.medusa/server/src/api/store/email/track/open/[token]/route.d.ts +2 -0
  51. package/.medusa/server/src/api/store/email/track/open/[token]/route.js +22 -0
  52. package/.medusa/server/src/api/store/leads/route.js +27 -93
  53. package/.medusa/server/src/api/store/newsletter/config/route.d.ts +2 -0
  54. package/.medusa/server/src/api/store/newsletter/config/route.js +14 -0
  55. package/.medusa/server/src/api/store/newsletter/confirm/route.d.ts +4 -0
  56. package/.medusa/server/src/api/store/newsletter/confirm/route.js +52 -0
  57. package/.medusa/server/src/api/store/newsletter/route.d.ts +4 -0
  58. package/.medusa/server/src/api/store/newsletter/route.js +89 -0
  59. package/.medusa/server/src/api/store/newsletter/unsubscribe/route.d.ts +4 -0
  60. package/.medusa/server/src/api/store/newsletter/unsubscribe/route.js +54 -0
  61. package/.medusa/server/src/api/store/products/[id]/reviews/route.d.ts +8 -0
  62. package/.medusa/server/src/api/store/products/[id]/reviews/route.js +174 -0
  63. package/.medusa/server/src/api/store/quote-requests/route.js +41 -129
  64. package/.medusa/server/src/config.js +38 -15
  65. package/.medusa/server/src/core/ai-translation.d.ts +26 -0
  66. package/.medusa/server/src/core/ai-translation.js +173 -0
  67. package/.medusa/server/src/core/customer-email.d.ts +5 -5
  68. package/.medusa/server/src/core/customer-email.js +55 -109
  69. package/.medusa/server/src/core/transactional-email.d.ts +9 -8
  70. package/.medusa/server/src/core/transactional-email.js +74 -244
  71. package/.medusa/server/src/core/version.d.ts +2 -2
  72. package/.medusa/server/src/core/version.js +2 -2
  73. package/.medusa/server/src/jobs/email-campaign-dispatch.d.ts +6 -0
  74. package/.medusa/server/src/jobs/email-campaign-dispatch.js +18 -0
  75. package/.medusa/server/src/modules/cms/config.d.ts +2 -1
  76. package/.medusa/server/src/modules/cms/config.js +27 -12
  77. package/.medusa/server/src/modules/cms/content-types.d.ts +24 -0
  78. package/.medusa/server/src/modules/cms/content-types.js +27 -0
  79. package/.medusa/server/src/modules/cms/index.d.ts +1 -0
  80. package/.medusa/server/src/modules/cms/index.js +6 -2
  81. package/.medusa/server/src/modules/email-center/campaign.d.ts +8 -0
  82. package/.medusa/server/src/modules/email-center/campaign.js +193 -0
  83. package/.medusa/server/src/modules/email-center/constants.d.ts +1 -0
  84. package/.medusa/server/src/modules/email-center/constants.js +5 -0
  85. package/.medusa/server/src/modules/email-center/defaults.d.ts +10 -0
  86. package/.medusa/server/src/modules/email-center/defaults.js +49 -0
  87. package/.medusa/server/src/modules/email-center/index.d.ts +11 -0
  88. package/.medusa/server/src/modules/email-center/index.js +42 -0
  89. package/.medusa/server/src/modules/email-center/migrations/Migration20261030173000.d.ts +5 -0
  90. package/.medusa/server/src/modules/email-center/migrations/Migration20261030173000.js +25 -0
  91. package/.medusa/server/src/modules/email-center/models/email-campaign.d.ts +22 -0
  92. package/.medusa/server/src/modules/email-center/models/email-campaign.js +37 -0
  93. package/.medusa/server/src/modules/email-center/models/email-delivery.d.ts +21 -0
  94. package/.medusa/server/src/modules/email-center/models/email-delivery.js +38 -0
  95. package/.medusa/server/src/modules/email-center/models/email-template.d.ts +13 -0
  96. package/.medusa/server/src/modules/email-center/models/email-template.js +20 -0
  97. package/.medusa/server/src/modules/email-center/render.d.ts +31 -0
  98. package/.medusa/server/src/modules/email-center/render.js +92 -0
  99. package/.medusa/server/src/modules/email-center/send.d.ts +27 -0
  100. package/.medusa/server/src/modules/email-center/send.js +67 -0
  101. package/.medusa/server/src/modules/email-center/service.d.ts +56 -0
  102. package/.medusa/server/src/modules/email-center/service.js +13 -0
  103. package/.medusa/server/src/modules/email-center/tracking.d.ts +9 -0
  104. package/.medusa/server/src/modules/email-center/tracking.js +92 -0
  105. package/.medusa/server/src/modules/newsletter/config.d.ts +14 -0
  106. package/.medusa/server/src/modules/newsletter/config.js +51 -0
  107. package/.medusa/server/src/modules/newsletter/email.d.ts +9 -0
  108. package/.medusa/server/src/modules/newsletter/email.js +38 -0
  109. package/.medusa/server/src/modules/newsletter/events.d.ts +10 -0
  110. package/.medusa/server/src/modules/newsletter/events.js +34 -0
  111. package/.medusa/server/src/modules/newsletter/index.d.ts +10 -0
  112. package/.medusa/server/src/modules/newsletter/index.js +33 -0
  113. package/.medusa/server/src/modules/newsletter/migrations/Migration20261030130000.d.ts +5 -0
  114. package/.medusa/server/src/modules/newsletter/migrations/Migration20261030130000.js +18 -0
  115. package/.medusa/server/src/modules/newsletter/models/newsletter-subscriber.d.ts +21 -0
  116. package/.medusa/server/src/modules/newsletter/models/newsletter-subscriber.js +35 -0
  117. package/.medusa/server/src/modules/newsletter/service.d.ts +24 -0
  118. package/.medusa/server/src/modules/newsletter/service.js +11 -0
  119. package/.medusa/server/src/modules/newsletter/token.d.ts +10 -0
  120. package/.medusa/server/src/modules/newsletter/token.js +97 -0
  121. package/.medusa/server/src/modules/product-review/config.d.ts +5 -0
  122. package/.medusa/server/src/modules/product-review/config.js +10 -0
  123. package/.medusa/server/src/modules/product-review/index.d.ts +7 -0
  124. package/.medusa/server/src/modules/product-review/index.js +18 -0
  125. package/.medusa/server/src/modules/product-review/migrations/Migration20261030160100.d.ts +5 -0
  126. package/.medusa/server/src/modules/product-review/migrations/Migration20261030160100.js +18 -0
  127. package/.medusa/server/src/modules/product-review/models/product-review.d.ts +16 -0
  128. package/.medusa/server/src/modules/product-review/models/product-review.js +26 -0
  129. package/.medusa/server/src/modules/product-review/service.d.ts +25 -0
  130. package/.medusa/server/src/modules/product-review/service.js +12 -0
  131. package/.medusa/server/src/modules/wishlist/index.d.ts +5 -0
  132. package/.medusa/server/src/modules/wishlist/index.js +14 -0
  133. package/.medusa/server/src/modules/wishlist/migrations/Migration20261030160000.d.ts +5 -0
  134. package/.medusa/server/src/modules/wishlist/migrations/Migration20261030160000.js +17 -0
  135. package/.medusa/server/src/modules/wishlist/models/wishlist-item.d.ts +6 -0
  136. package/.medusa/server/src/modules/wishlist/models/wishlist-item.js +14 -0
  137. package/.medusa/server/src/modules/wishlist/service.d.ts +15 -0
  138. package/.medusa/server/src/modules/wishlist/service.js +12 -0
  139. package/.medusa/server/src/providers/email/index.d.ts +2 -0
  140. package/.medusa/server/src/providers/email/index.js +11 -0
  141. package/.medusa/server/src/providers/email/service.d.ts +24 -0
  142. package/.medusa/server/src/providers/email/service.js +117 -0
  143. package/.medusa/server/src/scripts/core-init.js +20 -3
  144. package/.medusa/server/src/scripts/verify-bootstrap.js +1 -7
  145. package/.medusa/server/src/subscribers/transactional-email-shipment-created.js +6 -2
  146. package/package.json +4 -3
@@ -28,6 +28,11 @@ export declare function queueCustomerAccountEmail(input: {
28
28
  reason: "disabled";
29
29
  locale?: undefined;
30
30
  template?: undefined;
31
+ } | {
32
+ skipped: boolean;
33
+ locale: string;
34
+ template: string;
35
+ reason?: undefined;
31
36
  } | {
32
37
  skipped: boolean;
33
38
  reason: "provider-disabled";
@@ -38,11 +43,6 @@ export declare function queueCustomerAccountEmail(input: {
38
43
  reason: "missing-template";
39
44
  locale?: undefined;
40
45
  template?: undefined;
41
- } | {
42
- skipped: boolean;
43
- locale: string;
44
- template: string;
45
- reason?: undefined;
46
46
  }>;
47
47
  export declare function resolveCustomerEmailTemplate(kind: CustomerEmailKind, locale: string): string | null;
48
48
  export {};
@@ -8,145 +8,91 @@ exports.queueCustomerAccountEmail = queueCustomerAccountEmail;
8
8
  exports.resolveCustomerEmailTemplate = resolveCustomerEmailTemplate;
9
9
  const node_crypto_1 = require("node:crypto");
10
10
  const utils_1 = require("@medusajs/framework/utils");
11
+ const email_center_1 = require("../modules/email-center");
11
12
  const CUSTOMER_EMAIL_CONFIG = {
12
- welcome: {
13
- enabled: "SENDGRID_CUSTOMER_WELCOME_ENABLED",
14
- templatePrefix: "SENDGRID_CUSTOMER_WELCOME_TEMPLATE_ID",
15
- localTemplate: "customer-welcome",
16
- },
17
- registration_verification: {
18
- enabled: "SENDGRID_REGISTRATION_VERIFICATION_ENABLED",
19
- templatePrefix: "SENDGRID_REGISTRATION_VERIFICATION_TEMPLATE_ID",
20
- localTemplate: "customer-registration-verification",
21
- },
22
- password_reset: {
23
- enabled: "SENDGRID_PASSWORD_RESET_ENABLED",
24
- templatePrefix: "SENDGRID_PASSWORD_RESET_TEMPLATE_ID",
25
- defaultEnabled: true,
26
- legacyTemplateEnv: "SENDGRID_PASSWORD_RESET_TEMPLATE_ID",
27
- localTemplate: "password-reset",
28
- },
29
- email_change_verification: {
30
- enabled: "SENDGRID_EMAIL_CHANGE_VERIFICATION_ENABLED",
31
- templatePrefix: "SENDGRID_EMAIL_CHANGE_VERIFICATION_TEMPLATE_ID",
32
- defaultEnabled: true,
33
- legacyTemplateEnv: "SENDGRID_EMAIL_VERIFICATION_TEMPLATE_ID",
34
- localTemplate: "email-verification",
35
- },
36
- password_changed: {
37
- enabled: "SENDGRID_PASSWORD_CHANGED_ENABLED",
38
- templatePrefix: "SENDGRID_PASSWORD_CHANGED_TEMPLATE_ID",
39
- localTemplate: "customer-password-changed",
40
- },
41
- email_changed: {
42
- enabled: "SENDGRID_EMAIL_CHANGED_ENABLED",
43
- templatePrefix: "SENDGRID_EMAIL_CHANGED_TEMPLATE_ID",
44
- localTemplate: "customer-email-changed",
45
- },
46
- account_deleted: {
47
- enabled: "SENDGRID_ACCOUNT_DELETED_ENABLED",
48
- templatePrefix: "SENDGRID_ACCOUNT_DELETED_TEMPLATE_ID",
49
- localTemplate: "customer-account-deleted",
50
- },
13
+ welcome: { enabled: "EMAIL_CUSTOMER_WELCOME_ENABLED", legacyEnabled: "SENDGRID_CUSTOMER_WELCOME_ENABLED", templatePrefix: "SENDGRID_CUSTOMER_WELCOME_TEMPLATE_ID", localTemplate: "customer-welcome", coreKey: "customer.registered" },
14
+ registration_verification: { enabled: "EMAIL_REGISTRATION_VERIFICATION_ENABLED", legacyEnabled: "SENDGRID_REGISTRATION_VERIFICATION_ENABLED", templatePrefix: "SENDGRID_REGISTRATION_VERIFICATION_TEMPLATE_ID", localTemplate: "customer-registration-verification", coreKey: "customer.email_verification" },
15
+ password_reset: { enabled: "EMAIL_PASSWORD_RESET_ENABLED", legacyEnabled: "SENDGRID_PASSWORD_RESET_ENABLED", templatePrefix: "SENDGRID_PASSWORD_RESET_TEMPLATE_ID", defaultEnabled: true, legacyTemplateEnv: "SENDGRID_PASSWORD_RESET_TEMPLATE_ID", localTemplate: "password-reset", coreKey: "customer.password_reset" },
16
+ email_change_verification: { enabled: "EMAIL_CHANGE_VERIFICATION_ENABLED", legacyEnabled: "SENDGRID_EMAIL_CHANGE_VERIFICATION_ENABLED", templatePrefix: "SENDGRID_EMAIL_CHANGE_VERIFICATION_TEMPLATE_ID", defaultEnabled: true, legacyTemplateEnv: "SENDGRID_EMAIL_VERIFICATION_TEMPLATE_ID", localTemplate: "email-verification", coreKey: "customer.email_verification" },
17
+ password_changed: { enabled: "EMAIL_PASSWORD_CHANGED_ENABLED", legacyEnabled: "SENDGRID_PASSWORD_CHANGED_ENABLED", templatePrefix: "SENDGRID_PASSWORD_CHANGED_TEMPLATE_ID", localTemplate: "customer-password-changed", coreKey: "customer.password_changed" },
18
+ email_changed: { enabled: "EMAIL_CHANGED_ENABLED", legacyEnabled: "SENDGRID_EMAIL_CHANGED_ENABLED", templatePrefix: "SENDGRID_EMAIL_CHANGED_TEMPLATE_ID", localTemplate: "customer-email-changed", coreKey: "customer.email_changed" },
19
+ account_deleted: { enabled: "EMAIL_ACCOUNT_DELETED_ENABLED", legacyEnabled: "SENDGRID_ACCOUNT_DELETED_ENABLED", templatePrefix: "SENDGRID_ACCOUNT_DELETED_TEMPLATE_ID", localTemplate: "customer-account-deleted", coreKey: "customer.account_deleted" },
51
20
  };
52
21
  function customerEmailEnabled(kind) {
53
22
  const config = CUSTOMER_EMAIL_CONFIG[kind];
54
- const raw = process.env[config.enabled]?.trim();
55
- if (raw == null || raw === "")
56
- return config.defaultEnabled === true;
57
- return raw === "true";
23
+ const explicit = boolEnv(config.enabled);
24
+ if (explicit != null)
25
+ return explicit;
26
+ const legacy = boolEnv(config.legacyEnabled);
27
+ if (legacy != null)
28
+ return legacy;
29
+ if (process.env.EMAIL_CENTER_ENABLED === "true")
30
+ return true;
31
+ return config.defaultEnabled === true;
58
32
  }
59
33
  function customerEmailLocale(input) {
60
34
  const metadata = input?.metadata ?? {};
61
- const raw = stringValue(input?.locale) ||
62
- stringValue(input?.language) ||
63
- stringValue(metadata.locale) ||
64
- stringValue(metadata.language) ||
65
- process.env.STORE_LOCALE?.trim() ||
66
- "hu-HU";
35
+ const raw = stringValue(input?.locale) || stringValue(input?.language) || stringValue(metadata.locale) || stringValue(metadata.language) || process.env.STORE_LOCALE?.trim() || "hu-HU";
67
36
  return raw.toLowerCase().startsWith("en") ? "en-US" : "hu-HU";
68
37
  }
69
- function stableEmailToken(value) {
70
- return (0, node_crypto_1.createHash)("sha256").update(value).digest("hex").slice(0, 32);
71
- }
38
+ function stableEmailToken(value) { return (0, node_crypto_1.createHash)("sha256").update(value).digest("hex").slice(0, 32); }
72
39
  function storefrontUrl() {
73
40
  const explicit = process.env.STOREFRONT_URL?.trim();
74
41
  if (explicit)
75
42
  return explicit.replace(/\/$/, "");
76
- const firstStoreOrigin = process.env.STORE_CORS
77
- ?.split(",")
78
- .map((value) => value.trim())
79
- .find(Boolean);
80
- return (firstStoreOrigin || "http://localhost:3000").replace(/\/$/, "");
43
+ const first = process.env.STORE_CORS?.split(",").map((value) => value.trim()).find(Boolean);
44
+ return (first || "http://localhost:3000").replace(/\/$/, "");
81
45
  }
82
46
  async function queueCustomerAccountEmail(input) {
83
47
  const logger = input.container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
84
48
  const email = input.to.trim().toLowerCase();
85
- if (!email) {
49
+ if (!email)
86
50
  return { skipped: true, reason: "missing-email" };
87
- }
88
- if (!customerEmailEnabled(input.kind)) {
51
+ if (!customerEmailEnabled(input.kind))
89
52
  return { skipped: true, reason: "disabled" };
53
+ const locale = customerEmailLocale({ locale: input.locale });
54
+ const data = {
55
+ event: input.kind, locale, language: locale.startsWith("en") ? "en" : "hu",
56
+ store_name: process.env.STORE_NAME || "Webshop", storefront_url: storefrontUrl(), support_email: process.env.SUPPORT_EMAIL || null,
57
+ order_email: process.env.ORDER_EMAIL || null, billing_email: process.env.BILLING_EMAIL || null, email, sent_at: new Date().toISOString(), ...(input.data ?? {}),
58
+ };
59
+ if (emailCenterAvailable(input.container)) {
60
+ const result = await (0, email_center_1.sendManagedEmail)({
61
+ container: input.container, to: email, key: CUSTOMER_EMAIL_CONFIG[input.kind].coreKey, locale, data,
62
+ idempotencyKey: input.idempotencyKey, resourceId: input.resourceId, resourceType: input.resourceId ? "customer" : undefined, track: true,
63
+ });
64
+ logger.info(`Customer email ${input.kind} queued for ${email} (${locale}) via Email Center.`);
65
+ return { skipped: result.skipped, locale, template: CUSTOMER_EMAIL_CONFIG[input.kind].coreKey };
90
66
  }
91
67
  if (isProductionRuntime() && process.env.SENDGRID_ENABLED !== "true") {
92
- logger.warn(`Customer email ${input.kind} skipped: SENDGRID_ENABLED is not true in production.`);
68
+ logger.warn(`Customer email ${input.kind} skipped: legacy SendGrid fallback is disabled in production.`);
93
69
  return { skipped: true, reason: "provider-disabled" };
94
70
  }
95
- const locale = customerEmailLocale({ locale: input.locale });
96
71
  const template = resolveCustomerEmailTemplate(input.kind, locale);
97
- if (!template) {
98
- logger.warn(`Customer email ${input.kind} skipped for ${email}: no HU/EN template is configured.`);
72
+ if (!template)
99
73
  return { skipped: true, reason: "missing-template" };
100
- }
101
74
  const notificationService = input.container.resolve(utils_1.Modules.NOTIFICATION);
102
- await notificationService.createNotifications({
103
- to: email,
104
- channel: "email",
105
- template,
106
- data: {
107
- event: input.kind,
108
- locale,
109
- language: locale.toLowerCase().startsWith("en") ? "en" : "hu",
110
- store_name: process.env.STORE_NAME || "Webshop",
111
- storefront_url: storefrontUrl(),
112
- support_email: process.env.SUPPORT_EMAIL || null,
113
- order_email: process.env.ORDER_EMAIL || null,
114
- billing_email: process.env.BILLING_EMAIL || null,
115
- email,
116
- sent_at: new Date().toISOString(),
117
- ...(input.data ?? {}),
118
- },
119
- trigger_type: `core.customer-email.${input.kind}`,
120
- resource_id: input.resourceId,
121
- resource_type: input.resourceId ? "customer" : undefined,
122
- idempotency_key: input.idempotencyKey,
123
- });
124
- logger.info(`Customer email ${input.kind} queued for ${email} (${locale}).`);
125
- return {
126
- skipped: false,
127
- locale,
128
- template,
129
- };
75
+ await notificationService.createNotifications({ to: email, channel: "email", template, data, trigger_type: `core.customer-email.${input.kind}`, resource_id: input.resourceId, resource_type: input.resourceId ? "customer" : undefined, idempotency_key: input.idempotencyKey });
76
+ logger.info(`Customer email ${input.kind} queued for ${email} (${locale}) via legacy template fallback.`);
77
+ return { skipped: false, locale, template };
130
78
  }
131
79
  function resolveCustomerEmailTemplate(kind, locale) {
132
80
  const config = CUSTOMER_EMAIL_CONFIG[kind];
133
81
  const hu = process.env[`${config.templatePrefix}_HU`]?.trim();
134
82
  const en = process.env[`${config.templatePrefix}_EN`]?.trim();
135
- const legacy = config.legacyTemplateEnv
136
- ? process.env[config.legacyTemplateEnv]?.trim()
137
- : undefined;
138
- const localFallback = !isProductionRuntime() && process.env.SENDGRID_ENABLED !== "true"
139
- ? config.localTemplate
140
- : undefined;
141
- return locale.toLowerCase().startsWith("en")
142
- ? en || hu || legacy || localFallback || null
143
- : hu || en || legacy || localFallback || null;
144
- }
145
- function isProductionRuntime() {
146
- return (process.env.APP_ENV === "production" ||
147
- process.env.NODE_ENV === "production");
83
+ const legacy = config.legacyTemplateEnv ? process.env[config.legacyTemplateEnv]?.trim() : undefined;
84
+ const localFallback = !isProductionRuntime() && process.env.SENDGRID_ENABLED !== "true" ? config.localTemplate : undefined;
85
+ return locale.toLowerCase().startsWith("en") ? en || hu || legacy || localFallback || null : hu || en || legacy || localFallback || null;
148
86
  }
149
- function stringValue(value) {
150
- return typeof value === "string" && value.trim() ? value.trim() : undefined;
87
+ function emailCenterAvailable(container) { if (process.env.EMAIL_CENTER_ENABLED === "false")
88
+ return false; try {
89
+ return Boolean(container.resolve(email_center_1.EMAIL_CENTER_MODULE));
151
90
  }
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZW1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29yZS9jdXN0b21lci1lbWFpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTJFQSxvREFLQztBQUVELGtEQWVDO0FBRUQsNENBRUM7QUFFRCxzQ0FVQztBQUVELDhEQXFFQztBQUVELG9FQWtCQztBQTVNRCw2Q0FBd0M7QUFDeEMscURBQThFO0FBZ0M5RSxNQUFNLHFCQUFxQixHQUFtRDtJQUM1RSxPQUFPLEVBQUU7UUFDUCxPQUFPLEVBQUUsbUNBQW1DO1FBQzVDLGNBQWMsRUFBRSx1Q0FBdUM7UUFDdkQsYUFBYSxFQUFFLGtCQUFrQjtLQUNsQztJQUNELHlCQUF5QixFQUFFO1FBQ3pCLE9BQU8sRUFBRSw0Q0FBNEM7UUFDckQsY0FBYyxFQUFFLGdEQUFnRDtRQUNoRSxhQUFhLEVBQUUsb0NBQW9DO0tBQ3BEO0lBQ0QsY0FBYyxFQUFFO1FBQ2QsT0FBTyxFQUFFLGlDQUFpQztRQUMxQyxjQUFjLEVBQUUscUNBQXFDO1FBQ3JELGNBQWMsRUFBRSxJQUFJO1FBQ3BCLGlCQUFpQixFQUFFLHFDQUFxQztRQUN4RCxhQUFhLEVBQUUsZ0JBQWdCO0tBQ2hDO0lBQ0QseUJBQXlCLEVBQUU7UUFDekIsT0FBTyxFQUFFLDRDQUE0QztRQUNyRCxjQUFjLEVBQUUsZ0RBQWdEO1FBQ2hFLGNBQWMsRUFBRSxJQUFJO1FBQ3BCLGlCQUFpQixFQUFFLHlDQUF5QztRQUM1RCxhQUFhLEVBQUUsb0JBQW9CO0tBQ3BDO0lBQ0QsZ0JBQWdCLEVBQUU7UUFDaEIsT0FBTyxFQUFFLG1DQUFtQztRQUM1QyxjQUFjLEVBQUUsdUNBQXVDO1FBQ3ZELGFBQWEsRUFBRSwyQkFBMkI7S0FDM0M7SUFDRCxhQUFhLEVBQUU7UUFDYixPQUFPLEVBQUUsZ0NBQWdDO1FBQ3pDLGNBQWMsRUFBRSxvQ0FBb0M7UUFDcEQsYUFBYSxFQUFFLHdCQUF3QjtLQUN4QztJQUNELGVBQWUs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
91
+ catch {
92
+ return false;
93
+ } }
94
+ function isProductionRuntime() { return process.env.APP_ENV === "production" || process.env.NODE_ENV === "production"; }
95
+ function stringValue(value) { return typeof value === "string" && value.trim() ? value.trim() : undefined; }
96
+ function boolEnv(key) { const raw = process.env[key]?.trim(); if (!raw)
97
+ return null; return raw === "true"; }
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZW1haWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29yZS9jdXN0b21lci1lbWFpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXFDQSxvREFRQztBQUVELGtEQUlDO0FBRUQsNENBQXdIO0FBQ3hILHNDQUtDO0FBRUQsOERBK0JDO0FBRUQsb0VBT0M7QUFyR0QsNkNBQXdDO0FBQ3hDLHFEQUE4RTtBQUM5RSwwREFBK0U7QUF5Qi9FLE1BQU0scUJBQXFCLEdBQW1EO0lBQzVFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxhQUFhLEVBQUUsbUNBQW1DLEVBQUUsY0FBYyxFQUFFLHVDQUF1QyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUU7SUFDdE8seUJBQXlCLEVBQUUsRUFBRSxPQUFPLEVBQUUseUNBQXlDLEVBQUUsYUFBYSxFQUFFLDRDQUE0QyxFQUFFLGNBQWMsRUFBRSxnREFBZ0QsRUFBRSxhQUFhLEVBQUUsb0NBQW9DLEVBQUUsT0FBTyxFQUFFLDZCQUE2QixFQUFFO0lBQzdTLGNBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxhQUFhLEVBQUUsaUNBQWlDLEVBQUUsY0FBYyxFQUFFLHFDQUFxQyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUscUNBQXFDLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRTtJQUN6VCx5QkFBeUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxhQUFhLEVBQUUsNENBQTRDLEVBQUUsY0FBYyxFQUFFLGdEQUFnRCxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUseUNBQXlDLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRTtJQUMzVyxnQkFBZ0IsRUFB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
@@ -2,6 +2,7 @@ type ResolveContainer = {
2
2
  resolve: (key: string) => unknown;
3
3
  };
4
4
  export type TransactionalEmailKind = "order_placed" | "payment_captured" | "fulfillment_created" | "shipment_created" | "order_canceled" | "payment_refunded";
5
+ export declare function transactionalEmailEnabled(kind: TransactionalEmailKind): boolean;
5
6
  export declare function queueOrderLifecycleEmail(input: {
6
7
  container: ResolveContainer;
7
8
  kind: TransactionalEmailKind;
@@ -16,13 +17,19 @@ export declare function queueOrderLifecycleEmail(input: {
16
17
  template?: undefined;
17
18
  } | {
18
19
  skipped: boolean;
19
- reason: "provider-disabled";
20
+ reason: "missing-email";
20
21
  orderId?: undefined;
21
22
  locale?: undefined;
22
23
  template?: undefined;
23
24
  } | {
24
25
  skipped: boolean;
25
- reason: "missing-email";
26
+ orderId: string;
27
+ locale: string;
28
+ template: string;
29
+ reason?: undefined;
30
+ } | {
31
+ skipped: boolean;
32
+ reason: "provider-disabled";
26
33
  orderId?: undefined;
27
34
  locale?: undefined;
28
35
  template?: undefined;
@@ -32,12 +39,6 @@ export declare function queueOrderLifecycleEmail(input: {
32
39
  orderId?: undefined;
33
40
  locale?: undefined;
34
41
  template?: undefined;
35
- } | {
36
- skipped: boolean;
37
- orderId: string;
38
- locale: string;
39
- template: string;
40
- reason?: undefined;
41
42
  }>;
42
43
  export declare function resolveOrderIdForPayment(container: ResolveContainer, paymentId: string): Promise<string | null>;
43
44
  export declare function resolveRefundEmailContexts(container: ResolveContainer, paymentId: string): Promise<{