@hartl-services/medusa-base 2.6.1 → 2.8.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 (151) hide show
  1. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/ImageSettingInput.d.ts +3 -2
  2. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/ImageSettingInput.js +4 -4
  3. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginActionsSection.js +4 -4
  4. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginBreadcrumb.d.ts +16 -0
  5. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginBreadcrumb.js +25 -0
  6. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginDetailPage.js +1 -1
  7. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginFeatureSections.d.ts +5 -4
  8. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginFeatureSections.js +8 -5
  9. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginFeaturesCard.d.ts +4 -4
  10. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginFeaturesCard.js +24 -27
  11. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginFeaturesSettingsPage.d.ts +2 -2
  12. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginFeaturesSettingsPage.js +9 -9
  13. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginHubCard.d.ts +5 -1
  14. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginHubCard.js +11 -15
  15. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginPageShell.d.ts +10 -4
  16. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginPageShell.js +10 -5
  17. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginSettingsForm.d.ts +0 -1
  18. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginSettingsForm.js +77 -26
  19. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginStatusChips.d.ts +5 -1
  20. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/PluginStatusChips.js +8 -6
  21. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/ShopMasterDataBanner.d.ts +11 -0
  22. package/.medusa/server/src/admin/admin-components/features/plugin-features/components/ShopMasterDataBanner.js +15 -0
  23. package/.medusa/server/src/admin/admin-components/features/plugin-features/hooks/usePluginFeatureEnabled.d.ts +40 -5
  24. package/.medusa/server/src/admin/admin-components/features/plugin-features/hooks/usePluginFeatures.d.ts +160 -20
  25. package/.medusa/server/src/admin/admin-components/features/plugin-features/hooks/usePluginSettingsForm.d.ts +40 -5
  26. package/.medusa/server/src/admin/admin-components/features/plugin-features/hooks/usePluginSwitch.d.ts +15 -0
  27. package/.medusa/server/src/admin/admin-components/features/plugin-features/hooks/usePluginSwitch.js +66 -0
  28. package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/plugin-features-admin-client.d.ts +160 -20
  29. package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/plugin-view.d.ts +49 -0
  30. package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/plugin-view.js +72 -0
  31. package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/settings-draft.d.ts +1 -12
  32. package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/settings-draft.js +4 -20
  33. package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/settings-layout.d.ts +47 -0
  34. package/.medusa/server/src/admin/admin-components/features/plugin-features/lib/settings-layout.js +70 -0
  35. package/.medusa/server/src/admin/admin-components/i18n/texts.d.ts +22 -2
  36. package/.medusa/server/src/admin/admin-components/i18n/texts.js +29 -7
  37. package/.medusa/server/src/admin/admin-components/index.d.ts +12 -0
  38. package/.medusa/server/src/admin/admin-components/index.js +11 -0
  39. package/.medusa/server/src/admin/admin-components/shared/ui/AdminPageHeader.d.ts +22 -0
  40. package/.medusa/server/src/admin/admin-components/shared/ui/AdminPageHeader.js +8 -0
  41. package/.medusa/server/src/admin/admin-components/shared/ui/AdminSection.d.ts +26 -0
  42. package/.medusa/server/src/admin/admin-components/shared/ui/AdminSection.js +12 -0
  43. package/.medusa/server/src/admin/admin-components/shared/ui/BreadcrumbTrail.d.ts +23 -0
  44. package/.medusa/server/src/admin/admin-components/shared/ui/BreadcrumbTrail.js +20 -0
  45. package/.medusa/server/src/admin/admin-components/shared/ui/FileDropField.d.ts +21 -0
  46. package/.medusa/server/src/admin/admin-components/shared/ui/FileDropField.js +33 -0
  47. package/.medusa/server/src/admin/admin-components/shared/ui/FocusModalShell.d.ts +27 -0
  48. package/.medusa/server/src/admin/admin-components/shared/ui/FocusModalShell.js +13 -0
  49. package/.medusa/server/src/admin/admin-components/shared/ui/InfoTooltip.d.ts +13 -0
  50. package/.medusa/server/src/admin/admin-components/shared/ui/InfoTooltip.js +8 -0
  51. package/.medusa/server/src/admin/admin-components/shared/ui/MultiSelectDropdown.d.ts +22 -0
  52. package/.medusa/server/src/admin/admin-components/shared/ui/MultiSelectDropdown.js +14 -0
  53. package/.medusa/server/src/admin/admin-components/shared/ui/PluginIcon.d.ts +10 -0
  54. package/.medusa/server/src/admin/admin-components/shared/ui/PluginIcon.js +10 -0
  55. package/.medusa/server/src/admin/admin-components/shared/ui/SwitchRow.d.ts +27 -0
  56. package/.medusa/server/src/admin/admin-components/shared/ui/SwitchRow.js +15 -0
  57. package/.medusa/server/src/admin/admin-components/shared/ui/WidgetHeader.d.ts +15 -0
  58. package/.medusa/server/src/admin/admin-components/shared/ui/WidgetHeader.js +8 -0
  59. package/.medusa/server/src/admin/admin-components/shared/ui/file-drop.d.ts +13 -0
  60. package/.medusa/server/src/admin/admin-components/shared/ui/file-drop.js +16 -0
  61. package/.medusa/server/src/admin/admin-components/shared/ui/multi-select.d.ts +13 -0
  62. package/.medusa/server/src/admin/admin-components/shared/ui/multi-select.js +11 -0
  63. package/.medusa/server/src/admin/admin-components/shared/ui/plugin-icon.d.ts +12 -0
  64. package/.medusa/server/src/admin/admin-components/shared/ui/plugin-icon.js +29 -0
  65. package/.medusa/server/src/admin/index.js +3155 -2039
  66. package/.medusa/server/src/admin/index.mjs +3158 -2042
  67. package/.medusa/server/src/api/admin-first-login-password-policy.js +56 -0
  68. package/.medusa/server/src/api/answer-actor-type-casing-not-found.js +26 -0
  69. package/.medusa/server/src/api/answer-code-provider-route-not-found.js +34 -0
  70. package/.medusa/server/src/api/code-account-password-routes.js +92 -0
  71. package/.medusa/server/src/api/middlewares.js +82 -17
  72. package/.medusa/server/src/api/password-policy.js +55 -10
  73. package/.medusa/server/src/api/require-login-code-customer-email.js +40 -0
  74. package/.medusa/server/src/api/store/customer-auth/login-code/route.js +17 -0
  75. package/.medusa/server/src/api/store/customer-auth/password-policy/route.js +19 -0
  76. package/.medusa/server/src/customer-auth/application/prepare-code-account-password-reset.js +111 -0
  77. package/.medusa/server/src/customer-auth/application/request-login-code.js +145 -0
  78. package/.medusa/server/src/customer-auth/customer-auth-methods-snapshot.js +55 -0
  79. package/.medusa/server/src/customer-auth/customer-password-policy.js +40 -0
  80. package/.medusa/server/src/customer-auth/domain/account-linking.js +53 -0
  81. package/.medusa/server/src/customer-auth/domain/auth-methods.js +32 -0
  82. package/.medusa/server/src/customer-auth/domain/login-code.js +39 -0
  83. package/.medusa/server/src/customer-auth/login-code-accounts.js +146 -0
  84. package/.medusa/server/src/customer-auth/login-code-state.js +139 -0
  85. package/.medusa/server/src/customer-auth/plugin-features.js +80 -0
  86. package/.medusa/server/src/customer-auth/remove-provider-identity.js +18 -0
  87. package/.medusa/server/src/customer-auth/start-customer-auth-methods.js +20 -0
  88. package/.medusa/server/src/documents/plugin-features.js +8 -2
  89. package/.medusa/server/src/email/application/deliver-ephemeral-auth-mail.js +186 -0
  90. package/.medusa/server/src/email/application/deliver-login-code.js +89 -0
  91. package/.medusa/server/src/email/application/handle-customer-verification-event.js +29 -168
  92. package/.medusa/server/src/email/application/handle-password-reset-event.js +27 -166
  93. package/.medusa/server/src/email/customer-verification-snapshot.js +20 -108
  94. package/.medusa/server/src/email/domain/business-keys.js +15 -2
  95. package/.medusa/server/src/email/plugin-features.js +8 -3
  96. package/.medusa/server/src/email/rendering/default-templates.js +2 -1
  97. package/.medusa/server/src/email/templates/blocks/dynamic-blocks.js +19 -1
  98. package/.medusa/server/src/email/templates/defaults/documents.js +7 -1
  99. package/.medusa/server/src/email/templates/defaults/subjects.js +3 -1
  100. package/.medusa/server/src/email/templates/defaults/texts.js +5 -2
  101. package/.medusa/server/src/email/templates/render.js +2 -1
  102. package/.medusa/server/src/email/templates/sample-data.js +2 -1
  103. package/.medusa/server/src/email/templates/validate.js +8 -3
  104. package/.medusa/server/src/email/types/email-kinds.js +4 -2
  105. package/.medusa/server/src/email/types/template-data.js +9 -1
  106. package/.medusa/server/src/modules/customer-auth/index.js +14 -0
  107. package/.medusa/server/src/modules/customer-auth/service.js +35 -0
  108. package/.medusa/server/src/modules/email/migrations/Migration20261010090000.js +20 -0
  109. package/.medusa/server/src/modules/plugin-features/domain/plugin-settings.js +30 -6
  110. package/.medusa/server/src/modules/plugin-features/service.js +29 -3
  111. package/.medusa/server/src/providers/email-otp/index.js +8 -0
  112. package/.medusa/server/src/providers/email-otp/service.js +96 -0
  113. package/.medusa/server/src/public/descriptor.js +138 -5
  114. package/.medusa/server/src/public/effective-features.js +22 -1
  115. package/.medusa/server/src/public/index.js +4 -2
  116. package/.medusa/server/src/public/plugin-icons.js +28 -0
  117. package/.medusa/server/src/public/shop-master-data.js +33 -14
  118. package/.medusa/server/src/shared/lib/dates.js +8 -2
  119. package/.medusa/server/src/shared/lib/index.js +2 -1
  120. package/.medusa/server/src/shared/lib/refreshing-snapshot.js +122 -0
  121. package/.medusa/server/src/shop-config/build-food-shop-config.js +38 -1
  122. package/README.md +436 -87
  123. package/dist/customer-auth/customer-auth-methods-snapshot.d.ts +25 -0
  124. package/dist/customer-auth/customer-auth-methods-snapshot.js +54 -0
  125. package/dist/customer-auth/domain/auth-methods.d.ts +16 -0
  126. package/dist/customer-auth/domain/auth-methods.js +31 -0
  127. package/dist/customer-auth/plugin-features.d.ts +2 -0
  128. package/dist/customer-auth/plugin-features.js +79 -0
  129. package/dist/email/customer-verification-snapshot.d.ts +3 -15
  130. package/dist/email/customer-verification-snapshot.js +19 -107
  131. package/dist/email/types/email-kinds.d.ts +4 -3
  132. package/dist/email/types/email-kinds.js +3 -1
  133. package/dist/email/types/template-data.d.ts +8 -0
  134. package/dist/email/types/template-data.js +8 -0
  135. package/dist/public/descriptor.js +137 -4
  136. package/dist/public/effective-features.d.ts +10 -0
  137. package/dist/public/effective-features.js +21 -0
  138. package/dist/public/index.d.ts +2 -1
  139. package/dist/public/index.js +3 -1
  140. package/dist/public/plugin-icons.d.ts +7 -0
  141. package/dist/public/plugin-icons.js +27 -0
  142. package/dist/public/shop-master-data.js +32 -13
  143. package/dist/public/types.d.ts +74 -2
  144. package/dist/shared/lib/dates.d.ts +2 -0
  145. package/dist/shared/lib/dates.js +7 -1
  146. package/dist/shared/lib/index.d.ts +1 -0
  147. package/dist/shared/lib/index.js +1 -0
  148. package/dist/shared/lib/refreshing-snapshot.d.ts +52 -0
  149. package/dist/shared/lib/refreshing-snapshot.js +121 -0
  150. package/dist/shop-config/build-food-shop-config.js +37 -0
  151. package/package.json +8 -3
@@ -7,14 +7,12 @@ exports.handlePasswordResetEvent = exports.PASSWORD_RESET_RETRY_SENTINEL = expor
7
7
  const utils_1 = require("@medusajs/framework/utils");
8
8
  const zod_1 = require("@medusajs/framework/zod");
9
9
  const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
10
- const failure_classification_1 = require("../domain/failure-classification");
11
10
  const business_keys_1 = require("../domain/business-keys");
12
11
  const event_schemas_1 = require("../domain/event-schemas");
13
12
  const email_1 = require("../../modules/email");
14
- const load_email_shop_details_1 = require("../rendering/load-email-shop-details");
15
13
  const render_email_1 = require("../rendering/render-email");
16
- const load_template_1 = require("../templates/load-template");
17
14
  const dispatch_email_message_1 = require("../../workflows/email/dispatch-email-message");
15
+ const deliver_ephemeral_auth_mail_1 = require("./deliver-ephemeral-auth-mail");
18
16
  exports.PASSWORD_RESET_MAX_ATTEMPTS = 2;
19
17
  exports.PASSWORD_RESET_RETRY_SENTINEL = "EMAIL_PASSWORD_RESET_RETRY";
20
18
  const emailAddressPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
@@ -42,20 +40,6 @@ const resultForMessage = (message, code) => ({
42
40
  ? "failed"
43
41
  : "in_progress",
44
42
  });
45
- const asNotificationRecord = (value) => {
46
- if (!value || typeof value !== "object") {
47
- return null;
48
- }
49
- const record = value;
50
- if (typeof record.id !== "string" ||
51
- !record.id.trim() ||
52
- (record.status !== "failure" &&
53
- record.status !== "pending" &&
54
- record.status !== "success")) {
55
- return null;
56
- }
57
- return { id: record.id, status: record.status };
58
- };
59
43
  const verifyClaims = (token, secret, entityId) => {
60
44
  let verified;
61
45
  try {
@@ -126,157 +110,34 @@ const reconcileSendingMessage = async (container, email, message, now) => {
126
110
  }
127
111
  return retry();
128
112
  };
129
- const failClaim = async (email, claim, code, now, notificationId = null) => {
130
- const completed = await email.markAttemptFailed({
131
- attempt_id: claim.attempt.id,
132
- attempt_token: claim.attempt_token,
133
- failure_code: code,
134
- finished_at: now,
135
- notification_id: notificationId,
136
- });
137
- return {
138
- attempt_id: claim.attempt.id,
139
- code,
140
- message_id: completed.message.id,
141
- status: "failed",
142
- };
143
- };
144
113
  const deliverPasswordReset = async (container, email, claim, token, expiresAt, validMinutes, getNow) => {
145
- // A stored template never fails the mail: it falls back to the default.
146
- const [shop, template] = await Promise.all([
147
- (0, load_email_shop_details_1.loadEmailShopDetails)(container),
148
- (0, load_template_1.loadEmailTemplate)(container, email, "auth.password_reset"),
149
- ]);
150
- let rendered;
151
- try {
152
- const configuration = email.getDispatchConfiguration();
153
- const resetData = claim.message.template_data;
154
- const resetUrl = new URL(configuration.passwordResetUrl({
155
- locale: resetData?.locale ?? null,
156
- }));
157
- resetUrl.hash = new URLSearchParams({ token }).toString();
158
- rendered = (0, render_email_1.renderEmail)(configuration, {
159
- kind: "auth.password_reset",
160
- data: {
114
+ const outcome = await (0, deliver_ephemeral_auth_mail_1.deliverEphemeralAuthMail)({
115
+ claim,
116
+ container,
117
+ email,
118
+ expiresAt,
119
+ getNow,
120
+ kind: "auth.password_reset",
121
+ maxAttempts: exports.PASSWORD_RESET_MAX_ATTEMPTS,
122
+ render: ({ configuration, shop, template }) => {
123
+ const resetData = claim.message.template_data;
124
+ const resetUrl = new URL(configuration.passwordResetUrl({
161
125
  locale: resetData?.locale ?? null,
162
- reset_url: resetUrl.toString(),
163
- ...(validMinutes ? { valid_minutes: validMinutes } : {}),
164
- },
165
- }, shop, template);
166
- }
167
- catch {
168
- return await failClaim(email, claim, "render_failed", getNow());
169
- }
170
- const beforeNotification = getNow();
171
- if (expiresAt.getTime() <= beforeNotification.getTime()) {
172
- return await failClaim(email, claim, "payload_expired", beforeNotification);
173
- }
174
- try {
175
- await email.renewAttemptLease({
176
- attempt_id: claim.attempt.id,
177
- attempt_token: claim.attempt_token,
178
- now: beforeNotification,
179
- });
180
- }
181
- catch {
182
- return retry();
183
- }
184
- const notifications = container.resolve(utils_1.Modules.NOTIFICATION);
185
- const safeData = {
186
- attempt_id: claim.attempt.id,
187
- kind: claim.message.kind,
188
- message_id: claim.message.id,
189
- };
190
- let creationError;
191
- let created = null;
192
- try {
193
- created = asNotificationRecord(await notifications.createNotifications({
194
- channel: "email",
195
- content: {
196
- html: rendered.html,
197
- subject: rendered.subject,
198
- text: rendered.text,
199
- },
200
- data: safeData,
201
- idempotency_key: (0, failure_classification_1.emailAttemptNotificationKey)(claim.attempt.id),
202
- ...(claim.previous_notification_id
203
- ? { original_notification_id: claim.previous_notification_id }
204
- : {}),
205
- provider_data: safeData,
206
- ...(claim.message.resource_id
207
- ? { resource_id: claim.message.resource_id }
208
- : {}),
209
- resource_type: "customer",
210
- template: claim.message.kind,
211
- to: claim.message.recipient,
212
- trigger_type: "email.password_reset.dispatch",
213
- }));
214
- }
215
- catch (error) {
216
- creationError = error;
217
- }
218
- let persisted = null;
219
- let lookupFailed = false;
220
- if (!created || creationError) {
221
- try {
222
- persisted = await (0, dispatch_email_message_1.findAttemptNotification)(container, claim.attempt.id);
223
- }
224
- catch {
225
- lookupFailed = true;
226
- }
227
- }
228
- const notification = created ?? persisted;
229
- const finishedAt = getNow();
230
- if (notification?.status === "success") {
231
- const completed = await email.markAttemptSent({
232
- attempt_id: claim.attempt.id,
233
- attempt_token: claim.attempt_token,
234
- finished_at: finishedAt,
235
- notification_id: notification.id,
236
- });
237
- return {
238
- attempt_id: claim.attempt.id,
239
- message_id: completed.message.id,
240
- status: "sent",
241
- };
242
- }
243
- const failure = creationError && notification?.status === "failure" && !lookupFailed
244
- ? (0, failure_classification_1.classifyNotificationFailure)(creationError)
245
- : { code: "outcome_unknown", outcome: "unknown" };
246
- if (failure.outcome === "retryable") {
247
- const nextAttemptAt = new Date(finishedAt.getTime() + 1_000);
248
- if (claim.attempt.attempt_number < exports.PASSWORD_RESET_MAX_ATTEMPTS &&
249
- nextAttemptAt.getTime() < expiresAt.getTime()) {
250
- await email.markAttemptRetryable({
251
- attempt_id: claim.attempt.id,
252
- attempt_token: claim.attempt_token,
253
- failure_code: failure.code,
254
- finished_at: finishedAt,
255
- next_attempt_at: nextAttemptAt,
256
- notification_id: notification?.id ?? null,
257
- });
258
- return retry();
259
- }
260
- return await failClaim(email, claim, expiresAt.getTime() <= nextAttemptAt.getTime()
261
- ? "payload_expired"
262
- : "retry_exhausted", finishedAt, notification?.id ?? null);
263
- }
264
- if (failure.outcome === "failed") {
265
- return await failClaim(email, claim, failure.code, finishedAt, notification?.id ?? null);
266
- }
267
- const completed = await email.markAttemptUnknown({
268
- attempt_id: claim.attempt.id,
269
- attempt_token: claim.attempt_token,
270
- failure_code: failure.code,
271
- finished_at: finishedAt,
272
- notification_id: notification?.id ?? null,
126
+ }));
127
+ resetUrl.hash = new URLSearchParams({ token }).toString();
128
+ return (0, render_email_1.renderEmail)(configuration, {
129
+ kind: "auth.password_reset",
130
+ data: {
131
+ locale: resetData?.locale ?? null,
132
+ reset_url: resetUrl.toString(),
133
+ ...(validMinutes ? { valid_minutes: validMinutes } : {}),
134
+ },
135
+ }, shop, template);
136
+ },
137
+ retryDelayMs: 1_000,
138
+ triggerType: "email.password_reset.dispatch",
273
139
  });
274
- return {
275
- attempt_id: claim.attempt.id,
276
- code: failure.code,
277
- message_id: completed.message.id,
278
- status: "unknown",
279
- };
140
+ return outcome.kind === "retry" ? retry() : outcome.result;
280
141
  };
281
142
  /** The token's full lifetime in minutes (`exp` − `iat`); unknown without `iat`. */
282
143
  const tokenValidMinutes = (claims) => {
@@ -368,4 +229,4 @@ const handlePasswordResetEvent = async (container, payload, clock = () => new Da
368
229
  }
369
230
  };
370
231
  exports.handlePasswordResetEvent = handlePasswordResetEvent;
371
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLXBhc3N3b3JkLXJlc2V0LWV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VtYWlsL2FwcGxpY2F0aW9uL2hhbmRsZS1wYXNzd29yZC1yZXNldC1ldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFLQSxxREFBb0Q7QUFDcEQsaURBQTRDO0FBQzVDLGdFQUFvRDtBQUVwRCw2RUFHMEM7QUFDMUMsMkRBQW1FO0FBQ25FLDJEQUdpQztBQUNqQywrQ0FBbUQ7QUFNbkQsa0ZBQTRFO0FBQzVFLDREQUF3RDtBQUN4RCw4REFBK0Q7QUFFL0QseUZBQXVGO0FBRTFFLFFBQUEsMkJBQTJCLEdBQUcsQ0FBQyxDQUFDO0FBQ2hDLFFBQUEsNkJBQTZCLEdBQUcsNEJBQTRCLENBQUM7QUFFMUUsTUFBTSxtQkFBbUIsR0FBRyw0QkFBNEIsQ0FBQztBQUV6RCxNQUFNLHlCQUF5QixHQUFHLE9BQUM7S0FDaEMsTUFBTSxDQUFDO0lBQ04sVUFBVSxFQUFFLE9BQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ2pDLFNBQVMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuQyxHQUFHLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNoQyxHQUFHLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0IsUUFBUSxFQUFFLE9BQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO0lBQ2hDLE9BQU8sRUFBRSxPQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztDQUM1QixDQUFDO0tBQ0QsV0FBVyxFQUFFLENBQUM7QUFlakIsTUFBTSxLQUFLLEdBQUcsR0FBVSxFQUFFO0lBQ3hCLE1BQU0sSUFB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
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLXBhc3N3b3JkLXJlc2V0LWV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VtYWlsL2FwcGxpY2F0aW9uL2hhbmRsZS1wYXNzd29yZC1yZXNldC1ldmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFJQSxxREFBb0Q7QUFDcEQsaURBQTRDO0FBQzVDLGdFQUFvRDtBQUVwRCwyREFBbUU7QUFDbkUsMkRBR2lDO0FBQ2pDLCtDQUFtRDtBQU1uRCw0REFBd0Q7QUFFeEQseUZBQXVGO0FBQ3ZGLCtFQUF5RTtBQUU1RCxRQUFBLDJCQUEyQixHQUFHLENBQUMsQ0FBQztBQUNoQyxRQUFBLDZCQUE2QixHQUFHLDRCQUE0QixDQUFDO0FBRTFFLE1BQU0sbUJBQW1CLEdBQUcsNEJBQTRCLENBQUM7QUFFekQsTUFBTSx5QkFBeUIsR0FBRyxPQUFDO0tBQ2hDLE1BQU0sQ0FBQztJQUNOLFVBQVUsRUFBRSxPQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUNqQyxTQUFTLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbkMsR0FBRyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDaEMsR0FBRyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFFBQVEsRUFBRSxPQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUNoQyxPQUFPLEVBQUUsT0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7Q0FDNUIsQ0FBQztLQUNELFdBQVcsRUFBRSxDQUFDO0FBV2pCLE1BQU0sS0FBSyxHQUFHLEdBQVUsRUFBRTtJQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUE2QixDQUFDLENB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
@@ -1,117 +1,42 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.setCustomerVerificationEnabledForTests = exports.customerVerificationActors = exports.isCustomerVerificationEnabled = exports.startCustomerVerificationSnapshot = exports.stopCustomerVerificationSnapshot = exports.refreshCustomerVerificationSnapshot = exports.CUSTOMER_VERIFICATION_REFRESH_MS = void 0;
4
+ const refreshing_snapshot_1 = require("../shared/lib/refreshing-snapshot");
4
5
  /**
5
6
  * In-memory copy of the effective `customer_verification` toggle for the one
6
7
  * place that cannot await it: Medusa reads
7
8
  * `projectConfig.http.authVerificationsPerActor.customer` synchronously on
8
9
  * every login. The shop preset puts `customerVerificationActors()` behind a
9
10
  * getter there, so a toggle change in the Admin takes effect without a
10
- * restart.
11
- *
12
- * - Boot: `startCustomerVerificationSnapshot` loads the toggle once.
13
- * - Afterwards an unref'd timer refreshes every 30 s, so a change reaches an
14
- * idle instance too. A read that finds the copy older than 30 s (a blocked
15
- * timer, say) also starts one refresh in the background
16
- * (stale-while-revalidate) and still answers from the copy. A change thus
17
- * reaches a running instance within about 30 s plus the duration of the
18
- * read.
19
- * - A failed read keeps the last value (initially "off") and is logged; the
20
- * next attempt waits another 30 s.
21
- *
22
- * The state lives on `globalThis`: the preset (`dist`) and the Medusa-loaded
23
- * plugin code (`.medusa/server`) are compiled separately and would otherwise
24
- * each hold their own copy. Login is not on the cart path.
11
+ * restart. Loading, the 30 s refresh and the failure behavior (keep the last
12
+ * value, initially "off") are those of `createRefreshingSnapshot`. Login is
13
+ * not on the cart path.
25
14
  */
26
- exports.CUSTOMER_VERIFICATION_REFRESH_MS = 30_000;
27
- const STATE_KEY = Symbol.for("@hartl-services/medusa-base/customer-verification-snapshot");
28
- const state = () => {
29
- const holder = globalThis;
30
- holder[STATE_KEY] ??= {
31
- enabled: false,
32
- refreshedAt: null,
33
- refreshing: null,
34
- timer: null,
35
- read: null,
36
- warn: null,
37
- };
38
- return holder[STATE_KEY];
39
- };
40
- const logFailure = (current, error) => {
41
- try {
42
- current.warn?.(`Customer verification toggle could not be read, keeping "${current.enabled ? "on" : "off"}": ${error instanceof Error ? error.message : "unknown error"}`);
43
- }
44
- catch {
45
- // A broken logger must not turn a failed refresh into a throw.
46
- }
47
- };
15
+ exports.CUSTOMER_VERIFICATION_REFRESH_MS = refreshing_snapshot_1.SNAPSHOT_REFRESH_MS;
16
+ // The initial value is "off" (no verification) until the toggle has been read.
17
+ const snapshot = (0, refreshing_snapshot_1.createRefreshingSnapshot)({
18
+ key: "@hartl-services/medusa-base/customer-verification-snapshot",
19
+ initial: false,
20
+ describe: (enabled) => `Customer verification toggle could not be read, keeping "${enabled ? "on" : "off"}"`,
21
+ });
48
22
  /** Reads the toggle once; never rejects. Concurrent calls share one read. */
49
- const refreshCustomerVerificationSnapshot = () => {
50
- const current = state();
51
- if (!current.read) {
52
- return Promise.resolve();
53
- }
54
- if (current.refreshing) {
55
- return current.refreshing;
56
- }
57
- const read = current.read;
58
- // Started from a microtask so the assignment below always precedes `finally`.
59
- const refreshing = Promise.resolve().then(async () => {
60
- try {
61
- current.enabled = (await read()) === true;
62
- }
63
- catch (error) {
64
- logFailure(current, error);
65
- }
66
- finally {
67
- current.refreshedAt = Date.now();
68
- current.refreshing = null;
69
- }
70
- });
71
- current.refreshing = refreshing;
72
- return refreshing;
73
- };
23
+ const refreshCustomerVerificationSnapshot = () => snapshot.refresh();
74
24
  exports.refreshCustomerVerificationSnapshot = refreshCustomerVerificationSnapshot;
75
- const stopTimer = (current) => {
76
- if (current.timer) {
77
- clearInterval(current.timer);
78
- current.timer = null;
79
- }
80
- };
81
25
  /** Stops the periodic refresh (application shutdown). The value stays. */
82
- const stopCustomerVerificationSnapshot = () => {
83
- stopTimer(state());
84
- };
26
+ const stopCustomerVerificationSnapshot = () => snapshot.stop();
85
27
  exports.stopCustomerVerificationSnapshot = stopCustomerVerificationSnapshot;
86
28
  /**
87
29
  * Registers the reader, loads the toggle once and keeps it fresh every 30 s
88
30
  * (application start). `read` returns the effective toggle; `warn` is the
89
31
  * container logger. Starting again replaces the reader and the timer.
90
32
  */
91
- const startCustomerVerificationSnapshot = (input) => {
92
- const current = state();
93
- current.read = input.read;
94
- current.warn = input.warn;
95
- stopTimer(current);
96
- current.timer = setInterval(() => {
97
- void (0, exports.refreshCustomerVerificationSnapshot)();
98
- }, exports.CUSTOMER_VERIFICATION_REFRESH_MS);
99
- // An idle timer must not keep the process (or a test run) alive.
100
- current.timer.unref();
101
- return (0, exports.refreshCustomerVerificationSnapshot)();
102
- };
33
+ const startCustomerVerificationSnapshot = (input) => snapshot.start({
34
+ read: async () => (await input.read()) === true,
35
+ warn: input.warn,
36
+ });
103
37
  exports.startCustomerVerificationSnapshot = startCustomerVerificationSnapshot;
104
38
  /** Synchronous; starts a background refresh when the copy is stale. Never throws. */
105
- const isCustomerVerificationEnabled = () => {
106
- const current = state();
107
- if (current.read &&
108
- !current.refreshing &&
109
- (current.refreshedAt === null ||
110
- Date.now() - current.refreshedAt >= exports.CUSTOMER_VERIFICATION_REFRESH_MS)) {
111
- void (0, exports.refreshCustomerVerificationSnapshot)();
112
- }
113
- return current.enabled;
114
- };
39
+ const isCustomerVerificationEnabled = () => snapshot.current();
115
40
  exports.isCustomerVerificationEnabled = isCustomerVerificationEnabled;
116
41
  /**
117
42
  * The value of `authVerificationsPerActor.customer`: Medusa's e-mail
@@ -126,19 +51,6 @@ exports.customerVerificationActors = customerVerificationActors;
126
51
  * Test hook: sets the value and counts as just refreshed, so it holds for
127
52
  * 30 s without a reader; `null` forgets reader and value.
128
53
  */
129
- const setCustomerVerificationEnabledForTests = (enabled) => {
130
- const current = state();
131
- if (enabled === null) {
132
- stopTimer(current);
133
- current.enabled = false;
134
- current.refreshedAt = null;
135
- current.refreshing = null;
136
- current.read = null;
137
- current.warn = null;
138
- return;
139
- }
140
- current.enabled = enabled;
141
- current.refreshedAt = Date.now();
142
- };
54
+ const setCustomerVerificationEnabledForTests = (enabled) => snapshot.setForTests(enabled);
143
55
  exports.setCustomerVerificationEnabledForTests = setCustomerVerificationEnabledForTests;
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItdmVyaWZpY2F0aW9uLXNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VtYWlsL2N1c3RvbWVyLXZlcmlmaWNhdGlvbi1zbmFwc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ1UsUUFBQSxnQ0FBZ0MsR0FBRyxNQUFNLENBQUM7QUFpQnZELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQzFCLDREQUE0RCxDQUM3RCxDQUFDO0FBRUYsTUFBTSxLQUFLLEdBQUcsR0FBa0IsRUFBRTtJQUNoQyxNQUFNLE1BQU0sR0FBRyxVQUFzRCxDQUFDO0lBQ3RFLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSztRQUNwQixPQUFPLEVBQUUsS0FBSztRQUNkLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLFVBQVUsRUFBRSxJQUFJO1FBQ2hCLEtBQUssRUFBRSxJQUFJO1FBQ1gsSUFBSSxFQUFFLElBQUk7UUFDVixJQUFJLEVBQUUsSUFBSTtLQUNYLENBQUM7SUFDRixPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMzQixDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQXNCLEVBQUUsS0FBYyxFQUFRLEVBQUU7SUFDbEUsSUFBSSxDQUFDO1FBQ0gsT0FBTyxDQUFDLElBQUksRUFBRSxDQUNaLDREQUNFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FDM0IsTUFBTSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FDakUsQ0FBQztJQUNKLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCwrREFBK0Q7SUFDakUsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLDZFQUE2RTtBQUN0RSxNQUFN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
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItdmVyaWZpY2F0aW9uLXNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VtYWlsL2N1c3RvbWVyLXZlcmlmaWNhdGlvbi1zbmFwc2hvdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyRUFHMkM7QUFFM0M7Ozs7Ozs7OztHQVNHO0FBQ1UsUUFBQSxnQ0FBZ0MsR0FBRyx5Q0FBbUIsQ0FBQztBQU9wRSwrRUFBK0U7QUFDL0UsTUFBTSxRQUFRLEdBQUcsSUFBQSw4Q0FBd0IsRUFBVTtJQUNqRCxHQUFHLEVBQUUsNERBQTREO0lBQ2pFLE9BQU8sRUFBRSxLQUFLO0lBQ2QsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDcEIsNERBQ0UsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQ25CLEdBQUc7Q0FDTixDQUFDLENBQUM7QUFFSCw2RUFBNkU7QUFDdEUsTUFBTSxtQ0FBbUMsR0FBRyxHQUFrQixFQUFFLENBQ3JFLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQURSLFFBQUEsbUNBQW1DLHVDQUMzQjtBQUVyQiwwRUFBMEU7QUFDbkUsTUFBTSxnQ0FBZ0MsR0FBRyxHQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7QUFBL0QsUUFBQSxnQ0FBZ0Msb0NBQStCO0FBRTVFOzs7O0dBSUc7QUFDSSxNQUFNLGlDQUFpQyxHQUFHLENBQy9DLEtBR0UsRUFDYSxFQUFFLENBQ2pCLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDYixJQUFJLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssSUFBSTtJQUMvQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7Q0FDakIsQ0FBQyxDQUFDO0FBVFEsUUFBQSxpQ0FBaUMscUNBU3pDO0FBRUwscUZBQXFGO0FBQzlFLE1BQU0sNkJBQTZCLEdBQUcsR0FBWSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQWxFLFFBQUEsNkJBQTZCLGlDQUFxQztBQUUvRTs7OztHQUlHO0FBQ0ksTUFBTSwwQkFBMEIsR0FBRyxHQUFnQyxFQUFFLENBQzFFLElBQUEscUNBQTZCLEdBQUU7SUFDN0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUN4RCxDQUFDLENBQUMsRUFBRSxDQUFDO0FBSEksUUFBQSwwQkFBMEIsOEJBRzlCO0FBRVQ7OztHQUdHO0FBQ0ksTUFBTSxzQ0FBc0MsR0FBRyxDQUNwRCxPQUF1QixFQUNqQixFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUY1QixRQUFBLHNDQUFzQywwQ0FFViJ9
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.adminResendBusinessKey = exports.affiliateApplicationSubmittedAdminBusinessKey = exports.affiliateConsignmentBusinessKey = exports.userInviteBusinessKey = exports.customerVerificationBusinessKey = exports.passwordResetBusinessKey = exports.orderRefundedBusinessKey = exports.returnReceivedBusinessKey = exports.returnRequestedBusinessKey = exports.orderCanceledBusinessKey = exports.orderShippedBusinessKey = exports.orderReceivedAdminBusinessKey = exports.orderReceivedBusinessKey = void 0;
3
+ exports.loginCodeBusinessKey = exports.adminResendBusinessKey = exports.affiliateApplicationSubmittedAdminBusinessKey = exports.affiliateConsignmentBusinessKey = exports.userInviteBusinessKey = exports.customerVerificationBusinessKey = exports.passwordResetBusinessKey = exports.orderRefundedBusinessKey = exports.returnReceivedBusinessKey = exports.returnRequestedBusinessKey = exports.orderCanceledBusinessKey = exports.orderShippedBusinessKey = exports.orderReceivedAdminBusinessKey = exports.orderReceivedBusinessKey = void 0;
4
4
  const lib_1 = require("../../shared/lib");
5
5
  const affiliate_1 = require("@hartl-services/medusa-food-supplements-contracts/events/affiliate");
6
6
  const normalizedIdentifier = (value, name) => {
@@ -59,4 +59,17 @@ const affiliateApplicationSubmittedAdminBusinessKey = (applicationId) => `affili
59
59
  exports.affiliateApplicationSubmittedAdminBusinessKey = affiliateApplicationSubmittedAdminBusinessKey;
60
60
  const adminResendBusinessKey = (originalMessageId, requestId) => `admin-resend:${normalizedIdentifier(originalMessageId, "originalMessageId")}:${normalizedIdentifier(requestId, "requestId")}`;
61
61
  exports.adminResendBusinessKey = adminResendBusinessKey;
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVzaW5lc3Mta2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbWFpbC9kb21haW4vYnVzaW5lc3Mta2V5cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwwQ0FBNkM7QUFDN0Msa0dBQTJIO0FBRTNILE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFhLEVBQUUsSUFBWSxFQUFVLEVBQUU7SUFDbkUsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFFSyxNQUFNLHdCQUF3QixHQUFHLENBQUMsT0FBZSxFQUFVLEVBQUUsQ0FDbEUsa0JBQWtCLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO0FBRGxELFFBQUEsd0JBQXdCLDRCQUMwQjtBQUV4RCxNQUFNLDZCQUE2QixHQUFHLENBQUMsT0FBZSxFQUFVLEVBQUUsQ0FDdkUsd0JBQXdCLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO0FBRHhELFFBQUEsNkJBQTZCLGlDQUMyQjtBQUU5RCxNQUFNLHVCQUF1QixHQUFHLENBQUMsYUFBcUIsRUFBVSxFQUFFLENBQ3ZFLGlCQUFpQixvQkFBb0IsQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLEVBQUUsQ0FBQztBQUQ3RCxRQUFBLHVCQUF1QiwyQkFDc0M7QUFFbkUsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLE9BQWUsRUFBVSxFQUFFLENBQ2xFLGtCQUFrQixvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztBQURsRCxRQUFBLHdCQUF3Qiw0QkFDMEI7QUFFeEQsTUFB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
62
+ /**
63
+ * One key per issued code, from a random id and never from the code: the
64
+ * message must not allow guessing or deriving the code, and every new code
65
+ * produces a new message.
66
+ */
67
+ const loginCodeBusinessKey = (issueId) => {
68
+ const normalized = issueId.trim();
69
+ if (!normalized) {
70
+ throw new Error("issueId must not be empty.");
71
+ }
72
+ return `login-code:${normalized}`;
73
+ };
74
+ exports.loginCodeBusinessKey = loginCodeBusinessKey;
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVzaW5lc3Mta2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbWFpbC9kb21haW4vYnVzaW5lc3Mta2V5cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwwQ0FBNkM7QUFDN0Msa0dBQTJIO0FBRTNILE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxLQUFhLEVBQUUsSUFBWSxFQUFVLEVBQUU7SUFDbkUsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFFSyxNQUFNLHdCQUF3QixHQUFHLENBQUMsT0FBZSxFQUFVLEVBQUUsQ0FDbEUsa0JBQWtCLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO0FBRGxELFFBQUEsd0JBQXdCLDRCQUMwQjtBQUV4RCxNQUFNLDZCQUE2QixHQUFHLENBQUMsT0FBZSxFQUFVLEVBQUUsQ0FDdkUsd0JBQXdCLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO0FBRHhELFFBQUEsNkJBQTZCLGlDQUMyQjtBQUU5RCxNQUFNLHVCQUF1QixHQUFHLENBQUMsYUFBcUIsRUFBVSxFQUFFLENBQ3ZFLGlCQUFpQixvQkFBb0IsQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLEVBQUUsQ0FBQztBQUQ3RCxRQUFBLHVCQUF1QiwyQkFDc0M7QUFFbkUsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLE9BQWUsRUFBVSxFQUFFLENBQ2xFLGtCQUFrQixvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztBQURsRCxRQUFBLHdCQUF3Qiw0QkFDMEI7QUFFeEQsTUFB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
@@ -5,7 +5,12 @@ const public_1 = require("../public");
5
5
  exports.emailPluginFeatures = (0, public_1.definePluginFeatures)({
6
6
  plugin_key: "email",
7
7
  label: "E-Mail",
8
- description: "Transaktionale E-Mails und das E-Mail-Protokoll im Admin. Aus: Für neue Ereignisse wird keine Mail erzeugt (Ereignisse werden später nicht nachgeholt), das E-Mail-Protokoll und die Anhänge im Admin sind nicht erreichbar und die Versand-, Wiederholungs- und Abgleichsjobs laufen nicht; bereits eingereihte Mails bleiben liegen, bis das Plugin wieder eingeschaltet wird. Checkout und Bestellungen laufen unverändert weiter.",
8
+ description: "Transaktionale E-Mails und das E-Mail-Protokoll im Admin. Aus: Für neue Ereignisse wird keine Mail erzeugt (Ereignisse werden später nicht nachgeholt), das E-Mail-Protokoll und die Anhänge im Admin sind nicht erreichbar und die Versand-, Wiederholungs- und Abgleichsjobs laufen nicht; bereits eingereihte Mails bleiben liegen, bis das Plugin wieder eingeschaltet wird. Checkout und Bestellungen laufen unverändert weiter. Ausnahme: Die Mail mit dem Anmeldecode des Kunden-Logins hängt weder von diesem Schalter noch von den Konto-Mails ab, sie geht hinaus, solange der Anmeldecode im Plugin „Kunden-Login“ eingeschaltet ist (sonst wäre die Anmeldung unmöglich).",
9
+ summary: "Transaktionale E-Mails und das E-Mail-Protokoll.",
10
+ icon: "Envelope",
11
+ disable_hint: "Aus: keine neuen Mails, Versand pausiert, Protokoll nicht erreichbar. Die Mail mit dem Anmeldecode geht weiter.",
12
+ disable_confirm: "Für neue Ereignisse wird dann keine Mail erzeugt, und sie werden später nicht nachgeholt. Das E-Mail-Protokoll und die Anhänge im Admin sind nicht erreichbar, und die Versand-, Wiederholungs- und Abgleichsjobs laufen nicht. Bereits eingereihte Mails bleiben liegen, bis das Plugin wieder eingeschaltet wird. Checkout und Bestellungen laufen unverändert weiter. Ausnahme: Die Mail mit dem Anmeldecode des Kunden-Logins geht weiter hinaus, solange der Anmeldecode im Plugin „Kunden-Login“ eingeschaltet ist.",
13
+ features_heading: "Mails",
9
14
  features: [
10
15
  {
11
16
  key: "order_mails",
@@ -16,7 +21,7 @@ exports.emailPluginFeatures = (0, public_1.definePluginFeatures)({
16
21
  {
17
22
  key: "account_mails",
18
23
  label: "Konto-Mails",
19
- description: "Passwort-Zurücksetzen für Kunden, Einladungen neuer Admin-Benutzer und die Bestätigungsmail der Kontobestätigung. Aus: Für diese Ereignisse wird keine Mail erzeugt.",
24
+ description: "Passwort-Zurücksetzen für Kunden, Einladungen neuer Admin-Benutzer und die Bestätigungsmail der Kontobestätigung. Nicht dazu gehört der Anmeldecode des Kunden-Logins: Er wird unabhängig von diesem Schalter gesendet. Aus: Für diese Ereignisse wird keine Mail erzeugt.",
20
25
  default_enabled: true,
21
26
  },
22
27
  {
@@ -35,4 +40,4 @@ exports.emailPluginFeatures = (0, public_1.definePluginFeatures)({
35
40
  ],
36
41
  admin_page: "/settings/hartl-services/email",
37
42
  });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWZlYXR1cmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VtYWlsL3BsdWdpbi1mZWF0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzQ0FBaUQ7QUFFcEMsUUFBQSxtQkFBbUIsR0FBRyxJQUFBLDZCQUFvQixFQUFDO0lBQ3RELFVBQVUsRUFBRSxPQUFPO0lBQ25CLEtBQUssRUFBRSxRQUFRO0lBQ2YsV0FBVyxFQUNULHVhQUF1YTtJQUN6YSxRQUFRLEVBQUU7UUFDUjtZQUNFLEdBQUcsRUFBRSxhQUFhO1lBQ2xCLEtBQUssRUFBRSxlQUFlO1lBQ3RCLFdBQVcsRUFDVCxvWkFBb1o7WUFDdFosZUFBZSxFQUFFLElBQUk7U0FDdEI7UUFDRDtZQUNFLEdBQUcsRUFBRSxlQUFlO1lBQ3BCLEtBQUssRUFBRSxhQUFhO1lBQ3BCLFdBQVcsRUFDVCxzS0FBc0s7WUFDeEssZUFBZSxFQUFFLElBQUk7U0FDdEI7UUFDRDtZQUNFLEdBQUcsRUFBRSx1QkFBdUI7WUFDNUIsS0FBSyxFQUFFLDZCQUE2QjtZQUNwQyxXQUFXLEVBQ1QsbVhBQW1YO1lBQ3JYLGVBQWUsRUFBRSxLQUFLO1lBQ3RCLFVBQVUsRUFBRSxlQUFlO1NBQzVCO1FBQ0Q7WUFDRSxHQUFHLEVBQUUscUJBQXFCO1lBQzFCLEtBQUssRUFBRSxpQkFBaUI7WUFDeEIsV0FBVyxFQUNULDBOQUEwTjtZQUM1TixlQUFlLEVBQUUsSUFBSTtTQUN0QjtLQUNGO0lBQ0QsVUFBVSxFQUFFLGdDQUFnQztDQUM3QyxDQUFDLENBQUMifQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWZlYXR1cmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VtYWlsL3BsdWdpbi1mZWF0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzQ0FBaUQ7QUFFcEMsUUFBQSxtQkFBbUIsR0FBRyxJQUFBLDZCQUFvQixFQUFDO0lBQ3RELFVBQVUsRUFBRSxPQUFPO0lBQ25CLEtBQUssRUFBRSxRQUFRO0lBQ2YsV0FBVyxFQUNULHVwQkFBdXBCO0lBQ3pwQixPQUFPLEVBQUUsa0RBQWtEO0lBQzNELElBQUksRUFBRSxVQUFVO0lBQ2hCLFlBQVksRUFDVixpSEFBaUg7SUFDbkgsZUFBZSxFQUNiLDJmQUEyZjtJQUM3ZixnQkFBZ0IsRUFBRSxPQUFPO0lBQ3pCLFFBQVEsRUFBRTtRQUNSO1lBQ0UsR0FBRyxFQUFFLGFBQWE7WUFDbEIsS0FBSyxFQUFFLGVBQWU7WUFDdEIsV0FBVyxFQUNULG9aQUFvWjtZQUN0WixlQUFlLEVBQUUsSUFBSTtTQUN0QjtRQUNEO1lBQ0UsR0FBRyxFQUFFLGVBQWU7WUFDcEIsS0FBSyxFQUFFLGFBQWE7WUFDcEIsV0FBVyxFQUNULDRRQUE0UTtZQUM5USxlQUFlLEVBQUUsSUFBSTtTQUN0QjtRQUNEO1lBQ0UsR0FBRyxFQUFFLHVCQUF1QjtZQUM1QixLQUFLLEVBQUUsNkJBQTZCO1lBQ3BDLFdBQVcsRUFDVCxtWEFBbVg7WUFDclgsZUFBZSxFQUFFLEtBQUs7WUFDdEIsVUFBVSxFQUFFLGVBQWU7U0FDNUI7UUFDRDtZQUNFLEdBQUcsRUFBRSxxQkFBcUI7WUFDMUIsS0FBSyxFQUFFLGlCQUFpQjtZQUN4QixXQUFXLEVBQ1QsME5BQTBOO1lBQzVOLGVBQWUsRUFBRSxJQUFJO1NBQ3RCO0tBQ0Y7SUFDRCxVQUFVLEVBQUUsZ0NBQWdDO0NBQzdDLENBQUMsQ0FBQyJ9
@@ -181,10 +181,11 @@ const createDefaultEmailRenderers = (configuration) => {
181
181
  }),
182
182
  "auth.password_reset": (0, code_override_1.markDefaultRenderer)((data, shop) => templated({ kind: "auth.password_reset", data }, shop)),
183
183
  "auth.verification": (0, code_override_1.markDefaultRenderer)((data, shop) => templated({ kind: "auth.verification", data }, shop)),
184
+ "auth.login_code": (0, code_override_1.markDefaultRenderer)((data, shop) => templated({ kind: "auth.login_code", data }, shop)),
184
185
  "affiliate.consignment_report_due": (0, code_override_1.markDefaultRenderer)((data, shop) => templated({ kind: "affiliate.consignment_report_due", data }, shop)),
185
186
  "affiliate.application_submitted.admin": (0, code_override_1.markDefaultRenderer)((data, shop) => templated({ kind: "affiliate.application_submitted.admin", data }, shop)),
186
187
  "user.invite": (0, code_override_1.markDefaultRenderer)((data, shop) => templated({ kind: "user.invite", data }, shop)),
187
188
  };
188
189
  };
189
190
  exports.createDefaultEmailRenderers = createDefaultEmailRenderers;
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC10ZW1wbGF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZW1haWwvcmVuZGVyaW5nL2RlZmF1bHQtdGVtcGxhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDhEQUFpRTtBQUNqRSx1REFLcUM7QUFDckMsNkRBQWdFO0FBQ2hFLGdEQUEyRDtBQVUzRCw2Q0FRc0I7QUFDdEIsMENBQXlEO0FBRXpELE1BQU0sUUFBUSxHQUFHLENBQ2YsQ0FBVSxFQUNWLElBQXNCLEVBQ3RCLFdBQW1CLEVBQ1gsRUFBRSxDQUNWLElBQUEsZUFBUyxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbEIsQ0FBQyxDQUFDLHdFQUF3RTtRQUN4RSxhQUFhLElBQUEsZ0JBQVUsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBQSxnQkFBVSxFQUFDLFdBQVcsQ0FBQyx3SkFBd0o7SUFDN04sQ0FBQyxDQUFDLDZCQUE2QixpQkFBSSwrQ0FBK0MsQ0FBQyxDQUFDLE1BQU0sTUFBTSxJQUFBLGdCQUFVLEVBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztBQUVySSxzRkFBc0Y7QUFDdEYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFVLEVBQUUsSUFBc0IsRUFBVSxFQUFFO0lBQ2pFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNqQyxNQUFNLElBQUksR0FBRyxLQUFLO1FBQ2hCLENBQUMsQ0FBQyxrQ0FBa0MsSUFBQSxnQkFBVSxFQUFDLEtBQUssQ0FBQyxZQUFZLElBQUEsc0JBQVMsRUFBQyxDQUFDLENBQUMsS0FBSyxJQUFBLGdCQUFVLEVBQUMsS0FBSyxDQUFDLE1BQU07UUFDekcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNQLE1BQU0sSUFBSSxHQUFH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
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC10ZW1wbGF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZW1haWwvcmVuZGVyaW5nL2RlZmF1bHQtdGVtcGxhdGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDhEQUFpRTtBQUNqRSx1REFLcUM7QUFDckMsNkRBQWdFO0FBQ2hFLGdEQUEyRDtBQVUzRCw2Q0FRc0I7QUFDdEIsMENBQXlEO0FBRXpELE1BQU0sUUFBUSxHQUFHLENBQ2YsQ0FBVSxFQUNWLElBQXNCLEVBQ3RCLFdBQW1CLEVBQ1gsRUFBRSxDQUNWLElBQUEsZUFBUyxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbEIsQ0FBQyxDQUFDLHdFQUF3RTtRQUN4RSxhQUFhLElBQUEsZ0JBQVUsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBQSxnQkFBVSxFQUFDLFdBQVcsQ0FBQyx3SkFBd0o7SUFDN04sQ0FBQyxDQUFDLDZCQUE2QixpQkFBSSwrQ0FBK0MsQ0FBQyxDQUFDLE1BQU0sTUFBTSxJQUFBLGdCQUFVLEVBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztBQUVySSxzRkFBc0Y7QUFDdEYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFVLEVBQUUsSUFBc0IsRUFBVSxFQUFFO0lBQ2pFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDakMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNqQyxNQUFNLElBQUksR0FBRyxLQUFLO1FBQ2hCLENBQUMsQ0FBQyxrQ0FBa0MsSUFBQSxnQkFBVSxFQUFDLEtBQUssQ0FBQyxZQUFZLElBQUEsc0JBQVMsRUFBQyxDQUFDLENBQUMsS0FBSyxJQUFBLGdCQUFVLEVBQUMsS0FBSyxDQUFDLE1BQU07UUFDekcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNQLE1BQU0sSUFBSSxHQUFH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